The complete RSS story body.
", + "has_drive_thru": { + "type": "boolean" + }, + "hours": { + "items": { + "$ref": "#/definitions/kroger.StoreHours" + }, + "type": "array" + }, + "location": { + "$ref": "#/definitions/kroger.StoreLocation" + }, + "name": { "type": "string" }, - "description": { - "example": "A short summary of the latest story.", + "open_text": { "type": "string" }, - "guid": { - "example": "https://www.livescore.com/en/news/football/example-story/", + "phone": { "type": "string" }, - "link": { - "example": "https://www.livescore.com/en/news/football/example-story/", + "store_id": { + "type": "string" + } + }, + "type": "object" + }, + "kroger.SuggestResponse": { + "properties": { + "location_id": { "type": "string" }, - "published_at": { - "example": "Sat, 26 Sep 2026 08:45:00 GMT", + "query": { "type": "string" }, - "title": { - "example": "Latest football news", + "spelling_correction": { + "description": "SpellingCorrection is Kroger's own suggested respelling of Query, set\nonly when Query returned zero suggestions and Kroger judged it a\nlikely typo (confirmed live: \"Marble cake\" -> \"maple cake\" with an\nempty Suggestions list).", + "type": "string" + }, + "suggestions": { + "items": { + "$ref": "#/definitions/kroger.Suggestion" + }, + "type": "array" + } + }, + "type": "object" + }, + "kroger.Suggestion": { + "properties": { + "type": { + "type": "string" + }, + "value": { "type": "string" } }, "type": "object" }, - "livescore.livescoreNewsFeedResponseDoc": { + "kroger.categoriesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "properties": { - "count": { - "example": 75, - "type": "integer" - }, - "items": { - "items": { - "$ref": "#/definitions/livescore.livescoreNewsFeedItemDoc" - }, - "type": "array" - }, - "source_url": { - "example": "https://www.livescore.com/en/news/rss.xml", - "type": "string" - } - }, - "type": "object" + "$ref": "#/definitions/kroger.CategoriesResponse" }, "msg": { "example": "OK", @@ -94471,55 +96710,30 @@ }, "type": "object" }, - "livescore.livescoreNewsPublisherDoc": { + "kroger.categoryResponseDoc": { "properties": { - "contact": { - "example": "https://www.statsperform.com/contact/", - "type": "string" - }, - "logo_url": { - "example": "https://www.livescore.com/ls-web-assets/images/publishers-stats-perform.webp", - "type": "string" - }, - "name": { - "example": "Stats Perform", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "telephone": { - "example": "+1 866 221 1426", - "type": "string" + "data": { + "$ref": "#/definitions/kroger.CategoryResponse" }, - "website": { - "example": "https://www.statsperform.com/", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "livescore.livescoreNewsPublishersResponseDoc": { + "kroger.couponsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "properties": { - "count": { - "example": 6, - "type": "integer" - }, - "publishers": { - "items": { - "$ref": "#/definitions/livescore.livescoreNewsPublisherDoc" - }, - "type": "array" - }, - "source_url": { - "example": "https://www.livescore.com/en/news/publishers/", - "type": "string" - } - }, - "type": "object" + "$ref": "#/definitions/kroger.CouponsResponse" }, "msg": { "example": "OK", @@ -94528,32 +96742,14 @@ }, "type": "object" }, - "livescore.livescoreSearchResponseDoc": { + "kroger.productResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "properties": { - "query": { - "example": "Manchester City", - "type": "string" - }, - "results": { - "additionalProperties": true, - "type": "object" - }, - "source_url": { - "example": "https://prod-cdn-search-api.lsmedia1.com/api/v2/search/soccer?categories=true&locale=en&query=Manchester+City&stages=true&teams=true&limit=10", - "type": "string" - }, - "sport": { - "example": "soccer", - "type": "string" - } - }, - "type": "object" + "$ref": "#/definitions/kroger.ProductResponse" }, "msg": { "example": "OK", @@ -94562,22 +96758,14 @@ }, "type": "object" }, - "livescore.newsCategoriesResponseDoc": { + "kroger.productsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "properties": { - "categories": { - "items": { - "$ref": "#/definitions/livescore.newsCategoryDoc" - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/definitions/kroger.ProductsResponse" }, "msg": { "example": "OK", @@ -94586,35 +96774,30 @@ }, "type": "object" }, - "livescore.newsCategoryDoc": { + "kroger.relatedTagsResponseDoc": { "properties": { - "id": { - "example": "football", - "type": "string" - }, - "name": { - "example": "Football", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "type": { - "example": "sport", - "type": "string" + "data": { + "$ref": "#/definitions/kroger.RelatedTagsResponse" }, - "url": { - "example": "https://www.livescore.com/en/news/football/", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "livescore.responseDoc": { + "kroger.reviewsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/livescore.sourceDataDoc" + "$ref": "#/definitions/kroger.ReviewsResponse" }, "msg": { "example": "OK", @@ -94623,48 +96806,46 @@ }, "type": "object" }, - "livescore.sourceDataDoc": { + "kroger.searchResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "additionalProperties": true, - "type": "object" + "$ref": "#/definitions/kroger.SearchResponse" }, - "source_url": { - "example": "https://www.livescore.com/en/football/uefa-nations-league/league-b-group-3/austria-vs-israel/1738267/", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "livescore.sportDoc": { + "kroger.storeResponseDoc": { "properties": { - "id": { - "example": "soccer", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "name": { - "example": "Football", + "data": { + "$ref": "#/definitions/kroger.StoreResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "livescore.sportsResponseDoc": { + "kroger.suggestResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "properties": { - "sports": { - "items": { - "$ref": "#/definitions/livescore.sportDoc" - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/definitions/kroger.SuggestResponse" }, "msg": { "example": "OK", @@ -94673,44 +96854,59 @@ }, "type": "object" }, - "lululemon.CategoriesResponse": { + "latimes.ArticleResponse": { "properties": { - "categories": { + "authors": { "items": { - "$ref": "#/definitions/lululemon.CategoryEntry" + "type": "string" }, "type": "array" }, - "count": { - "type": "integer" + "description": { + "type": "string" }, - "fetched_at": { + "headline": { "type": "string" }, - "source_url": { + "image_url": { + "type": "string" + }, + "is_accessible_for_free": { + "type": "boolean" + }, + "paragraphs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "published_at": { + "type": "string" + }, + "section": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "lululemon.CategoryEntry": { + "latimes.AuthorArticle": { "properties": { - "category": { + "image_url": { "type": "string" }, - "cdp_hash": { + "published_at": { "type": "string" }, - "name": { + "summary": { "type": "string" }, - "path": { - "items": { - "type": "string" - }, - "type": "array" - }, - "section": { + "title": { "type": "string" }, "url": { @@ -94719,63 +96915,68 @@ }, "type": "object" }, - "lululemon.CategoryResponse": { + "latimes.AuthorResponse": { "properties": { - "category": { - "type": "string" + "articles": { + "items": { + "$ref": "#/definitions/latimes.AuthorArticle" + }, + "type": "array" }, - "cdp_hash": { + "bio": { "type": "string" }, - "count": { - "type": "integer" + "email": { + "type": "string" }, - "fetched_at": { + "image_url": { "type": "string" }, - "page": { - "type": "integer" + "job_title": { + "type": "string" }, - "page_size": { - "type": "integer" + "name": { + "type": "string" }, - "products": { + "social_accounts": { "items": { - "$ref": "#/definitions/lululemon.ProductSummary" + "$ref": "#/definitions/latimes.AuthorSocialAccount" }, "type": "array" }, - "source_url": { + "url": { "type": "string" - }, - "total_products": { - "type": "integer" } }, "type": "object" }, - "lululemon.OutfitItem": { + "latimes.AuthorSocialAccount": { "properties": { - "category": { + "platform": { "type": "string" }, - "currency": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "latimes.HeadlineItem": { + "properties": { + "author": { "type": "string" }, - "id": { + "image_caption": { "type": "string" }, "image_url": { "type": "string" }, - "list_price": { - "type": "number" - }, - "on_sale": { - "type": "boolean" + "published_at": { + "type": "string" }, - "sale_price": { - "type": "number" + "summary": { + "type": "string" }, "title": { "type": "string" @@ -94786,425 +96987,515 @@ }, "type": "object" }, - "lululemon.OutfitLook": { + "latimes.HeadlinesResponse": { "properties": { - "id": { - "type": "string" - }, "items": { "items": { - "$ref": "#/definitions/lululemon.OutfitItem" + "$ref": "#/definitions/latimes.HeadlineItem" }, "type": "array" + }, + "section": { + "type": "string" } }, "type": "object" }, - "lululemon.OutfitResponse": { + "latimes.SectionInfo": { "properties": { - "color_code": { - "type": "string" - }, - "fetched_at": { + "feed_url": { "type": "string" }, - "item": { - "$ref": "#/definitions/lululemon.OutfitItem" - }, - "looks": { - "items": { - "$ref": "#/definitions/lululemon.OutfitLook" - }, - "type": "array" - }, - "source_url": { + "name": { "type": "string" }, - "unified_id": { + "slug": { "type": "string" } }, "type": "object" }, - "lululemon.ProductDetailColor": { + "latimes.SectionsResponse": { "properties": { - "code": { + "sections": { + "items": { + "$ref": "#/definitions/latimes.SectionInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "latimes.articleResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/latimes.ArticleResponse" + }, + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "latimes.authorResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "name": { + "data": { + "$ref": "#/definitions/latimes.AuthorResponse" + }, + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "latimes.headlinesResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "swatch_url": { + "data": { + "$ref": "#/definitions/latimes.HeadlinesResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "lululemon.ProductDetailRating": { + "latimes.sectionsResponseDoc": { "properties": { - "count": { + "code": { + "example": 200, "type": "integer" }, - "value": { - "type": "number" + "data": { + "$ref": "#/definitions/latimes.SectionsResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "lululemon.ProductDetailResponse": { + "lazada.CategoryDirectoryResponse": { "properties": { - "activities": { + "fetched_at": { + "example": "2026-08-28T04:00:00Z", + "type": "string" + }, + "groups": { "items": { - "type": "string" + "$ref": "#/definitions/lazada.CategoryGroup" }, "type": "array" }, - "category": { + "region": { + "example": "ID", "type": "string" }, - "category_id": { + "source_url": { + "example": "https://pages.lazada.co.id/wow/i/id/LandingPage/lazmall?wh_weex=true", "type": "string" - }, - "colors": { + } + }, + "type": "object" + }, + "lazada.CategoryGroup": { + "properties": { + "categories": { "items": { - "$ref": "#/definitions/lululemon.ProductDetailColor" + "$ref": "#/definitions/lazada.CategoryNode" }, "type": "array" }, - "currency": { + "name": { + "example": "Elektronik", "type": "string" - }, - "description": { + } + }, + "type": "object" + }, + "lazada.CategoryLink": { + "properties": { + "name": { + "example": "Handphone", "type": "string" }, - "fetched_at": { + "url": { + "example": "https://www.lazada.co.id/beli-handphone", "type": "string" - }, - "gender": { + } + }, + "type": "object" + }, + "lazada.CategoryNode": { + "properties": { + "children": { "items": { - "type": "string" + "$ref": "#/definitions/lazada.CategoryNode" }, "type": "array" }, - "highlights": { + "name": { + "example": "Laptop", + "type": "string" + }, + "url": { + "example": "https://www.lazada.co.id/shop-beli-laptop/", + "type": "string" + } + }, + "type": "object" + }, + "lazada.CategoryProductsResponse": { + "properties": { + "brand": { + "example": "lazada6910077_crown-127197821", + "type": "string" + }, + "category": { + "example": "shop-karaoke-systems", + "type": "string" + }, + "fetched_at": { + "example": "2026-09-02T04:00:00Z", + "type": "string" + }, + "items": { "items": { - "type": "string" + "$ref": "#/definitions/lazada.ListingItem" }, "type": "array" }, - "name": { - "type": "string" + "page": { + "example": 1, + "type": "integer" }, - "on_sale": { - "type": "boolean" + "page_size": { + "example": 40, + "type": "integer" }, - "price": { - "type": "number" + "region": { + "example": "PH", + "type": "string" }, - "product_id": { + "sort": { + "example": "popularity", "type": "string" }, - "rating": { - "$ref": "#/definitions/lululemon.ProductDetailRating" + "source_url": { + "example": "https://www.lazada.com.ph/shop-karaoke-systems/?ajax=true&page=1", + "type": "string" }, - "reviews": { + "total_results": { + "example": 2400, + "type": "integer" + } + }, + "type": "object" + }, + "lazada.HomeResponse": { + "properties": { + "categories": { "items": { - "$ref": "#/definitions/lululemon.ProductDetailReview" + "$ref": "#/definitions/lazada.CategoryLink" }, "type": "array" }, - "sizes": { + "fetched_at": { + "example": "2026-08-28T04:00:00Z", + "type": "string" + }, + "flash_sale_items": { "items": { - "type": "string" + "$ref": "#/definitions/lazada.ProductSummary" }, "type": "array" }, - "skus": { + "official_stores": { + "description": "OfficialStores lists featured official-store shops from the same\nhomepage. This carousel was observed absent on one storefront\n(Philippines) during a live check; treat an empty list as \"not\ncurrently shown\", not as evidence of parser drift.", "items": { - "$ref": "#/definitions/lululemon.ProductDetailSKU" + "$ref": "#/definitions/lazada.OfficialStore" }, "type": "array" }, - "source_url": { - "type": "string" - }, - "unified_id": { + "region": { + "example": "ID", "type": "string" }, - "url": { + "source_url": { + "example": "https://www.lazada.co.id/", "type": "string" } }, "type": "object" }, - "lululemon.ProductDetailReview": { + "lazada.ListingItem": { "properties": { - "badge": { + "currency": { + "example": "PHP", "type": "string" }, - "body": { + "discount": { + "example": "77% Off", "type": "string" }, - "fit": { + "image": { + "example": "https://ph-live-01.slatic.net/p/example.png", "type": "string" }, - "id": { + "item_id": { + "example": 15396167084, + "type": "integer" + }, + "location": { + "example": "Benguet", "type": "string" }, - "rating": { + "price": { + "example": 159, "type": "number" }, - "size_purchased": { - "type": "string" + "rating": { + "description": "Rating and Reviews are omitted entirely when the listing card has no\nrating yet (a brand-new or unrated listing) rather than defaulting to 0.", + "example": 5, + "type": "number" }, - "submitted_at": { - "type": "string" + "reviews": { + "example": 3, + "type": "integer" }, "title": { + "example": "Digilab Original K12 Bluetooth Portable Karaoke Speaker", "type": "string" }, - "verified_buyer": { - "type": "boolean" + "url": { + "example": "https://www.lazada.com.ph/products/pdp-i15396167084.html", + "type": "string" } }, "type": "object" }, - "lululemon.ProductDetailSKU": { + "lazada.OfficialStore": { "properties": { - "available": { - "type": "boolean" - }, - "color_code": { - "type": "string" - }, - "color_name": { - "type": "string" - }, - "id": { - "type": "string" - }, - "on_sale": { - "type": "boolean" - }, - "price": { - "type": "number" - }, - "sale_price": { - "type": "number" - }, - "size": { + "brand_image": { + "example": "https://img.lazcdn.com/g/p/example.jpg", "type": "string" }, - "style_id": { + "name": { + "example": "Alfalink", "type": "string" }, - "style_number": { + "shop_image": { + "example": "https://img.lazcdn.com/g/shop/example.jpeg", "type": "string" }, "url": { + "example": "https://www.lazada.co.id/shop/alfalink", "type": "string" } }, "type": "object" }, - "lululemon.ProductSummary": { + "lazada.ProductResponse": { "properties": { - "activities": { - "items": { - "type": "string" - }, - "type": "array" - }, - "category": { + "brand": { + "example": "Pantene", "type": "string" }, - "category_id": { + "brand_url": { + "example": "https://www.lazada.co.id/pantene/", "type": "string" }, - "colors": { + "category": { + "example": [ + "Kecantikan" + ], "items": { "type": "string" }, "type": "array" }, "currency": { + "example": "IDR", "type": "string" }, - "id": { + "description": { "type": "string" }, - "image_url": { + "fetched_at": { + "example": "2026-09-02T04:00:00Z", "type": "string" }, - "list_price": { - "type": "number" - }, - "name": { + "highlights": { "type": "string" }, - "new_arrival": { - "type": "boolean" + "images": { + "items": { + "type": "string" + }, + "type": "array" }, - "on_sale": { - "type": "boolean" + "item_id": { + "example": 159992555, + "type": "integer" }, "price": { + "example": 190500, "type": "number" }, - "sale_price": { - "type": "number" + "region": { + "example": "ID", + "type": "string" }, - "sizes": { - "items": { - "type": "string" - }, - "type": "array" + "seller_id": { + "example": 100161156, + "type": "integer" }, - "style_numbers": { - "items": { - "type": "string" - }, - "type": "array" + "sku_id": { + "example": 181803572, + "type": "integer" }, - "unified_id": { + "source_url": { + "example": "https://www.lazada.co.id/products/pdp-i159992555-s181803572.html", + "type": "string" + }, + "title": { + "example": "PANTENE Shampoo Hair Fall Control 990ml", "type": "string" }, "url": { + "example": "https://www.lazada.co.id/products/pantene-shampoo-hair-fall-control-990ml-i159992555-s181803572.html", "type": "string" + }, + "variants": { + "items": { + "$ref": "#/definitions/lazada.ProductVariant" + }, + "type": "array" } }, "type": "object" }, - "lululemon.Store": { + "lazada.ProductSummary": { "properties": { - "address": { + "currency": { + "example": "IDR", "type": "string" }, - "amenities": { - "$ref": "#/definitions/lululemon.StoreAmenities" - }, - "city": { + "discount": { + "example": "-32%", "type": "string" }, - "country": { + "image": { + "example": "https://img.lazcdn.com/g/p/example.jpg", "type": "string" }, - "distance_miles": { - "type": "number" - }, - "hours": { - "items": { - "$ref": "#/definitions/lululemon.StoreHours" - }, - "type": "array" - }, - "id": { - "type": "string" + "item_id": { + "example": 159992555, + "type": "integer" }, - "latitude": { + "original_price": { + "example": 190500, "type": "number" }, - "longitude": { + "price": { + "example": 129000, "type": "number" }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "state": { - "type": "string" - }, - "state_name": { - "type": "string" - }, - "status": { - "type": "string" - }, - "store_type": { + "title": { + "example": "PANTENE Shampoo Hair Fall Control 990ml", "type": "string" }, "url": { + "example": "https://www.lazada.co.id/products/pdp-i159992555-s181803572.html", "type": "string" } }, "type": "object" }, - "lululemon.StoreAmenities": { + "lazada.ProductVariant": { "properties": { - "buy_online_pickup_store": { - "type": "boolean" - }, - "complementary_hemming": { - "type": "boolean" - }, - "curbside_pickup": { - "type": "boolean" - }, - "footwear": { - "type": "boolean" - }, - "has_mirror": { - "type": "boolean" - }, - "like_new": { - "type": "boolean" - }, - "personal_shopping": { - "type": "boolean" + "name": { + "example": "Volume", + "type": "string" }, - "returns_exchanges": { - "type": "boolean" + "values": { + "example": [ + "990 ml" + ], + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "lululemon.StoreHours": { + "lazada.SearchResponse": { "properties": { - "close": { + "fetched_at": { + "example": "2026-09-02T04:00:00Z", "type": "string" }, - "day": { + "items": { + "items": { + "$ref": "#/definitions/lazada.ListingItem" + }, + "type": "array" + }, + "page": { + "example": 1, + "type": "integer" + }, + "page_size": { + "example": 40, + "type": "integer" + }, + "query": { + "example": "karaoke", "type": "string" }, - "open": { + "region": { + "example": "PH", "type": "string" - } - }, - "type": "object" - }, - "lululemon.StoresResponse": { - "properties": { - "count": { - "type": "integer" }, - "fetched_at": { + "sort": { + "example": "popularity", "type": "string" }, "source_url": { + "example": "https://www.lazada.com.ph/catalog/?q=karaoke&ajax=true&page=1", "type": "string" }, - "stores": { - "items": { - "$ref": "#/definitions/lululemon.Store" - }, - "type": "array" + "total_results": { + "example": 2400, + "type": "integer" } }, "type": "object" }, - "lululemon.categoriesResponseDoc": { + "lazada.categoriesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/lululemon.CategoriesResponse" + "$ref": "#/definitions/lazada.CategoryDirectoryResponse" }, "msg": { "example": "OK", @@ -95213,14 +97504,14 @@ }, "type": "object" }, - "lululemon.categoryResponseDoc": { + "lazada.categoryProductsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/lululemon.CategoryResponse" + "$ref": "#/definitions/lazada.CategoryProductsResponse" }, "msg": { "example": "OK", @@ -95229,14 +97520,14 @@ }, "type": "object" }, - "lululemon.outfitResponseDoc": { + "lazada.homeResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/lululemon.OutfitResponse" + "$ref": "#/definitions/lazada.HomeResponse" }, "msg": { "example": "OK", @@ -95245,14 +97536,14 @@ }, "type": "object" }, - "lululemon.productDetailResponseDoc": { + "lazada.productResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/lululemon.ProductDetailResponse" + "$ref": "#/definitions/lazada.ProductResponse" }, "msg": { "example": "OK", @@ -95261,14 +97552,14 @@ }, "type": "object" }, - "lululemon.storesResponseDoc": { + "lazada.searchResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/lululemon.StoresResponse" + "$ref": "#/definitions/lazada.SearchResponse" }, "msg": { "example": "OK", @@ -95277,17 +97568,20 @@ }, "type": "object" }, - "macrumors.AuthorArticle": { + "leboncoin.ListingCard": { "properties": { - "image_url": { + "category": { "type": "string" }, - "published_at": { + "id": { "type": "string" }, - "summary": { + "image_url": { "type": "string" }, + "price_eur": { + "type": "integer" + }, "title": { "type": "string" }, @@ -95297,24 +97591,33 @@ }, "type": "object" }, - "macrumors.AuthorResponse": { + "leboncoin.ListingResponse": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/macrumors.AuthorArticle" - }, - "type": "array" + "availability": { + "type": "string" }, - "bio": { + "category": { "type": "string" }, - "image_url": { + "condition": { "type": "string" }, - "name": { + "currency": { "type": "string" }, - "slug": { + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image_url": { + "type": "string" + }, + "price_eur": { + "type": "integer" + }, + "title": { "type": "string" }, "url": { @@ -95323,944 +97626,1049 @@ }, "type": "object" }, - "macys.ProductColor": { + "leboncoin.SearchResponse": { "properties": { - "current_price": { - "type": "number" + "listings": { + "items": { + "$ref": "#/definitions/leboncoin.ListingCard" + }, + "type": "array" }, - "id": { + "location": { "type": "string" }, - "name": { + "source_url": { "type": "string" + } + }, + "type": "object" + }, + "leboncoin.listingResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "on_sale": { - "type": "boolean" + "data": { + "$ref": "#/definitions/leboncoin.ListingResponse" }, - "regular_price": { + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "leboncoin.searchResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/leboncoin.SearchResponse" + }, + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "letterboxd.FilmRating": { + "properties": { + "average": { + "example": 4.52, "type": "number" + }, + "count": { + "example": 5553202, + "type": "integer" + }, + "review_count": { + "example": 740173, + "type": "integer" } }, "type": "object" }, - "macys.ProductDetailResponse": { + "letterboxd.FilmRef": { "properties": { - "available": { - "type": "boolean" + "slug": { + "type": "string" }, - "brand": { + "title": { "type": "string" }, - "bullet_points": { + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "letterboxd.FilmResponse": { + "properties": { + "cast": { "items": { - "type": "string" + "$ref": "#/definitions/letterboxd.PersonCredit" }, "type": "array" }, - "categories": { + "countries": { "items": { "type": "string" }, "type": "array" }, - "colors": { + "directors": { "items": { - "$ref": "#/definitions/macys.ProductColor" + "$ref": "#/definitions/letterboxd.PersonCredit" }, "type": "array" }, - "currency_code": { - "type": "string" - }, - "current_price": { - "type": "number" - }, - "department_name": { - "type": "string" - }, - "description": { - "type": "string" + "genres": { + "items": { + "type": "string" + }, + "type": "array" }, - "division_name": { - "type": "string" + "languages": { + "items": { + "type": "string" + }, + "type": "array" }, - "fetched_at": { + "poster_url": { "type": "string" }, - "images": { + "production_companies": { "items": { "type": "string" }, "type": "array" }, - "low_availability": { - "type": "boolean" + "rating": { + "$ref": "#/definitions/letterboxd.FilmRating" }, - "name": { + "release_date": { + "example": "2019-05-21", "type": "string" }, - "on_sale": { - "type": "boolean" + "runtime_minutes": { + "example": 133, + "type": "integer" }, - "product_id": { + "slug": { + "example": "parasite-2019", "type": "string" }, - "rating": { - "type": "number" - }, - "regular_price": { - "type": "number" + "source_url": { + "type": "string" }, - "review_count": { - "type": "integer" + "synopsis": { + "type": "string" }, - "source_url": { + "title": { + "example": "Parasite", "type": "string" }, - "url": { + "uri": { "type": "string" + }, + "year": { + "example": 2019, + "type": "integer" } }, "type": "object" }, - "macys.ProductReviewsResponse": { + "letterboxd.MemberResponse": { "properties": { - "average_rating": { - "type": "number" - }, - "count": { - "type": "integer" - }, - "fetched_at": { + "display_name": { "type": "string" }, - "page": { + "films_this_year": { "type": "integer" }, - "page_size": { + "films_watched": { "type": "integer" }, - "product_id": { - "type": "string" - }, - "rating_count": { - "description": "RatingCount, AverageRating, RecommendedRatio, and RatingHistogram are\nthe product's site-wide aggregate rating summary, not just this page --\nabsent (zero-valued) for a product with no reviews yet.", + "followers": { "type": "integer" }, - "rating_histogram": { - "description": "RatingHistogram is the count of ratings per star, ascending: index 0 is\n1-star, index 4 is 5-star.", - "items": { - "type": "integer" - }, - "type": "array" - }, - "recommended_ratio": { - "type": "number" + "following": { + "type": "integer" }, - "reviews": { - "items": { - "$ref": "#/definitions/macys.Review" - }, - "type": "array" + "lists": { + "type": "integer" }, "source_url": { "type": "string" }, - "total_pages": { - "type": "integer" + "uri": { + "type": "string" }, - "total_reviews": { - "type": "integer" + "username": { + "type": "string" } }, "type": "object" }, - "macys.Review": { + "letterboxd.PersonCredit": { "properties": { - "author": { + "name": { "type": "string" }, - "body": { + "slug": { "type": "string" + } + }, + "type": "object" + }, + "letterboxd.PersonResponse": { + "properties": { + "films": { + "items": { + "$ref": "#/definitions/letterboxd.FilmRef" + }, + "type": "array" }, - "id": { + "name": { "type": "string" }, - "location": { + "role": { "type": "string" }, - "rating": { - "type": "integer" - }, - "ratings_only": { - "description": "RatingsOnly marks a review that carries only a star rating with no\nwritten title/body -- confirmed live 2026-08-11 that Macy's review\nplatform allows these and this endpoint still surfaces them.", - "type": "boolean" - }, - "recommended": { - "type": "boolean" - }, - "submitted_at": { + "slug": { "type": "string" }, - "title": { + "source_url": { "type": "string" } }, "type": "object" }, - "macys.SuggestResponse": { + "letterboxd.PopularResponse": { "properties": { - "count": { - "type": "integer" + "decade": { + "type": "string" }, - "fetched_at": { + "films": { + "items": { + "$ref": "#/definitions/letterboxd.FilmRef" + }, + "type": "array" + }, + "genre": { "type": "string" }, - "query": { + "period": { "type": "string" }, "source_url": { "type": "string" - }, - "suggestions": { - "items": { - "type": "string" - }, - "type": "array" } }, "type": "object" }, - "macys.productDetailResponseDoc": { + "letterboxd.RatingBucket": { "properties": { - "code": { - "example": 200, + "count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/macys.ProductDetailResponse" + "percent": { + "type": "integer" }, - "msg": { - "example": "OK", - "type": "string" + "stars": { + "example": 4.5, + "type": "number" } }, "type": "object" }, - "macys.productReviewsResponseDoc": { + "letterboxd.RatingHistogramResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" + "buckets": { + "items": { + "$ref": "#/definitions/letterboxd.RatingBucket" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/macys.ProductReviewsResponse" + "slug": { + "type": "string" }, - "msg": { - "example": "OK", + "source_url": { "type": "string" + }, + "total_ratings": { + "type": "integer" } }, "type": "object" }, - "macys.suggestResponseDoc": { + "letterboxd.Review": { "properties": { - "code": { - "example": 200, + "comment_count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/macys.SuggestResponse" + "contains_spoilers": { + "type": "boolean" }, - "msg": { - "example": "OK", + "date": { + "example": "2019-08-14", "type": "string" - } - }, - "type": "object" - }, - "marketwatch.AuthorArticle": { - "properties": { - "title": { + }, + "display_name": { "type": "string" }, - "url": { + "like_count": { + "type": "integer" + }, + "liked": { + "type": "boolean" + }, + "rating": { + "example": 4.5, + "type": "number" + }, + "text": { + "type": "string" + }, + "username": { "type": "string" } }, "type": "object" }, - "marketwatch.AuthorResponse": { + "letterboxd.ReviewsResponse": { "properties": { - "articles": { + "reviews": { "items": { - "$ref": "#/definitions/marketwatch.AuthorArticle" + "$ref": "#/definitions/letterboxd.Review" }, "type": "array" }, - "bio": { + "slug": { "type": "string" }, - "job_title": { + "source_url": { "type": "string" - }, - "name": { + } + }, + "type": "object" + }, + "letterboxd.SearchResponse": { + "properties": { + "query": { "type": "string" }, - "slug": { - "type": "string" + "results": { + "items": { + "$ref": "#/definitions/letterboxd.SearchResult" + }, + "type": "array" }, - "url": { + "source_url": { "type": "string" }, - "works_for": { + "type": { "type": "string" } }, "type": "object" }, - "mashable.AuthorResponse": { + "letterboxd.SearchResult": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" - }, - "biography": { - "items": { - "type": "string" - }, - "type": "array" + "owner": { + "type": "string" }, - "has_next_page": { - "type": "boolean" + "role": { + "example": "director", + "type": "string" }, - "image_url": { + "slug": { "type": "string" }, - "name": { + "title": { "type": "string" }, - "page": { - "type": "integer" + "type": { + "example": "film", + "type": "string" }, - "slug": { + "uri": { "type": "string" }, - "social_links": { + "year": { + "type": "integer" + } + }, + "type": "object" + }, + "letterboxd.SimilarResponse": { + "properties": { + "films": { "items": { - "$ref": "#/definitions/mashable.AuthorSocialLink" + "$ref": "#/definitions/letterboxd.FilmRef" }, "type": "array" }, - "title": { + "slug": { "type": "string" }, - "url": { + "source_url": { "type": "string" } }, "type": "object" }, - "mashable.AuthorSocialLink": { + "letterboxd.filmResponseDoc": { "properties": { - "platform": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "url": { + "data": { + "$ref": "#/definitions/letterboxd.FilmResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mcdonalds.CategoriesResponse": { + "letterboxd.memberResponseDoc": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/mcdonalds.Category" - }, - "type": "array" - }, - "count": { - "example": 13, + "code": { + "example": 200, "type": "integer" }, - "country": { - "description": "Country echoes the market these slugs belong to. Slugs are NOT\nportable across markets -- pass the same country back to\n/mcdonalds/menu.", - "example": "us", - "type": "string" - }, - "fetched_at": { - "type": "string" + "data": { + "$ref": "#/definitions/letterboxd.MemberResponse" }, - "source_url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mcdonalds.Category": { + "letterboxd.personResponseDoc": { "properties": { - "name": { - "example": "Breakfast", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "slug": { - "example": "breakfast", - "type": "string" + "data": { + "$ref": "#/definitions/letterboxd.PersonResponse" }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mcdonalds.ItemComponent": { + "letterboxd.popularResponseDoc": { "properties": { - "allergens": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "ingredients": { + "data": { + "$ref": "#/definitions/letterboxd.PopularResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mcdonalds.ItemListEntry": { + "letterboxd.ratingHistogramResponseDoc": { "properties": { - "allergens": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "components": { - "description": "Components is the per-part ingredient/allergen breakdown -- e.g. a\nburger's bun, patty, cheese and condiment each carry their own\nstatement. Absent for a single-part item.", - "items": { - "$ref": "#/definitions/mcdonalds.ItemComponent" - }, - "type": "array" + "data": { + "$ref": "#/definitions/letterboxd.RatingHistogramResponse" }, - "description": { + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "letterboxd.reviewsResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "image_url": { - "type": "string" + "data": { + "$ref": "#/definitions/letterboxd.ReviewsResponse" }, - "ingredients": { + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "letterboxd.searchResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "item_id": { - "example": "200466", - "type": "string" + "data": { + "$ref": "#/definitions/letterboxd.SearchResponse" }, - "name": { - "example": "Quarter Pounder with Cheese", + "msg": { + "example": "OK", "type": "string" - }, - "nutrients": { - "items": { - "$ref": "#/definitions/mcdonalds.Nutrient" - }, - "type": "array" } }, "type": "object" }, - "mcdonalds.ItemListResponse": { + "letterboxd.similarResponseDoc": { "properties": { - "count": { - "example": 3, + "code": { + "example": 200, "type": "integer" }, - "country": { - "example": "us", + "data": { + "$ref": "#/definitions/letterboxd.SimilarResponse" + }, + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "linkedin.Customer": { + "properties": { + "follower_count": { + "example": 12345, + "type": "integer" }, - "fetched_at": { + "industry": { + "example": "Information Technology & Services", "type": "string" }, - "items": { - "items": { - "$ref": "#/definitions/mcdonalds.ItemListEntry" - }, - "type": "array" + "link": { + "example": "https://www.linkedin.com/company/contoso/", + "type": "string" }, - "requested": { - "description": "Requested echoes the id list as asked for, so a caller can tell which\nids McDonald's returned nothing for.", - "items": { - "type": "string" - }, - "type": "array" + "logo": { + "example": "https://media.licdn.com/dms/image/v2/company-logo_100_100/company-logo_100_100/0/123456789/logo?e=2147483647&v=beta&t=xyz", + "type": "string" }, - "source_url": { + "name": { + "example": "Contoso Ltd.", "type": "string" } }, "type": "object" }, - "mcdonalds.ItemResponse": { + "linkedin.LinkedinCompanyResponse": { "properties": { - "allergens": { - "description": "Allergens is McDonald's own allergen statement for the item.", + "about": { + "example": "We’re a team of scientists, engineers...", "type": "string" }, - "country": { - "description": "Country echoes the market this item was read from. Item ids are NOT\nportable across markets.", - "example": "us", - "type": "string" + "affiliated_pages": { + "items": { + "$ref": "#/definitions/linkedin.Page" + }, + "type": "array" }, - "description": { + "company_size": { + "example": "501-1,000", "type": "string" }, - "fetched_at": { - "type": "string" + "follower_count": { + "example": 1176422, + "type": "integer" }, - "image_url": { + "founded_on": { + "example": 2010, + "type": "integer" + }, + "headline": { + "example": "We're committed to solving intelligence, to advance science and benefit humanity.", "type": "string" }, - "ingredients": { - "description": "Ingredients is the full ingredient statement.", + "headquarters": { + "example": "London, London", "type": "string" }, - "item_id": { - "example": "200463", + "industry": { + "example": "Research Services", "type": "string" }, - "name": { - "example": "Big Mac", + "link": { + "example": "https://www.linkedin.com/company/googledeepmind", "type": "string" }, - "nutrients": { - "description": "Nutrients are the published per-serving nutrition values.", + "locations": { "items": { - "$ref": "#/definitions/mcdonalds.Nutrient" + "$ref": "#/definitions/linkedin.Location" }, "type": "array" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "mcdonalds.MenuItemSummary": { - "properties": { - "calories": { - "description": "Calories is McDonald's own per-item calorie label where the category\npage prints one; often blank.", - "example": "460 Cal.", - "type": "string" - }, - "image_url": { - "type": "string" - }, - "item_id": { - "example": "200300", + "logo": { + "example": "https://static.licdn.com/.../linkedin-bug-color.png", "type": "string" }, "name": { - "example": "Bacon, Egg & Cheese Biscuit", - "type": "string" - }, - "product_url": { - "type": "string" - } - }, - "type": "object" - }, - "mcdonalds.MenuResponse": { - "properties": { - "category": { - "example": "breakfast", + "example": "Google DeepMind", "type": "string" }, - "count": { - "example": 32, + "num_of_employees_on_linkedin": { + "example": 5590, "type": "integer" }, - "country": { - "example": "us", + "similar_pages": { + "items": { + "$ref": "#/definitions/linkedin.Page" + }, + "type": "array" + }, + "specialties": { + "example": "Artificial Intelligence and Machine Learning", "type": "string" }, - "fetched_at": { + "type": { + "example": "Privately Held", "type": "string" }, - "items": { + "updates": { "items": { - "$ref": "#/definitions/mcdonalds.MenuItemSummary" + "$ref": "#/definitions/linkedin.Update" }, "type": "array" }, - "source_url": { + "website": { + "example": "https://www.deepmind.google", "type": "string" } }, "type": "object" }, - "mcdonalds.Nutrient": { + "linkedin.LinkedinProductResponse": { "properties": { - "daily_value": { - "description": "DailyValue is the percent-daily-value where McDonald's prints one.", - "example": "45", + "about": { + "example": "Streamline, manage, and grow your business with Dynamics 365 Business Central - a flexible, scalable, comprehensive business management solution for small and medium-sized businesses.", "type": "string" }, - "key": { - "description": "Key is McDonald's stable machine identifier for the nutrient\n(e.g. \"calories\"), safer to match on than the display name.", - "example": "calories", + "category_link": { + "example": "https://www.linkedin.com/products/categories/business-management-software", "type": "string" }, - "name": { - "example": "Calories", + "category_name": { + "example": "Business Management Software", "type": "string" }, - "unit": { - "example": "Cal.", + "cover_image": { + "example": "https://media.licdn.com/dms/image/v2/D4E1BAQF2jwQmfmDSiA/company-background_10000/B4EZYQcR0_HkAU-/0/1744032571051/microsoft_dynamics_cover?e=2147483647&v=beta&t=fUrpht_xQ4tCJkUKJcGr5hFyqQzXLxbETOV14KE5qk4", "type": "string" }, - "value": { - "description": "Value is kept as a string because McDonald's publishes values like\n\"580\", \"1060\" and occasionally non-numeric qualifiers; parsing to a\nnumber here would silently drop the latter.", - "example": "580", + "external_link": { + "example": "https://dynamics.microsoft.com/en-us/business-central/overview/", "type": "string" - } - }, - "type": "object" - }, - "mcdonalds.Restaurant": { - "properties": { - "address": { - "example": "160 Broadway", + }, + "featured_customers": { + "items": { + "$ref": "#/definitions/linkedin.Customer" + }, + "type": "array" + }, + "link": { + "example": "https://www.linkedin.com/products/microsoft-dynamics-microsoft-dynamics-365-business-central", "type": "string" }, - "city": { - "example": "New York", + "logo": { + "example": "https://media.licdn.com/dms/image/v2/C4E0BAQFXmfZJomhCcg/company-logo_100_100/company-logo_100_100/0/1630612268078/microsoft_dynamics_logo?e=2147483647&v=beta&t=2bAeeYjEdtNwIAdeHTqLAo6Av0AN3Ofe1vdzvN2ihpI", "type": "string" }, - "delivery_url": { - "description": "DeliveryURL is the store's delivery deep link when one is published.\nNote McDonald's points this at a third-party delivery platform.", + "medias": { + "items": { + "$ref": "#/definitions/linkedin.Media" + }, + "type": "array" + }, + "name": { + "example": "Microsoft Dynamics 365 Business Central", "type": "string" }, - "drive_thru_hours": { + "organization_link": { + "example": "https://www.linkedin.com/company/microsoft-dynamics/", "type": "string" }, - "facilities": { - "description": "Facilities are McDonald's own amenity codes for the restaurant\n(e.g. GIFTCARDS, MOBILEOFFERS, DRIVETHRU, WIFI).", + "organization_name": { + "example": "Microsoft Dynamics 365", + "type": "string" + }, + "other_products": { "items": { - "type": "string" + "$ref": "#/definitions/linkedin.Product" }, "type": "array" }, - "hours": { - "description": "Hours is the full week where McDonald's publishes it.", + "similar_products": { "items": { - "$ref": "#/definitions/mcdonalds.RestaurantHours" + "$ref": "#/definitions/linkedin.Product" }, "type": "array" - }, - "latitude": { - "example": 40.709438, - "type": "number" - }, - "longitude": { - "example": -74.010086, - "type": "number" - }, - "name": { - "example": "160 BROADWAY", - "type": "string" - }, - "open_status": { - "example": "OPEN", + } + }, + "type": "object" + }, + "linkedin.Location": { + "properties": { + "address": { + "example": "Kings Cross, London, London N1C4AG, GB", "type": "string" }, - "postal_code": { - "example": "10038", + "is_primary": { + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "linkedin.Media": { + "properties": { + "link": { + "example": "https://media.licdn.com/media/sample-video.mp4", "type": "string" }, - "state": { - "example": "NY", + "name": { + "example": "Product Demo Video", "type": "string" - }, - "store_id": { - "example": "10528", + } + }, + "type": "object" + }, + "linkedin.Page": { + "properties": { + "address": { + "example": "San Francisco, CA", "type": "string" }, - "telephone": { - "example": "(212) 385-2066", + "industry": { + "example": "Research Services", "type": "string" }, - "timezone": { + "link": { + "example": "https://www.linkedin.com/company/openai", "type": "string" }, - "today_hours": { - "description": "TodayHours and DriveThruHours are the published windows for today.", + "name": { + "example": "OpenAI", "type": "string" } }, "type": "object" }, - "mcdonalds.RestaurantHours": { + "linkedin.Product": { "properties": { - "day_of_week": { - "example": "monday", + "category_link": { + "example": "https://www.linkedin.com/products/categories/business-management-software", "type": "string" }, - "hours": { - "example": "00:00 - 00:00", + "category_name": { + "example": "Business Management Software", + "type": "string" + }, + "link": { + "example": "https://www.linkedin.com/products/odoo/", + "type": "string" + }, + "logo": { + "example": "https://media.licdn.com/dms/image/v2/D4E0BAQF91OMQCIi4dQ/company-logo_100_100/company-logo_100_100/0/1691657301051/odoo_logo?e=2147483647&v=beta&t=JfXKr0197Ib_ujXsUsYwXtga3l87Seko0icAH53nrHo", + "type": "string" + }, + "name": { + "example": "Odoo", "type": "string" } }, "type": "object" }, - "mcdonalds.RestaurantMenuChoice": { + "linkedin.ProductCategoriesResponse": { "properties": { - "options": { + "categories": { "items": { - "$ref": "#/definitions/mcdonalds.RestaurantMenuChoiceOption" + "$ref": "#/definitions/linkedin.ProductCategoryItem" }, "type": "array" + }, + "total": { + "example": 620, + "type": "integer" } }, "type": "object" }, - "mcdonalds.RestaurantMenuChoiceOption": { + "linkedin.ProductCategoryItem": { "properties": { - "item_id": { - "example": "14877", + "id": { + "example": "1620", + "type": "string" + }, + "link": { + "example": "https://www.linkedin.com/products/categories/healthcare-crm-software", "type": "string" }, "name": { - "example": "Lemonade", + "example": "Healthcare CRM Software", "type": "string" }, - "price_delta": { - "description": "PriceDelta is the additional eat-in/pickup cost of choosing this\noption instead of what's already included: 0 for a same-priced\nswap, negative for a cheaper one, and equal to the option's own\nfull price for an add-on choice (nothing is included to offset\nagainst).", - "example": 0.4, - "type": "number" + "universal_name": { + "example": "healthcare-crm-software", + "type": "string" + }, + "urn": { + "example": "urn:li:standardizedProductCategory:1620", + "type": "string" } }, "type": "object" }, - "mcdonalds.RestaurantMenuItem": { + "linkedin.ProductSearchResultItem": { "properties": { - "choices": { - "description": "Choices lists this item's customizable components McDonald's\npublishes a curated substitute/add-on list for -- e.g. a meal's\ndrink upgrade options, or a dip-able item's sauce choices -- with\nthe live eat-in/pickup price delta for each real alternative.\nPresent only when the upstream payload exposed at least one such\nchoice for this item; see the package doc comment for how these are\nderived and the deliberate fail-closed rule behind what gets left\nout (in particular, plain entree/side substitution is not exposed\nat all -- McDonald's does not publish a curated candidate list for\nit, only for upgrade/add-on style choices).", - "items": { - "$ref": "#/definitions/mcdonalds.RestaurantMenuChoice" - }, - "type": "array" + "category_link": { + "example": "https://www.linkedin.com/products/categories/sales-intelligence-software", + "type": "string" }, - "delivery_price": { - "example": 8.39, - "type": "number" + "category_name": { + "example": "Sales Intelligence Software", + "type": "string" }, - "eat_in_price": { - "example": 7.29, - "type": "number" + "description": { + "example": "Sales Navigator helps sellers have high-quality conversations with the people that matter, at scale.", + "type": "string" }, - "family_group": { - "description": "FamilyGroup is McDonald's own internal product classification (e.g.\nREGULAR_ENTREE, DESSERT) -- not the same category list\n/mcdonalds/categories returns, and not always present.", - "example": "REGULAR_ENTREE", + "id": { + "example": "linkedin-sales-navigator", "type": "string" }, - "image_url": { + "link": { + "example": "https://www.linkedin.com/products/linkedin-sales-navigator", "type": "string" }, - "item_id": { - "example": "5", + "logo": { + "example": "https://media.licdn.com/dms/image/v2/D4E33AQFKTZDLqpinzQ/productpage-logo-image_100_100/B4EZX4WGqkHUAY-/0/1743628299227/linkedin_sales_navigator_logo", "type": "string" }, "name": { - "example": "Big Mac®", + "example": "LinkedIn Sales Navigator", "type": "string" }, - "pickup_price": { - "example": 7.29, - "type": "number" + "organization_name": { + "example": "LinkedIn", + "type": "string" } }, "type": "object" }, - "mcdonalds.RestaurantMenuResponse": { + "linkedin.ProductsSearchResponse": { "properties": { - "count": { - "example": 563, + "next_start": { + "description": "NextStart is the offset for the following page, omitted once LinkedIn's\nguest search stops returning results (see ProductSearchResultCap).", + "example": 10, "type": "integer" }, - "currency": { - "example": "$", - "type": "string" - }, - "fetched_at": { - "type": "string" - }, - "items": { + "products": { "items": { - "$ref": "#/definitions/mcdonalds.RestaurantMenuItem" + "$ref": "#/definitions/linkedin.ProductSearchResultItem" }, "type": "array" }, - "source_url": { - "type": "string" + "start": { + "example": 0, + "type": "integer" }, - "store_id": { - "example": "10528", - "type": "string" + "total": { + "description": "Total is only populated on the first page (start=0), where it is read\nfrom LinkedIn's server-rendered result count.", + "example": 145986, + "type": "integer" } }, "type": "object" }, - "mcdonalds.RestaurantsResponse": { + "linkedin.Update": { "properties": { - "count": { - "example": 5, - "type": "integer" - }, - "country": { - "description": "Country echoes the market searched, so a response is self-describing\nwhen several markets are queried in one workflow.", - "example": "us", + "author": { + "example": "Google DeepMind", "type": "string" }, - "fetched_at": { + "author_link": { + "example": "https://uk.linkedin.com/company/googledeepmind", "type": "string" }, - "restaurants": { + "images": { + "example": [ + "[\"https://example.com/image1.jpg\"]" + ], "items": { - "$ref": "#/definitions/mcdonalds.Restaurant" + "type": "string" }, "type": "array" }, - "source_url": { + "is_reposted": { + "example": false, + "type": "boolean" + }, + "logo": { + "example": "https://media.licdn.com/dms/image/v2/D4E0BAQEntrYwxPlbQA/company-logo_100_100/0/googledeepmind_logo", "type": "string" - } - }, - "type": "object" - }, - "mcdonalds.categoriesResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + }, + "num_of_comments": { + "example": 21, "type": "integer" }, - "data": { - "$ref": "#/definitions/mcdonalds.CategoriesResponse" + "num_of_reactions": { + "example": 571, + "type": "integer" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "post_link": { + "example": "https://www.linkedin.com/posts/googledeepmind_thomas-story-activity-7313245349987385346-5COL", + "type": "string" + }, + "published_at": { + "example": "1w", + "type": "string" + }, + "summary": { + "example": "When his son was diagnosed with a rare disease, Googler Thomas Wagner...", + "type": "string" + }, + "videos": { + "example": [ + "[\"https://example.com/video1.mp4\"]" + ], + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "mcdonalds.itemListResponseDoc": { + "linkedin.companyResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mcdonalds.ItemListResponse" + "$ref": "#/definitions/linkedin.LinkedinCompanyResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "mcdonalds.itemResponseDoc": { + "linkedin.productCategoriesResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mcdonalds.ItemResponse" + "$ref": "#/definitions/linkedin.ProductCategoriesResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "mcdonalds.menuResponseDoc": { + "linkedin.productResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mcdonalds.MenuResponse" + "$ref": "#/definitions/linkedin.LinkedinProductResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "mcdonalds.restaurantMenuResponseDoc": { + "linkedin.productsSearchResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mcdonalds.RestaurantMenuResponse" + "$ref": "#/definitions/linkedin.ProductsSearchResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "mcdonalds.restaurantsResponseDoc": { + "linkedin.showcaseResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mcdonalds.RestaurantsResponse" + "$ref": "#/definitions/linkedin.LinkedinCompanyResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "mediaite.AuthorArticle": { - "properties": { - "date": { - "type": "string" - }, - "title": { - "type": "string" - }, - "url": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mediaite.AuthorResponse": { + "livemint.AuthorResponse": { "properties": { - "articles": { + "biography": { "items": { - "$ref": "#/definitions/mediaite.AuthorArticle" + "type": "string" }, "type": "array" }, - "avatar_url": { + "facebook_url": { "type": "string" }, - "bio": { + "image_url": { "type": "string" }, - "email": { + "instagram_url": { "type": "string" }, - "name": { + "job_title": { "type": "string" }, - "slug": { + "linkedin_url": { "type": "string" }, - "twitter": { + "name": { + "type": "string" + }, + "twitter_url": { "type": "string" }, "url": { @@ -96269,115 +98677,124 @@ }, "type": "object" }, - "medicalnewstoday.ArticleResponse": { + "livescience.AuthorResponse": { "properties": { - "authors": { + "articles": { "items": { - "type": "string" + "$ref": "#/definitions/newsplatform.HeadlineItem" }, "type": "array" }, - "description": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "paragraphs": { + "biography": { "items": { "type": "string" }, "type": "array" }, - "paywalled": { - "description": "Paywalled is true when the publisher serves only a teaser of this\narticle to anonymous readers, so Paragraphs is a partial body rather than\nthe full text. It is omitted when the full public body was returned.", + "has_next_page": { "type": "boolean" }, - "published_at": { + "job_title": { "type": "string" }, - "section": { + "name": { "type": "string" }, - "title": { - "type": "string" + "page": { + "type": "integer" }, - "updated_at": { + "slug": { "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "medicalnewstoday.AuthorResponse": { - "properties": { - "articles": { + "social_links": { "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" + "$ref": "#/definitions/livescience.AuthorSocialLink" }, "type": "array" }, - "bio": { - "type": "string" - }, - "name": { - "type": "string" - }, - "slug": { - "type": "string" - }, "url": { "type": "string" } }, "type": "object" }, - "medicalnewstoday.HeadlinesResponse": { + "livescience.AuthorSocialLink": { "properties": { - "items": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" + "platform": { + "type": "string" }, - "section": { + "url": { "type": "string" } }, "type": "object" }, - "medicalnewstoday.NewsResponse": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" - } - }, - "type": "object" - }, - "medicalnewstoday.SectionsResponse": { + "livescore.livescoreNewsFeedItemDoc": { "properties": { - "sections": { + "author": { + "example": "LiveScore", + "type": "string" + }, + "categories": { + "example": [ + "football" + ], "items": { - "$ref": "#/definitions/newsplatform.Section" + "type": "string" }, "type": "array" + }, + "content": { + "example": "The complete RSS story body.
", + "type": "string" + }, + "description": { + "example": "A short summary of the latest story.", + "type": "string" + }, + "guid": { + "example": "https://www.livescore.com/en/news/football/example-story/", + "type": "string" + }, + "link": { + "example": "https://www.livescore.com/en/news/football/example-story/", + "type": "string" + }, + "published_at": { + "example": "Sat, 26 Sep 2026 08:45:00 GMT", + "type": "string" + }, + "title": { + "example": "Latest football news", + "type": "string" } }, "type": "object" }, - "medicalnewstoday.articleResponseDoc": { + "livescore.livescoreNewsFeedResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/medicalnewstoday.ArticleResponse" + "properties": { + "count": { + "example": 75, + "type": "integer" + }, + "items": { + "items": { + "$ref": "#/definitions/livescore.livescoreNewsFeedItemDoc" + }, + "type": "array" + }, + "source_url": { + "example": "https://www.livescore.com/en/news/rss.xml", + "type": "string" + } + }, + "type": "object" }, "msg": { "example": "OK", @@ -96386,30 +98803,55 @@ }, "type": "object" }, - "medicalnewstoday.authorResponseDoc": { + "livescore.livescoreNewsPublisherDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" + "contact": { + "example": "https://www.statsperform.com/contact/", + "type": "string" }, - "data": { - "$ref": "#/definitions/medicalnewstoday.AuthorResponse" + "logo_url": { + "example": "https://www.livescore.com/ls-web-assets/images/publishers-stats-perform.webp", + "type": "string" }, - "msg": { - "example": "OK", + "name": { + "example": "Stats Perform", + "type": "string" + }, + "telephone": { + "example": "+1 866 221 1426", + "type": "string" + }, + "website": { + "example": "https://www.statsperform.com/", "type": "string" } }, "type": "object" }, - "medicalnewstoday.headlinesResponseDoc": { + "livescore.livescoreNewsPublishersResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/medicalnewstoday.HeadlinesResponse" + "properties": { + "count": { + "example": 6, + "type": "integer" + }, + "publishers": { + "items": { + "$ref": "#/definitions/livescore.livescoreNewsPublisherDoc" + }, + "type": "array" + }, + "source_url": { + "example": "https://www.livescore.com/en/news/publishers/", + "type": "string" + } + }, + "type": "object" }, "msg": { "example": "OK", @@ -96418,14 +98860,32 @@ }, "type": "object" }, - "medicalnewstoday.newsResponseDoc": { + "livescore.livescoreSearchResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/medicalnewstoday.NewsResponse" + "properties": { + "query": { + "example": "Manchester City", + "type": "string" + }, + "results": { + "additionalProperties": true, + "type": "object" + }, + "source_url": { + "example": "https://prod-cdn-search-api.lsmedia1.com/api/v2/search/soccer?categories=true&locale=en&query=Manchester+City&stages=true&teams=true&limit=10", + "type": "string" + }, + "sport": { + "example": "soccer", + "type": "string" + } + }, + "type": "object" }, "msg": { "example": "OK", @@ -96434,14 +98894,22 @@ }, "type": "object" }, - "medicalnewstoday.sectionsResponseDoc": { + "livescore.newsCategoriesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/medicalnewstoday.SectionsResponse" + "properties": { + "categories": { + "items": { + "$ref": "#/definitions/livescore.newsCategoryDoc" + }, + "type": "array" + } + }, + "type": "object" }, "msg": { "example": "OK", @@ -96450,429 +98918,420 @@ }, "type": "object" }, - "men.AuthorArticle": { + "livescore.newsCategoryDoc": { "properties": { - "label": { + "id": { + "example": "football", "type": "string" }, - "label_url": { + "name": { + "example": "Football", "type": "string" }, - "title": { + "type": { + "example": "sport", "type": "string" }, "url": { + "example": "https://www.livescore.com/en/news/football/", "type": "string" } }, "type": "object" }, - "men.AuthorResponse": { + "livescore.responseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/men.AuthorArticle" - }, - "type": "array" - }, - "bio": { - "type": "string" - }, - "email": { - "type": "string" - }, - "job_title": { - "type": "string" - }, - "name": { - "type": "string" - }, - "slug": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "twitter": { - "type": "string" + "data": { + "$ref": "#/definitions/livescore.sourceDataDoc" }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mercari.AutocompleteResponse": { + "livescore.sourceDataDoc": { "properties": { - "query": { - "type": "string" + "data": { + "additionalProperties": true, + "type": "object" }, - "suggestions": { - "items": { - "type": "string" - }, - "type": "array" + "source_url": { + "example": "https://www.livescore.com/en/football/uefa-nations-league/league-b-group-3/austria-vs-israel/1738267/", + "type": "string" } }, "type": "object" }, - "mercari.Brand": { + "livescore.sportDoc": { "properties": { "id": { - "type": "integer" + "example": "soccer", + "type": "string" }, "name": { + "example": "Football", "type": "string" } }, "type": "object" }, - "mercari.Category": { + "livescore.sportsResponseDoc": { "properties": { - "icon_url": { - "type": "string" - }, - "id": { + "code": { + "example": 200, "type": "integer" }, - "name": { - "type": "string" + "data": { + "properties": { + "sports": { + "items": { + "$ref": "#/definitions/livescore.sportDoc" + }, + "type": "array" + } + }, + "type": "object" }, - "parent_id": { - "type": "integer" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "mercari.HomeResponse": { + "lululemon.CategoriesResponse": { "properties": { - "items": { + "categories": { "items": { - "$ref": "#/definitions/mercari.ItemSummary" + "$ref": "#/definitions/lululemon.CategoryEntry" }, "type": "array" + }, + "count": { + "type": "integer" + }, + "fetched_at": { + "type": "string" + }, + "source_url": { + "type": "string" } }, "type": "object" }, - "mercari.ItemDetailResponse": { + "lululemon.CategoryEntry": { "properties": { - "category_code": { - "type": "integer" + "category": { + "type": "string" }, - "condition_code": { - "type": "integer" + "cdp_hash": { + "type": "string" }, - "description": { + "name": { "type": "string" }, - "hashtags": { + "path": { "items": { "type": "string" }, "type": "array" }, - "id": { + "section": { "type": "string" }, - "photos": { - "items": { - "type": "string" - }, - "type": "array" + "url": { + "type": "string" + } + }, + "type": "object" + }, + "lululemon.CategoryResponse": { + "properties": { + "category": { + "type": "string" }, - "price_cents": { + "cdp_hash": { + "type": "string" + }, + "count": { "type": "integer" }, - "shipping_from_state": { + "fetched_at": { "type": "string" }, - "similar_items": { + "page": { + "type": "integer" + }, + "page_size": { + "type": "integer" + }, + "products": { "items": { - "$ref": "#/definitions/mercari.ItemSummary" + "$ref": "#/definitions/lululemon.ProductSummary" }, "type": "array" }, - "title": { + "source_url": { "type": "string" }, - "url": { - "type": "string" + "total_products": { + "type": "integer" } }, "type": "object" }, - "mercari.ItemSummary": { + "lululemon.OutfitItem": { "properties": { - "condition_code": { - "type": "integer" + "category": { + "type": "string" }, - "created_at_unix": { - "type": "integer" + "currency": { + "type": "string" }, "id": { "type": "string" }, - "num_likes": { - "type": "integer" - }, - "original_price_cents": { - "type": "integer" + "image_url": { + "type": "string" }, - "price_cents": { - "type": "integer" + "list_price": { + "type": "number" }, - "seller_id": { - "type": "string" + "on_sale": { + "type": "boolean" }, - "thumbnail_url": { - "type": "string" + "sale_price": { + "type": "number" }, "title": { "type": "string" }, - "updated_at_unix": { - "type": "integer" - }, "url": { "type": "string" } }, "type": "object" }, - "mercari.MasterResponse": { + "lululemon.OutfitLook": { "properties": { - "brands": { - "items": { - "$ref": "#/definitions/mercari.Brand" - }, - "type": "array" - }, - "categories": { - "items": { - "$ref": "#/definitions/mercari.Category" - }, - "type": "array" + "id": { + "type": "string" }, - "sizes": { + "items": { "items": { - "$ref": "#/definitions/mercari.Size" + "$ref": "#/definitions/lululemon.OutfitItem" }, "type": "array" } }, "type": "object" }, - "mercari.SearchResponse": { + "lululemon.OutfitResponse": { "properties": { - "items": { + "color_code": { + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "item": { + "$ref": "#/definitions/lululemon.OutfitItem" + }, + "looks": { "items": { - "$ref": "#/definitions/mercari.ItemSummary" + "$ref": "#/definitions/lululemon.OutfitLook" }, "type": "array" }, - "query": { + "source_url": { "type": "string" }, - "total_results": { - "type": "integer" + "unified_id": { + "type": "string" } }, "type": "object" }, - "mercari.Size": { + "lululemon.ProductDetailColor": { "properties": { "code": { "type": "string" }, - "id": { - "type": "integer" - }, "name": { "type": "string" }, - "short_name": { + "swatch_url": { "type": "string" } }, "type": "object" }, - "mercari.autocompleteResponseDoc": { + "lululemon.ProductDetailRating": { "properties": { - "code": { - "example": 200, + "count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/mercari.AutocompleteResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "value": { + "type": "number" } }, "type": "object" }, - "mercari.homeResponseDoc": { + "lululemon.ProductDetailResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/mercari.HomeResponse" + "activities": { + "items": { + "type": "string" + }, + "type": "array" }, - "msg": { - "example": "OK", + "category": { "type": "string" - } - }, - "type": "object" - }, - "mercari.masterResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/mercari.MasterResponse" }, - "msg": { - "example": "OK", + "category_id": { "type": "string" - } - }, - "type": "object" - }, - "mercari.searchResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/mercari.SearchResponse" + "colors": { + "items": { + "$ref": "#/definitions/lululemon.ProductDetailColor" + }, + "type": "array" }, - "msg": { - "example": "OK", + "currency": { "type": "string" - } - }, - "type": "object" - }, - "metacritic.BrowseItem": { - "properties": { + }, "description": { "type": "string" }, - "genres": { + "fetched_at": { + "type": "string" + }, + "gender": { "items": { - "$ref": "#/definitions/metacritic.Genre" + "type": "string" }, "type": "array" }, - "id": { - "type": "integer" + "highlights": { + "items": { + "type": "string" + }, + "type": "array" }, - "image": { + "name": { "type": "string" }, - "metascore": { - "$ref": "#/definitions/metacritic.ScoreSummary" + "on_sale": { + "type": "boolean" }, - "premiere_year": { - "type": "integer" + "price": { + "type": "number" }, - "rating": { + "product_id": { "type": "string" }, - "release_date": { - "type": "string" + "rating": { + "$ref": "#/definitions/lululemon.ProductDetailRating" }, - "season_count": { - "type": "integer" + "reviews": { + "items": { + "$ref": "#/definitions/lululemon.ProductDetailReview" + }, + "type": "array" }, - "slug": { - "type": "string" + "sizes": { + "items": { + "type": "string" + }, + "type": "array" }, - "title": { + "skus": { + "items": { + "$ref": "#/definitions/lululemon.ProductDetailSKU" + }, + "type": "array" + }, + "source_url": { "type": "string" }, - "type": { - "example": "game", + "unified_id": { "type": "string" }, "url": { "type": "string" - }, - "user_score": { - "type": "number" } }, "type": "object" }, - "metacritic.BrowseResponse": { + "lululemon.ProductDetailReview": { "properties": { - "genre": { + "badge": { "type": "string" }, - "items": { - "items": { - "$ref": "#/definitions/metacritic.BrowseItem" - }, - "type": "array" - }, - "page": { - "type": "integer" + "body": { + "type": "string" }, - "per_page": { - "type": "integer" + "fit": { + "type": "string" }, - "sort": { + "id": { "type": "string" }, - "total": { - "type": "integer" + "rating": { + "type": "number" }, - "type": { + "size_purchased": { "type": "string" - } - }, - "type": "object" - }, - "metacritic.Credit": { - "properties": { - "name": { + }, + "submitted_at": { "type": "string" }, - "role": { - "example": "Director", + "title": { "type": "string" + }, + "verified_buyer": { + "type": "boolean" } }, "type": "object" }, - "metacritic.CriticReview": { + "lululemon.ProductDetailSKU": { "properties": { - "author": { - "type": "string" + "available": { + "type": "boolean" }, - "date": { - "example": "2022-02-23", + "color_code": { "type": "string" }, - "platform": { + "color_name": { "type": "string" }, - "publication": { + "id": { "type": "string" }, - "publication_slug": { + "on_sale": { + "type": "boolean" + }, + "price": { + "type": "number" + }, + "sale_price": { + "type": "number" + }, + "size": { "type": "string" }, - "quote": { + "style_id": { "type": "string" }, - "score": { - "type": "integer" + "style_number": { + "type": "string" }, "url": { "type": "string" @@ -96880,296 +99339,220 @@ }, "type": "object" }, - "metacritic.CriticReviewsResponse": { + "lululemon.ProductSummary": { "properties": { - "page": { - "type": "integer" - }, - "per_page": { - "type": "integer" - }, - "reviews": { + "activities": { "items": { - "$ref": "#/definitions/metacritic.CriticReview" + "type": "string" }, "type": "array" }, - "slug": { + "category": { "type": "string" }, - "sort": { + "category_id": { "type": "string" }, - "total": { - "type": "integer" + "colors": { + "items": { + "type": "string" + }, + "type": "array" }, - "type": { + "currency": { "type": "string" - } - }, - "type": "object" - }, - "metacritic.Genre": { - "properties": { + }, "id": { - "type": "integer" + "type": "string" + }, + "image_url": { + "type": "string" + }, + "list_price": { + "type": "number" }, "name": { "type": "string" - } - }, - "type": "object" - }, - "metacritic.Platform": { - "properties": { - "id": { - "type": "integer" }, - "is_lead": { + "new_arrival": { "type": "boolean" }, - "metascore": { - "$ref": "#/definitions/metacritic.ScoreSummary" + "on_sale": { + "type": "boolean" }, - "name": { - "example": "PlayStation 5", - "type": "string" + "price": { + "type": "number" }, - "release_date": { - "type": "string" - } - }, - "type": "object" - }, - "metacritic.Product": { - "properties": { - "countries": { + "sale_price": { + "type": "number" + }, + "sizes": { "items": { "type": "string" }, "type": "array" }, - "description": { - "type": "string" - }, - "duration": { - "type": "integer" - }, - "genres": { + "style_numbers": { "items": { - "$ref": "#/definitions/metacritic.Genre" + "type": "string" }, "type": "array" }, - "id": { - "type": "integer" - }, - "image": { + "unified_id": { "type": "string" }, - "imdb_id": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "lululemon.Store": { + "properties": { + "address": { "type": "string" }, - "imdb_url": { + "amenities": { + "$ref": "#/definitions/lululemon.StoreAmenities" + }, + "city": { "type": "string" }, - "in_theaters": { - "type": "boolean" + "country": { + "type": "string" }, - "metascore": { - "$ref": "#/definitions/metacritic.ScoreSummary" + "distance_miles": { + "type": "number" }, - "networks": { + "hours": { "items": { - "type": "string" + "$ref": "#/definitions/lululemon.StoreHours" }, "type": "array" }, - "platforms": { - "items": { - "$ref": "#/definitions/metacritic.Platform" - }, - "type": "array" + "id": { + "type": "string" }, - "premiere_year": { - "type": "integer" + "latitude": { + "type": "number" }, - "production": { - "$ref": "#/definitions/metacritic.Production" + "longitude": { + "type": "number" }, - "rating": { - "example": "M", + "message": { "type": "string" }, - "release_date": { - "example": "2022-02-25", + "name": { "type": "string" }, - "season_count": { - "type": "integer" - }, "slug": { "type": "string" }, - "tagline": { + "state": { "type": "string" }, - "title": { + "state_name": { "type": "string" }, - "type": { - "example": "game", + "status": { "type": "string" }, - "url": { + "store_type": { "type": "string" }, - "user_score": { - "$ref": "#/definitions/metacritic.ScoreSummary" - }, - "video": { - "$ref": "#/definitions/metacritic.Video" - } - }, - "type": "object" - }, - "metacritic.Production": { - "properties": { - "companies": { - "items": { - "type": "string" - }, - "type": "array" - }, - "crew": { - "items": { - "$ref": "#/definitions/metacritic.Credit" - }, - "type": "array" - }, - "official_site": { + "url": { "type": "string" } }, "type": "object" }, - "metacritic.ScoreSummary": { + "lululemon.StoreAmenities": { "properties": { - "max": { - "example": 100, - "type": "integer" + "buy_online_pickup_store": { + "type": "boolean" }, - "negative_count": { - "type": "integer" + "complementary_hemming": { + "type": "boolean" }, - "neutral_count": { - "type": "integer" + "curbside_pickup": { + "type": "boolean" }, - "positive_count": { - "type": "integer" + "footwear": { + "type": "boolean" }, - "review_count": { - "type": "integer" + "has_mirror": { + "type": "boolean" }, - "score": { - "type": "number" + "like_new": { + "type": "boolean" }, - "sentiment": { - "example": "Universal acclaim", - "type": "string" + "personal_shopping": { + "type": "boolean" }, - "url": { - "type": "string" + "returns_exchanges": { + "type": "boolean" } }, "type": "object" }, - "metacritic.UserReview": { + "lululemon.StoreHours": { "properties": { - "author": { - "type": "string" - }, - "date": { - "type": "string" - }, - "id": { + "close": { "type": "string" }, - "platform": { + "day": { "type": "string" }, - "quote": { + "open": { "type": "string" - }, - "score": { - "type": "integer" - }, - "spoiler": { - "type": "boolean" - }, - "thumbs_down": { - "type": "integer" - }, - "thumbs_up": { - "type": "integer" } }, "type": "object" }, - "metacritic.UserReviewsResponse": { + "lululemon.StoresResponse": { "properties": { - "page": { - "type": "integer" - }, - "per_page": { + "count": { "type": "integer" }, - "reviews": { - "items": { - "$ref": "#/definitions/metacritic.UserReview" - }, - "type": "array" - }, - "slug": { + "fetched_at": { "type": "string" }, - "sort": { + "source_url": { "type": "string" }, - "total": { - "type": "integer" - }, - "type": { - "type": "string" + "stores": { + "items": { + "$ref": "#/definitions/lululemon.Store" + }, + "type": "array" } }, "type": "object" }, - "metacritic.Video": { + "lululemon.categoriesResponseDoc": { "properties": { - "duration": { + "code": { + "example": 200, "type": "integer" }, - "embed_url": { - "type": "string" - }, - "title": { - "type": "string" + "data": { + "$ref": "#/definitions/lululemon.CategoriesResponse" }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "metacritic.browseResponseDoc": { + "lululemon.categoryResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/metacritic.BrowseResponse" + "$ref": "#/definitions/lululemon.CategoryResponse" }, "msg": { "example": "OK", @@ -97178,14 +99561,14 @@ }, "type": "object" }, - "metacritic.criticReviewsResponseDoc": { + "lululemon.outfitResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/metacritic.CriticReviewsResponse" + "$ref": "#/definitions/lululemon.OutfitResponse" }, "msg": { "example": "OK", @@ -97194,14 +99577,14 @@ }, "type": "object" }, - "metacritic.productResponseDoc": { + "lululemon.productDetailResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/metacritic.Product" + "$ref": "#/definitions/lululemon.ProductDetailResponse" }, "msg": { "example": "OK", @@ -97210,14 +99593,14 @@ }, "type": "object" }, - "metacritic.userReviewsResponseDoc": { + "lululemon.storesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/metacritic.UserReviewsResponse" + "$ref": "#/definitions/lululemon.StoresResponse" }, "msg": { "example": "OK", @@ -97226,716 +99609,1033 @@ }, "type": "object" }, - "metaculus.ForecastHistoryPoint": { + "macrumors.AuthorArticle": { "properties": { - "center": { - "example": 0.36, - "type": "number" - }, - "centers": { - "items": { - "type": "number" - }, - "type": "array" + "image_url": { + "type": "string" }, - "end_time": { - "example": "2026-06-01T17:06:20Z", + "published_at": { "type": "string" }, - "end_ts": { - "example": 1780333580.206417, - "type": "number" + "summary": { + "type": "string" }, - "forecaster_count": { - "example": 17, - "type": "integer" + "title": { + "type": "string" }, - "interval_lower_bounds": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "macrumors.AuthorResponse": { + "properties": { + "articles": { "items": { - "type": "number" + "$ref": "#/definitions/macrumors.AuthorArticle" }, "type": "array" }, - "interval_upper_bounds": { - "items": { - "type": "number" - }, - "type": "array" + "bio": { + "type": "string" }, - "lower": { - "example": 0.26, - "type": "number" + "image_url": { + "type": "string" }, - "start_time": { - "example": "2026-06-01T17:00:00Z", + "name": { "type": "string" }, - "start_ts": { - "example": 1780333200, - "type": "number" + "slug": { + "type": "string" }, - "upper": { - "example": 0.61, - "type": "number" + "url": { + "type": "string" } }, "type": "object" }, - "metaculus.ForecastHistoryResponse": { + "macys.ProductColor": { "properties": { - "fetched_at": { - "example": "2026-06-07T14:00:00Z", - "type": "string" - }, - "max_points": { - "example": 500, - "type": "integer" + "current_price": { + "type": "number" }, - "method": { - "example": "recency_weighted", + "id": { "type": "string" }, - "points": { - "items": { - "$ref": "#/definitions/metaculus.ForecastHistoryPoint" - }, - "type": "array" - }, - "points_count": { - "example": 25, - "type": "integer" + "name": { + "type": "string" }, - "public_page_derived": { - "example": true, + "on_sale": { "type": "boolean" }, - "question": { - "$ref": "#/definitions/metaculus.QuestionRow" - }, - "source_url": { - "example": "https://www.metaculus.com/questions/43612/", - "type": "string" + "regular_price": { + "type": "number" } }, "type": "object" }, - "metaculus.ForecastSummary": { + "macys.ProductDetailResponse": { "properties": { - "center": { - "example": 0.52, - "type": "number" + "available": { + "type": "boolean" }, - "centers": { + "brand": { + "type": "string" + }, + "bullet_points": { "items": { - "type": "number" + "type": "string" }, "type": "array" }, - "forecaster_count": { - "example": 54, - "type": "integer" - }, - "history_points": { - "example": 25, - "type": "integer" - }, - "interval_lower_bounds": { + "categories": { "items": { - "type": "number" + "type": "string" }, "type": "array" }, - "interval_upper_bounds": { + "colors": { "items": { - "type": "number" + "$ref": "#/definitions/macys.ProductColor" }, "type": "array" }, - "lower": { - "example": 0.37, + "currency_code": { + "type": "string" + }, + "current_price": { "type": "number" }, - "method": { - "example": "recency_weighted", + "department_name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "division_name": { "type": "string" }, - "upper": { - "example": 0.66, - "type": "number" - } - }, - "type": "object" - }, - "metaculus.ForecastsResponse": { - "properties": { "fetched_at": { - "example": "2026-06-07T14:00:00Z", "type": "string" }, - "methods": { + "images": { "items": { - "$ref": "#/definitions/metaculus.ForecastSummary" + "type": "string" }, "type": "array" }, - "methods_count": { - "example": 3, - "type": "integer" + "low_availability": { + "type": "boolean" }, - "public_page_derived": { - "example": true, + "name": { + "type": "string" + }, + "on_sale": { "type": "boolean" }, - "question": { - "$ref": "#/definitions/metaculus.QuestionRow" + "product_id": { + "type": "string" + }, + "rating": { + "type": "number" + }, + "regular_price": { + "type": "number" + }, + "review_count": { + "type": "integer" }, "source_url": { - "example": "https://www.metaculus.com/questions/43612/", + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "metaculus.OptionForecast": { + "macys.ProductReviewsResponse": { "properties": { - "center": { - "example": 0.42, + "average_rating": { "type": "number" }, - "forecast_value": { - "example": 0.42, - "type": "number" + "count": { + "type": "integer" }, - "forecaster_count": { - "example": 5, + "fetched_at": { + "type": "string" + }, + "page": { "type": "integer" }, - "index": { - "example": 0, + "page_size": { "type": "integer" }, - "label": { - "example": "OpenAI", + "product_id": { "type": "string" }, - "lower": { - "example": 0.31, - "type": "number" + "rating_count": { + "description": "RatingCount, AverageRating, RecommendedRatio, and RatingHistogram are\nthe product's site-wide aggregate rating summary, not just this page --\nabsent (zero-valued) for a product with no reviews yet.", + "type": "integer" }, - "mean": { - "example": 0.39, - "type": "number" + "rating_histogram": { + "description": "RatingHistogram is the count of ratings per star, ascending: index 0 is\n1-star, index 4 is 5-star.", + "items": { + "type": "integer" + }, + "type": "array" }, - "upper": { - "example": 0.43, + "recommended_ratio": { "type": "number" + }, + "reviews": { + "items": { + "$ref": "#/definitions/macys.Review" + }, + "type": "array" + }, + "source_url": { + "type": "string" + }, + "total_pages": { + "type": "integer" + }, + "total_reviews": { + "type": "integer" } }, "type": "object" }, - "metaculus.OptionsChange": { + "macys.Review": { "properties": { - "changed_at": { - "example": "0001-01-01T00:00:00", + "author": { "type": "string" }, - "options": { - "items": { - "type": "string" - }, - "type": "array" + "body": { + "type": "string" + }, + "id": { + "type": "string" + }, + "location": { + "type": "string" + }, + "rating": { + "type": "integer" + }, + "ratings_only": { + "description": "RatingsOnly marks a review that carries only a star rating with no\nwritten title/body -- confirmed live 2026-08-11 that Macy's review\nplatform allows these and this endpoint still surfaces them.", + "type": "boolean" + }, + "recommended": { + "type": "boolean" + }, + "submitted_at": { + "type": "string" + }, + "title": { + "type": "string" } }, "type": "object" }, - "metaculus.OptionsResponse": { + "macys.SuggestResponse": { "properties": { + "count": { + "type": "integer" + }, "fetched_at": { - "example": "2026-06-07T14:00:00Z", "type": "string" }, - "method": { - "example": "recency_weighted", + "query": { "type": "string" }, - "options": { + "source_url": { + "type": "string" + }, + "suggestions": { "items": { - "$ref": "#/definitions/metaculus.OptionForecast" + "type": "string" }, "type": "array" + } + }, + "type": "object" + }, + "macys.productDetailResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "options_count": { - "example": 2, + "data": { + "$ref": "#/definitions/macys.ProductDetailResponse" + }, + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "macys.productReviewsResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "options_history": { - "items": { - "$ref": "#/definitions/metaculus.OptionsChange" - }, - "type": "array" + "data": { + "$ref": "#/definitions/macys.ProductReviewsResponse" }, - "public_page_derived": { - "example": true, - "type": "boolean" + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "macys.suggestResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "question": { - "$ref": "#/definitions/metaculus.QuestionRow" + "data": { + "$ref": "#/definitions/macys.SuggestResponse" }, - "source_url": { - "example": "https://www.metaculus.com/questions/43731/", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "metaculus.Project": { + "makeuseof.AuthorResponse": { "properties": { - "emoji": { - "example": "💼", + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" + }, + "biography": { "type": "string" }, - "id": { - "example": 3698, - "type": "integer" + "image_url": { + "type": "string" }, "name": { - "example": "Economy & Business", "type": "string" }, - "slug": { - "example": "economy-business", + "social_links": { + "items": { + "$ref": "#/definitions/valnet.AuthorSocialLink" + }, + "type": "array" + }, + "title": { "type": "string" }, - "type": { - "example": "category", + "url": { "type": "string" } }, "type": "object" }, - "metaculus.QuestionMetadataResponse": { + "marketwatch.AuthorArticle": { "properties": { - "actual_close_time": { - "example": "2026-12-30T23:59:00Z", + "title": { "type": "string" }, - "actual_resolve_time": { - "example": "2027-01-02T00:00:00Z", + "url": { "type": "string" - }, - "all_options_ever": { + } + }, + "type": "object" + }, + "marketwatch.AuthorResponse": { + "properties": { + "articles": { "items": { - "type": "string" + "$ref": "#/definitions/marketwatch.AuthorArticle" }, "type": "array" }, - "default_aggregation_method": { - "example": "recency_weighted", + "bio": { "type": "string" }, - "default_score_type": { - "example": "peer", + "job_title": { "type": "string" }, - "fetched_at": { - "example": "2026-06-07T14:00:00Z", + "name": { "type": "string" }, - "group_variable": { - "example": "Company", + "slug": { "type": "string" }, - "inbound_outcome_count": { - "example": 10, - "type": "integer" - }, - "include_bots_in_aggregates": { - "example": false, - "type": "boolean" - }, - "open_lower_bound": { - "example": false, - "type": "boolean" - }, - "open_upper_bound": { - "example": false, - "type": "boolean" + "url": { + "type": "string" }, - "options": { + "works_for": { + "type": "string" + } + }, + "type": "object" + }, + "mashable.AuthorResponse": { + "properties": { + "articles": { "items": { - "type": "string" + "$ref": "#/definitions/newsplatform.HeadlineItem" }, "type": "array" }, - "options_history": { + "biography": { "items": { - "$ref": "#/definitions/metaculus.OptionsChange" + "type": "string" }, "type": "array" }, - "options_order": { - "example": "DEFAULT", - "type": "string" - }, - "possibilities": {}, - "public_page_derived": { - "example": true, + "has_next_page": { "type": "boolean" }, - "question": { - "$ref": "#/definitions/metaculus.QuestionRow" + "image_url": { + "type": "string" }, - "resolution": { + "name": { "type": "string" }, - "resolution_set_time": { - "example": "2027-01-02T00:00:00Z", + "page": { + "type": "integer" + }, + "slug": { "type": "string" }, - "scaling": { - "$ref": "#/definitions/metaculus.QuestionScaling" + "social_links": { + "items": { + "$ref": "#/definitions/mashable.AuthorSocialLink" + }, + "type": "array" }, - "short_title": { - "example": "OpenAI or Anthropic - higher valuation on Jan 1, 2027?", + "title": { "type": "string" }, - "source_url": { - "example": "https://www.metaculus.com/questions/43731/", + "url": { "type": "string" } }, "type": "object" }, - "metaculus.QuestionResponse": { + "mashable.AuthorSocialLink": { "properties": { - "fetched_at": { - "example": "2026-06-07T14:00:00Z", + "platform": { "type": "string" }, - "question": { - "$ref": "#/definitions/metaculus.QuestionRow" - }, - "source_url": { - "example": "https://www.metaculus.com/questions/43612/", + "url": { "type": "string" } }, "type": "object" }, - "metaculus.QuestionRow": { + "mcdonalds.CategoriesResponse": { "properties": { "categories": { "items": { - "$ref": "#/definitions/metaculus.Project" + "$ref": "#/definitions/mcdonalds.Category" }, "type": "array" }, - "comment_count": { - "example": 16, + "count": { + "example": 13, "type": "integer" }, - "edited_at": { - "example": "2026-06-07T13:14:34Z", + "country": { + "description": "Country echoes the market these slugs belong to. Slugs are NOT\nportable across markets -- pass the same country back to\n/mcdonalds/menu.", + "example": "us", "type": "string" }, - "forecaster_count": { - "example": 54, - "type": "integer" - }, - "forecasts_count": { - "example": 149, - "type": "integer" + "fetched_at": { + "type": "string" }, - "id": { - "example": 43612, + "source_url": { + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.Category": { + "properties": { + "name": { + "example": "Breakfast", + "type": "string" + }, + "slug": { + "example": "breakfast", + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.ItemComponent": { + "properties": { + "allergens": { + "type": "string" + }, + "ingredients": { + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.ItemListEntry": { + "properties": { + "allergens": { + "type": "string" + }, + "components": { + "description": "Components is the per-part ingredient/allergen breakdown -- e.g. a\nburger's bun, patty, cheese and condiment each carry their own\nstatement. Absent for a single-part item.", + "items": { + "$ref": "#/definitions/mcdonalds.ItemComponent" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "image_url": { + "type": "string" + }, + "ingredients": { + "type": "string" + }, + "item_id": { + "example": "200466", + "type": "string" + }, + "name": { + "example": "Quarter Pounder with Cheese", + "type": "string" + }, + "nutrients": { + "items": { + "$ref": "#/definitions/mcdonalds.Nutrient" + }, + "type": "array" + } + }, + "type": "object" + }, + "mcdonalds.ItemListResponse": { + "properties": { + "count": { + "example": 3, "type": "integer" }, - "latest_forecast_center": { - "example": 0.52, - "type": "number" + "country": { + "example": "us", + "type": "string" }, - "latest_forecast_lower": { - "example": 0.37, - "type": "number" + "fetched_at": { + "type": "string" }, - "latest_forecast_upper": { - "example": 0.66, - "type": "number" + "items": { + "items": { + "$ref": "#/definitions/mcdonalds.ItemListEntry" + }, + "type": "array" }, - "open_time": { - "example": "2026-06-01T17:00:00Z", + "requested": { + "description": "Requested echoes the id list as asked for, so a caller can tell which\nids McDonald's returned nothing for.", + "items": { + "type": "string" + }, + "type": "array" + }, + "source_url": { + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.ItemResponse": { + "properties": { + "allergens": { + "description": "Allergens is McDonald's own allergen statement for the item.", "type": "string" }, - "projects": { + "country": { + "description": "Country echoes the market this item was read from. Item ids are NOT\nportable across markets.", + "example": "us", + "type": "string" + }, + "description": { + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "image_url": { + "type": "string" + }, + "ingredients": { + "description": "Ingredients is the full ingredient statement.", + "type": "string" + }, + "item_id": { + "example": "200463", + "type": "string" + }, + "name": { + "example": "Big Mac", + "type": "string" + }, + "nutrients": { + "description": "Nutrients are the published per-serving nutrition values.", "items": { - "$ref": "#/definitions/metaculus.Project" + "$ref": "#/definitions/mcdonalds.Nutrient" }, "type": "array" }, - "public_page_derived": { - "example": true, - "type": "boolean" + "source_url": { + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.MenuItemSummary": { + "properties": { + "calories": { + "description": "Calories is McDonald's own per-item calorie label where the category\npage prints one; often blank.", + "example": "460 Cal.", + "type": "string" }, - "published_at": { - "example": "2026-05-29T15:33:53Z", + "image_url": { "type": "string" }, - "question_id": { - "example": 43609, - "type": "integer" + "item_id": { + "example": "200300", + "type": "string" }, - "question_title": { - "example": "What will be the World Bank monthly price of liquid sulphur in June 2026?", + "name": { + "example": "Bacon, Egg & Cheese Biscuit", "type": "string" }, - "question_type": { - "example": "numeric", + "product_url": { + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.MenuResponse": { + "properties": { + "category": { + "example": "breakfast", "type": "string" }, - "resolved": { - "example": false, - "type": "boolean" + "count": { + "example": 32, + "type": "integer" }, - "scheduled_close_time": { - "example": "2026-07-15T00:00:00Z", + "country": { + "example": "us", "type": "string" }, - "scheduled_resolve_time": { - "example": "2026-09-07T00:00:00Z", + "fetched_at": { "type": "string" }, - "slug": { - "example": "tampa-sulphur-price-in-june-2026", + "items": { + "items": { + "$ref": "#/definitions/mcdonalds.MenuItemSummary" + }, + "type": "array" + }, + "source_url": { + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.Nutrient": { + "properties": { + "daily_value": { + "description": "DailyValue is the percent-daily-value where McDonald's prints one.", + "example": "45", "type": "string" }, - "status": { - "example": "open", + "key": { + "description": "Key is McDonald's stable machine identifier for the nutrient\n(e.g. \"calories\"), safer to match on than the display name.", + "example": "calories", "type": "string" }, - "title": { - "example": "Tampa sulphur price in June 2026?", + "name": { + "example": "Calories", "type": "string" }, "unit": { - "example": "USD/metric ton", + "example": "Cal.", "type": "string" }, - "url": { - "example": "https://www.metaculus.com/questions/43612/tampa-sulphur-price-in-june-2026/", + "value": { + "description": "Value is kept as a string because McDonald's publishes values like\n\"580\", \"1060\" and occasionally non-numeric qualifiers; parsing to a\nnumber here would silently drop the latter.", + "example": "580", "type": "string" } }, "type": "object" }, - "metaculus.QuestionScaling": { + "mcdonalds.Restaurant": { "properties": { - "continuous_range": { - "description": "ContinuousRange passes through Metaculus's scaling.continuous_range: null\nfor discrete questions, an array of numbers (the CDF internal locations)\nfor continuous/numeric ones. It was previously typed []string, so hydrating\na commented continuous question failed to decode and 503'd the comments\nfeeds; numbers are the correct element type.", - "items": {}, + "address": { + "example": "160 Broadway", + "type": "string" + }, + "city": { + "example": "New York", + "type": "string" + }, + "delivery_url": { + "description": "DeliveryURL is the store's delivery deep link when one is published.\nNote McDonald's points this at a third-party delivery platform.", + "type": "string" + }, + "drive_thru_hours": { + "type": "string" + }, + "facilities": { + "description": "Facilities are McDonald's own amenity codes for the restaurant\n(e.g. GIFTCARDS, MOBILEOFFERS, DRIVETHRU, WIFI).", + "items": { + "type": "string" + }, "type": "array" }, - "inbound_outcome_count": { - "example": 10, - "type": "integer" + "hours": { + "description": "Hours is the full week where McDonald's publishes it.", + "items": { + "$ref": "#/definitions/mcdonalds.RestaurantHours" + }, + "type": "array" }, - "nominal_max": { - "example": 100, + "latitude": { + "example": 40.709438, "type": "number" }, - "nominal_min": { - "example": 0, + "longitude": { + "example": -74.010086, "type": "number" }, - "open_lower_bound": { - "example": false, - "type": "boolean" + "name": { + "example": "160 BROADWAY", + "type": "string" }, - "open_upper_bound": { - "example": false, - "type": "boolean" + "open_status": { + "example": "OPEN", + "type": "string" }, - "range_max": { - "example": 100, + "postal_code": { + "example": "10038", + "type": "string" + }, + "state": { + "example": "NY", + "type": "string" + }, + "store_id": { + "example": "10528", + "type": "string" + }, + "telephone": { + "example": "(212) 385-2066", + "type": "string" + }, + "timezone": { + "type": "string" + }, + "today_hours": { + "description": "TodayHours and DriveThruHours are the published windows for today.", + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.RestaurantHours": { + "properties": { + "day_of_week": { + "example": "monday", + "type": "string" + }, + "hours": { + "example": "00:00 - 00:00", + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.RestaurantMenuChoice": { + "properties": { + "options": { + "items": { + "$ref": "#/definitions/mcdonalds.RestaurantMenuChoiceOption" + }, + "type": "array" + } + }, + "type": "object" + }, + "mcdonalds.RestaurantMenuChoiceOption": { + "properties": { + "item_id": { + "example": "14877", + "type": "string" + }, + "name": { + "example": "Lemonade", + "type": "string" + }, + "price_delta": { + "description": "PriceDelta is the additional eat-in/pickup cost of choosing this\noption instead of what's already included: 0 for a same-priced\nswap, negative for a cheaper one, and equal to the option's own\nfull price for an add-on choice (nothing is included to offset\nagainst).", + "example": 0.4, "type": "number" + } + }, + "type": "object" + }, + "mcdonalds.RestaurantMenuItem": { + "properties": { + "choices": { + "description": "Choices lists this item's customizable components McDonald's\npublishes a curated substitute/add-on list for -- e.g. a meal's\ndrink upgrade options, or a dip-able item's sauce choices -- with\nthe live eat-in/pickup price delta for each real alternative.\nPresent only when the upstream payload exposed at least one such\nchoice for this item; see the package doc comment for how these are\nderived and the deliberate fail-closed rule behind what gets left\nout (in particular, plain entree/side substitution is not exposed\nat all -- McDonald's does not publish a curated candidate list for\nit, only for upgrade/add-on style choices).", + "items": { + "$ref": "#/definitions/mcdonalds.RestaurantMenuChoice" + }, + "type": "array" }, - "range_min": { - "example": 0, + "delivery_price": { + "example": 8.39, "type": "number" }, - "zero_point": { - "example": 0, + "eat_in_price": { + "example": 7.29, + "type": "number" + }, + "family_group": { + "description": "FamilyGroup is McDonald's own internal product classification (e.g.\nREGULAR_ENTREE, DESSERT) -- not the same category list\n/mcdonalds/categories returns, and not always present.", + "example": "REGULAR_ENTREE", + "type": "string" + }, + "image_url": { + "type": "string" + }, + "item_id": { + "example": "5", + "type": "string" + }, + "name": { + "example": "Big Mac®", + "type": "string" + }, + "pickup_price": { + "example": 7.29, "type": "number" } }, "type": "object" }, - "metaculus.QuestionsResponse": { + "mcdonalds.RestaurantMenuResponse": { "properties": { - "feed": { - "example": "questions", + "count": { + "example": 563, + "type": "integer" + }, + "currency": { + "example": "$", "type": "string" }, "fetched_at": { - "example": "2026-06-07T14:00:00Z", "type": "string" }, - "limit": { - "example": 10, + "items": { + "items": { + "$ref": "#/definitions/mcdonalds.RestaurantMenuItem" + }, + "type": "array" + }, + "source_url": { + "type": "string" + }, + "store_id": { + "example": "10528", + "type": "string" + } + }, + "type": "object" + }, + "mcdonalds.RestaurantsResponse": { + "properties": { + "count": { + "example": 5, "type": "integer" }, - "questions": { + "country": { + "description": "Country echoes the market searched, so a response is self-describing\nwhen several markets are queried in one workflow.", + "example": "us", + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "restaurants": { "items": { - "$ref": "#/definitions/metaculus.QuestionRow" + "$ref": "#/definitions/mcdonalds.Restaurant" }, "type": "array" }, "source_url": { - "example": "https://www.metaculus.com/questions/", "type": "string" } }, "type": "object" }, - "metaculus.forecastHistoryResponseDoc": { + "mcdonalds.categoriesResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/metaculus.ForecastHistoryResponse" + "$ref": "#/definitions/mcdonalds.CategoriesResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "metaculus.forecastsResponseDoc": { + "mcdonalds.itemListResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/metaculus.ForecastsResponse" + "$ref": "#/definitions/mcdonalds.ItemListResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "metaculus.metadataResponseDoc": { + "mcdonalds.itemResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/metaculus.QuestionMetadataResponse" + "$ref": "#/definitions/mcdonalds.ItemResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "metaculus.optionsResponseDoc": { + "mcdonalds.menuResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/metaculus.OptionsResponse" + "$ref": "#/definitions/mcdonalds.MenuResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "metaculus.questionResponseDoc": { + "mcdonalds.restaurantMenuResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/metaculus.QuestionResponse" + "$ref": "#/definitions/mcdonalds.RestaurantMenuResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "metaculus.questionsResponseDoc": { + "mcdonalds.restaurantsResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/metaculus.QuestionsResponse" + "$ref": "#/definitions/mcdonalds.RestaurantsResponse" }, "msg": { - "example": "OK", + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "mediaite.AuthorArticle": { + "properties": { + "date": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "metajobs.ListResponse": { + "mediaite.AuthorResponse": { "properties": { - "listings": { + "articles": { "items": { - "$ref": "#/definitions/metajobs.MetaJobListing" + "$ref": "#/definitions/mediaite.AuthorArticle" }, "type": "array" }, - "page": { - "example": 1, - "type": "integer" + "avatar_url": { + "type": "string" }, - "page_size": { - "example": 50, - "type": "integer" + "bio": { + "type": "string" }, - "source_url": { + "email": { "type": "string" }, - "total": { - "example": 754, - "type": "integer" - } - }, - "type": "object" - }, - "metajobs.MetaJob": { - "properties": { - "compensation_country": { - "example": "US", + "name": { "type": "string" }, - "compensation_max": { - "example": "$241,000/year", + "slug": { "type": "string" }, - "compensation_min": { - "example": "$173,000/year", + "twitter": { "type": "string" }, - "departments": { - "example": [ - "Product Management" - ], + "url": { + "type": "string" + } + }, + "type": "object" + }, + "medicalnewstoday.ArticleResponse": { + "properties": { + "authors": { "items": { "type": "string" }, @@ -97944,137 +100644,136 @@ "description": { "type": "string" }, - "id": { - "example": "1238249364564427", + "image_url": { "type": "string" }, - "locations": { - "example": [ - "Menlo Park", - " CA" - ], + "paragraphs": { "items": { "type": "string" }, "type": "array" }, - "minimum_qualifications": { - "items": { - "type": "string" - }, - "type": "array" + "paywalled": { + "description": "Paywalled is true when the publisher serves only a teaser of this\narticle to anonymous readers, so Paragraphs is a partial body rather than\nthe full text. It is omitted when the full public body was returned.", + "type": "boolean" }, - "preferred_qualifications": { - "items": { - "type": "string" - }, - "type": "array" + "published_at": { + "type": "string" }, - "responsibilities": { - "items": { - "type": "string" - }, - "type": "array" + "section": { + "type": "string" }, "title": { - "example": "Product Manager", + "type": "string" + }, + "updated_at": { "type": "string" }, "url": { - "example": "https://www.metacareers.com/profile/job_details/1238249364564427/", "type": "string" } }, "type": "object" }, - "metajobs.MetaJobListing": { + "medicalnewstoday.AuthorResponse": { "properties": { - "id": { - "example": "1238249364564427", + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" + }, + "bio": { "type": "string" }, - "last_modified": { - "example": "2026-07-29T01:17:34-07:00", + "name": { + "type": "string" + }, + "slug": { "type": "string" }, "url": { - "example": "https://www.metacareers.com/profile/job_details/1238249364564427/", "type": "string" } }, "type": "object" }, - "metajobs.MetaJobSearchResult": { + "medicalnewstoday.HeadlinesResponse": { "properties": { - "id": { - "example": "1010234865172301", - "type": "string" - }, - "locations": { - "example": [ - "Sunnyvale", - " CA" - ], + "items": { "items": { - "type": "string" + "$ref": "#/definitions/newsplatform.HeadlineItem" }, "type": "array" }, - "sub_teams": { - "example": [ - "Hardware" - ], + "section": { + "type": "string" + } + }, + "type": "object" + }, + "medicalnewstoday.NewsResponse": { + "properties": { + "items": { "items": { - "type": "string" + "$ref": "#/definitions/newsplatform.HeadlineItem" }, "type": "array" - }, - "teams": { - "example": [ - "Infrastructure" - ], + } + }, + "type": "object" + }, + "medicalnewstoday.SectionsResponse": { + "properties": { + "sections": { "items": { - "type": "string" + "$ref": "#/definitions/newsplatform.Section" }, "type": "array" + } + }, + "type": "object" + }, + "medicalnewstoday.articleResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "title": { - "example": "ASIC Engineer, Design", - "type": "string" + "data": { + "$ref": "#/definitions/medicalnewstoday.ArticleResponse" }, - "url": { - "example": "https://www.metacareers.com/profile/job_details/1010234865172301/", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "metajobs.SearchResponse": { + "medicalnewstoday.authorResponseDoc": { "properties": { - "jobs": { - "items": { - "$ref": "#/definitions/metajobs.MetaJobSearchResult" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" }, - "source_url": { - "type": "string" + "data": { + "$ref": "#/definitions/medicalnewstoday.AuthorResponse" }, - "total": { - "example": 58, - "type": "integer" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "metajobs.jobResponseDoc": { + "medicalnewstoday.headlinesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/metajobs.MetaJob" + "$ref": "#/definitions/medicalnewstoday.HeadlinesResponse" }, "msg": { "example": "OK", @@ -98083,14 +100782,14 @@ }, "type": "object" }, - "metajobs.listResponseDoc": { + "medicalnewstoday.newsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/metajobs.ListResponse" + "$ref": "#/definitions/medicalnewstoday.NewsResponse" }, "msg": { "example": "OK", @@ -98099,14 +100798,14 @@ }, "type": "object" }, - "metajobs.searchResponseDoc": { + "medicalnewstoday.sectionsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/metajobs.SearchResponse" + "$ref": "#/definitions/medicalnewstoday.SectionsResponse" }, "msg": { "example": "OK", @@ -98115,18 +100814,12 @@ }, "type": "object" }, - "metro.AuthorArticle": { + "men.AuthorArticle": { "properties": { - "image_url": { - "type": "string" - }, - "published_at": { - "type": "string" - }, - "section": { + "label": { "type": "string" }, - "summary": { + "label_url": { "type": "string" }, "title": { @@ -98138,37 +100831,31 @@ }, "type": "object" }, - "metro.AuthorResponse": { + "men.AuthorResponse": { "properties": { "articles": { "items": { - "$ref": "#/definitions/metro.AuthorArticle" + "$ref": "#/definitions/men.AuthorArticle" }, "type": "array" }, "bio": { "type": "string" }, - "image_url": { + "email": { "type": "string" }, "job_title": { "type": "string" }, - "knows_about": { - "items": { - "type": "string" - }, - "type": "array" - }, "name": { "type": "string" }, - "same_as": { - "items": { - "type": "string" - }, - "type": "array" + "slug": { + "type": "string" + }, + "twitter": { + "type": "string" }, "url": { "type": "string" @@ -98176,1043 +100863,677 @@ }, "type": "object" }, - "microsoftstore.AgeRating": { + "mercari.AutocompleteResponse": { "properties": { - "age": { - "example": 13, - "type": "integer" - }, - "description": { - "example": "For ages 13 and up", + "query": { "type": "string" }, - "descriptors": { - "example": [ - "[\"Diverse Content: Discretion Advised\"]" - ], + "suggestions": { "items": { "type": "string" }, "type": "array" - }, - "system": { - "example": "ESRB", - "type": "string" - }, - "value": { - "example": "TEEN", - "type": "string" } }, "type": "object" }, - "microsoftstore.Award": { + "mercari.Brand": { "properties": { - "category": { - "example": "Productivity category", - "type": "string" - }, - "description": { - "example": "The Microsoft Store Awards celebrate apps and games that emphasize exceptional experiences for their users.", - "type": "string" - }, - "editorial_id": { - "example": "Editorials/Awards_2025/Global/Notion_xpdbvss44r0l9h", - "type": "string" + "id": { + "type": "integer" }, - "title": { - "example": "Microsoft Store Awards 2025", + "name": { "type": "string" - }, - "year": { - "example": 2025, - "type": "integer" } }, "type": "object" }, - "microsoftstore.Badge": { + "mercari.Category": { "properties": { - "icon_id": { - "example": "AI", + "icon_url": { "type": "string" }, - "text": { - "example": "Uses AI features", + "id": { + "type": "integer" + }, + "name": { "type": "string" + }, + "parent_id": { + "type": "integer" } }, "type": "object" }, - "microsoftstore.CategoriesResponse": { + "mercari.HomeResponse": { "properties": { - "categories": { + "items": { "items": { - "$ref": "#/definitions/microsoftstore.CategoryTaxonomy" + "$ref": "#/definitions/mercari.ItemSummary" }, "type": "array" - }, - "media_type": { - "example": "apps", - "type": "string" } }, "type": "object" }, - "microsoftstore.CategoryResponse": { + "mercari.ItemDetailResponse": { "properties": { - "category": { - "example": "Photo & video", - "type": "string" + "category_code": { + "type": "integer" }, - "count": { - "example": 20, + "condition_code": { "type": "integer" }, - "has_more": { - "example": true, - "type": "boolean" + "description": { + "type": "string" }, - "items": { + "hashtags": { "items": { - "$ref": "#/definitions/microsoftstore.Product" + "type": "string" }, "type": "array" }, - "media_type": { - "example": "apps", - "type": "string" - }, - "next_cursor": { - "type": "string" - }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "microsoftstore.CategoryTaxonomy": { - "properties": { - "category": { - "example": "Books & reference", + "id": { "type": "string" }, - "subcategories": { - "example": [ - "[\"E-reader\"", - "\"Fiction\"", - "\"Nonfiction\"", - "\"Reference\"]" - ], + "photos": { "items": { "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "microsoftstore.ChartsResponse": { - "properties": { - "category": { - "example": "Photo & video", - "type": "string" }, - "count": { - "example": 20, + "price_cents": { "type": "integer" }, - "discount_filter": { - "example": "onsale", + "shipping_from_state": { "type": "string" }, - "items": { + "similar_items": { "items": { - "$ref": "#/definitions/microsoftstore.Product" + "$ref": "#/definitions/mercari.ItemSummary" }, "type": "array" }, - "list": { - "example": "TopFree", + "title": { "type": "string" }, - "media_type": { - "example": "apps", + "url": { "type": "string" + } + }, + "type": "object" + }, + "mercari.ItemSummary": { + "properties": { + "condition_code": { + "type": "integer" }, - "num_players_filter": { - "example": "SinglePlayer", + "created_at_unix": { + "type": "integer" + }, + "id": { "type": "string" }, - "page": { - "example": 1, + "num_likes": { "type": "integer" }, - "page_size": { - "example": 20, + "original_price_cents": { "type": "integer" }, - "source_url": { - "type": "string" + "price_cents": { + "type": "integer" }, - "subcategory": { - "example": "E-reader", + "seller_id": { "type": "string" }, - "subscription_filter": { - "example": "gamepass", + "thumbnail_url": { "type": "string" }, "title": { - "example": "Must-have free apps", + "type": "string" + }, + "updated_at_unix": { + "type": "integer" + }, + "url": { "type": "string" } }, "type": "object" }, - "microsoftstore.EditorialResponse": { + "mercari.MasterResponse": { "properties": { - "editorial_id": { - "example": "Editorials/Awards_2025/Global/Notion_xpdbvss44r0l9h", - "type": "string" - }, - "header_image": { - "type": "string" - }, - "paragraphs": { + "brands": { "items": { - "type": "string" + "$ref": "#/definitions/mercari.Brand" }, "type": "array" }, - "relevant_products": { + "categories": { "items": { - "$ref": "#/definitions/microsoftstore.Product" + "$ref": "#/definitions/mercari.Category" }, "type": "array" }, - "source_url": { - "type": "string" - }, - "subtitle": { - "$ref": "#/definitions/microsoftstore.EditorialSubtitle" - }, - "title": { - "example": "Productivity category", - "type": "string" - } - }, - "type": "object" - }, - "microsoftstore.EditorialSubtitle": { - "properties": { - "icon": { - "type": "string" - }, - "text": { - "example": "Microsoft Store Awards 2025", - "type": "string" + "sizes": { + "items": { + "$ref": "#/definitions/mercari.Size" + }, + "type": "array" } }, "type": "object" }, - "microsoftstore.EventsResponse": { + "mercari.SearchResponse": { "properties": { - "count": { - "example": 7, - "type": "integer" - }, "items": { "items": { - "$ref": "#/definitions/microsoftstore.Product" + "$ref": "#/definitions/mercari.ItemSummary" }, "type": "array" }, - "media_type": { - "example": "apps", + "query": { "type": "string" }, - "page": { - "example": 1, + "total_results": { "type": "integer" + } + }, + "type": "object" + }, + "mercari.Size": { + "properties": { + "code": { + "type": "string" }, - "page_size": { - "example": 20, + "id": { "type": "integer" }, - "source_url": { + "name": { "type": "string" }, - "title": { - "example": "Special events", + "short_name": { "type": "string" } }, "type": "object" }, - "microsoftstore.Feature": { + "mercari.autocompleteResponseDoc": { "properties": { - "description": { - "example": "Get answers, writing help, and image generation.", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "title": { - "example": "AI assistant", + "data": { + "$ref": "#/definitions/mercari.AutocompleteResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "microsoftstore.Image": { + "mercari.homeResponseDoc": { "properties": { - "height": { - "example": 1080, + "code": { + "example": 200, "type": "integer" }, - "type": { - "example": "Screenshot", - "type": "string" + "data": { + "$ref": "#/definitions/mercari.HomeResponse" }, - "url": { - "example": "https://store-images.s-microsoft.com/image/apps.19060...f4dfc459-dae3-4ab8-8f40-18aa7ae9762f", + "msg": { + "example": "OK", "type": "string" - }, - "width": { - "example": 1920, - "type": "integer" } }, "type": "object" }, - "microsoftstore.Product": { + "mercari.masterResponseDoc": { "properties": { - "average_rating": { - "example": 4.3, - "type": "number" + "code": { + "example": 200, + "type": "integer" }, - "award": { - "$ref": "#/definitions/microsoftstore.Award" - }, - "categories": { - "example": [ - "[\"Music\"]" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "description": { - "example": "Love music and podcasts? Play your favorite songs...", - "type": "string" - }, - "display_price": { - "example": "Free", - "type": "string" - }, - "free": { - "example": true, - "type": "boolean" - }, - "icon_url": { - "example": "https://store-images.s-microsoft.com/image/apps.10546...", - "type": "string" - }, - "is_application": { - "example": true, - "type": "boolean" - }, - "is_game": { - "type": "boolean" - }, - "is_pwa": { - "type": "boolean" - }, - "is_subscription": { - "type": "boolean" - }, - "is_theme": { - "type": "boolean" - }, - "kind": { - "example": "app", - "type": "string" - }, - "media_type": { - "example": "Apps", - "type": "string" - }, - "poster_art_url": { - "type": "string" - }, - "price": { - "example": 0, - "type": "number" - }, - "product_id": { - "example": "9ncbcszsjrsb", - "type": "string" - }, - "publisher": { - "example": "Spotify AB", - "type": "string" - }, - "rating_count": { - "example": "34K", - "type": "string" + "data": { + "$ref": "#/definitions/mercari.MasterResponse" }, - "release_date_utc": { - "example": "2017-10-24T12:04:25Z", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "mercari.searchResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "title": { - "example": "Spotify - Music and Podcasts", - "type": "string" + "data": { + "$ref": "#/definitions/mercari.SearchResponse" }, - "url": { - "example": "https://apps.microsoft.com/detail/9ncbcszsjrsb", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "microsoftstore.ProductDetail": { + "metacritic.BrowseItem": { "properties": { - "age_ratings": { - "items": { - "$ref": "#/definitions/microsoftstore.AgeRating" - }, - "type": "array" + "description": { + "type": "string" }, - "allowed_platforms": { - "example": [ - "[\"Windows.Desktop\"", - "\"Windows.Xbox\"]" - ], + "genres": { "items": { - "type": "string" + "$ref": "#/definitions/metacritic.Genre" }, "type": "array" }, - "approximate_size_bytes": { - "example": 210105174, + "id": { "type": "integer" }, - "average_rating": { - "example": 4.3, - "type": "number" - }, - "badges": { - "items": { - "$ref": "#/definitions/microsoftstore.Badge" - }, - "type": "array" - }, - "box_art_url": { + "image": { "type": "string" }, - "capabilities": { - "items": { - "type": "string" - }, - "type": "array" - }, - "card_actions": { - "example": [ - "[\"Install\"", - "\"Launch\"]" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "categories": { - "example": [ - "[\"Music\"]" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "category": { - "example": "Music", - "type": "string" + "metascore": { + "$ref": "#/definitions/metacritic.ScoreSummary" }, - "currency_code": { - "example": "USD", - "type": "string" + "premiere_year": { + "type": "integer" }, - "description": { + "rating": { "type": "string" }, - "display_price": { - "example": "Free", + "release_date": { "type": "string" }, - "features": { - "items": { - "$ref": "#/definitions/microsoftstore.Feature" - }, - "type": "array" - }, - "free": { - "example": true, - "type": "boolean" + "season_count": { + "type": "integer" }, - "hero_image_url": { + "slug": { "type": "string" }, - "icon_url": { + "title": { "type": "string" }, - "is_application": { - "type": "boolean" - }, - "is_game": { - "type": "boolean" - }, - "is_purchase_enabled": { - "type": "boolean" - }, - "is_pwa": { - "type": "boolean" - }, - "is_subscription": { - "type": "boolean" - }, - "is_theme": { - "type": "boolean" - }, - "kind": { - "example": "app", + "type": { + "example": "game", "type": "string" }, - "last_update_date_utc": { - "example": "2026-09-22T14:30:28Z", + "url": { "type": "string" }, - "media_type": { - "example": "Apps", + "user_score": { + "type": "number" + } + }, + "type": "object" + }, + "metacritic.BrowseResponse": { + "properties": { + "genre": { "type": "string" }, - "package_family_names": { - "example": [ - "[\"SpotifyAB.SpotifyMusic_zpdnekdrzrea0\"]" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "platforms": { - "example": [ - "[\"x86\"", - "\"x64\"]" - ], + "items": { "items": { - "type": "string" + "$ref": "#/definitions/metacritic.BrowseItem" }, "type": "array" }, - "poster_art_url": { - "type": "string" + "page": { + "type": "integer" }, - "price": { - "example": 0, - "type": "number" + "per_page": { + "type": "integer" }, - "privacy_url": { - "example": "https://www.spotify.com/legal/privacy-policy/", + "sort": { "type": "string" }, - "product_id": { - "example": "9ncbcszsjrsb", - "type": "string" + "total": { + "type": "integer" }, - "product_type": { - "example": "Application", + "type": { "type": "string" - }, - "publisher": { - "example": "Spotify AB", + } + }, + "type": "object" + }, + "metacritic.Credit": { + "properties": { + "name": { "type": "string" }, - "publisher_address": { + "role": { + "example": "Director", "type": "string" - }, - "publisher_id": { - "example": "10113470", + } + }, + "type": "object" + }, + "metacritic.CriticReview": { + "properties": { + "author": { "type": "string" }, - "rating_count": { - "example": 34225, - "type": "integer" - }, - "rating_count_formatted": { - "example": "34.2K", + "date": { + "example": "2022-02-23", "type": "string" }, - "release_date_utc": { - "example": "2017-10-24T12:04:25Z", + "platform": { "type": "string" }, - "screenshots": { - "items": { - "$ref": "#/definitions/microsoftstore.Image" - }, - "type": "array" - }, - "skus_summary": { - "items": { - "$ref": "#/definitions/microsoftstore.SkuPrice" - }, - "type": "array" - }, - "source_url": { + "publication": { "type": "string" }, - "supported_languages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "example": "Spotify - Music and Podcasts", + "publication_slug": { "type": "string" }, - "trailers": { - "items": { - "$ref": "#/definitions/microsoftstore.Image" - }, - "type": "array" - }, - "url": { - "example": "https://apps.microsoft.com/detail/9ncbcszsjrsb", + "quote": { "type": "string" }, - "version": { - "type": "string" + "score": { + "type": "integer" }, - "website": { - "example": "https://www.spotify.com", + "url": { "type": "string" } }, "type": "object" }, - "microsoftstore.PublisherResponse": { + "metacritic.CriticReviewsResponse": { "properties": { - "count": { - "example": 3, + "page": { "type": "integer" }, - "has_more": { - "example": false, - "type": "boolean" + "per_page": { + "type": "integer" }, - "items": { + "reviews": { "items": { - "$ref": "#/definitions/microsoftstore.Product" + "$ref": "#/definitions/metacritic.CriticReview" }, "type": "array" }, - "next_cursor": { + "slug": { "type": "string" }, - "publisher_name": { - "example": "Spotify AB", + "sort": { "type": "string" }, - "source_url": { + "total": { + "type": "integer" + }, + "type": { "type": "string" } }, "type": "object" }, - "microsoftstore.RecommendedProduct": { + "metacritic.Genre": { "properties": { - "average_rating": { - "example": 4.5, - "type": "number" - }, - "categories": { - "example": [ - "[\"Action & adventure\"]" - ], - "items": { - "type": "string" - }, - "type": "array" + "id": { + "type": "integer" }, - "icon_url": { + "name": { "type": "string" + } + }, + "type": "object" + }, + "metacritic.Platform": { + "properties": { + "id": { + "type": "integer" }, - "product_id": { - "example": "9p4qk476j199", - "type": "string" + "is_lead": { + "type": "boolean" }, - "title": { - "example": "Bermuda Adventures: Farm Games", + "metascore": { + "$ref": "#/definitions/metacritic.ScoreSummary" + }, + "name": { + "example": "PlayStation 5", "type": "string" }, - "url": { - "example": "https://apps.microsoft.com/detail/9p4qk476j199", + "release_date": { "type": "string" } }, "type": "object" }, - "microsoftstore.RecommendedResponse": { + "metacritic.Product": { "properties": { - "items": { + "countries": { "items": { - "$ref": "#/definitions/microsoftstore.RecommendedProduct" + "type": "string" }, "type": "array" }, - "section_title": { - "example": "Recommended for you", + "description": { "type": "string" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "microsoftstore.RelatedResponse": { - "properties": { - "has_more_pages": { - "example": true, - "type": "boolean" + "duration": { + "type": "integer" }, - "items": { + "genres": { "items": { - "$ref": "#/definitions/microsoftstore.Product" + "$ref": "#/definitions/metacritic.Genre" }, "type": "array" }, - "page": { - "example": 1, - "type": "integer" - }, - "page_size": { - "example": 10, + "id": { "type": "integer" }, - "product_id": { - "example": "9ncbcszsjrsb", + "image": { "type": "string" }, - "product_type": { - "example": "Application", + "imdb_id": { "type": "string" }, - "source_url": { + "imdb_url": { "type": "string" }, - "total_count": { - "example": 50, - "type": "integer" - } - }, - "type": "object" - }, - "microsoftstore.Review": { - "properties": { - "device_family": { - "example": "Windows.Desktop", - "type": "string" + "in_theaters": { + "type": "boolean" }, - "helpful_negative": { - "example": 30, - "type": "integer" + "metascore": { + "$ref": "#/definitions/metacritic.ScoreSummary" }, - "helpful_positive": { - "example": 74, - "type": "integer" + "networks": { + "items": { + "type": "string" + }, + "type": "array" }, - "id": { - "example": "74a23681-6299-5cc4-5e83-a48d1c49ece6", - "type": "string" + "platforms": { + "items": { + "$ref": "#/definitions/metacritic.Platform" + }, + "type": "array" }, - "is_revised": { - "type": "boolean" + "premiere_year": { + "type": "integer" }, - "locale": { - "example": "EN-US", - "type": "string" + "production": { + "$ref": "#/definitions/metacritic.Production" }, - "market": { - "example": "US", + "rating": { + "example": "M", "type": "string" }, - "os_version": { - "example": "10.0.26200.8524", + "release_date": { + "example": "2022-02-25", "type": "string" }, - "rating": { - "example": 1, + "season_count": { "type": "integer" }, - "reviewer_name": { - "example": "constance", + "slug": { "type": "string" }, - "submitted_at_utc": { - "example": "2026-07-12T21:41:45Z", + "tagline": { "type": "string" }, - "text": { - "example": "so, the app used to be great...", + "title": { "type": "string" }, - "title": { - "example": "spotify has fallen off. HARD.", + "type": { + "example": "game", "type": "string" }, "url": { "type": "string" + }, + "user_score": { + "$ref": "#/definitions/metacritic.ScoreSummary" + }, + "video": { + "$ref": "#/definitions/metacritic.Video" } }, "type": "object" }, - "microsoftstore.ReviewsResponse": { + "metacritic.Production": { "properties": { - "has_more_pages": { - "example": true, - "type": "boolean" - }, - "next_page": { - "example": 2, - "type": "integer" - }, - "page": { - "example": 1, - "type": "integer" - }, - "page_size": { - "example": 20, - "type": "integer" - }, - "product_id": { - "example": "9ncbcszsjrsb", - "type": "string" - }, - "reviews": { + "companies": { "items": { - "$ref": "#/definitions/microsoftstore.Review" + "type": "string" }, "type": "array" }, - "sort": { - "example": "MostHelpful", - "type": "string" + "crew": { + "items": { + "$ref": "#/definitions/metacritic.Credit" + }, + "type": "array" }, - "source_url": { + "official_site": { "type": "string" - }, - "total_count": { - "example": 307, - "type": "integer" } }, "type": "object" }, - "microsoftstore.ReviewsSummaryResponse": { + "metacritic.ScoreSummary": { "properties": { - "average_rating": { - "example": 4.3, - "type": "number" - }, - "most_critical_review": { - "$ref": "#/definitions/microsoftstore.Review" - }, - "most_favorable_review": { - "$ref": "#/definitions/microsoftstore.Review" + "max": { + "example": 100, + "type": "integer" }, - "product_id": { - "example": "9ncbcszsjrsb", - "type": "string" + "negative_count": { + "type": "integer" }, - "rating_distribution": { - "type": "object" + "neutral_count": { + "type": "integer" }, - "rating_status": { - "example": "RatingAvailable", - "type": "string" + "positive_count": { + "type": "integer" }, "review_count": { - "example": 307, "type": "integer" }, - "source_url": { + "score": { + "type": "number" + }, + "sentiment": { + "example": "Universal acclaim", + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "microsoftstore.SearchResponse": { + "metacritic.UserReview": { "properties": { - "age": { - "example": "all", - "type": "string" - }, - "category": { - "example": "all", + "author": { "type": "string" }, - "count": { - "example": 20, - "type": "integer" - }, - "has_more": { - "example": true, - "type": "boolean" - }, - "items": { - "items": { - "$ref": "#/definitions/microsoftstore.Product" - }, - "type": "array" - }, - "media_type": { - "example": "all", + "date": { "type": "string" }, - "next_cursor": { - "example": "bz0wJmI9OU5DQkNTWlNKUlNCLD...", + "id": { "type": "string" }, - "price": { - "example": "all", + "platform": { "type": "string" }, - "query": { - "example": "spotify", + "quote": { "type": "string" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "microsoftstore.SkuPrice": { - "properties": { - "display_msrp": { - "example": "Free", - "type": "string" + "score": { + "type": "integer" }, - "display_price": { - "example": "Free", - "type": "string" + "spoiler": { + "type": "boolean" }, - "msrp": { - "example": 0, - "type": "number" + "thumbs_down": { + "type": "integer" }, - "price": { - "example": 0, - "type": "number" + "thumbs_up": { + "type": "integer" } }, "type": "object" }, - "microsoftstore.SpotlightResponse": { + "metacritic.UserReviewsResponse": { "properties": { - "count": { - "example": 8, + "page": { "type": "integer" }, - "items": { + "per_page": { + "type": "integer" + }, + "reviews": { "items": { - "$ref": "#/definitions/microsoftstore.Product" + "$ref": "#/definitions/metacritic.UserReview" }, "type": "array" }, - "media_type": { - "example": "home", - "type": "string" - }, - "source_url": { + "slug": { "type": "string" - } - }, - "type": "object" - }, - "microsoftstore.SuggestResponse": { - "properties": { - "completions": { - "example": [ - "[\"spotify\"", - "\"spot\"", - "\"spotify for podcasters\"]" - ], - "items": { - "type": "string" - }, - "type": "array" }, - "prefix": { - "example": "spot", + "sort": { "type": "string" }, - "products": { - "items": { - "$ref": "#/definitions/microsoftstore.SuggestedProduct" - }, - "type": "array" + "total": { + "type": "integer" }, - "source_url": { + "type": { "type": "string" } }, "type": "object" }, - "microsoftstore.SuggestedProduct": { + "metacritic.Video": { "properties": { - "icon_url": { - "type": "string" - }, - "is_application": { - "example": true, - "type": "boolean" - }, - "is_game": { - "type": "boolean" - }, - "media_type": { - "example": "apps", - "type": "string" + "duration": { + "type": "integer" }, - "product_id": { - "example": "9ncbcszsjrsb", + "embed_url": { "type": "string" }, "title": { - "example": "Spotify - Music and Podcasts", "type": "string" }, "url": { - "example": "https://apps.microsoft.com/detail/9ncbcszsjrsb", "type": "string" } }, "type": "object" }, - "microsoftstore.categoriesResponseDoc": { + "metacritic.browseResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/microsoftstore.CategoriesResponse" + "$ref": "#/definitions/metacritic.BrowseResponse" }, "msg": { "example": "OK", @@ -99221,14 +101542,14 @@ }, "type": "object" }, - "microsoftstore.categoryResponseDoc": { + "metacritic.criticReviewsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/microsoftstore.CategoryResponse" + "$ref": "#/definitions/metacritic.CriticReviewsResponse" }, "msg": { "example": "OK", @@ -99237,14 +101558,14 @@ }, "type": "object" }, - "microsoftstore.chartsResponseDoc": { + "metacritic.productResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/microsoftstore.ChartsResponse" + "$ref": "#/definitions/metacritic.Product" }, "msg": { "example": "OK", @@ -99253,14 +101574,14 @@ }, "type": "object" }, - "microsoftstore.editorialResponseDoc": { + "metacritic.userReviewsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/microsoftstore.EditorialResponse" + "$ref": "#/definitions/metacritic.UserReviewsResponse" }, "msg": { "example": "OK", @@ -99269,1859 +101590,2025 @@ }, "type": "object" }, - "microsoftstore.eventsResponseDoc": { + "metaculus.ForecastHistoryPoint": { "properties": { - "code": { - "example": 200, - "type": "integer" + "center": { + "example": 0.36, + "type": "number" }, - "data": { - "$ref": "#/definitions/microsoftstore.EventsResponse" + "centers": { + "items": { + "type": "number" + }, + "type": "array" }, - "msg": { - "example": "OK", + "end_time": { + "example": "2026-06-01T17:06:20Z", "type": "string" - } - }, - "type": "object" - }, - "microsoftstore.productResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "end_ts": { + "example": 1780333580.206417, + "type": "number" + }, + "forecaster_count": { + "example": 17, "type": "integer" }, - "data": { - "$ref": "#/definitions/microsoftstore.ProductDetail" + "interval_lower_bounds": { + "items": { + "type": "number" + }, + "type": "array" }, - "msg": { - "example": "OK", + "interval_upper_bounds": { + "items": { + "type": "number" + }, + "type": "array" + }, + "lower": { + "example": 0.26, + "type": "number" + }, + "start_time": { + "example": "2026-06-01T17:00:00Z", "type": "string" + }, + "start_ts": { + "example": 1780333200, + "type": "number" + }, + "upper": { + "example": 0.61, + "type": "number" } }, "type": "object" }, - "microsoftstore.publisherResponseDoc": { + "metaculus.ForecastHistoryResponse": { "properties": { - "code": { - "example": 200, + "fetched_at": { + "example": "2026-06-07T14:00:00Z", + "type": "string" + }, + "max_points": { + "example": 500, "type": "integer" }, - "data": { - "$ref": "#/definitions/microsoftstore.PublisherResponse" + "method": { + "example": "recency_weighted", + "type": "string" }, - "msg": { - "example": "OK", + "points": { + "items": { + "$ref": "#/definitions/metaculus.ForecastHistoryPoint" + }, + "type": "array" + }, + "points_count": { + "example": 25, + "type": "integer" + }, + "public_page_derived": { + "example": true, + "type": "boolean" + }, + "question": { + "$ref": "#/definitions/metaculus.QuestionRow" + }, + "source_url": { + "example": "https://www.metaculus.com/questions/43612/", "type": "string" } }, "type": "object" }, - "microsoftstore.recommendedResponseDoc": { + "metaculus.ForecastSummary": { "properties": { - "code": { - "example": 200, + "center": { + "example": 0.52, + "type": "number" + }, + "centers": { + "items": { + "type": "number" + }, + "type": "array" + }, + "forecaster_count": { + "example": 54, "type": "integer" }, - "data": { - "$ref": "#/definitions/microsoftstore.RecommendedResponse" + "history_points": { + "example": 25, + "type": "integer" }, - "msg": { - "example": "OK", + "interval_lower_bounds": { + "items": { + "type": "number" + }, + "type": "array" + }, + "interval_upper_bounds": { + "items": { + "type": "number" + }, + "type": "array" + }, + "lower": { + "example": 0.37, + "type": "number" + }, + "method": { + "example": "recency_weighted", "type": "string" + }, + "upper": { + "example": 0.66, + "type": "number" } }, "type": "object" }, - "microsoftstore.relatedResponseDoc": { + "metaculus.ForecastsResponse": { "properties": { - "code": { - "example": 200, + "fetched_at": { + "example": "2026-06-07T14:00:00Z", + "type": "string" + }, + "methods": { + "items": { + "$ref": "#/definitions/metaculus.ForecastSummary" + }, + "type": "array" + }, + "methods_count": { + "example": 3, "type": "integer" }, - "data": { - "$ref": "#/definitions/microsoftstore.RelatedResponse" + "public_page_derived": { + "example": true, + "type": "boolean" }, - "msg": { - "example": "OK", + "question": { + "$ref": "#/definitions/metaculus.QuestionRow" + }, + "source_url": { + "example": "https://www.metaculus.com/questions/43612/", "type": "string" } }, "type": "object" }, - "microsoftstore.reviewsResponseDoc": { + "metaculus.OptionForecast": { "properties": { - "code": { - "example": 200, + "center": { + "example": 0.42, + "type": "number" + }, + "forecast_value": { + "example": 0.42, + "type": "number" + }, + "forecaster_count": { + "example": 5, "type": "integer" }, - "data": { - "$ref": "#/definitions/microsoftstore.ReviewsResponse" + "index": { + "example": 0, + "type": "integer" }, - "msg": { - "example": "OK", + "label": { + "example": "OpenAI", "type": "string" + }, + "lower": { + "example": 0.31, + "type": "number" + }, + "mean": { + "example": 0.39, + "type": "number" + }, + "upper": { + "example": 0.43, + "type": "number" } }, "type": "object" }, - "microsoftstore.reviewsSummaryResponseDoc": { + "metaculus.OptionsChange": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/microsoftstore.ReviewsSummaryResponse" - }, - "msg": { - "example": "OK", + "changed_at": { + "example": "0001-01-01T00:00:00", "type": "string" + }, + "options": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "microsoftstore.searchResponseDoc": { + "metaculus.OptionsResponse": { "properties": { - "code": { - "example": 200, + "fetched_at": { + "example": "2026-06-07T14:00:00Z", + "type": "string" + }, + "method": { + "example": "recency_weighted", + "type": "string" + }, + "options": { + "items": { + "$ref": "#/definitions/metaculus.OptionForecast" + }, + "type": "array" + }, + "options_count": { + "example": 2, "type": "integer" }, - "data": { - "$ref": "#/definitions/microsoftstore.SearchResponse" + "options_history": { + "items": { + "$ref": "#/definitions/metaculus.OptionsChange" + }, + "type": "array" }, - "msg": { - "example": "OK", + "public_page_derived": { + "example": true, + "type": "boolean" + }, + "question": { + "$ref": "#/definitions/metaculus.QuestionRow" + }, + "source_url": { + "example": "https://www.metaculus.com/questions/43731/", "type": "string" } }, "type": "object" }, - "microsoftstore.spotlightResponseDoc": { + "metaculus.Project": { "properties": { - "code": { - "example": 200, + "emoji": { + "example": "💼", + "type": "string" + }, + "id": { + "example": 3698, "type": "integer" }, - "data": { - "$ref": "#/definitions/microsoftstore.SpotlightResponse" + "name": { + "example": "Economy & Business", + "type": "string" }, - "msg": { - "example": "OK", + "slug": { + "example": "economy-business", + "type": "string" + }, + "type": { + "example": "category", "type": "string" } }, "type": "object" }, - "microsoftstore.suggestResponseDoc": { + "metaculus.QuestionMetadataResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/microsoftstore.SuggestResponse" - }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "mirror.AuthorArticle": { - "properties": { - "label": { - "type": "string" - }, - "label_url": { + "actual_close_time": { + "example": "2026-12-30T23:59:00Z", "type": "string" }, - "title": { + "actual_resolve_time": { + "example": "2027-01-02T00:00:00Z", "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "mirror.AuthorResponse": { - "properties": { - "articles": { + "all_options_ever": { "items": { - "$ref": "#/definitions/mirror.AuthorArticle" + "type": "string" }, "type": "array" }, - "bio": { - "type": "string" - }, - "email": { - "type": "string" - }, - "job_title": { - "type": "string" - }, - "name": { - "type": "string" - }, - "slug": { + "default_aggregation_method": { + "example": "recency_weighted", "type": "string" }, - "twitter": { + "default_score_type": { + "example": "peer", "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "mlb.BoxscorePlayer": { - "properties": { - "batting_order": { + "fetched_at": { + "example": "2026-06-07T14:00:00Z", "type": "string" }, - "person": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "position": { + "group_variable": { + "example": "Company", "type": "string" }, - "stats": { - "additionalProperties": { - "additionalProperties": {}, - "type": "object" - }, - "type": "object" - } - }, - "type": "object" - }, - "mlb.BoxscoreResponse": { - "properties": { - "away": { - "$ref": "#/definitions/mlb.BoxscoreTeam" + "inbound_outcome_count": { + "example": 10, + "type": "integer" }, - "fetched_at": { - "type": "string" + "include_bots_in_aggregates": { + "example": false, + "type": "boolean" }, - "game_id": { - "type": "integer" + "open_lower_bound": { + "example": false, + "type": "boolean" }, - "home": { - "$ref": "#/definitions/mlb.BoxscoreTeam" + "open_upper_bound": { + "example": false, + "type": "boolean" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "mlb.BoxscoreTeam": { - "properties": { - "players": { + "options": { "items": { - "$ref": "#/definitions/mlb.BoxscorePlayer" + "type": "string" }, "type": "array" }, - "team": { - "$ref": "#/definitions/mlb.TeamRef" - }, - "team_stats": { - "additionalProperties": { - "additionalProperties": {}, - "type": "object" - }, - "type": "object" - } - }, - "type": "object" - }, - "mlb.Decision": { - "properties": { - "loser": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "save": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "winner": { - "$ref": "#/definitions/mlb.NamedRef" - } - }, - "type": "object" - }, - "mlb.EditorialFeedResponse": { - "properties": { - "fetched_at": { - "type": "string" - }, - "items": { + "options_history": { "items": { - "additionalProperties": {}, - "type": "object" + "$ref": "#/definitions/metaculus.OptionsChange" }, "type": "array" }, - "language": { + "options_order": { + "example": "DEFAULT", "type": "string" }, - "limit": { - "type": "integer" + "possibilities": {}, + "public_page_derived": { + "example": true, + "type": "boolean" }, - "skip": { - "type": "integer" + "question": { + "$ref": "#/definitions/metaculus.QuestionRow" }, - "slug": { + "resolution": { "type": "string" }, - "source_url": { + "resolution_set_time": { + "example": "2027-01-02T00:00:00Z", "type": "string" - } - }, - "type": "object" - }, - "mlb.EnumValue": { - "properties": { - "description": { + }, + "scaling": { + "$ref": "#/definitions/metaculus.QuestionScaling" + }, + "short_title": { + "example": "OpenAI or Anthropic - higher valuation on Jan 1, 2027?", "type": "string" }, - "value": { + "source_url": { + "example": "https://www.metaculus.com/questions/43731/", "type": "string" } }, "type": "object" }, - "mlb.GameResponse": { + "metaculus.QuestionResponse": { "properties": { - "away_boxscore": { - "$ref": "#/definitions/mlb.TeamBoxscore" - }, - "decisions": { - "$ref": "#/definitions/mlb.Decision" - }, "fetched_at": { + "example": "2026-06-07T14:00:00Z", "type": "string" }, - "game": { - "$ref": "#/definitions/mlb.GameSummary" - }, - "home_boxscore": { - "$ref": "#/definitions/mlb.TeamBoxscore" - }, - "linescore": { - "$ref": "#/definitions/mlb.Linescore" + "question": { + "$ref": "#/definitions/metaculus.QuestionRow" }, "source_url": { + "example": "https://www.metaculus.com/questions/43612/", "type": "string" } }, "type": "object" }, - "mlb.GameSide": { + "metaculus.QuestionRow": { "properties": { - "losses": { + "categories": { + "items": { + "$ref": "#/definitions/metaculus.Project" + }, + "type": "array" + }, + "comment_count": { + "example": 16, "type": "integer" }, - "probable_pitcher": { - "$ref": "#/definitions/mlb.NamedRef" + "edited_at": { + "example": "2026-06-07T13:14:34Z", + "type": "string" }, - "score": { + "forecaster_count": { + "example": 54, "type": "integer" }, - "team": { - "$ref": "#/definitions/mlb.TeamRef" + "forecasts_count": { + "example": 149, + "type": "integer" }, - "wins": { + "id": { + "example": 43612, "type": "integer" - } - }, - "type": "object" - }, - "mlb.GameStatus": { - "properties": { - "abstract": { - "type": "string" }, - "code": { - "type": "string" + "latest_forecast_center": { + "example": 0.52, + "type": "number" }, - "detailed": { - "type": "string" + "latest_forecast_lower": { + "example": 0.37, + "type": "number" }, - "reason": { - "type": "string" - } - }, - "type": "object" - }, - "mlb.GameSummary": { - "properties": { - "away": { - "$ref": "#/definitions/mlb.GameSide" + "latest_forecast_upper": { + "example": 0.66, + "type": "number" }, - "day_night": { + "open_time": { + "example": "2026-06-01T17:00:00Z", "type": "string" }, - "double_header": { - "type": "string" + "projects": { + "items": { + "$ref": "#/definitions/metaculus.Project" + }, + "type": "array" }, - "game_date": { + "public_page_derived": { + "example": true, + "type": "boolean" + }, + "published_at": { + "example": "2026-05-29T15:33:53Z", "type": "string" }, - "game_number": { + "question_id": { + "example": 43609, "type": "integer" }, - "game_type": { + "question_title": { + "example": "What will be the World Bank monthly price of liquid sulphur in June 2026?", "type": "string" }, - "home": { - "$ref": "#/definitions/mlb.GameSide" + "question_type": { + "example": "numeric", + "type": "string" }, - "id": { - "type": "integer" + "resolved": { + "example": false, + "type": "boolean" }, - "official_date": { + "scheduled_close_time": { + "example": "2026-07-15T00:00:00Z", "type": "string" }, - "scheduled_innings": { - "type": "integer" - }, - "season": { + "scheduled_resolve_time": { + "example": "2026-09-07T00:00:00Z", "type": "string" }, - "series_description": { + "slug": { + "example": "tampa-sulphur-price-in-june-2026", "type": "string" }, "status": { - "$ref": "#/definitions/mlb.GameStatus" + "example": "open", + "type": "string" }, - "venue": { - "$ref": "#/definitions/mlb.VenueRef" - } - }, - "type": "object" - }, - "mlb.ImageRef": { - "properties": { - "type": { + "title": { + "example": "Tampa sulphur price in June 2026?", + "type": "string" + }, + "unit": { + "example": "USD/metric ton", "type": "string" }, "url": { + "example": "https://www.metaculus.com/questions/43612/tampa-sulphur-price-in-june-2026/", "type": "string" } }, "type": "object" }, - "mlb.Inning": { + "metaculus.QuestionScaling": { "properties": { - "away_errors": { - "type": "integer" + "continuous_range": { + "description": "ContinuousRange passes through Metaculus's scaling.continuous_range: null\nfor discrete questions, an array of numbers (the CDF internal locations)\nfor continuous/numeric ones. It was previously typed []string, so hydrating\na commented continuous question failed to decode and 503'd the comments\nfeeds; numbers are the correct element type.", + "items": {}, + "type": "array" }, - "away_hits": { + "inbound_outcome_count": { + "example": 10, "type": "integer" }, - "away_runs": { - "type": "integer" + "nominal_max": { + "example": 100, + "type": "number" }, - "home_errors": { - "type": "integer" + "nominal_min": { + "example": 0, + "type": "number" }, - "home_hits": { - "type": "integer" + "open_lower_bound": { + "example": false, + "type": "boolean" }, - "home_runs": { - "type": "integer" + "open_upper_bound": { + "example": false, + "type": "boolean" }, - "number": { - "type": "integer" + "range_max": { + "example": 100, + "type": "number" + }, + "range_min": { + "example": 0, + "type": "number" + }, + "zero_point": { + "example": 0, + "type": "number" } }, "type": "object" }, - "mlb.LeaderCategory": { + "metaculus.QuestionsResponse": { "properties": { - "category": { + "feed": { + "example": "questions", "type": "string" }, - "game_type": { + "fetched_at": { + "example": "2026-06-07T14:00:00Z", "type": "string" }, - "group": { - "type": "string" + "limit": { + "example": 10, + "type": "integer" }, - "leaders": { + "questions": { "items": { - "$ref": "#/definitions/mlb.LeaderEntry" + "$ref": "#/definitions/metaculus.QuestionRow" }, "type": "array" }, - "season": { + "source_url": { + "example": "https://www.metaculus.com/questions/", "type": "string" - }, - "total": { - "type": "integer" } }, "type": "object" }, - "mlb.LeaderEntry": { + "metaculus.forecastHistoryResponseDoc": { "properties": { - "league": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "player": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "rank": { + "code": { + "example": 200, "type": "integer" }, - "season": { - "type": "string" - }, - "stats": { - "additionalProperties": {}, - "type": "object" - }, - "team": { - "$ref": "#/definitions/mlb.TeamRef" + "data": { + "$ref": "#/definitions/metaculus.ForecastHistoryResponse" }, - "value": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mlb.LeagueLeadersResponse": { + "metaculus.forecastsResponseDoc": { "properties": { - "categories": { - "items": { - "type": "string" - }, - "type": "array" - }, - "count": { + "code": { + "example": 200, "type": "integer" }, - "fetched_at": { + "data": { + "$ref": "#/definitions/metaculus.ForecastsResponse" + }, + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "metaculus.metadataResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "results": { - "items": { - "$ref": "#/definitions/mlb.LeaderCategory" - }, - "type": "array" + "data": { + "$ref": "#/definitions/metaculus.QuestionMetadataResponse" }, - "season": { + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "metaculus.optionsResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "source_url": { + "data": { + "$ref": "#/definitions/metaculus.OptionsResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mlb.Linescore": { + "metaculus.questionResponseDoc": { "properties": { - "away_errors": { + "code": { + "example": 200, "type": "integer" }, - "away_hits": { - "type": "integer" + "data": { + "$ref": "#/definitions/metaculus.QuestionResponse" }, - "away_runs": { + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "metaculus.questionsResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "current_inning": { - "type": "integer" + "data": { + "$ref": "#/definitions/metaculus.QuestionsResponse" }, - "home_errors": { - "type": "integer" + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "metajobs.ListResponse": { + "properties": { + "listings": { + "items": { + "$ref": "#/definitions/metajobs.MetaJobListing" + }, + "type": "array" }, - "home_hits": { + "page": { + "example": 1, "type": "integer" }, - "home_runs": { + "page_size": { + "example": 50, "type": "integer" }, - "inning_state": { + "source_url": { "type": "string" }, - "innings": { - "items": { - "$ref": "#/definitions/mlb.Inning" - }, - "type": "array" - }, - "scheduled_innings": { + "total": { + "example": 754, "type": "integer" } }, "type": "object" }, - "mlb.MLBDiscoveryResponse": { + "metajobs.MetaJob": { "properties": { - "divisions": { - "items": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "type": "array" + "compensation_country": { + "example": "US", + "type": "string" }, - "fetched_at": { + "compensation_max": { + "example": "$241,000/year", "type": "string" }, - "game_types": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "compensation_min": { + "example": "$173,000/year", + "type": "string" }, - "leader_categories": { + "departments": { + "example": [ + "Product Management" + ], "items": { - "$ref": "#/definitions/mlb.EnumValue" + "type": "string" }, "type": "array" }, - "leagues": { - "items": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "type": "array" + "description": { + "type": "string" }, - "prospect_date_ranges": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "id": { + "example": "1238249364564427", + "type": "string" }, - "prospect_minimum_pa": { + "locations": { + "example": [ + "Menlo Park", + " CA" + ], "items": { - "type": "integer" + "type": "string" }, "type": "array" }, - "prospect_positions": { + "minimum_qualifications": { "items": { - "$ref": "#/definitions/mlb.EnumValue" + "type": "string" }, "type": "array" }, - "roster_types": { + "preferred_qualifications": { "items": { - "$ref": "#/definitions/mlb.EnumValue" + "type": "string" }, "type": "array" }, - "sections": { + "responsibilities": { "items": { - "$ref": "#/definitions/mlb.NavigationItem" + "type": "string" }, "type": "array" }, - "source_url": { + "title": { + "example": "Product Manager", "type": "string" }, - "sports": { - "items": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "type": "array" + "url": { + "example": "https://www.metacareers.com/profile/job_details/1238249364564427/", + "type": "string" + } + }, + "type": "object" + }, + "metajobs.MetaJobListing": { + "properties": { + "id": { + "example": "1238249364564427", + "type": "string" }, - "standings_types": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "last_modified": { + "example": "2026-07-29T01:17:34-07:00", + "type": "string" }, - "stat_groups": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "url": { + "example": "https://www.metacareers.com/profile/job_details/1238249364564427/", + "type": "string" + } + }, + "type": "object" + }, + "metajobs.MetaJobSearchResult": { + "properties": { + "id": { + "example": "1010234865172301", + "type": "string" }, - "stat_hitter_positions": { + "locations": { + "example": [ + "Sunnyvale", + " CA" + ], "items": { - "$ref": "#/definitions/mlb.EnumValue" + "type": "string" }, "type": "array" }, - "stat_player_pools": { + "sub_teams": { + "example": [ + "Hardware" + ], "items": { - "$ref": "#/definitions/mlb.EnumValue" + "type": "string" }, "type": "array" }, - "stat_types": { + "teams": { + "example": [ + "Infrastructure" + ], "items": { - "$ref": "#/definitions/mlb.EnumValue" + "type": "string" }, "type": "array" }, - "statcast_entity_types": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "title": { + "example": "ASIC Engineer, Design", + "type": "string" }, - "statcast_expected_filter_types": { + "url": { + "example": "https://www.metacareers.com/profile/job_details/1010234865172301/", + "type": "string" + } + }, + "type": "object" + }, + "metajobs.SearchResponse": { + "properties": { + "jobs": { "items": { - "$ref": "#/definitions/mlb.EnumValue" + "$ref": "#/definitions/metajobs.MetaJobSearchResult" }, "type": "array" }, - "statcast_expected_max_year": { - "type": "integer" + "source_url": { + "type": "string" }, - "statcast_expected_min_year": { + "total": { + "example": 58, + "type": "integer" + } + }, + "type": "object" + }, + "metajobs.jobResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "statcast_expected_minimums": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" - }, - "statcast_expected_sort_directions": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" - }, - "statcast_expected_sort_fields": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "data": { + "$ref": "#/definitions/metajobs.MetaJob" }, - "statcast_expected_types": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "metajobs.listResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "statcast_leaderboards": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "data": { + "$ref": "#/definitions/metajobs.ListResponse" }, - "statcast_max_year": { + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "metajobs.searchResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "statcast_min_year": { - "type": "integer" + "data": { + "$ref": "#/definitions/metajobs.SearchResponse" }, - "statcast_minimum_bbe": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "metro.AuthorArticle": { + "properties": { + "image_url": { + "type": "string" }, - "statcast_oaa_max_year": { - "type": "integer" + "published_at": { + "type": "string" }, - "statcast_oaa_min_year": { - "type": "integer" + "section": { + "type": "string" }, - "statcast_oaa_minimums": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "summary": { + "type": "string" }, - "statcast_oaa_positions": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "title": { + "type": "string" }, - "statcast_oaa_ranges": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "metro.AuthorResponse": { + "properties": { + "articles": { "items": { - "$ref": "#/definitions/mlb.EnumValue" + "$ref": "#/definitions/metro.AuthorArticle" }, "type": "array" }, - "statcast_oaa_roles": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "bio": { + "type": "string" }, - "statcast_oaa_sort_directions": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "image_url": { + "type": "string" }, - "statcast_oaa_sort_fields": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "job_title": { + "type": "string" }, - "statcast_oaa_types": { + "knows_about": { "items": { - "$ref": "#/definitions/mlb.EnumValue" + "type": "string" }, "type": "array" }, - "statcast_positions": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "name": { + "type": "string" }, - "statcast_sort_directions": { + "same_as": { "items": { - "$ref": "#/definitions/mlb.EnumValue" + "type": "string" }, "type": "array" }, - "statcast_sort_fields": { - "items": { - "$ref": "#/definitions/mlb.EnumValue" - }, - "type": "array" + "url": { + "type": "string" } }, "type": "object" }, - "mlb.NamedRef": { + "microsoftstore.AgeRating": { "properties": { - "id": { + "age": { + "example": 13, "type": "integer" }, - "name": { + "description": { + "example": "For ages 13 and up", "type": "string" - } - }, - "type": "object" - }, - "mlb.NavigationItem": { - "properties": { - "children": { + }, + "descriptors": { + "example": [ + "[\"Diverse Content: Discretion Advised\"]" + ], "items": { - "$ref": "#/definitions/mlb.NavigationItem" + "type": "string" }, "type": "array" }, - "label": { + "system": { + "example": "ESRB", "type": "string" }, - "url": { + "value": { + "example": "TEEN", "type": "string" - }, - "visible": { - "type": "boolean" } }, "type": "object" }, - "mlb.Play": { + "microsoftstore.Award": { "properties": { - "at_bat_index": { - "type": "integer" - }, - "batter": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "description": { + "category": { + "example": "Productivity category", "type": "string" }, - "event": { + "description": { + "example": "The Microsoft Store Awards celebrate apps and games that emphasize exceptional experiences for their users.", "type": "string" }, - "event_type": { + "editorial_id": { + "example": "Editorials/Awards_2025/Global/Notion_xpdbvss44r0l9h", "type": "string" }, - "events": { - "items": { - "$ref": "#/definitions/mlb.PlayEvent" - }, - "type": "array" - }, - "half_inning": { + "title": { + "example": "Microsoft Store Awards 2025", "type": "string" }, - "inning": { + "year": { + "example": 2025, "type": "integer" - }, - "is_complete": { - "type": "boolean" - }, - "pitcher": { - "$ref": "#/definitions/mlb.NamedRef" } }, "type": "object" }, - "mlb.PlayByPlayResponse": { + "microsoftstore.Badge": { "properties": { - "fetched_at": { + "icon_id": { + "example": "AI", "type": "string" }, - "game_id": { - "type": "integer" - }, - "plays": { + "text": { + "example": "Uses AI features", + "type": "string" + } + }, + "type": "object" + }, + "microsoftstore.CategoriesResponse": { + "properties": { + "categories": { "items": { - "$ref": "#/definitions/mlb.Play" + "$ref": "#/definitions/microsoftstore.CategoryTaxonomy" }, "type": "array" }, - "source_url": { + "media_type": { + "example": "apps", "type": "string" - }, - "total": { - "type": "integer" } }, "type": "object" }, - "mlb.PlayEvent": { + "microsoftstore.CategoryResponse": { "properties": { - "description": { - "type": "string" - }, - "details": { - "additionalProperties": {}, - "type": "object" - }, - "end_time": { + "category": { + "example": "Photo & video", "type": "string" }, - "index": { + "count": { + "example": 20, "type": "integer" }, - "is_pitch": { + "has_more": { + "example": true, "type": "boolean" }, - "pitch_data": { - "additionalProperties": {}, - "type": "object" + "items": { + "items": { + "$ref": "#/definitions/microsoftstore.Product" + }, + "type": "array" }, - "pitch_number": { - "type": "integer" + "media_type": { + "example": "apps", + "type": "string" }, - "start_time": { + "next_cursor": { "type": "string" }, - "type": { + "source_url": { "type": "string" } }, "type": "object" }, - "mlb.Player": { + "microsoftstore.CategoryTaxonomy": { "properties": { - "active": { - "type": "boolean" - }, - "bat_side": { + "category": { + "example": "Books & reference", "type": "string" }, - "birth_city": { + "subcategories": { + "example": [ + "[\"E-reader\"", + "\"Fiction\"", + "\"Nonfiction\"", + "\"Reference\"]" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "microsoftstore.ChartsResponse": { + "properties": { + "category": { + "example": "Photo & video", "type": "string" }, - "birth_country": { - "type": "string" + "count": { + "example": 20, + "type": "integer" }, - "birth_date": { + "discount_filter": { + "example": "onsale", "type": "string" }, - "current_age": { - "type": "integer" - }, - "current_team": { - "$ref": "#/definitions/mlb.TeamRef" + "items": { + "items": { + "$ref": "#/definitions/microsoftstore.Product" + }, + "type": "array" }, - "full_name": { + "list": { + "example": "TopFree", "type": "string" }, - "height": { + "media_type": { + "example": "apps", "type": "string" }, - "id": { - "type": "integer" - }, - "mlb_debut_date": { + "num_players_filter": { + "example": "SinglePlayer", "type": "string" }, - "pitch_hand": { - "type": "string" + "page": { + "example": 1, + "type": "integer" }, - "position": { - "type": "string" + "page_size": { + "example": 20, + "type": "integer" }, - "position_code": { + "source_url": { "type": "string" }, - "primary_number": { + "subcategory": { + "example": "E-reader", "type": "string" }, - "weight": { - "type": "integer" - } - }, - "type": "object" - }, - "mlb.PlayerResponse": { - "properties": { - "fetched_at": { + "subscription_filter": { + "example": "gamepass", "type": "string" }, - "player": { - "$ref": "#/definitions/mlb.Player" - }, - "source_url": { + "title": { + "example": "Must-have free apps", "type": "string" } }, "type": "object" }, - "mlb.PlayerSuggestion": { + "microsoftstore.EditorialResponse": { "properties": { - "active": { - "type": "boolean" - }, - "boxscore_name": { + "editorial_id": { + "example": "Editorials/Awards_2025/Global/Notion_xpdbvss44r0l9h", "type": "string" }, - "display_name": { + "header_image": { "type": "string" }, - "headshots": { + "paragraphs": { "items": { - "$ref": "#/definitions/mlb.ImageRef" + "type": "string" }, "type": "array" }, - "id": { - "type": "integer" + "relevant_products": { + "items": { + "$ref": "#/definitions/microsoftstore.Product" + }, + "type": "array" }, - "name": { + "source_url": { "type": "string" }, - "team_id": { - "type": "integer" + "subtitle": { + "$ref": "#/definitions/microsoftstore.EditorialSubtitle" }, - "team_tri_code": { + "title": { + "example": "Productivity category", "type": "string" - }, - "use_last_name": { + } + }, + "type": "object" + }, + "microsoftstore.EditorialSubtitle": { + "properties": { + "icon": { "type": "string" }, - "use_name": { + "text": { + "example": "Microsoft Store Awards 2025", "type": "string" } }, "type": "object" }, - "mlb.ProspectStat": { + "microsoftstore.EventsResponse": { "properties": { - "age": { + "count": { + "example": 7, "type": "integer" }, - "average": { - "type": "string" - }, - "batting_stats": { - "additionalProperties": {}, - "type": "object" - }, - "blown_saves": { - "type": "integer" + "items": { + "items": { + "$ref": "#/definitions/microsoftstore.Product" + }, + "type": "array" }, - "era": { + "media_type": { + "example": "apps", "type": "string" }, - "holds": { - "type": "integer" - }, - "losses": { + "page": { + "example": 1, "type": "integer" }, - "name": { - "type": "string" - }, - "pitching_stats": { - "additionalProperties": {}, - "type": "object" - }, - "player_id": { + "page_size": { + "example": 20, "type": "integer" }, - "position": { + "source_url": { "type": "string" }, - "rank": { - "type": "integer" - }, - "saves": { - "type": "integer" - }, - "slug": { + "title": { + "example": "Special events", "type": "string" - }, - "team": { + } + }, + "type": "object" + }, + "microsoftstore.Feature": { + "properties": { + "description": { + "example": "Get answers, writing help, and image generation.", "type": "string" }, - "team_id": { - "type": "integer" - }, - "team_level": { + "title": { + "example": "AI assistant", "type": "string" - }, - "wins": { - "type": "integer" } }, "type": "object" }, - "mlb.ProspectStatsResponse": { + "microsoftstore.Image": { "properties": { - "count": { + "height": { + "example": 1080, "type": "integer" }, - "date_range": { - "type": "string" - }, - "fetched_at": { + "type": { + "example": "Screenshot", "type": "string" }, - "limit": { - "type": "integer" - }, - "list_type": { + "url": { + "example": "https://store-images.s-microsoft.com/image/apps.19060...f4dfc459-dae3-4ab8-8f40-18aa7ae9762f", "type": "string" }, - "min_pa": { - "type": "integer" - }, - "offset": { + "width": { + "example": 1920, "type": "integer" + } + }, + "type": "object" + }, + "microsoftstore.Product": { + "properties": { + "average_rating": { + "example": 4.3, + "type": "number" }, - "player_type": { - "type": "string" + "award": { + "$ref": "#/definitions/microsoftstore.Award" }, - "players": { + "categories": { + "example": [ + "[\"Music\"]" + ], "items": { - "$ref": "#/definitions/mlb.ProspectStat" + "type": "string" }, "type": "array" }, - "position": { + "description": { + "example": "Love music and podcasts? Play your favorite songs...", "type": "string" }, - "query": { + "display_price": { + "example": "Free", "type": "string" }, - "source_url": { + "free": { + "example": true, + "type": "boolean" + }, + "icon_url": { + "example": "https://store-images.s-microsoft.com/image/apps.10546...", "type": "string" }, - "team_id": { - "type": "integer" + "is_application": { + "example": true, + "type": "boolean" }, - "total": { - "type": "integer" - } - }, - "type": "object" - }, - "mlb.RosterPlayer": { - "properties": { - "jersey_number": { - "type": "string" + "is_game": { + "type": "boolean" }, - "person": { - "$ref": "#/definitions/mlb.NamedRef" + "is_pwa": { + "type": "boolean" }, - "position": { - "type": "string" + "is_subscription": { + "type": "boolean" }, - "position_code": { - "type": "string" + "is_theme": { + "type": "boolean" }, - "status": { + "kind": { + "example": "app", "type": "string" - } - }, - "type": "object" - }, - "mlb.RosterResponse": { - "properties": { - "count": { - "type": "integer" }, - "fetched_at": { + "media_type": { + "example": "Apps", "type": "string" }, - "players": { - "items": { - "$ref": "#/definitions/mlb.RosterPlayer" - }, - "type": "array" - }, - "roster_type": { + "poster_art_url": { "type": "string" }, - "season": { - "type": "integer" + "price": { + "example": 0, + "type": "number" }, - "source_url": { + "product_id": { + "example": "9ncbcszsjrsb", "type": "string" }, - "team_id": { - "type": "integer" - } - }, - "type": "object" - }, - "mlb.ScheduleResponse": { - "properties": { - "date": { + "publisher": { + "example": "Spotify AB", "type": "string" }, - "end_date": { + "rating_count": { + "example": "34K", "type": "string" }, - "fetched_at": { + "release_date_utc": { + "example": "2017-10-24T12:04:25Z", "type": "string" }, - "games": { - "items": { - "$ref": "#/definitions/mlb.GameSummary" - }, - "type": "array" - }, - "source_url": { + "title": { + "example": "Spotify - Music and Podcasts", "type": "string" }, - "start_date": { + "url": { + "example": "https://apps.microsoft.com/detail/9ncbcszsjrsb", "type": "string" - }, - "team_id": { - "type": "integer" - }, - "total_games": { - "type": "integer" } }, "type": "object" }, - "mlb.SearchResponse": { + "microsoftstore.ProductDetail": { "properties": { - "fetched_at": { - "type": "string" + "age_ratings": { + "items": { + "$ref": "#/definitions/microsoftstore.AgeRating" + }, + "type": "array" }, - "players": { + "allowed_platforms": { + "example": [ + "[\"Windows.Desktop\"", + "\"Windows.Xbox\"]" + ], "items": { - "$ref": "#/definitions/mlb.PlayerSuggestion" + "type": "string" }, "type": "array" }, - "query": { - "type": "string" + "approximate_size_bytes": { + "example": 210105174, + "type": "integer" }, - "search_terms": { + "average_rating": { + "example": 4.3, + "type": "number" + }, + "badges": { "items": { - "$ref": "#/definitions/mlb.TermSuggestion" + "$ref": "#/definitions/microsoftstore.Badge" }, "type": "array" }, - "source_url": { + "box_art_url": { "type": "string" }, - "teams": { + "capabilities": { "items": { - "$ref": "#/definitions/mlb.TeamSuggestion" + "type": "string" }, "type": "array" }, - "topics": { + "card_actions": { + "example": [ + "[\"Install\"", + "\"Launch\"]" + ], "items": { - "$ref": "#/definitions/mlb.TopicSuggestion" + "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "mlb.StandingsGroup": { - "properties": { - "division": { - "$ref": "#/definitions/mlb.NamedRef" }, - "league": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "teams": { + "categories": { + "example": [ + "[\"Music\"]" + ], "items": { - "$ref": "#/definitions/mlb.StandingsTeam" + "type": "string" }, "type": "array" }, - "type": { + "category": { + "example": "Music", "type": "string" - } - }, - "type": "object" - }, - "mlb.StandingsResponse": { - "properties": { - "date": { + }, + "currency_code": { + "example": "USD", "type": "string" }, - "fetched_at": { + "description": { "type": "string" }, - "groups": { + "display_price": { + "example": "Free", + "type": "string" + }, + "features": { "items": { - "$ref": "#/definitions/mlb.StandingsGroup" + "$ref": "#/definitions/microsoftstore.Feature" }, "type": "array" }, - "season": { - "type": "integer" + "free": { + "example": true, + "type": "boolean" }, - "source_url": { + "hero_image_url": { "type": "string" }, - "type": { + "icon_url": { "type": "string" - } - }, - "type": "object" - }, - "mlb.StandingsTeam": { - "properties": { - "clinched": { - "type": "boolean" }, - "division_leader": { + "is_application": { "type": "boolean" }, - "division_rank": { - "type": "string" - }, - "games_back": { - "type": "string" - }, - "league_rank": { - "type": "string" + "is_game": { + "type": "boolean" }, - "losses": { - "type": "integer" + "is_purchase_enabled": { + "type": "boolean" }, - "run_differential": { - "type": "integer" + "is_pwa": { + "type": "boolean" }, - "runs_allowed": { - "type": "integer" + "is_subscription": { + "type": "boolean" }, - "runs_scored": { - "type": "integer" + "is_theme": { + "type": "boolean" }, - "streak": { + "kind": { + "example": "app", "type": "string" }, - "team": { - "$ref": "#/definitions/mlb.TeamRef" - }, - "wild_card_games_back": { + "last_update_date_utc": { + "example": "2026-09-22T14:30:28Z", "type": "string" }, - "winning_percentage": { + "media_type": { + "example": "Apps", "type": "string" }, - "wins": { - "type": "integer" - } - }, - "type": "object" - }, - "mlb.StatSplit": { - "properties": { - "league": { - "$ref": "#/definitions/mlb.NamedRef" + "package_family_names": { + "example": [ + "[\"SpotifyAB.SpotifyMusic_zpdnekdrzrea0\"]" + ], + "items": { + "type": "string" + }, + "type": "array" }, - "player": { - "$ref": "#/definitions/mlb.NamedRef" + "platforms": { + "example": [ + "[\"x86\"", + "\"x64\"]" + ], + "items": { + "type": "string" + }, + "type": "array" }, - "position": { + "poster_art_url": { "type": "string" }, - "rank": { - "type": "integer" + "price": { + "example": 0, + "type": "number" }, - "season": { + "privacy_url": { + "example": "https://www.spotify.com/legal/privacy-policy/", "type": "string" }, - "stats": { - "additionalProperties": {}, - "type": "object" - }, - "team": { - "$ref": "#/definitions/mlb.TeamRef" - } - }, - "type": "object" - }, - "mlb.StatcastBoardResponse": { - "properties": { - "board": { + "product_id": { + "example": "9ncbcszsjrsb", "type": "string" }, - "end_year": { - "type": "integer" - }, - "fetched_at": { + "product_type": { + "example": "Application", "type": "string" }, - "filter_type": { + "publisher": { + "example": "Spotify AB", "type": "string" }, - "league_average": { - "items": {}, - "type": "array" - }, - "limit": { - "type": "integer" + "publisher_address": { + "type": "string" }, - "minimum": { + "publisher_id": { + "example": "10113470", "type": "string" }, - "offset": { + "rating_count": { + "example": 34225, "type": "integer" }, - "position": { + "rating_count_formatted": { + "example": "34.2K", "type": "string" }, - "range": { + "release_date_utc": { + "example": "2017-10-24T12:04:25Z", "type": "string" }, - "roles": { + "screenshots": { "items": { - "type": "string" + "$ref": "#/definitions/microsoftstore.Image" }, "type": "array" }, - "rows": { + "skus_summary": { "items": { - "$ref": "#/definitions/mlb.StatcastRow" + "$ref": "#/definitions/microsoftstore.SkuPrice" }, "type": "array" }, - "sort": { - "type": "string" - }, - "sort_dir": { - "type": "string" - }, "source_url": { "type": "string" }, - "split": { - "type": "string" + "supported_languages": { + "items": { + "type": "string" + }, + "type": "array" }, - "start_year": { - "type": "integer" + "title": { + "example": "Spotify - Music and Podcasts", + "type": "string" }, - "team_id": { - "type": "integer" + "trailers": { + "items": { + "$ref": "#/definitions/microsoftstore.Image" + }, + "type": "array" }, - "total": { - "type": "integer" + "url": { + "example": "https://apps.microsoft.com/detail/9ncbcszsjrsb", + "type": "string" }, - "type": { + "version": { "type": "string" }, - "year": { - "type": "integer" + "website": { + "example": "https://www.spotify.com", + "type": "string" } }, "type": "object" }, - "mlb.StatcastResponse": { + "microsoftstore.PublisherResponse": { "properties": { - "fetched_at": { - "type": "string" - }, - "limit": { - "type": "integer" - }, - "min_bbe": { - "type": "string" - }, - "offset": { + "count": { + "example": 3, "type": "integer" }, - "position": { - "type": "string" + "has_more": { + "example": false, + "type": "boolean" }, - "rows": { + "items": { "items": { - "$ref": "#/definitions/mlb.StatcastRow" + "$ref": "#/definitions/microsoftstore.Product" }, "type": "array" }, - "sort": { + "next_cursor": { "type": "string" }, - "sort_dir": { + "publisher_name": { + "example": "Spotify AB", "type": "string" }, "source_url": { "type": "string" - }, - "team_id": { - "type": "integer" - }, - "total": { - "type": "integer" - }, - "type": { - "type": "string" - }, - "year": { - "type": "integer" } }, "type": "object" }, - "mlb.StatcastRow": { + "microsoftstore.RecommendedProduct": { "properties": { - "entity_id": { - "type": "string" + "average_rating": { + "example": 4.5, + "type": "number" }, - "metrics": { - "additionalProperties": {}, - "type": "object" + "categories": { + "example": [ + "[\"Action & adventure\"]" + ], + "items": { + "type": "string" + }, + "type": "array" }, - "name": { + "icon_url": { "type": "string" }, - "position": { + "product_id": { + "example": "9p4qk476j199", "type": "string" }, - "qualified": { - "type": "boolean" - }, - "rank": { - "type": "integer" - }, - "team": { + "title": { + "example": "Bermuda Adventures: Farm Games", "type": "string" }, - "team_id": { + "url": { + "example": "https://apps.microsoft.com/detail/9p4qk476j199", "type": "string" } }, "type": "object" }, - "mlb.StatsResponse": { + "microsoftstore.RecommendedResponse": { "properties": { - "fetched_at": { - "type": "string" + "items": { + "items": { + "$ref": "#/definitions/microsoftstore.RecommendedProduct" + }, + "type": "array" }, - "group": { + "section_title": { + "example": "Recommended for you", "type": "string" }, - "limit": { - "type": "integer" - }, - "offset": { - "type": "integer" - }, - "player_id": { - "type": "integer" - }, - "season": { - "type": "integer" - }, "source_url": { "type": "string" + } + }, + "type": "object" + }, + "microsoftstore.RelatedResponse": { + "properties": { + "has_more_pages": { + "example": true, + "type": "boolean" }, - "splits": { + "items": { "items": { - "$ref": "#/definitions/mlb.StatSplit" + "$ref": "#/definitions/microsoftstore.Product" }, "type": "array" }, - "team_id": { + "page": { + "example": 1, "type": "integer" }, - "total": { + "page_size": { + "example": 10, "type": "integer" }, - "type": { + "product_id": { + "example": "9ncbcszsjrsb", + "type": "string" + }, + "product_type": { + "example": "Application", + "type": "string" + }, + "source_url": { "type": "string" + }, + "total_count": { + "example": 50, + "type": "integer" } }, "type": "object" }, - "mlb.Team": { + "microsoftstore.Review": { "properties": { - "abbreviation": { + "device_family": { + "example": "Windows.Desktop", "type": "string" }, - "active": { + "helpful_negative": { + "example": 30, + "type": "integer" + }, + "helpful_positive": { + "example": 74, + "type": "integer" + }, + "id": { + "example": "74a23681-6299-5cc4-5e83-a48d1c49ece6", + "type": "string" + }, + "is_revised": { "type": "boolean" }, - "club_name": { + "locale": { + "example": "EN-US", "type": "string" }, - "division": { - "$ref": "#/definitions/mlb.NamedRef" + "market": { + "example": "US", + "type": "string" }, - "first_year_of_play": { + "os_version": { + "example": "10.0.26200.8524", "type": "string" }, - "id": { + "rating": { + "example": 1, "type": "integer" }, - "league": { - "$ref": "#/definitions/mlb.NamedRef" + "reviewer_name": { + "example": "constance", + "type": "string" }, - "location_name": { + "submitted_at_utc": { + "example": "2026-07-12T21:41:45Z", "type": "string" }, - "name": { + "text": { + "example": "so, the app used to be great...", "type": "string" }, - "season": { - "type": "integer" + "title": { + "example": "spotify has fallen off. HARD.", + "type": "string" }, - "venue": { - "$ref": "#/definitions/mlb.VenueRef" + "url": { + "type": "string" } }, "type": "object" }, - "mlb.TeamBoxscore": { + "microsoftstore.ReviewsResponse": { "properties": { - "batters": { - "items": { - "type": "integer" - }, - "type": "array" + "has_more_pages": { + "example": true, + "type": "boolean" }, - "pitchers": { + "next_page": { + "example": 2, + "type": "integer" + }, + "page": { + "example": 1, + "type": "integer" + }, + "page_size": { + "example": 20, + "type": "integer" + }, + "product_id": { + "example": "9ncbcszsjrsb", + "type": "string" + }, + "reviews": { "items": { - "type": "integer" + "$ref": "#/definitions/microsoftstore.Review" }, "type": "array" }, - "players_used": { - "type": "integer" + "sort": { + "example": "MostHelpful", + "type": "string" }, - "team": { - "$ref": "#/definitions/mlb.TeamRef" + "source_url": { + "type": "string" }, - "team_stats": { - "additionalProperties": { - "additionalProperties": {}, - "type": "object" - }, - "type": "object" + "total_count": { + "example": 307, + "type": "integer" } }, "type": "object" }, - "mlb.TeamRef": { + "microsoftstore.ReviewsSummaryResponse": { "properties": { - "abbreviation": { + "average_rating": { + "example": 4.3, + "type": "number" + }, + "most_critical_review": { + "$ref": "#/definitions/microsoftstore.Review" + }, + "most_favorable_review": { + "$ref": "#/definitions/microsoftstore.Review" + }, + "product_id": { + "example": "9ncbcszsjrsb", "type": "string" }, - "id": { + "rating_distribution": { + "type": "object" + }, + "rating_status": { + "example": "RatingAvailable", + "type": "string" + }, + "review_count": { + "example": 307, "type": "integer" }, - "name": { + "source_url": { "type": "string" } }, "type": "object" }, - "mlb.TeamSuggestion": { + "microsoftstore.SearchResponse": { "properties": { - "club_name": { - "type": "string" - }, - "display_name": { + "age": { + "example": "all", "type": "string" }, - "franchise_name": { + "category": { + "example": "all", "type": "string" }, - "id": { + "count": { + "example": 20, "type": "integer" }, - "logos": { + "has_more": { + "example": true, + "type": "boolean" + }, + "items": { "items": { - "$ref": "#/definitions/mlb.ImageRef" + "$ref": "#/definitions/microsoftstore.Product" }, "type": "array" }, - "name": { + "media_type": { + "example": "all", "type": "string" }, - "sport_id": { - "type": "integer" - }, - "team_name": { + "next_cursor": { + "example": "bz0wJmI9OU5DQkNTWlNKUlNCLD...", "type": "string" }, - "tri_code": { + "price": { + "example": "all", "type": "string" - } - }, - "type": "object" - }, - "mlb.TeamsResponse": { - "properties": { - "count": { - "type": "integer" }, - "fetched_at": { + "query": { + "example": "spotify", "type": "string" }, - "season": { - "type": "integer" - }, "source_url": { "type": "string" - }, - "teams": { - "items": { - "$ref": "#/definitions/mlb.Team" - }, - "type": "array" } }, "type": "object" }, - "mlb.TermSuggestion": { + "microsoftstore.SkuPrice": { "properties": { - "display_name": { + "display_msrp": { + "example": "Free", "type": "string" }, - "name": { + "display_price": { + "example": "Free", "type": "string" + }, + "msrp": { + "example": 0, + "type": "number" + }, + "price": { + "example": 0, + "type": "number" } }, "type": "object" }, - "mlb.TopicSuggestion": { + "microsoftstore.SpotlightResponse": { "properties": { - "display_name": { - "type": "string" + "count": { + "example": 8, + "type": "integer" }, - "fields": { + "items": { "items": { - "type": "integer" + "$ref": "#/definitions/microsoftstore.Product" }, "type": "array" }, - "name": { + "media_type": { + "example": "home", "type": "string" }, - "slug": { + "source_url": { "type": "string" } }, "type": "object" }, - "mlb.Transaction": { + "microsoftstore.SuggestResponse": { "properties": { - "date": { - "type": "string" - }, - "description": { - "type": "string" + "completions": { + "example": [ + "[\"spotify\"", + "\"spot\"", + "\"spotify for podcasters\"]" + ], + "items": { + "type": "string" + }, + "type": "array" }, - "effective_date": { + "prefix": { + "example": "spot", "type": "string" }, - "from_team": { - "$ref": "#/definitions/mlb.TeamRef" - }, - "id": { - "type": "integer" - }, - "player": { - "$ref": "#/definitions/mlb.NamedRef" - }, - "to_team": { - "$ref": "#/definitions/mlb.TeamRef" + "products": { + "items": { + "$ref": "#/definitions/microsoftstore.SuggestedProduct" + }, + "type": "array" }, - "type": { + "source_url": { "type": "string" } }, "type": "object" }, - "mlb.TransactionsResponse": { + "microsoftstore.SuggestedProduct": { "properties": { - "count": { - "type": "integer" - }, - "end_date": { + "icon_url": { "type": "string" }, - "fetched_at": { + "is_application": { + "example": true, + "type": "boolean" + }, + "is_game": { + "type": "boolean" + }, + "media_type": { + "example": "apps", "type": "string" }, - "source_url": { + "product_id": { + "example": "9ncbcszsjrsb", "type": "string" }, - "start_date": { + "title": { + "example": "Spotify - Music and Podcasts", "type": "string" }, - "transactions": { - "items": { - "$ref": "#/definitions/mlb.Transaction" - }, - "type": "array" + "url": { + "example": "https://apps.microsoft.com/detail/9ncbcszsjrsb", + "type": "string" } }, "type": "object" }, - "mlb.VenueRef": { + "microsoftstore.categoriesResponseDoc": { "properties": { - "id": { + "code": { + "example": 200, "type": "integer" }, - "name": { + "data": { + "$ref": "#/definitions/microsoftstore.CategoriesResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mlb.boxscoreResponseDoc": { + "microsoftstore.categoryResponseDoc": { "properties": { "code": { + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.BoxscoreResponse" + "$ref": "#/definitions/microsoftstore.CategoryResponse" }, "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mlb.discoveryResponseDoc": { + "microsoftstore.chartsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.MLBDiscoveryResponse" + "$ref": "#/definitions/microsoftstore.ChartsResponse" }, "msg": { "example": "OK", @@ -101130,14 +103617,14 @@ }, "type": "object" }, - "mlb.editorialFeedResponseDoc": { + "microsoftstore.editorialResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.EditorialFeedResponse" + "$ref": "#/definitions/microsoftstore.EditorialResponse" }, "msg": { "example": "OK", @@ -101146,14 +103633,14 @@ }, "type": "object" }, - "mlb.gameResponseDoc": { + "microsoftstore.eventsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.GameResponse" + "$ref": "#/definitions/microsoftstore.EventsResponse" }, "msg": { "example": "OK", @@ -101162,14 +103649,14 @@ }, "type": "object" }, - "mlb.leagueLeadersResponseDoc": { + "microsoftstore.productResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.LeagueLeadersResponse" + "$ref": "#/definitions/microsoftstore.ProductDetail" }, "msg": { "example": "OK", @@ -101178,28 +103665,30 @@ }, "type": "object" }, - "mlb.playByPlayResponseDoc": { + "microsoftstore.publisherResponseDoc": { "properties": { "code": { + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.PlayByPlayResponse" + "$ref": "#/definitions/microsoftstore.PublisherResponse" }, "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "mlb.playerResponseDoc": { + "microsoftstore.recommendedResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.PlayerResponse" + "$ref": "#/definitions/microsoftstore.RecommendedResponse" }, "msg": { "example": "OK", @@ -101208,14 +103697,14 @@ }, "type": "object" }, - "mlb.prospectStatsResponseDoc": { + "microsoftstore.relatedResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.ProspectStatsResponse" + "$ref": "#/definitions/microsoftstore.RelatedResponse" }, "msg": { "example": "OK", @@ -101224,14 +103713,14 @@ }, "type": "object" }, - "mlb.rosterResponseDoc": { + "microsoftstore.reviewsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.RosterResponse" + "$ref": "#/definitions/microsoftstore.ReviewsResponse" }, "msg": { "example": "OK", @@ -101240,14 +103729,14 @@ }, "type": "object" }, - "mlb.scheduleResponseDoc": { + "microsoftstore.reviewsSummaryResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.ScheduleResponse" + "$ref": "#/definitions/microsoftstore.ReviewsSummaryResponse" }, "msg": { "example": "OK", @@ -101256,14 +103745,14 @@ }, "type": "object" }, - "mlb.searchResponseDoc": { + "microsoftstore.searchResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.SearchResponse" + "$ref": "#/definitions/microsoftstore.SearchResponse" }, "msg": { "example": "OK", @@ -101272,14 +103761,14 @@ }, "type": "object" }, - "mlb.standingsResponseDoc": { + "microsoftstore.spotlightResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.StandingsResponse" + "$ref": "#/definitions/microsoftstore.SpotlightResponse" }, "msg": { "example": "OK", @@ -101288,14 +103777,14 @@ }, "type": "object" }, - "mlb.statcastBoardResponseDoc": { + "microsoftstore.suggestResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/mlb.StatcastBoardResponse" + "$ref": "#/definitions/microsoftstore.SuggestResponse" }, "msg": { "example": "OK", @@ -101304,122 +103793,48 @@ }, "type": "object" }, - "mlb.statcastResponseDoc": { + "mirror.AuthorArticle": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/mlb.StatcastResponse" - }, - "msg": { - "example": "OK", + "label": { "type": "string" - } - }, - "type": "object" - }, - "mlb.statsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/mlb.StatsResponse" }, - "msg": { - "example": "OK", + "label_url": { "type": "string" - } - }, - "type": "object" - }, - "mlb.teamsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/mlb.TeamsResponse" - }, - "msg": { - "example": "OK", + "title": { "type": "string" - } - }, - "type": "object" - }, - "mlb.transactionsResponseDoc": { - "properties": { - "code": { - "type": "integer" - }, - "data": { - "$ref": "#/definitions/mlb.TransactionsResponse" }, - "msg": { + "url": { "type": "string" } }, "type": "object" }, - "modaoperandi.CategoriesResponse": { + "mirror.AuthorResponse": { "properties": { - "availability": { - "additionalProperties": { - "type": "integer" - }, - "type": "object" - }, - "categories": { - "items": { - "$ref": "#/definitions/modaoperandi.Category" - }, - "type": "array" - }, - "colors": { + "articles": { "items": { - "type": "string" + "$ref": "#/definitions/mirror.AuthorArticle" }, "type": "array" }, - "designers": { - "items": { - "$ref": "#/definitions/modaoperandi.Designer" - }, - "type": "array" + "bio": { + "type": "string" }, - "gender": { + "email": { "type": "string" }, - "sizes": { - "items": { - "type": "string" - }, - "type": "array" + "job_title": { + "type": "string" }, - "sorts": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "modaoperandi.Category": { - "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, - "total_items": { - "type": "integer" + "twitter": { + "type": "string" }, "url": { "type": "string" @@ -101427,426 +103842,236 @@ }, "type": "object" }, - "modaoperandi.Designer": { + "mlb.BoxscorePlayer": { "properties": { - "name": { + "batting_order": { "type": "string" }, - "slug": { - "type": "string" + "person": { + "$ref": "#/definitions/mlb.NamedRef" }, - "total_items": { - "type": "integer" - } - }, - "type": "object" - }, - "modaoperandi.DesignersResponse": { - "properties": { - "count": { - "type": "integer" + "position": { + "type": "string" }, - "designers": { - "items": { - "$ref": "#/definitions/modaoperandi.Designer" + "stats": { + "additionalProperties": { + "additionalProperties": {}, + "type": "object" }, - "type": "array" - }, - "gender": { - "type": "string" + "type": "object" } }, "type": "object" }, - "modaoperandi.Detail": { + "mlb.BoxscoreResponse": { "properties": { - "availability": { - "type": "string" - }, - "color": { - "type": "string" - }, - "currency": { - "type": "string" - }, - "description": { - "type": "string" - }, - "designer": { - "type": "string" - }, - "details": { - "type": "string" - }, - "id": { - "type": "string" - }, - "images": { - "items": { - "type": "string" - }, - "type": "array" - }, - "in_stock": { - "type": "boolean" + "away": { + "$ref": "#/definitions/mlb.BoxscoreTeam" }, - "name": { + "fetched_at": { "type": "string" }, - "price": { - "type": "number" + "game_id": { + "type": "integer" }, - "sizes": { - "items": { - "type": "string" - }, - "type": "array" + "home": { + "$ref": "#/definitions/mlb.BoxscoreTeam" }, - "url": { + "source_url": { "type": "string" } }, "type": "object" }, - "modaoperandi.Facets": { + "mlb.BoxscoreTeam": { "properties": { - "availability": { - "additionalProperties": { - "type": "integer" - }, - "type": "object" - }, - "categories": { - "items": { - "$ref": "#/definitions/modaoperandi.Category" - }, - "type": "array" - }, - "colors": { - "items": { - "type": "string" - }, - "type": "array" - }, - "designers": { + "players": { "items": { - "$ref": "#/definitions/modaoperandi.Designer" + "$ref": "#/definitions/mlb.BoxscorePlayer" }, "type": "array" }, - "sizes": { - "items": { - "type": "string" - }, - "type": "array" + "team": { + "$ref": "#/definitions/mlb.TeamRef" }, - "sorts": { - "items": { - "type": "string" + "team_stats": { + "additionalProperties": { + "additionalProperties": {}, + "type": "object" }, - "type": "array" + "type": "object" } }, "type": "object" }, - "modaoperandi.Product": { + "mlb.Decision": { "properties": { - "availability": { - "type": "string" - }, - "color": { - "type": "string" - }, - "currency": { - "type": "string" - }, - "designer": { - "type": "string" - }, - "id": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "in_stock": { - "type": "boolean" - }, - "name": { - "type": "string" + "loser": { + "$ref": "#/definitions/mlb.NamedRef" }, - "price": { - "type": "number" + "save": { + "$ref": "#/definitions/mlb.NamedRef" }, - "url": { - "type": "string" + "winner": { + "$ref": "#/definitions/mlb.NamedRef" } }, "type": "object" }, - "modaoperandi.SearchResponse": { + "mlb.EditorialFeedResponse": { "properties": { - "category": { + "fetched_at": { "type": "string" }, - "count": { - "type": "integer" - }, - "facets": { - "$ref": "#/definitions/modaoperandi.Facets" + "items": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "gender": { + "language": { "type": "string" }, "limit": { "type": "integer" }, - "page": { + "skip": { "type": "integer" }, - "products": { - "items": { - "$ref": "#/definitions/modaoperandi.Product" - }, - "type": "array" - }, - "query": { + "slug": { "type": "string" }, "source_url": { "type": "string" - }, - "total": { - "type": "integer" - } - }, - "type": "object" - }, - "modaoperandi.categoriesDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/modaoperandi.CategoriesResponse" - }, - "msg": { - "example": "OK", - "type": "string" } }, "type": "object" }, - "modaoperandi.designersDoc": { + "mlb.EnumValue": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/modaoperandi.DesignersResponse" - }, - "msg": { - "example": "OK", + "description": { "type": "string" - } - }, - "type": "object" - }, - "modaoperandi.productDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/modaoperandi.Detail" }, - "msg": { - "example": "OK", + "value": { "type": "string" } }, "type": "object" }, - "modaoperandi.searchDoc": { + "mlb.GameResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" + "away_boxscore": { + "$ref": "#/definitions/mlb.TeamBoxscore" }, - "data": { - "$ref": "#/definitions/modaoperandi.SearchResponse" + "decisions": { + "$ref": "#/definitions/mlb.Decision" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "moncler.CategoriesResponse": { - "properties": { - "categories": { - "items": { - "$ref": "#/definitions/moncler.Category" - }, - "type": "array" - } - }, - "type": "object" - }, - "moncler.Category": { - "properties": { - "category_id": { + "fetched_at": { "type": "string" }, - "children": { - "items": { - "$ref": "#/definitions/moncler.Category" - }, - "type": "array" + "game": { + "$ref": "#/definitions/mlb.GameSummary" }, - "description": { - "type": "string" + "home_boxscore": { + "$ref": "#/definitions/mlb.TeamBoxscore" }, - "name": { - "type": "string" + "linescore": { + "$ref": "#/definitions/mlb.Linescore" }, - "parent_id": { + "source_url": { "type": "string" } }, "type": "object" }, - "moncler.CategoryResponse": { + "mlb.GameSide": { "properties": { - "category_id": { - "type": "string" - }, - "facets": { - "items": { - "$ref": "#/definitions/moncler.SearchFacet" - }, - "type": "array" - }, - "limit": { + "losses": { "type": "integer" }, - "offset": { - "type": "integer" + "probable_pitcher": { + "$ref": "#/definitions/mlb.NamedRef" }, - "results": { - "items": { - "$ref": "#/definitions/moncler.SearchHit" - }, - "type": "array" + "score": { + "type": "integer" }, - "sort_options": { - "items": { - "$ref": "#/definitions/moncler.SortOption" - }, - "type": "array" + "team": { + "$ref": "#/definitions/mlb.TeamRef" }, - "total": { + "wins": { "type": "integer" } }, "type": "object" }, - "moncler.Product": { + "mlb.GameStatus": { "properties": { - "brand": { + "abstract": { "type": "string" }, - "care_instructions": { + "code": { "type": "string" }, - "collection": { + "detailed": { "type": "string" }, - "color": { + "reason": { "type": "string" + } + }, + "type": "object" + }, + "mlb.GameSummary": { + "properties": { + "away": { + "$ref": "#/definitions/mlb.GameSide" }, - "composition": { + "day_night": { "type": "string" }, - "currency": { + "double_header": { "type": "string" }, - "gender": { + "game_date": { "type": "string" }, - "images": { - "items": { - "$ref": "#/definitions/moncler.ProductImageGroup" - }, - "type": "array" - }, - "in_stock": { - "type": "boolean" + "game_number": { + "type": "integer" }, - "long_description": { + "game_type": { "type": "string" }, - "made_in": { - "type": "string" + "home": { + "$ref": "#/definitions/mlb.GameSide" }, - "master_id": { - "type": "string" + "id": { + "type": "integer" }, - "name": { + "official_date": { "type": "string" }, - "price": { - "type": "number" - }, - "product_id": { - "type": "string" + "scheduled_innings": { + "type": "integer" }, - "product_url": { + "season": { "type": "string" }, - "related_products": { - "description": "RelatedProducts are \"styled with\" items Moncler's own product page\nsuggests alongside this product.", - "items": { - "$ref": "#/definitions/moncler.RelatedProduct" - }, - "type": "array" - }, - "short_description": { + "series_description": { "type": "string" }, - "size_guide": { - "allOf": [ - { - "$ref": "#/definitions/moncler.SizeGuide" - } - ], - "description": "SizeGuide is this product's size chart (per-size body measurements\nand/or a cross-region size conversion table), when the upstream\nprovides one." - }, - "stock_level": { - "type": "number" - }, - "variants": { - "items": { - "$ref": "#/definitions/moncler.ProductVariant" - }, - "type": "array" + "status": { + "$ref": "#/definitions/mlb.GameStatus" }, - "variation_attributes": { - "items": { - "$ref": "#/definitions/moncler.ProductVariationAttribute" - }, - "type": "array" + "venue": { + "$ref": "#/definitions/mlb.VenueRef" } }, "type": "object" }, - "moncler.ProductImage": { + "mlb.ImageRef": { "properties": { - "alt": { + "type": { "type": "string" }, "url": { @@ -101855,2211 +104080,2155 @@ }, "type": "object" }, - "moncler.ProductImageGroup": { + "mlb.Inning": { "properties": { - "color": { - "type": "string" + "away_errors": { + "type": "integer" }, - "images": { - "items": { - "$ref": "#/definitions/moncler.ProductImage" - }, - "type": "array" + "away_hits": { + "type": "integer" }, - "view_type": { - "type": "string" - } - }, - "type": "object" - }, - "moncler.ProductVariant": { - "properties": { - "orderable": { - "type": "boolean" + "away_runs": { + "type": "integer" }, - "price": { - "type": "number" + "home_errors": { + "type": "integer" }, - "product_id": { - "type": "string" + "home_hits": { + "type": "integer" }, - "variation_values": { - "additionalProperties": { - "type": "string" - }, - "type": "object" + "home_runs": { + "type": "integer" + }, + "number": { + "type": "integer" } }, "type": "object" }, - "moncler.ProductVariationAttribute": { + "mlb.LeaderCategory": { "properties": { - "id": { + "category": { "type": "string" }, - "label": { + "game_type": { "type": "string" }, - "values": { + "group": { + "type": "string" + }, + "leaders": { "items": { - "$ref": "#/definitions/moncler.ProductVariationValue" + "$ref": "#/definitions/mlb.LeaderEntry" }, "type": "array" - } - }, - "type": "object" - }, - "moncler.ProductVariationValue": { - "properties": { - "label": { - "type": "string" }, - "orderable": { - "type": "boolean" - }, - "value": { + "season": { "type": "string" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "moncler.RelatedProduct": { + "mlb.LeaderEntry": { "properties": { - "currency": { - "type": "string" + "league": { + "$ref": "#/definitions/mlb.NamedRef" }, - "image_url": { - "type": "string" + "player": { + "$ref": "#/definitions/mlb.NamedRef" }, - "name": { + "rank": { + "type": "integer" + }, + "season": { "type": "string" }, - "price": { - "type": "number" + "stats": { + "additionalProperties": {}, + "type": "object" }, - "product_id": { + "team": { + "$ref": "#/definitions/mlb.TeamRef" + }, + "value": { "type": "string" } }, "type": "object" }, - "moncler.SearchFacet": { + "mlb.LeagueLeadersResponse": { "properties": { - "id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "values": { + "categories": { "items": { - "$ref": "#/definitions/moncler.SearchFacetValue" + "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "moncler.SearchFacetValue": { - "properties": { + }, "count": { "type": "integer" }, - "label": { + "fetched_at": { "type": "string" }, - "value": { + "results": { + "items": { + "$ref": "#/definitions/mlb.LeaderCategory" + }, + "type": "array" + }, + "season": { + "type": "integer" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "moncler.SearchHit": { + "mlb.Linescore": { "properties": { - "currency": { - "type": "string" + "away_errors": { + "type": "integer" }, - "image_alt": { - "type": "string" + "away_hits": { + "type": "integer" }, - "image_url": { - "type": "string" + "away_runs": { + "type": "integer" }, - "name": { - "type": "string" + "current_inning": { + "type": "integer" }, - "orderable": { - "type": "boolean" + "home_errors": { + "type": "integer" }, - "price": { - "type": "number" + "home_hits": { + "type": "integer" }, - "product_id": { - "type": "string" + "home_runs": { + "type": "integer" }, - "stock_level": { - "type": "number" + "inning_state": { + "type": "string" }, - "variant_ids": { + "innings": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.Inning" }, "type": "array" + }, + "scheduled_innings": { + "type": "integer" } }, "type": "object" }, - "moncler.SearchResponse": { + "mlb.MLBDiscoveryResponse": { "properties": { - "facets": { + "divisions": { "items": { - "$ref": "#/definitions/moncler.SearchFacet" + "$ref": "#/definitions/mlb.NamedRef" }, "type": "array" }, - "limit": { - "type": "integer" + "fetched_at": { + "type": "string" }, - "offset": { - "type": "integer" + "game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "query": { - "type": "string" + "leader_categories": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "results": { + "leagues": { "items": { - "$ref": "#/definitions/moncler.SearchHit" + "$ref": "#/definitions/mlb.NamedRef" }, "type": "array" }, - "sort_options": { + "prospect_date_ranges": { "items": { - "$ref": "#/definitions/moncler.SortOption" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "total": { - "type": "integer" - } - }, - "type": "object" - }, - "moncler.SizeGuide": { - "properties": { - "country_sizes": { + "prospect_minimum_pa": { "items": { - "$ref": "#/definitions/moncler.SizeGuideCountrySizes" + "type": "integer" }, "type": "array" }, - "description": { - "type": "string" + "prospect_positions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "rows": { + "prospect_ranking_positions": { "items": { - "$ref": "#/definitions/moncler.SizeGuideRow" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "moncler.SizeGuideCountrySizes": { - "properties": { - "country": { - "type": "string" }, - "sizes": { + "prospect_ranking_sort_directions": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "moncler.SizeGuideMeasurement": { - "properties": { - "cm": { - "type": "string" }, - "inches": { - "type": "string" + "prospect_ranking_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "label": { - "type": "string" - } - }, - "type": "object" - }, - "moncler.SizeGuideRow": { - "properties": { - "measurements": { + "prospect_ranking_teams": { "items": { - "$ref": "#/definitions/moncler.SizeGuideMeasurement" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "size": { - "type": "string" - } - }, - "type": "object" - }, - "moncler.SortOption": { - "properties": { - "id": { - "type": "string" + "prospect_ranking_views": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "label": { - "type": "string" - } - }, - "type": "object" - }, - "moncler.Store": { - "properties": { - "address": { - "type": "string" + "prospect_ranking_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "city": { - "type": "string" + "roster_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "country_code": { - "type": "string" + "sections": { + "items": { + "$ref": "#/definitions/mlb.NavigationItem" + }, + "type": "array" }, - "country_name": { + "source_url": { "type": "string" }, - "email": { - "type": "string" + "sports": { + "items": { + "$ref": "#/definitions/mlb.NamedRef" + }, + "type": "array" }, - "hours": { + "standings_types": { "items": { - "$ref": "#/definitions/moncler.StoreHours" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "hours_schedule": { + "stat_groups": { "items": { - "$ref": "#/definitions/moncler.StoreDaySchedule" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "latitude": { - "type": "number" + "stat_hitter_positions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "longitude": { - "type": "number" + "stat_player_pools": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "stat_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "phone": { - "type": "string" + "statcast_abs_challenge_filters": { + "$ref": "#/definitions/mlb.StatcastABSChallengeFilters" }, - "postal_code": { - "type": "string" + "statcast_active_spin_hands": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "region": { - "type": "string" + "statcast_active_spin_minimums": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "state_code": { - "type": "string" + "statcast_active_spin_seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "store_id": { - "type": "string" + "statcast_active_spin_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "store_type": { - "type": "string" - } - }, - "type": "object" - }, - "moncler.StoreDaySchedule": { - "properties": { - "day": { - "type": "string" + "statcast_active_spin_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "is_closed": { - "type": "boolean" + "statcast_arm_angle_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "slots": { + "statcast_arm_angle_group_by": { "items": { - "$ref": "#/definitions/moncler.StoreHoursSlot" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "moncler.StoreHours": { - "properties": { - "day": { - "type": "string" }, - "text": { - "type": "string" - } - }, - "type": "object" - }, - "moncler.StoreHoursSlot": { - "properties": { - "end": { - "type": "string" + "statcast_arm_angle_group_minimum_pitches": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "start": { - "type": "string" - } - }, - "type": "object" - }, - "moncler.StoresResponse": { - "properties": { - "stores": { + "statcast_arm_angle_hands": { "items": { - "$ref": "#/definitions/moncler.Store" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "moncler.SuggestResponse": { - "properties": { - "categories": { + }, + "statcast_arm_angle_minimums": { "items": { - "$ref": "#/definitions/moncler.SuggestedCategory" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "phrases": { + "statcast_arm_angle_pitch_types": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "query": { - "type": "string" + "statcast_arm_angle_seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "terms": { + "statcast_arm_angle_sort_directions": { "items": { - "$ref": "#/definitions/moncler.SuggestedTerm" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "moncler.SuggestedCategory": { - "properties": { - "category_id": { - "type": "string" }, - "name": { - "type": "string" + "statcast_arm_angle_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "parent_category_name": { - "type": "string" - } - }, - "type": "object" - }, - "moncler.SuggestedTerm": { - "properties": { - "corrected": { - "type": "boolean" + "statcast_arm_angle_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "term": { - "type": "string" - } - }, - "type": "object" - }, - "moncler.categoriesResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "statcast_arm_strength_min_throws": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/moncler.CategoriesResponse" + "statcast_arm_strength_positions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "moncler.categoryResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "statcast_arm_strength_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/moncler.CategoryResponse" + "statcast_arm_strength_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "moncler.productResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "statcast_arm_strength_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/moncler.Product" + "statcast_arm_strength_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "moncler.searchResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "statcast_arm_strength_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/moncler.SearchResponse" + "statcast_arm_value_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "moncler.storesResponseDoc": { - "properties": { - "code": { - "example": 200, + "statcast_arm_value_max_year": { "type": "integer" }, - "data": { - "$ref": "#/definitions/moncler.StoresResponse" - }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "moncler.suggestResponseDoc": { - "properties": { - "code": { - "example": 200, + "statcast_arm_value_min_year": { "type": "integer" }, - "data": { - "$ref": "#/definitions/moncler.SuggestResponse" - }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "moneycontrol.AuthorResponse": { - "properties": { - "articles": { + "statcast_arm_value_minimum_opportunities": { "items": { - "$ref": "#/definitions/moneycontrol.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "biography": { + "statcast_arm_value_situations": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "job_title": { - "type": "string" + "statcast_arm_value_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "statcast_arm_value_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "social_links": { + "statcast_arm_value_split_years": { "items": { - "$ref": "#/definitions/moneycontrol.AuthorSocialLink" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "moneycontrol.AuthorSocialLink": { - "properties": { - "type": { - "type": "string" + "statcast_arm_value_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "moneycontrol.HeadlineItem": { - "properties": { - "author": { - "type": "string" + "statcast_arm_value_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_arm_value_with_team_only": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_at": { - "type": "string" + "statcast_arm_value_years": { + "items": { + "type": "integer" + }, + "type": "array" }, - "summary": { - "type": "string" + "statcast_baserunning_filters": { + "$ref": "#/definitions/mlb.StatcastBaserunningFilters" }, - "title": { - "type": "string" + "statcast_bat_tracking_attack_zones": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "type": { - "type": "string" + "statcast_bat_tracking_bat_sides": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "motleyfool.AuthorResponse": { - "properties": { - "articles": { + "statcast_bat_tracking_contact_types": { "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "biography": { + "statcast_bat_tracking_counts": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "image_url": { - "type": "string" + "statcast_bat_tracking_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "statcast_bat_tracking_group_by": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nationafrica.AuthorArticle": { - "properties": { - "premium": { - "type": "boolean" + "statcast_bat_tracking_hard_hit_values": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "summary": { - "type": "string" + "statcast_bat_tracking_min_group_swings": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_bat_tracking_min_swings": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nationafrica.AuthorResponse": { - "properties": { - "articles": { + "statcast_bat_tracking_pitch_hands": { "items": { - "$ref": "#/definitions/nationafrica.AuthorArticle" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "bio": { - "type": "string" + "statcast_bat_tracking_pitch_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_bat_tracking_seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "statcast_bat_tracking_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "slug": { - "type": "string" + "statcast_bat_tracking_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nationalpost.AuthorArticle": { - "properties": { - "category": { - "type": "string" + "statcast_bat_tracking_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "summary": { - "type": "string" + "statcast_bat_tracking_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_batted_ball_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nationalpost.AuthorResponse": { - "properties": { - "article_count": { + "statcast_batted_ball_max_year": { "type": "integer" }, - "articles": { + "statcast_batted_ball_min_splits": { "items": { - "$ref": "#/definitions/nationalpost.AuthorArticle" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "bio": { - "type": "string" - }, - "name": { - "type": "string" - }, - "slug": { - "type": "string" + "statcast_batted_ball_min_year": { + "type": "integer" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nbc.ArticleResponse": { - "properties": { - "authors": { + "statcast_batted_ball_minimums": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "description": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "paragraphs": { + "statcast_batted_ball_pitch_types": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "published_at": { - "type": "string" + "statcast_batted_ball_seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "section": { - "type": "string" + "statcast_batted_ball_sides": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_batted_ball_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "updated_at": { - "type": "string" + "statcast_batted_ball_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nbc.AuthorArticle": { - "properties": { - "image_url": { - "type": "string" + "statcast_batted_ball_split_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_at": { - "description": "PublishedAt is NBC News' own relative time string for this feed (e.g.\n\"4h ago\", \"2d ago\") -- the author feed's markup carries no\nmachine-readable timestamp to convert to an absolute date.", - "type": "string" + "statcast_batted_ball_splits": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "section": { - "description": "Section is the article's topic label as NBC News' own byline shows it\n(e.g. \"Immigration\"), distinct from the \"news\"/\"world\"/etc. site\nbrand label shown alongside it.", - "type": "string" + "statcast_batted_ball_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_batted_ball_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nbc.AuthorResponse": { - "properties": { - "articles": { + "statcast_catcher_blocking_game_types": { "items": { - "$ref": "#/definitions/nbc.AuthorArticle" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "bio": { - "type": "string" + "statcast_catcher_blocking_minimums": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_catcher_blocking_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "job_title": { - "type": "string" + "statcast_catcher_blocking_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "statcast_catcher_blocking_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "social_links": { + "statcast_catcher_blocking_types": { "items": { - "$ref": "#/definitions/nbc.AuthorSocialLink" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nbc.AuthorSocialLink": { - "properties": { - "platform": { - "type": "string" + "statcast_catcher_blocking_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nbc.HeadlineItem": { - "properties": { - "author": { - "type": "string" + "statcast_catcher_framing_ball_strike": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_catcher_framing_bat_sides": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_at": { - "type": "string" + "statcast_catcher_framing_calls": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "summary": { - "type": "string" + "statcast_catcher_framing_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_catcher_framing_min_pitches": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nbc.HeadlinesResponse": { - "properties": { - "items": { + "statcast_catcher_framing_min_results": { "items": { - "$ref": "#/definitions/nbc.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "section": { - "type": "string" - } - }, - "type": "object" - }, - "nbc.NewsResponse": { - "properties": { - "items": { + "statcast_catcher_framing_pitch_hands": { "items": { - "$ref": "#/definitions/nbc.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "nbc.Section": { - "properties": { - "name": { - "type": "string" }, - "slug": { - "type": "string" + "statcast_catcher_framing_pitch_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nbc.SectionsResponse": { - "properties": { - "sections": { + "statcast_catcher_framing_sort_directions": { "items": { - "$ref": "#/definitions/nbc.Section" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "nbc.articleResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/nbc.ArticleResponse" + "statcast_catcher_framing_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "nbc.authorResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "statcast_catcher_framing_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/nbc.AuthorResponse" + "statcast_catcher_framing_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "nbc.headlinesResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "statcast_catcher_framing_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/nbc.HeadlinesResponse" + "statcast_catcher_pop_time_min_2b_attempts": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "nbc.newsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "statcast_catcher_pop_time_min_3b_attempts": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/nbc.NewsResponse" + "statcast_catcher_pop_time_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "nbc.sectionsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "statcast_catcher_pop_time_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/nbc.SectionsResponse" + "statcast_catcher_pop_time_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "ndtv.ArticleResponse": { - "properties": { - "authors": { + "statcast_catcher_pop_time_years": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "description": { - "type": "string" + "statcast_catcher_stance_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_catcher_stance_group_by": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "paragraphs": { + "statcast_catcher_stance_knee_codes": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "paywalled": { - "description": "Paywalled is true when the publisher serves only a teaser of this\narticle to anonymous readers, so Paragraphs is a partial body rather than\nthe full text. It is omitted when the full public body was returned.", - "type": "boolean" + "statcast_catcher_stance_min_pitches": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "premium": { - "type": "boolean" + "statcast_catcher_stance_min_results": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_at": { - "type": "string" + "statcast_catcher_stance_pitch_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "section": { - "type": "string" + "statcast_catcher_stance_seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_catcher_stance_sides": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "updated_at": { - "type": "string" + "statcast_catcher_stance_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "ndtv.AuthorArticle": { - "properties": { - "image_url": { - "type": "string" + "statcast_catcher_stance_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_on": { - "type": "string" + "statcast_catcher_stance_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "section": { - "type": "string" + "statcast_catcher_stance_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "summary": { - "type": "string" + "statcast_catcher_throwing_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_catcher_throwing_minimum_attempts": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "ndtv.AuthorResponse": { - "properties": { - "articles": { + "statcast_catcher_throwing_seasons": { "items": { - "$ref": "#/definitions/ndtv.AuthorArticle" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "bio": { - "type": "string" + "statcast_catcher_throwing_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_catcher_throwing_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "job_title": { - "type": "string" + "statcast_catcher_throwing_target_bases": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "statcast_catcher_throwing_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "same_as": { + "statcast_catcher_throwing_types": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "ndtv.HeadlineItem": { - "properties": { - "author": { - "type": "string" + "statcast_entity_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_expected_filter_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_at": { - "type": "string" + "statcast_expected_max_year": { + "type": "integer" }, - "summary": { - "type": "string" + "statcast_expected_min_year": { + "type": "integer" }, - "title": { - "type": "string" + "statcast_expected_minimums": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "type": { - "type": "string" + "statcast_expected_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "ndtv.SearchResponse": { - "properties": { - "has_more": { - "type": "boolean" + "statcast_expected_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "items": { + "statcast_expected_types": { "items": { - "$ref": "#/definitions/ndtv.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "page": { - "type": "integer" + "statcast_fielding_run_value_batting_minimums": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "query": { - "type": "string" + "statcast_fielding_run_value_fielding_minimums": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "total_results": { - "type": "integer" - } - }, - "type": "object" - }, - "news18.AuthorResponse": { - "properties": { - "articles": { + "statcast_fielding_run_value_game_types": { "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "biography": { + "statcast_fielding_run_value_group_by": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "image_url": { - "type": "string" + "statcast_fielding_run_value_positions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "statcast_fielding_run_value_seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "social_links": { + "statcast_fielding_run_value_sort_directions": { "items": { - "$ref": "#/definitions/news18.AuthorSocialLink" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "news18.AuthorSocialLink": { - "properties": { - "type": { - "type": "string" + "statcast_fielding_run_value_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newscomau.AuthorResponse": { - "properties": { - "articles": { + "statcast_fielding_run_value_team_ids": { "items": { - "$ref": "#/definitions/newscomau.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "biography": { + "statcast_fielding_run_value_types": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "image_url": { - "type": "string" + "statcast_first_base_receiving_field_out_values": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "job_title": { - "type": "string" + "statcast_first_base_receiving_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "statcast_first_base_receiving_hands": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "social_urls": { + "statcast_first_base_receiving_minimum_heights": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newscomau.HeadlineItem": { - "properties": { - "author": { - "type": "string" + "statcast_first_base_receiving_minimum_split_values": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_first_base_receiving_minimums": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_at": { - "type": "string" + "statcast_first_base_receiving_runner_states": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "summary": { - "type": "string" + "statcast_first_base_receiving_seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_first_base_receiving_secondary_splits": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "type": { - "type": "string" + "statcast_first_base_receiving_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newsmax.AuthorResponse": { - "properties": { - "articles": { + "statcast_first_base_receiving_sort_fields": { "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "biography": { + "statcast_first_base_receiving_split_year_values": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "image_url": { - "type": "string" + "statcast_first_base_receiving_throw_heights": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "statcast_first_base_receiving_throw_locations": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newsplatform.ArticleResponse": { - "properties": { - "authors": { + "statcast_first_base_receiving_throw_positions": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "description": { - "type": "string" + "statcast_first_base_receiving_time_bins": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_first_base_receiving_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "paragraphs": { + "statcast_home_runs_categories": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "paywalled": { - "description": "Paywalled is true when the publisher serves only a teaser of this\narticle to anonymous readers, so Paragraphs is a partial body rather than\nthe full text. It is omitted when the full public body was returned.", - "type": "boolean" + "statcast_home_runs_minimum_home_runs": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_at": { - "type": "string" + "statcast_home_runs_player_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "section": { - "type": "string" + "statcast_home_runs_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_home_runs_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "updated_at": { - "type": "string" + "statcast_home_runs_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newsplatform.HeadlineItem": { - "properties": { - "author": { - "type": "string" + "statcast_home_runs_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_leaderboards": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_at": { - "type": "string" + "statcast_max_year": { + "type": "integer" }, - "summary": { - "type": "string" + "statcast_min_year": { + "type": "integer" }, - "title": { - "type": "string" + "statcast_minimum_bbe": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "type": { - "type": "string" + "statcast_oaa_max_year": { + "type": "integer" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newsplatform.HeadlinesResponse": { - "properties": { - "items": { + "statcast_oaa_min_year": { + "type": "integer" + }, + "statcast_oaa_minimums": { "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "section": { - "type": "string" - } - }, - "type": "object" - }, - "newsplatform.NewsResponse": { - "properties": { - "items": { + "statcast_oaa_positions": { "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "newsplatform.Section": { - "properties": { - "name": { - "type": "string" }, - "slug": { - "type": "string" + "statcast_oaa_ranges": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newsplatform.SectionsResponse": { - "properties": { - "sections": { + "statcast_oaa_roles": { "items": { - "$ref": "#/definitions/newsplatform.Section" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "newsweek.AuthorArticle": { - "properties": { - "section": { - "type": "string" }, - "section_url": { - "type": "string" + "statcast_oaa_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "summary": { - "type": "string" + "statcast_oaa_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_oaa_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newsweek.AuthorResponse": { - "properties": { - "articles": { + "statcast_park_factor_bat_sides": { "items": { - "$ref": "#/definitions/newsweek.AuthorArticle" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "bio": { - "type": "string" + "statcast_park_factor_conditions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "email": { - "type": "string" + "statcast_park_factor_dimension_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "has_next_page": { - "type": "boolean" + "statcast_park_factor_parks": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_park_factor_rolling_windows": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "job_title": { - "type": "string" + "statcast_park_factor_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "name": { - "type": "string" + "statcast_park_factor_statcast_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "page": { - "type": "integer" + "statcast_park_factor_stats": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "slug": { - "type": "string" + "statcast_park_factor_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newyorker.ArticleResponse": { - "properties": { - "authors": { + "statcast_park_factor_years": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "description": { - "type": "string" + "statcast_percentile_batter_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_percentile_batter_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "is_accessible_for_free": { - "type": "boolean" + "statcast_percentile_comparators": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "is_truncated": { - "type": "boolean" + "statcast_percentile_pitcher_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "paragraphs": { + "statcast_percentile_pitcher_sort_fields": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "published_at": { - "type": "string" + "statcast_percentile_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "section": { - "type": "string" + "statcast_percentile_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_percentile_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "updated_at": { - "type": "string" + "statcast_percentile_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newyorker.AuthorLink": { - "properties": { - "type": { - "type": "string" + "statcast_pitch_arsenal_min_pa": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newyorker.AuthorResponse": { - "properties": { - "articles": { + "statcast_pitch_arsenal_min_pitches": { "items": { - "$ref": "#/definitions/newyorker.HeadlineItem" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "biography": { + "statcast_pitch_arsenal_pitch_aliases": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "image_url": { - "type": "string" + "statcast_pitch_arsenal_pitch_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "links": { + "statcast_pitch_arsenal_sort_directions": { "items": { - "$ref": "#/definitions/newyorker.AuthorLink" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "name": { - "type": "string" + "statcast_pitch_arsenal_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "newyorker.HeadlineItem": { - "properties": { - "author": { - "type": "string" + "statcast_pitch_arsenal_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_pitch_arsenal_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "published_at": { - "type": "string" + "statcast_pitch_arsenals_hands": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "summary": { - "type": "string" + "statcast_pitch_arsenals_minimum_pitches": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_pitch_arsenals_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "type": { - "type": "string" + "statcast_pitch_arsenals_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nike.AvailabilityResponse": { - "properties": { - "count": { + "statcast_pitch_arsenals_spin_cutoff_year": { "type": "integer" }, - "fetched_at": { - "type": "string" - }, - "group_key": { - "type": "string" - }, - "sizes": { + "statcast_pitch_arsenals_team_abbreviations": { "items": { - "$ref": "#/definitions/nike.SizeAvailability" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "nike.Breadcrumb": { - "properties": { - "name": { - "type": "string" - }, - "path": { - "type": "string" - } - }, - "type": "object" - }, - "nike.CategoriesResponse": { - "properties": { - "categories": { + "statcast_pitch_arsenals_types": { "items": { - "$ref": "#/definitions/nike.TopLevelCategory" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "fetched_at": { - "type": "string" - }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "nike.CategoryGroup": { - "properties": { - "name": { - "type": "string" - }, - "path": { - "type": "string" + "statcast_pitch_arsenals_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "slug": { - "type": "string" + "statcast_pitch_movement_hands": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "subcategories": { + "statcast_pitch_movement_minimums": { "items": { - "$ref": "#/definitions/nike.CategorySubcategory" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "nike.CategorySubcategory": { - "properties": { - "name": { - "type": "string" }, - "path": { - "type": "string" + "statcast_pitch_movement_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "slug": { - "type": "string" - } - }, - "type": "object" - }, - "nike.ColorDetail": { - "properties": { - "color_code": { - "type": "string" + "statcast_pitch_movement_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "color_description": { - "type": "string" + "statcast_pitch_movement_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "currency": { - "type": "string" + "statcast_pitch_movement_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "discount_percentage": { - "type": "integer" + "statcast_pitch_tempo_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "grouping_label": { - "type": "string" + "statcast_pitch_tempo_minimum_pitches": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "images": { + "statcast_pitch_tempo_player_types": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "initial_price": { - "type": "number" + "statcast_pitch_tempo_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "is_buyable": { - "type": "boolean" + "statcast_pitch_tempo_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "price": { - "type": "number" + "statcast_pitch_tempo_split_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "size_chart_url": { - "type": "string" + "statcast_pitch_tempo_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "sizes": { + "statcast_pitch_tempo_types": { "items": { - "$ref": "#/definitions/nike.ProductSize" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "style_code": { - "type": "string" + "statcast_pitch_tempo_with_team_only": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "style_color": { - "type": "string" + "statcast_pitch_tempo_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nike.ColorVariant": { - "properties": { - "color_description": { - "type": "string" + "statcast_pitch_timer_chart_sorts": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "color_label": { - "type": "string" + "statcast_pitch_timer_include_zeroes": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "currency": { - "type": "string" + "statcast_pitch_timer_minimum_pitches": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "discount_percentage": { - "type": "integer" + "statcast_pitch_timer_seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "image_url": { - "type": "string" + "statcast_pitch_timer_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "initial_price": { - "type": "number" + "statcast_pitch_timer_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "price": { - "type": "number" + "statcast_pitch_timer_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "slug": { - "type": "string" + "statcast_player_detail_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "style_color": { - "type": "string" + "statcast_positions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nike.FacetNav": { - "properties": { - "breadcrumbs": { + "statcast_rolling_metrics": { "items": { - "$ref": "#/definitions/nike.Breadcrumb" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "categories": { + "statcast_rolling_roles": { "items": { - "$ref": "#/definitions/nike.FacetOption" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "filters": { + "statcast_rolling_window_pa_values": { "items": { - "$ref": "#/definitions/nike.Filter" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "nike.FacetOption": { - "properties": { - "label": { - "type": "string" }, - "path": { - "type": "string" + "statcast_run_value_groups": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "result_count": { - "type": "integer" + "statcast_run_value_leverages": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "selected": { - "type": "boolean" - } - }, - "type": "object" - }, - "nike.Filter": { - "properties": { - "name": { - "type": "string" + "statcast_run_value_minimums": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "options": { + "statcast_run_value_sort_directions": { "items": { - "$ref": "#/definitions/nike.FacetOption" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" - } - }, - "type": "object" - }, - "nike.ProductDetailResponse": { - "properties": { - "color_code": { - "type": "string" }, - "color_description": { - "type": "string" + "statcast_run_value_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "colors": { + "statcast_run_value_subtypes": { "items": { - "$ref": "#/definitions/nike.ColorVariant" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "currency": { - "type": "string" + "statcast_run_value_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "description": { - "type": "string" + "statcast_run_value_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "discount_percentage": { - "type": "integer" + "statcast_running_game_filters": { + "$ref": "#/definitions/mlb.StatcastRunningGameFilters" }, - "fetched_at": { - "type": "string" + "statcast_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "genders": { + "statcast_sort_fields": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "images": { + "statcast_sprint_speed_minimum_runs": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "initial_price": { - "type": "number" + "statcast_sprint_speed_positions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "is_buyable": { - "type": "boolean" + "statcast_sprint_speed_seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "price": { - "type": "number" + "statcast_sprint_speed_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "product_details": { + "statcast_sprint_speed_sort_fields": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "product_type": { - "type": "string" + "statcast_sprint_speed_team_abbreviations": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "reason_to_buy": { - "type": "string" + "statcast_sprint_speed_team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "sizes": { + "statcast_sprint_speed_team_sort_fields": { "items": { - "$ref": "#/definitions/nike.ProductSize" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "slug": { - "type": "string" + "statcast_swing_path_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "source_url": { - "type": "string" + "statcast_swing_path_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "sport_tags": { + "statcast_swing_path_types": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "style_code": { - "type": "string" + "statcast_swing_timing_flags": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "style_color": { - "type": "string" + "statcast_swing_timing_game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "subtitle": { - "type": "string" + "statcast_swing_timing_groups_x": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "title": { - "type": "string" + "statcast_swing_timing_groups_y": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nike.ProductDetailsResponse": { - "properties": { - "colors": { + "statcast_swing_timing_groups_z": { "items": { - "$ref": "#/definitions/nike.ColorDetail" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "count": { - "type": "integer" + "statcast_swing_timing_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "description": { - "type": "string" + "statcast_swing_timing_sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "fetched_at": { - "type": "string" + "statcast_swing_timing_splits": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "genders": { + "statcast_swing_timing_types": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "group_key": { - "type": "string" + "statcast_top_performers_years": { + "items": { + "type": "integer" + }, + "type": "array" }, - "product_type": { - "type": "string" + "statcast_year_to_year_comparison_years": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "reason_to_buy": { - "type": "string" + "statcast_year_to_year_groups": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "source_url": { - "type": "string" + "statcast_year_to_year_sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "subtitle": { - "type": "string" + "statcast_year_to_year_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "mlb.NamedRef": { + "properties": { + "id": { + "type": "integer" }, - "title": { + "name": { "type": "string" } }, "type": "object" }, - "nike.ProductGroup": { + "mlb.NavigationItem": { "properties": { - "badge_label": { - "type": "string" - }, - "colors": { + "children": { "items": { - "$ref": "#/definitions/nike.ColorVariant" + "$ref": "#/definitions/mlb.NavigationItem" }, "type": "array" }, - "group_key": { - "type": "string" - }, - "product_type": { + "label": { "type": "string" }, - "subtitle": { + "url": { "type": "string" }, - "title": { - "type": "string" + "visible": { + "type": "boolean" } }, "type": "object" }, - "nike.ProductReview": { + "mlb.Play": { "properties": { - "author": { - "type": "string" + "at_bat_index": { + "type": "integer" }, - "body": { - "type": "string" + "batter": { + "$ref": "#/definitions/mlb.NamedRef" }, - "created_at": { + "description": { "type": "string" }, - "headline": { + "event": { "type": "string" }, - "helpful_votes": { - "type": "integer" - }, - "id": { + "event_type": { "type": "string" }, - "location": { - "type": "string" + "events": { + "items": { + "$ref": "#/definitions/mlb.PlayEvent" + }, + "type": "array" }, - "not_helpful_votes": { - "type": "integer" + "half_inning": { + "type": "string" }, - "rating": { + "inning": { "type": "integer" }, - "recommended": { + "is_complete": { "type": "boolean" + }, + "pitcher": { + "$ref": "#/definitions/mlb.NamedRef" } }, "type": "object" }, - "nike.ProductReviewsResponse": { + "mlb.PlayByPlayResponse": { "properties": { - "average_rating": { - "type": "number" - }, - "count": { - "type": "integer" - }, "fetched_at": { "type": "string" }, - "page": { - "type": "integer" - }, - "page_size": { + "game_id": { "type": "integer" }, - "rating_histogram": { - "description": "RatingHistogram is the count of ratings per star, ascending: index 0\nis 1-star, index 4 is 5-star.", - "items": { - "type": "integer" - }, - "type": "array" - }, - "reviews": { + "plays": { "items": { - "$ref": "#/definitions/nike.ProductReview" + "$ref": "#/definitions/mlb.Play" }, "type": "array" }, - "slug": { - "type": "string" - }, "source_url": { "type": "string" }, - "style_color": { - "type": "string" - }, - "total_pages": { - "type": "integer" - }, - "total_reviews": { + "total": { "type": "integer" } }, "type": "object" }, - "nike.ProductSize": { + "mlb.PlayEvent": { "properties": { - "label": { + "description": { "type": "string" }, - "localized_label": { - "type": "string" + "details": { + "additionalProperties": {}, + "type": "object" }, - "sku_id": { + "end_time": { "type": "string" }, - "status": { - "type": "string" - } - }, - "type": "object" - }, - "nike.RecommendationsResponse": { - "properties": { - "count": { + "index": { "type": "integer" }, - "fetched_at": { - "type": "string" + "is_pitch": { + "type": "boolean" }, - "recommendations": { - "items": { - "$ref": "#/definitions/nike.RecommendedProduct" - }, - "type": "array" + "pitch_data": { + "additionalProperties": {}, + "type": "object" }, - "source_url": { + "pitch_number": { + "type": "integer" + }, + "start_time": { "type": "string" }, - "style_color": { + "type": { "type": "string" } }, "type": "object" }, - "nike.RecommendedProduct": { + "mlb.Player": { "properties": { - "currency": { + "active": { + "type": "boolean" + }, + "bat_side": { "type": "string" }, - "image_url": { + "birth_city": { "type": "string" }, - "initial_price": { - "type": "number" + "birth_country": { + "type": "string" }, - "price": { - "type": "number" + "birth_date": { + "type": "string" }, - "price_type": { + "current_age": { + "type": "integer" + }, + "current_team": { + "$ref": "#/definitions/mlb.TeamRef" + }, + "full_name": { "type": "string" }, - "rank": { + "height": { + "type": "string" + }, + "id": { "type": "integer" }, - "style_color": { + "mlb_debut_date": { "type": "string" }, - "style_type": { + "pitch_hand": { "type": "string" }, - "subtitle": { + "position": { "type": "string" }, - "title": { + "position_code": { "type": "string" }, - "url": { + "primary_number": { "type": "string" + }, + "weight": { + "type": "integer" } }, "type": "object" }, - "nike.SearchResponse": { + "mlb.PlayerResponse": { "properties": { - "category": { + "fetched_at": { "type": "string" }, - "count": { - "type": "integer" + "player": { + "$ref": "#/definitions/mlb.Player" }, - "facet_nav": { - "allOf": [ - { - "$ref": "#/definitions/nike.FacetNav" - } - ], - "description": "FacetNav is the navigation/filtering data Nike's own response\nalready carries alongside product results -- subcategory\nrefinement options, named filter groups (price/size/color/etc.),\nand (for category browsing) a breadcrumb trail. Nil when the\nupstream returned no navigation data. See FacetNav's doc comment." - }, - "fetched_at": { + "source_url": { "type": "string" + } + }, + "type": "object" + }, + "mlb.PlayerSuggestion": { + "properties": { + "active": { + "type": "boolean" }, - "keyword": { + "boxscore_name": { "type": "string" }, - "page": { - "type": "integer" - }, - "page_size": { - "type": "integer" + "display_name": { + "type": "string" }, - "products": { + "headshots": { "items": { - "$ref": "#/definitions/nike.ProductGroup" + "$ref": "#/definitions/mlb.ImageRef" }, "type": "array" }, - "source_url": { + "id": { + "type": "integer" + }, + "name": { "type": "string" }, - "total_pages": { + "team_id": { "type": "integer" }, - "total_products": { - "type": "integer" + "team_tri_code": { + "type": "string" + }, + "use_last_name": { + "type": "string" + }, + "use_name": { + "type": "string" } }, "type": "object" }, - "nike.SizeAvailability": { + "mlb.ProspectRanking": { "properties": { - "available": { - "type": "boolean" - }, - "grouping_label": { + "affiliate": { "type": "string" }, - "gtin": { - "type": "string" + "affiliate_id": { + "type": "integer" }, - "label": { - "type": "string" + "age": { + "type": "integer" }, - "localized_label": { + "bats": { "type": "string" }, - "ship": { + "birth_city": { "type": "string" }, - "style_color": { - "type": "string" - } - }, - "type": "object" - }, - "nike.Store": { - "properties": { - "address": { + "birth_country": { "type": "string" }, - "business_concept": { + "birth_date": { "type": "string" }, - "city": { + "college": { "type": "string" }, - "country": { + "draft_pick": { + "type": "integer" + }, + "draft_round": { "type": "string" }, - "distance_miles": { - "type": "number" + "draft_year": { + "type": "integer" }, - "facility_type": { + "eta": { "type": "string" }, - "image_url": { + "headshot_url": { "type": "string" }, - "latitude": { - "type": "number" + "height": { + "type": "string" }, - "longitude": { - "type": "number" + "level": { + "type": "string" }, "name": { "type": "string" }, - "phone": { - "type": "string" + "player_id": { + "type": "integer" }, - "postal_code": { + "position": { "type": "string" }, - "region": { + "rank": { + "type": "integer" + }, + "school": { "type": "string" }, "slug": { "type": "string" }, - "store_concept": { + "team": { "type": "string" }, - "store_number": { - "type": "string" + "team_id": { + "type": "integer" }, - "url": { + "throws": { "type": "string" + }, + "weight": { + "type": "integer" } }, "type": "object" }, - "nike.StoreResponse": { + "mlb.ProspectRankingsResponse": { "properties": { "count": { "type": "integer" @@ -104067,2215 +106236,2314 @@ "fetched_at": { "type": "string" }, - "lat": { - "type": "number" - }, - "lng": { - "type": "number" - }, - "page": { - "type": "integer" - }, - "page_size": { + "limit": { "type": "integer" }, - "radius_miles": { + "offset": { "type": "integer" }, - "source_url": { - "type": "string" - }, - "stores": { + "players": { "items": { - "$ref": "#/definitions/nike.Store" + "$ref": "#/definitions/mlb.ProspectRanking" }, "type": "array" }, - "total_stores": { - "type": "integer" - } - }, - "type": "object" - }, - "nike.SuggestResponse": { - "properties": { - "count": { - "type": "integer" - }, - "fetched_at": { + "position": { "type": "string" }, "query": { "type": "string" }, - "source_url": { + "sort": { "type": "string" }, - "suggestions": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "nike.TopLevelCategory": { - "properties": { - "groups": { - "items": { - "$ref": "#/definitions/nike.CategoryGroup" - }, - "type": "array" + "sort_dir": { + "type": "string" }, - "name": { + "source_url": { "type": "string" }, - "path": { + "team_slug": { "type": "string" - } - }, - "type": "object" - }, - "nike.availabilityResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/nike.AvailabilityResponse" + "total": { + "type": "integer" }, - "msg": { - "example": "OK", + "view": { "type": "string" + }, + "year": { + "type": "integer" } }, "type": "object" }, - "nike.categoriesResponseDoc": { + "mlb.ProspectStat": { "properties": { - "code": { - "example": 200, + "age": { "type": "integer" }, - "data": { - "$ref": "#/definitions/nike.CategoriesResponse" + "average": { + "type": "string" }, - "msg": { - "example": "OK", + "batting_stats": { + "additionalProperties": {}, + "type": "object" + }, + "blown_saves": { + "type": "integer" + }, + "era": { "type": "string" - } - }, - "type": "object" - }, - "nike.productDetailsResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "holds": { "type": "integer" }, - "data": { - "$ref": "#/definitions/nike.ProductDetailsResponse" + "losses": { + "type": "integer" }, - "msg": { - "example": "OK", + "name": { "type": "string" - } - }, - "type": "object" - }, - "nike.productResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/nike.ProductDetailResponse" + "pitching_stats": { + "additionalProperties": {}, + "type": "object" }, - "msg": { - "example": "OK", + "player_id": { + "type": "integer" + }, + "position": { "type": "string" - } - }, - "type": "object" - }, - "nike.productReviewsResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "rank": { "type": "integer" }, - "data": { - "$ref": "#/definitions/nike.ProductReviewsResponse" + "saves": { + "type": "integer" }, - "msg": { - "example": "OK", + "slug": { "type": "string" - } - }, - "type": "object" - }, - "nike.recommendationsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/nike.RecommendationsResponse" + "team": { + "type": "string" }, - "msg": { - "example": "OK", + "team_id": { + "type": "integer" + }, + "team_level": { "type": "string" + }, + "wins": { + "type": "integer" } }, "type": "object" }, - "nike.searchResponseDoc": { + "mlb.ProspectStatsResponse": { "properties": { - "code": { - "example": 200, + "count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/nike.SearchResponse" + "date_range": { + "type": "string" }, - "msg": { - "example": "OK", + "fetched_at": { "type": "string" - } - }, - "type": "object" - }, - "nike.storesResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/nike.StoreResponse" + "limit": { + "type": "integer" }, - "msg": { - "example": "OK", + "list_type": { "type": "string" - } - }, - "type": "object" - }, - "nike.suggestResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "min_pa": { "type": "integer" }, - "data": { - "$ref": "#/definitions/nike.SuggestResponse" + "offset": { + "type": "integer" }, - "msg": { - "example": "OK", + "player_type": { "type": "string" - } - }, - "type": "object" - }, - "ninetofivemac.AuthorResponse": { - "properties": { - "articles": { - "items": { - "$ref": "#/definitions/ninetofivemac.HeadlineItem" - }, - "type": "array" }, - "biography": { + "players": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.ProspectStat" }, "type": "array" }, - "image_url": { + "position": { "type": "string" }, - "name": { + "query": { "type": "string" }, - "social_links": { - "items": { - "$ref": "#/definitions/ninetofivemac.AuthorSocialLink" - }, - "type": "array" - }, - "url": { + "source_url": { "type": "string" + }, + "team_id": { + "type": "integer" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "ninetofivemac.AuthorSocialLink": { + "mlb.Record": { "properties": { - "type": { - "type": "string" + "losses": { + "type": "integer" }, - "url": { + "pct": { "type": "string" + }, + "wins": { + "type": "integer" } }, "type": "object" }, - "ninetofivemac.HeadlineItem": { + "mlb.RosterPlayer": { "properties": { - "author": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "published_at": { + "jersey_number": { "type": "string" }, - "summary": { - "type": "string" + "person": { + "$ref": "#/definitions/mlb.NamedRef" }, - "title": { + "position": { "type": "string" }, - "type": { + "position_code": { "type": "string" }, - "url": { + "status": { "type": "string" } }, "type": "object" }, - "npr.ArticleResponse": { + "mlb.RosterResponse": { "properties": { - "authors": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": { - "type": "string" + "count": { + "type": "integer" }, - "image_url": { + "fetched_at": { "type": "string" }, - "paragraphs": { + "players": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.RosterPlayer" }, "type": "array" }, - "published_at": { - "type": "string" - }, - "section": { + "roster_type": { "type": "string" }, - "title": { - "type": "string" + "season": { + "type": "integer" }, - "updated_at": { + "source_url": { "type": "string" }, - "url": { - "type": "string" + "team_id": { + "type": "integer" } }, "type": "object" }, - "npr.AuthorArticle": { + "mlb.ScheduleResponse": { "properties": { - "image_url": { - "type": "string" - }, - "published_at": { + "date": { "type": "string" }, - "summary": { + "end_date": { "type": "string" }, - "title": { + "fetched_at": { "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "npr.AuthorResponse": { - "properties": { - "articles": { + "games": { "items": { - "$ref": "#/definitions/npr.AuthorArticle" + "$ref": "#/definitions/mlb.GameSummary" }, "type": "array" }, - "bio": { + "source_url": { "type": "string" }, - "job_title": { + "start_date": { "type": "string" }, - "name": { - "type": "string" + "team_id": { + "type": "integer" }, - "url": { - "type": "string" + "total_games": { + "type": "integer" } }, "type": "object" }, - "npr.CategoriesResponse": { + "mlb.SearchResponse": { "properties": { - "categories": { + "fetched_at": { + "type": "string" + }, + "players": { "items": { - "$ref": "#/definitions/npr.Category" + "$ref": "#/definitions/mlb.PlayerSuggestion" }, "type": "array" - } - }, - "type": "object" - }, - "npr.Category": { - "properties": { - "name": { - "type": "string" }, - "slug": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "npr.HeadlineItem": { - "properties": { - "author": { + "query": { "type": "string" }, - "published_at": { - "type": "string" + "search_terms": { + "items": { + "$ref": "#/definitions/mlb.TermSuggestion" + }, + "type": "array" }, - "summary": { + "source_url": { "type": "string" }, - "title": { - "type": "string" + "teams": { + "items": { + "$ref": "#/definitions/mlb.TeamSuggestion" + }, + "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "npr.HeadlinesResponse": { - "properties": { - "items": { + "topics": { "items": { - "$ref": "#/definitions/npr.HeadlineItem" + "$ref": "#/definitions/mlb.TopicSuggestion" }, "type": "array" } }, "type": "object" }, - "npr.TopicItem": { + "mlb.StandingsGroup": { "properties": { - "published_at": { - "type": "string" + "division": { + "$ref": "#/definitions/mlb.NamedRef" }, - "summary": { - "type": "string" + "league": { + "$ref": "#/definitions/mlb.NamedRef" }, - "title": { - "type": "string" + "teams": { + "items": { + "$ref": "#/definitions/mlb.StandingsTeam" + }, + "type": "array" }, - "url": { + "type": { "type": "string" } }, "type": "object" }, - "npr.TopicResponse": { + "mlb.StandingsResponse": { "properties": { - "items": { + "date": { + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "groups": { "items": { - "$ref": "#/definitions/npr.TopicItem" + "$ref": "#/definitions/mlb.StandingsGroup" }, "type": "array" }, - "topic": { - "type": "string" - } - }, - "type": "object" - }, - "npr.articleResponseDoc": { - "properties": { - "code": { - "example": 200, + "season": { "type": "integer" }, - "data": { - "$ref": "#/definitions/npr.ArticleResponse" + "source_url": { + "type": "string" }, - "msg": { - "example": "OK", + "type": { "type": "string" } }, "type": "object" }, - "npr.authorResponseDoc": { + "mlb.StandingsTeam": { "properties": { - "code": { - "example": 200, - "type": "integer" + "away_record": { + "$ref": "#/definitions/mlb.Record" }, - "data": { - "$ref": "#/definitions/npr.AuthorResponse" + "clinched": { + "type": "boolean" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "npr.categoriesResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "division_leader": { + "type": "boolean" }, - "data": { - "$ref": "#/definitions/npr.CategoriesResponse" + "division_rank": { + "type": "string" }, - "msg": { - "example": "OK", + "elimination_number": { "type": "string" - } - }, - "type": "object" - }, - "npr.headlinesResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/npr.HeadlinesResponse" + "expected_record": { + "$ref": "#/definitions/mlb.Record" }, - "msg": { - "example": "OK", + "games_back": { "type": "string" - } - }, - "type": "object" - }, - "npr.topicResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "games_played": { "type": "integer" }, - "data": { - "$ref": "#/definitions/npr.TopicResponse" + "home_record": { + "$ref": "#/definitions/mlb.Record" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "numbeo.CityIndexEntry": { - "properties": { - "city": { - "type": "string" + "last_ten_record": { + "$ref": "#/definitions/mlb.Record" }, - "city_slug": { + "league_rank": { "type": "string" }, - "cost_of_living_index": { - "type": "number" + "losses": { + "type": "integer" }, - "cost_of_living_plus_rent_index": { - "type": "number" + "magic_number": { + "type": "string" }, - "groceries_index": { - "type": "number" + "run_differential": { + "type": "integer" }, - "local_purchasing_power_index": { - "type": "number" + "runs_allowed": { + "type": "integer" }, - "rank": { + "runs_scored": { "type": "integer" }, - "rent_index": { - "type": "number" + "streak": { + "type": "string" }, - "restaurant_price_index": { - "type": "number" + "team": { + "$ref": "#/definitions/mlb.TeamRef" + }, + "wild_card_games_back": { + "type": "string" + }, + "winning_percentage": { + "type": "string" + }, + "wins": { + "type": "integer" } }, "type": "object" }, - "numbeo.CostOfLivingCityResponse": { + "mlb.StatSplit": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/numbeo.PriceCategory" - }, - "type": "array" + "league": { + "$ref": "#/definitions/mlb.NamedRef" }, - "city": { - "type": "string" + "player": { + "$ref": "#/definitions/mlb.NamedRef" }, - "city_slug": { + "position": { "type": "string" }, - "contributors_12mo": { + "rank": { "type": "integer" }, - "country": { + "season": { "type": "string" }, - "last_update": { - "type": "string" + "stats": { + "additionalProperties": {}, + "type": "object" }, - "source_url": { - "type": "string" + "team": { + "$ref": "#/definitions/mlb.TeamRef" } }, "type": "object" }, - "numbeo.CostOfLivingCountryResponse": { + "mlb.StatcastABSChallengeFilters": { "properties": { - "categories": { + "ball_strike": { "items": { - "$ref": "#/definitions/numbeo.PriceCategory" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "cities": { + "breakeven": { "items": { - "$ref": "#/definitions/numbeo.CityIndexEntry" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "contributors_12mo": { - "type": "integer" - }, - "country": { - "type": "string" - }, - "last_update": { - "type": "string" + "challenge_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "numbeo.CountryIndexEntry": { - "properties": { - "cost_of_living_index": { - "type": "number" + "data_counts": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "cost_of_living_plus_rent_index": { - "type": "number" + "data_modes": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "country": { - "type": "string" + "game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "groceries_index": { - "type": "number" + "levels": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "local_purchasing_power_index": { - "type": "number" + "leverage": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "rank": { - "type": "integer" + "minimum_challenges": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "rent_index": { - "type": "number" + "pitch_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "restaurant_price_index": { - "type": "number" - } - }, - "type": "object" - }, - "numbeo.IndexRankingEntry": { - "properties": { - "city": { - "type": "string" + "seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "city_slug": { - "type": "string" + "shadow_zones": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "country": { - "type": "string" + "split_year": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "indices": { + "splits": { "items": { - "$ref": "#/definitions/numbeo.NamedValue" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "rank": { - "type": "integer" + "team_ids": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" } }, "type": "object" }, - "numbeo.IndexRow": { + "mlb.StatcastABSChallengesOption": { "properties": { - "name": { + "ball_strike": { "type": "string" }, - "qualifier": { + "breakeven": { "type": "string" }, - "value": { - "type": "number" - } - }, - "type": "object" - }, - "numbeo.IndexSection": { - "properties": { - "rows": { + "challenge_team_ids": { "items": { - "$ref": "#/definitions/numbeo.IndexRow" + "type": "string" }, "type": "array" }, - "title": { - "type": "string" - } - }, - "type": "object" - }, - "numbeo.IndicesCityResponse": { - "properties": { - "city": { - "type": "string" - }, - "city_slug": { + "challenge_type": { "type": "string" }, - "contributors_note": { + "data_count": { "type": "string" }, - "country": { + "data_mode": { "type": "string" }, - "headline_indices": { + "game_types": { "items": { - "$ref": "#/definitions/numbeo.NamedValue" + "type": "string" }, "type": "array" }, - "index": { + "level": { "type": "string" }, - "last_update": { + "leverage": { "type": "string" }, - "price_categories": { + "min_challenges": { + "type": "string" + }, + "min_opponent_challenges": { + "type": "string" + }, + "opponent_team_ids": { "items": { - "$ref": "#/definitions/numbeo.PriceCategory" + "type": "string" }, "type": "array" }, - "sections": { + "pitch_types": { "items": { - "$ref": "#/definitions/numbeo.IndexSection" + "type": "string" }, "type": "array" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "numbeo.IndicesCountryResponse": { - "properties": { - "cities": { + "seasons": { "items": { - "$ref": "#/definitions/numbeo.IndexRankingEntry" + "type": "string" }, "type": "array" }, - "contributors_note": { - "type": "string" + "shadow_zones": { + "items": { + "type": "string" + }, + "type": "array" }, - "country": { + "split_year": { "type": "string" }, - "headline_indices": { + "splits": { "items": { - "$ref": "#/definitions/numbeo.NamedValue" + "type": "string" }, "type": "array" - }, - "index": { + } + }, + "type": "object" + }, + "mlb.StatcastABSChallengesResponse": { + "properties": { + "board": { "type": "string" }, - "last_update": { + "fetched_at": { "type": "string" }, - "price_categories": { - "items": { - "$ref": "#/definitions/numbeo.PriceCategory" - }, - "type": "array" + "filters": { + "$ref": "#/definitions/mlb.StatcastABSChallengesOption" }, - "sections": { + "rows": { "items": { - "$ref": "#/definitions/numbeo.IndexSection" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, "source_url": { "type": "string" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "numbeo.IndicesRankingsByCountryResponse": { + "mlb.StatcastArmStrengthPlayerResponse": { "properties": { - "countries": { - "items": { - "$ref": "#/definitions/numbeo.IndexRankingEntry" - }, - "type": "array" + "fetched_at": { + "type": "string" }, - "index": { + "player_id": { "type": "string" }, "source_url": { "type": "string" - } - }, - "type": "object" - }, - "numbeo.IndicesRankingsResponse": { - "properties": { - "cities": { + }, + "throws": { "items": { - "$ref": "#/definitions/numbeo.IndexRankingEntry" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "index": { - "type": "string" - }, - "period": { - "type": "string" - }, - "scope": { - "type": "string" + "total": { + "type": "integer" }, - "source_url": { + "year": { "type": "string" } }, "type": "object" }, - "numbeo.NamedValue": { + "mlb.StatcastArmStrengthResponse": { "properties": { - "name": { + "board": { "type": "string" }, - "value": { - "type": "number" - } - }, - "type": "object" - }, - "numbeo.PriceCategory": { - "properties": { - "category": { + "fetched_at": { "type": "string" }, - "items": { + "limit": { + "type": "integer" + }, + "min_throws": { + "type": "string" + }, + "offset": { + "type": "integer" + }, + "position": { + "type": "string" + }, + "rows": { "items": { - "$ref": "#/definitions/numbeo.PriceItem" + "additionalProperties": {}, + "type": "object" }, "type": "array" - } - }, - "type": "object" - }, - "numbeo.PriceItem": { - "properties": { - "currency_symbol": { + }, + "sort": { "type": "string" }, - "name": { + "sort_dir": { "type": "string" }, - "price": { - "type": "number" + "source_url": { + "type": "string" }, - "range_high": { - "type": "number" + "team_id": { + "type": "string" }, - "range_low": { - "type": "number" + "total": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "year": { + "type": "string" } }, "type": "object" }, - "numbeo.RankingsByCountryResponse": { + "mlb.StatcastArmValueDetailsResponse": { "properties": { - "countries": { + "entity_id": { + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "plays": { "items": { - "$ref": "#/definitions/numbeo.CountryIndexEntry" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, "source_url": { "type": "string" + }, + "total": { + "type": "integer" + }, + "type": { + "type": "string" } }, "type": "object" }, - "numbeo.RankingsResponse": { + "mlb.StatcastArmValueResponse": { "properties": { - "cities": { - "items": { - "$ref": "#/definitions/numbeo.CityIndexEntry" - }, - "type": "array" + "board": { + "type": "string" }, - "period": { + "end_year": { + "type": "integer" + }, + "fetched_at": { "type": "string" }, - "scope": { + "game_type": { "type": "string" }, - "source_url": { + "key_base_out": { "type": "string" - } - }, - "type": "object" - }, - "numbeo.costOfLivingCityResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/numbeo.CostOfLivingCityResponse" + "limit": { + "type": "integer" }, - "msg": { - "example": "OK", + "minimum_opps": { "type": "string" - } - }, - "type": "object" - }, - "numbeo.costOfLivingCountryResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/numbeo.CostOfLivingCountryResponse" + "offset": { + "type": "integer" }, - "msg": { - "example": "OK", + "q": { "type": "string" - } - }, - "type": "object" - }, - "numbeo.indicesCityResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/numbeo.IndicesCityResponse" + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "msg": { - "example": "OK", + "sort": { "type": "string" - } - }, - "type": "object" - }, - "numbeo.indicesCountryResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/numbeo.IndicesCountryResponse" }, - "msg": { - "example": "OK", + "sort_dir": { "type": "string" - } - }, - "type": "object" - }, - "numbeo.indicesRankingsByCountryResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/numbeo.IndicesRankingsByCountryResponse" + "source_url": { + "type": "string" }, - "msg": { - "example": "OK", + "split": { "type": "string" - } - }, - "type": "object" - }, - "numbeo.indicesRankingsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/numbeo.IndicesRankingsResponse" + "start_year": { + "type": "integer" }, - "msg": { - "example": "OK", + "team_id": { "type": "string" - } - }, - "type": "object" - }, - "numbeo.rankingsByCountryResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/numbeo.RankingsByCountryResponse" + "total": { + "type": "integer" }, - "msg": { - "example": "OK", + "type": { "type": "string" + }, + "with_team_only": { + "type": "boolean" } }, "type": "object" }, - "numbeo.rankingsResponseDoc": { + "mlb.StatcastBaserunningFilters": { "properties": { - "code": { - "example": 200, - "type": "integer" + "boards": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/numbeo.RankingsResponse" + "game_types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" + "groups": { + "additionalProperties": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "type": "object" + }, + "key_base_outs": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "minimums": { + "additionalProperties": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "type": "object" + }, + "pitch_hands": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "prior_pickoffs": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "runner_moved": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "sort_fields": { + "additionalProperties": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "type": "object" + }, + "splits": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "target_bases": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "teams": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" } }, "type": "object" }, - "nydailynews.AuthorArticle": { + "mlb.StatcastBaserunningOption": { "properties": { - "published_at": { + "board": { "type": "string" }, - "summary": { + "game_type": { "type": "string" }, - "title": { + "key_base_out": { "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nydailynews.AuthorResponse": { - "properties": { - "articles": { - "items": { - "$ref": "#/definitions/nydailynews.AuthorArticle" - }, - "type": "array" + "limit": { + "type": "integer" }, - "bio": { + "n": { "type": "string" }, - "email": { - "type": "string" + "offset": { + "type": "integer" }, - "job_title": { + "pitch_hand": { "type": "string" }, - "name": { + "prior_pk": { "type": "string" }, - "slug": { + "runner_moved": { "type": "string" }, - "twitter": { + "search": { "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nymag.AuthorArticle": { - "properties": { - "excerpt": { - "type": "string" + "season_end": { + "type": "integer" }, - "published_at": { - "type": "string" + "season_start": { + "type": "integer" }, - "section": { + "sort": { "type": "string" }, - "title": { + "sort_dir": { "type": "string" }, - "url": { + "split": { "type": "string" - } - }, - "type": "object" - }, - "nymag.AuthorResponse": { - "properties": { - "articles": { - "items": { - "$ref": "#/definitions/nymag.AuthorArticle" - }, - "type": "array" }, - "bio": { + "target_base": { "type": "string" }, - "job_title": { + "team": { "type": "string" }, - "name": { + "type": { "type": "string" }, - "url": { - "type": "string" + "with_team_only": { + "type": "boolean" } }, "type": "object" }, - "nypost.AuthorResponse": { + "mlb.StatcastBaserunningResponse": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" - }, - "biography": { - "items": { - "type": "string" - }, - "type": "array" - }, - "image_url": { + "board": { "type": "string" }, - "name": { + "fetched_at": { "type": "string" }, - "social_links": { + "filters": { + "$ref": "#/definitions/mlb.StatcastBaserunningOption" + }, + "limit": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "rows": { "items": { - "$ref": "#/definitions/nypost.AuthorSocialLink" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "url": { + "source_url": { "type": "string" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "nypost.AuthorSocialLink": { + "mlb.StatcastBoardResponse": { "properties": { - "type": { + "board": { "type": "string" }, - "url": { + "end_year": { + "type": "integer" + }, + "fetched_at": { "type": "string" - } - }, - "type": "object" - }, - "nyt.ArticleResponse": { - "properties": { - "authors": { - "items": { - "type": "string" - }, + }, + "filter_type": { + "type": "string" + }, + "league_average": { + "items": {}, "type": "array" }, - "description": { + "limit": { + "type": "integer" + }, + "minimum": { "type": "string" }, - "image_url": { + "offset": { + "type": "integer" + }, + "position": { "type": "string" }, - "keywords": { + "range": { + "type": "string" + }, + "roles": { "items": { "type": "string" }, "type": "array" }, - "paragraphs": { + "rows": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.StatcastRow" }, "type": "array" }, - "published_at": { + "sort": { "type": "string" }, - "section": { + "sort_dir": { "type": "string" }, - "title": { + "source_url": { "type": "string" }, - "updated_at": { + "split": { "type": "string" }, - "url": { + "start_year": { + "type": "integer" + }, + "team_id": { + "type": "integer" + }, + "total": { + "type": "integer" + }, + "type": { "type": "string" + }, + "year": { + "type": "integer" } }, "type": "object" }, - "nyt.AuthorAboutSection": { + "mlb.StatcastCatcherPopTimeResponse": { "properties": { - "heading": { + "board": { "type": "string" }, - "paragraphs": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "nyt.AuthorArticle": { - "properties": { - "authors": { + "fetched_at": { + "type": "string" + }, + "limit": { + "type": "integer" + }, + "min_2b_attempts": { + "type": "string" + }, + "min_3b_attempts": { + "type": "string" + }, + "offset": { + "type": "integer" + }, + "rows": { "items": { - "type": "string" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "description": { + "sort": { "type": "string" }, - "image_url": { + "sort_dir": { "type": "string" }, - "title": { + "source_url": { "type": "string" }, - "url": { + "team_id": { + "type": "string" + }, + "total": { + "type": "integer" + }, + "year": { "type": "string" } }, "type": "object" }, - "nyt.AuthorContactItem": { + "mlb.StatcastCatcherStanceResponse": { "properties": { - "label": { + "board": { "type": "string" }, - "url": { + "fetched_at": { "type": "string" }, - "value": { + "game_type": { "type": "string" - } - }, - "type": "object" - }, - "nyt.AuthorResponse": { - "properties": { - "about": { - "items": { - "$ref": "#/definitions/nyt.AuthorAboutSection" - }, - "type": "array" }, - "articles": { + "group_by": { "items": { - "$ref": "#/definitions/nyt.AuthorArticle" + "type": "string" }, "type": "array" }, - "contact": { + "limit": { + "type": "integer" + }, + "min_pitches": { + "type": "string" + }, + "min_results": { + "type": "string" + }, + "offset": { + "type": "integer" + }, + "rows": { "items": { - "$ref": "#/definitions/nyt.AuthorContactItem" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "image_url": { + "season_end": { "type": "string" }, - "name": { + "season_start": { "type": "string" }, - "tagline": { + "sort": { "type": "string" }, - "url": { + "sort_dir": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "total": { + "type": "integer" + }, + "type": { "type": "string" } }, "type": "object" }, - "nyt.CategoriesResponse": { - "properties": { - "categories": { - "items": { - "$ref": "#/definitions/nyt.Category" - }, - "type": "array" - } - }, - "type": "object" - }, - "nyt.Category": { + "mlb.StatcastCatcherThrowingDetailsResponse": { "properties": { - "name": { + "entity_id": { + "type": "integer" + }, + "fetched_at": { "type": "string" }, - "sections": { + "limit": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "rows": { "items": { - "$ref": "#/definitions/nyt.CategoryLink" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "slug": { + "source_url": { "type": "string" }, - "url": { - "type": "string" + "total": { + "type": "integer" } }, "type": "object" }, - "nyt.CategoryLink": { + "mlb.StatcastCatcherThrowingResponse": { "properties": { - "name": { - "type": "string" - }, - "slug": { + "board": { "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nyt.HeadlineItem": { - "properties": { - "author": { + "fetched_at": { "type": "string" }, - "description": { + "game_type": { "type": "string" }, - "image_url": { - "type": "string" + "limit": { + "type": "integer" }, - "published_at": { + "minimum_attempts": { "type": "string" }, - "title": { - "type": "string" + "offset": { + "type": "integer" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "nyt.HeadlinesResponse": { - "properties": { - "items": { + "rows": { "items": { - "$ref": "#/definitions/nyt.HeadlineItem" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "section": { + "season_end": { "type": "string" - } - }, - "type": "object" - }, - "nyt.Section": { - "properties": { - "name": { + }, + "season_start": { "type": "string" }, - "slug": { + "sort": { "type": "string" }, - "url": { + "sort_dir": { "type": "string" - } - }, - "type": "object" - }, - "nyt.SectionsResponse": { - "properties": { - "sections": { - "items": { - "$ref": "#/definitions/nyt.Section" - }, - "type": "array" - } - }, - "type": "object" - }, - "nyt.articleResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/nyt.ArticleResponse" + "source_url": { + "type": "string" }, - "msg": { - "example": "OK", + "split": { "type": "string" - } - }, - "type": "object" - }, - "nyt.authorResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/nyt.AuthorResponse" + "target_base": { + "type": "string" }, - "msg": { - "example": "OK", + "team": { "type": "string" - } - }, - "type": "object" - }, - "nyt.categoriesResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/nyt.CategoriesResponse" + "total": { + "type": "integer" }, - "msg": { - "example": "OK", + "type": { "type": "string" + }, + "with_team_only": { + "type": "boolean" } }, "type": "object" }, - "nyt.headlinesResponseDoc": { + "mlb.StatcastFieldingRunValueResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" + "board": { + "type": "string" }, - "data": { - "$ref": "#/definitions/nyt.HeadlinesResponse" + "date_end": { + "type": "string" }, - "msg": { - "example": "OK", + "date_start": { "type": "string" - } - }, - "type": "object" - }, - "nyt.sectionsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/nyt.SectionsResponse" + "fetched_at": { + "type": "string" }, - "msg": { - "example": "OK", + "game_type": { "type": "string" - } - }, - "type": "object" - }, - "nzherald.AuthorResponse": { - "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" }, - "biography": { + "group_by": { "items": { "type": "string" }, "type": "array" }, - "email": { - "type": "string" + "limit": { + "type": "integer" }, - "image_url": { + "minimum": { "type": "string" }, - "job_title": { + "minimum_split": { "type": "string" }, - "location": { - "type": "string" + "offset": { + "type": "integer" }, - "name": { + "position": { "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "oldnavy.AvailabilityResponse": { - "properties": { - "brand": { + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "season_end": { "type": "string" }, - "count": { - "type": "integer" + "season_start": { + "type": "string" }, - "fetched_at": { + "sort": { "type": "string" }, - "pid": { + "sort_dir": { "type": "string" }, "source_url": { "type": "string" }, - "stores": { + "teams": { "items": { - "$ref": "#/definitions/oldnavy.StoreStockSummary" + "type": "string" }, "type": "array" }, - "style_id": { + "total": { + "type": "integer" + }, + "type": { "type": "string" } }, "type": "object" }, - "oldnavy.CategoriesResponse": { + "mlb.StatcastFirstBaseReceivingDetailsResponse": { "properties": { - "brand": { + "fetched_at": { "type": "string" }, - "categories": { + "limit": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "player_id": { + "type": "integer" + }, + "rows": { "items": { - "$ref": "#/definitions/oldnavy.CategoryNavEntry" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "cid": { - "type": "string" - }, - "fetched_at": { - "type": "string" - }, "source_url": { "type": "string" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "oldnavy.CategoryColorSummary": { + "mlb.StatcastFirstBaseReceivingResponse": { "properties": { - "back_order_inventory_count": { - "type": "integer" - }, - "back_order_inventory_status": { + "board": { "type": "string" }, - "id": { + "fetched_at": { "type": "string" }, - "image_url": { - "type": "string" + "game_types": { + "items": { + "type": "string" + }, + "type": "array" }, - "inventory_count": { + "limit": { "type": "integer" }, - "inventory_status": { + "minimum": { "type": "string" }, - "name": { + "minimum_split": { "type": "string" }, - "percentage_off": { + "offset": { "type": "integer" }, - "price": { - "type": "number" + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "regular_price": { - "type": "number" + "seasons": { + "items": { + "type": "string" + }, + "type": "array" }, - "short_description": { + "sort": { "type": "string" - } - }, - "type": "object" - }, - "oldnavy.CategoryGroup": { - "properties": { - "category_id": { + }, + "sort_direction": { "type": "string" }, - "category_name": { + "source_url": { "type": "string" }, - "items": { + "split_year": { + "type": "string" + }, + "splits": { "items": { - "$ref": "#/definitions/oldnavy.CategoryGroupItem" + "type": "string" }, "type": "array" }, - "sub_category_id": { - "type": "string" + "total": { + "type": "integer" }, - "sub_category_name": { + "type": { "type": "string" } }, "type": "object" }, - "oldnavy.CategoryGroupItem": { + "mlb.StatcastPercentileFilter": { "properties": { - "cc_id": { + "comparator": { "type": "string" }, - "style_id": { + "field": { "type": "string" + }, + "value": { + "type": "number" } }, "type": "object" }, - "oldnavy.CategoryNavEntry": { + "mlb.StatcastPlayerDetailsResponse": { "properties": { - "cid": { + "fetched_at": { "type": "string" }, - "name": { + "player_id": { "type": "string" }, - "url": { + "player_type": { "type": "string" - } - }, - "type": "object" - }, - "oldnavy.CategoryProductSummary": { - "properties": { - "colors": { + }, + "plays": { "items": { - "$ref": "#/definitions/oldnavy.CategoryColorSummary" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "id": { - "type": "string" - }, - "name": { + "source_url": { "type": "string" }, - "review_count": { + "total": { "type": "integer" }, - "review_score": { - "type": "number" - }, - "url": { - "type": "string" - }, - "web_product_type": { - "type": "string" + "year": { + "type": "integer" } }, "type": "object" }, - "oldnavy.CategoryResponse": { + "mlb.StatcastResponse": { "properties": { - "brand": { + "fetched_at": { "type": "string" }, - "categories": { - "items": { - "$ref": "#/definitions/oldnavy.CategoryGroup" - }, - "type": "array" + "limit": { + "type": "integer" }, - "category_id": { + "min_bbe": { "type": "string" }, - "count": { + "offset": { "type": "integer" }, - "facets": { + "position": { + "type": "string" + }, + "rows": { "items": { - "$ref": "#/definitions/oldnavy.Facet" + "$ref": "#/definitions/mlb.StatcastRow" }, "type": "array" }, - "fetched_at": { + "sort": { "type": "string" }, - "page": { - "type": "integer" - }, - "page_size": { - "type": "integer" - }, - "products": { - "items": { - "$ref": "#/definitions/oldnavy.CategoryProductSummary" - }, - "type": "array" + "sort_dir": { + "type": "string" }, "source_url": { "type": "string" }, - "total_colors": { + "team_id": { "type": "integer" }, - "total_pages": { + "total": { "type": "integer" - } - }, - "type": "object" - }, - "oldnavy.ColorSummary": { - "properties": { - "id": { - "type": "string" }, - "image_url": { - "type": "string" - }, - "name": { + "type": { "type": "string" }, - "percentage_off": { + "year": { "type": "integer" - }, - "price": { - "type": "number" - }, - "regular_price": { - "type": "number" - }, - "short_description": { - "type": "string" } }, "type": "object" }, - "oldnavy.Facet": { + "mlb.StatcastRollingGroup": { "properties": { - "is_range": { - "type": "boolean" + "limit": { + "type": "integer" }, - "label": { - "type": "string" + "offset": { + "type": "integer" }, - "name": { + "role": { "type": "string" }, - "options": { + "rows": { "items": { - "$ref": "#/definitions/oldnavy.FacetOption" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "range_max": { - "type": "number" - }, - "range_min": { - "type": "number" + "total": { + "type": "integer" }, - "type": { - "type": "string" + "window_pa": { + "type": "integer" } }, "type": "object" }, - "oldnavy.FacetOption": { + "mlb.StatcastRow": { "properties": { - "count": { + "entity_id": { + "type": "string" + }, + "metrics": { + "additionalProperties": {}, + "type": "object" + }, + "name": { + "type": "string" + }, + "position": { + "type": "string" + }, + "qualified": { + "type": "boolean" + }, + "rank": { "type": "integer" }, - "label": { + "team": { "type": "string" }, - "value": { + "team_id": { "type": "string" } }, "type": "object" }, - "oldnavy.ProductDetailResponse": { + "mlb.StatcastRunningGameDetailsOption": { "properties": { - "brand": { + "entity_id": { "type": "string" }, - "color": { + "game_type": { "type": "string" }, - "description": { - "type": "string" + "limit": { + "type": "integer" }, - "fetched_at": { + "min_pitches": { "type": "string" }, - "images": { - "items": { - "type": "string" - }, - "type": "array" + "offset": { + "type": "integer" }, - "name": { + "pitch_hand": { "type": "string" }, - "offers": { - "items": { - "$ref": "#/definitions/oldnavy.ProductOffer" - }, - "type": "array" + "prior_pk": { + "type": "string" }, - "pid": { + "runner_moved": { "type": "string" }, - "rating_count": { + "season_end": { "type": "integer" }, - "rating_value": { - "type": "number" - }, - "related_items": { - "items": { - "$ref": "#/definitions/oldnavy.RelatedItem" - }, - "type": "array" + "season_start": { + "type": "integer" }, - "source_url": { + "split": { "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "oldnavy.ProductOffer": { - "properties": { - "availability": { + "target_base": { "type": "string" }, - "currency": { + "team": { "type": "string" }, - "price": { - "type": "number" - }, - "sku": { + "type": { "type": "string" }, - "url": { - "type": "string" + "with_team_only": { + "type": "boolean" } }, "type": "object" }, - "oldnavy.ProductReviewsResponse": { + "mlb.StatcastRunningGameDetailsResponse": { "properties": { - "average_rating": { - "type": "number" - }, - "brand": { + "board": { "type": "string" }, - "count": { + "entity_id": { "type": "integer" }, "fetched_at": { "type": "string" }, - "page": { - "type": "integer" + "filters": { + "$ref": "#/definitions/mlb.StatcastRunningGameDetailsOption" }, - "page_size": { + "limit": { "type": "integer" }, - "pid": { - "type": "string" + "offset": { + "type": "integer" }, - "rating_count": { + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "source_url": { + "type": "string" + }, + "total": { "type": "integer" }, - "rating_histogram": { - "description": "RatingHistogram is the count of ratings per star, ascending: index 0\nis 1-star, index 4 is 5-star.", + "type": { + "type": "string" + } + }, + "type": "object" + }, + "mlb.StatcastRunningGameFilters": { + "properties": { + "game_types": { "items": { - "type": "integer" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "recommended_ratio": { - "type": "number" + "minimum_pitches": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "reviews": { + "pitch_hands": { "items": { - "$ref": "#/definitions/oldnavy.Review" + "$ref": "#/definitions/mlb.EnumValue" }, "type": "array" }, - "source_url": { - "type": "string" + "prior_pickoffs": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "total_pages": { - "type": "integer" + "runner_moved": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" }, - "total_reviews": { - "type": "integer" + "seasons": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "sort_directions": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "sort_fields": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "target_bases": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "teams": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" + }, + "types": { + "items": { + "$ref": "#/definitions/mlb.EnumValue" + }, + "type": "array" } }, "type": "object" }, - "oldnavy.ProductSummary": { + "mlb.StatcastRunningGameOption": { "properties": { - "colors": { - "items": { - "$ref": "#/definitions/oldnavy.ColorSummary" - }, - "type": "array" + "game_type": { + "type": "string" }, - "id": { + "limit": { + "type": "integer" + }, + "min_pitches": { "type": "string" }, - "name": { + "offset": { + "type": "integer" + }, + "pitch_hand": { "type": "string" }, - "price_max": { - "type": "number" + "prior_pk": { + "type": "string" }, - "price_min": { - "type": "number" + "runner_moved": { + "type": "string" }, - "review_count": { + "search": { + "type": "string" + }, + "season_end": { "type": "integer" }, - "review_score": { - "type": "number" + "season_start": { + "type": "integer" }, - "sale_price_max": { - "type": "number" + "sort": { + "type": "string" }, - "sale_price_min": { - "type": "number" + "sort_dir": { + "type": "string" }, - "thumbnail_url": { + "split": { "type": "string" }, - "url": { + "target_base": { "type": "string" }, - "web_product_type": { + "team": { + "type": "string" + }, + "type": { "type": "string" + }, + "with_team_only": { + "type": "boolean" } }, "type": "object" }, - "oldnavy.RelatedItem": { + "mlb.StatcastRunningGameResponse": { "properties": { - "name": { + "board": { "type": "string" }, - "pid": { + "fetched_at": { "type": "string" }, - "url": { + "filters": { + "$ref": "#/definitions/mlb.StatcastRunningGameOption" + }, + "limit": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "source_url": { "type": "string" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "oldnavy.Review": { + "mlb.StatcastSprintSpeedResponse": { "properties": { - "author": { + "board": { "type": "string" }, - "body": { + "fetched_at": { "type": "string" }, - "created_at": { + "limit": { + "type": "integer" + }, + "max_season": { "type": "string" }, - "headline": { + "min_season": { "type": "string" }, - "helpful_votes": { + "minimum_runs": { + "type": "string" + }, + "offset": { "type": "integer" }, - "id": { + "position": { "type": "string" }, - "location": { + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "sort": { "type": "string" }, - "not_helpful_votes": { + "sort_dir": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "team_id": { + "type": "string" + }, + "total": { + "type": "integer" + } + }, + "type": "object" + }, + "mlb.StatcastSprintSpeedTeamsResponse": { + "properties": { + "board": { + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "limit": { "type": "integer" }, - "rating": { + "offset": { "type": "integer" }, - "updated_at": { + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "season": { "type": "string" }, - "verified_purchase": { - "type": "boolean" + "sort": { + "type": "string" + }, + "sort_dir": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "team": { + "type": "string" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "oldnavy.SearchResponse": { + "mlb.StatcastTopPerformerCard": { "properties": { - "brand": { + "complete_leaderboard_url": { "type": "string" }, - "count": { - "type": "integer" + "definition_url": { + "type": "string" }, - "facets": { + "id": { + "type": "string" + }, + "leaders": { "items": { - "$ref": "#/definitions/oldnavy.Facet" + "$ref": "#/definitions/mlb.StatcastTopPerformerLeader" }, "type": "array" }, - "fetched_at": { + "metric": { "type": "string" }, - "keyword": { + "player_type": { "type": "string" }, - "page": { + "title": { + "type": "string" + } + }, + "type": "object" + }, + "mlb.StatcastTopPerformerLeader": { + "properties": { + "headshot_url": { + "type": "string" + }, + "player_id": { + "type": "string" + }, + "player_name": { + "type": "string" + }, + "player_url": { + "type": "string" + }, + "rank": { "type": "integer" }, - "page_size": { + "team_id": { + "type": "string" + }, + "team_logo_url": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "mlb.StatcastTopPerformersResponse": { + "properties": { + "card_count": { "type": "integer" }, - "products": { + "cards": { "items": { - "$ref": "#/definitions/oldnavy.ProductSummary" + "$ref": "#/definitions/mlb.StatcastTopPerformerCard" }, "type": "array" }, - "source_url": { + "fetched_at": { "type": "string" }, - "total_pages": { - "type": "integer" + "source_url": { + "type": "string" }, - "total_products": { + "year": { "type": "integer" } }, "type": "object" }, - "oldnavy.SizeStock": { + "mlb.StatsResponse": { "properties": { - "fit": { + "fetched_at": { "type": "string" }, - "sku": { + "group": { "type": "string" }, - "status": { + "limit": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "player_id": { + "type": "integer" + }, + "season": { + "type": "integer" + }, + "source_url": { + "type": "string" + }, + "splits": { + "items": { + "$ref": "#/definitions/mlb.StatSplit" + }, + "type": "array" + }, + "team_id": { + "type": "integer" + }, + "total": { + "type": "integer" + }, + "type": { "type": "string" } }, "type": "object" }, - "oldnavy.Store": { + "mlb.Team": { "properties": { - "address": { + "abbreviation": { "type": "string" }, - "city": { + "active": { + "type": "boolean" + }, + "club_name": { "type": "string" }, - "country": { + "division": { + "$ref": "#/definitions/mlb.NamedRef" + }, + "first_year_of_play": { "type": "string" }, - "distance_miles": { - "type": "number" + "id": { + "type": "integer" }, - "latitude": { - "type": "number" + "league": { + "$ref": "#/definitions/mlb.NamedRef" }, - "longitude": { - "type": "number" + "location_name": { + "type": "string" }, "name": { "type": "string" }, - "phone": { + "season": { + "type": "integer" + }, + "venue": { + "$ref": "#/definitions/mlb.VenueRef" + } + }, + "type": "object" + }, + "mlb.TeamBoxscore": { + "properties": { + "batters": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "pitchers": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "players_used": { + "type": "integer" + }, + "team": { + "$ref": "#/definitions/mlb.TeamRef" + }, + "team_stats": { + "additionalProperties": { + "additionalProperties": {}, + "type": "object" + }, + "type": "object" + } + }, + "type": "object" + }, + "mlb.TeamRef": { + "properties": { + "abbreviation": { "type": "string" }, - "postal_code": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "mlb.TeamSuggestion": { + "properties": { + "club_name": { "type": "string" }, - "region": { + "display_name": { "type": "string" }, - "specialties": { + "franchise_name": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "logos": { "items": { - "type": "string" + "$ref": "#/definitions/mlb.ImageRef" }, "type": "array" }, - "url": { + "name": { + "type": "string" + }, + "sport_id": { + "type": "integer" + }, + "team_name": { + "type": "string" + }, + "tri_code": { "type": "string" } }, "type": "object" }, - "oldnavy.StoreResponse": { + "mlb.TeamsResponse": { "properties": { - "brand": { - "type": "string" - }, "count": { "type": "integer" }, "fetched_at": { "type": "string" }, - "lat": { - "type": "number" + "season": { + "type": "integer" }, - "lng": { - "type": "number" + "source_url": { + "type": "string" }, - "search": { + "teams": { + "items": { + "$ref": "#/definitions/mlb.Team" + }, + "type": "array" + } + }, + "type": "object" + }, + "mlb.TermSuggestion": { + "properties": { + "display_name": { "type": "string" }, - "source_url": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "mlb.TopicSuggestion": { + "properties": { + "display_name": { "type": "string" }, - "stores": { + "fields": { "items": { - "$ref": "#/definitions/oldnavy.Store" + "type": "integer" }, "type": "array" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" } }, "type": "object" }, - "oldnavy.StoreStockSummary": { + "mlb.Transaction": { "properties": { - "address": { + "date": { "type": "string" }, - "city": { + "description": { "type": "string" }, - "distance_miles": { - "type": "number" + "effective_date": { + "type": "string" }, - "name": { + "from_team": { + "$ref": "#/definitions/mlb.TeamRef" + }, + "id": { + "type": "integer" + }, + "player": { + "$ref": "#/definitions/mlb.NamedRef" + }, + "to_team": { + "$ref": "#/definitions/mlb.TeamRef" + }, + "type": { "type": "string" + } + }, + "type": "object" + }, + "mlb.TransactionsResponse": { + "properties": { + "count": { + "type": "integer" }, - "phone": { + "end_date": { "type": "string" }, - "postal_code": { + "fetched_at": { "type": "string" }, - "region": { + "source_url": { "type": "string" }, - "sizes": { + "start_date": { + "type": "string" + }, + "transactions": { "items": { - "$ref": "#/definitions/oldnavy.SizeStock" + "$ref": "#/definitions/mlb.Transaction" }, "type": "array" + } + }, + "type": "object" + }, + "mlb.VenueRef": { + "properties": { + "id": { + "type": "integer" }, - "store_id": { + "name": { "type": "string" } }, "type": "object" }, - "oldnavy.availabilityResponseDoc": { + "mlb.boxscoreResponseDoc": { + "properties": { + "code": { + "type": "integer" + }, + "data": { + "$ref": "#/definitions/mlb.BoxscoreResponse" + }, + "msg": { + "type": "string" + } + }, + "type": "object" + }, + "mlb.discoveryResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/oldnavy.AvailabilityResponse" + "$ref": "#/definitions/mlb.MLBDiscoveryResponse" }, "msg": { "example": "OK", @@ -106284,14 +108552,14 @@ }, "type": "object" }, - "oldnavy.categoriesResponseDoc": { + "mlb.editorialFeedResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/oldnavy.CategoriesResponse" + "$ref": "#/definitions/mlb.EditorialFeedResponse" }, "msg": { "example": "OK", @@ -106300,14 +108568,14 @@ }, "type": "object" }, - "oldnavy.categoryResponseDoc": { + "mlb.gameResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/oldnavy.CategoryResponse" + "$ref": "#/definitions/mlb.GameResponse" }, "msg": { "example": "OK", @@ -106316,14 +108584,14 @@ }, "type": "object" }, - "oldnavy.productResponseDoc": { + "mlb.leagueLeadersResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/oldnavy.ProductDetailResponse" + "$ref": "#/definitions/mlb.LeagueLeadersResponse" }, "msg": { "example": "OK", @@ -106332,14 +108600,28 @@ }, "type": "object" }, - "oldnavy.productReviewsResponseDoc": { + "mlb.playByPlayResponseDoc": { + "properties": { + "code": { + "type": "integer" + }, + "data": { + "$ref": "#/definitions/mlb.PlayByPlayResponse" + }, + "msg": { + "type": "string" + } + }, + "type": "object" + }, + "mlb.playerResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/oldnavy.ProductReviewsResponse" + "$ref": "#/definitions/mlb.PlayerResponse" }, "msg": { "example": "OK", @@ -106348,14 +108630,14 @@ }, "type": "object" }, - "oldnavy.searchResponseDoc": { + "mlb.prospectRankingsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/oldnavy.SearchResponse" + "$ref": "#/definitions/mlb.ProspectRankingsResponse" }, "msg": { "example": "OK", @@ -106364,14 +108646,14 @@ }, "type": "object" }, - "oldnavy.storesResponseDoc": { + "mlb.prospectStatsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/oldnavy.StoreResponse" + "$ref": "#/definitions/mlb.ProspectStatsResponse" }, "msg": { "example": "OK", @@ -106380,1165 +108662,1293 @@ }, "type": "object" }, - "opensea.Account": { + "mlb.rosterResponseDoc": { "properties": { - "address": { - "example": "0x46efbaedc92067e6d60e84ed6395099723252496", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "display_name": { - "example": "gordongoner", - "type": "string" + "data": { + "$ref": "#/definitions/mlb.RosterResponse" }, - "image_url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "opensea.ActivityEvent": { + "mlb.scheduleResponseDoc": { "properties": { - "chain": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "collection_name": { - "type": "string" + "data": { + "$ref": "#/definitions/mlb.ScheduleResponse" }, - "collection_slug": { - "example": "boredapeyachtclub", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "mlb.searchResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "contract_address": { - "type": "string" + "data": { + "$ref": "#/definitions/mlb.SearchResponse" }, - "event_time": { - "example": "2026-08-30T08:38:47.235Z", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "mlb.standingsResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "from": { - "$ref": "#/definitions/opensea.Account" + "data": { + "$ref": "#/definitions/mlb.StandingsResponse" }, - "id": { + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "mlb.statcastABSChallengesResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "item_image_url": { - "type": "string" + "data": { + "$ref": "#/definitions/mlb.StatcastABSChallengesResponse" }, - "item_name": { + "msg": { + "example": "OK", "type": "string" - }, - "marketplace": { - "example": "opensea", + } + }, + "type": "object" + }, + "mlb.statcastActiveSpinResponseDoc": { + "properties": { + "board": { + "example": "active-spin", "type": "string" }, - "price": { - "$ref": "#/definitions/opensea.Price" - }, - "quantity": { - "example": "1", + "hand": { + "example": "R", "type": "string" }, - "sale_type": { + "min": { + "example": "50", "type": "string" }, - "to": { - "$ref": "#/definitions/opensea.Account" - }, - "token_id": { - "example": "3766", - "type": "string" + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "transaction_hash": { - "type": "string" + "total": { + "example": 712, + "type": "integer" }, - "type": { - "example": "Sale", + "year": { + "example": "2026_spin-based", "type": "string" } }, "type": "object" }, - "opensea.ActivityResponse": { + "mlb.statcastArmAngleResponseDoc": { "properties": { - "events": { + "bat_side": { + "example": "L", + "type": "string" + }, + "board": { + "example": "pitcher-arm-angle", + "type": "string" + }, + "date_end": { + "example": "2026-04-15", + "type": "string" + }, + "date_start": { + "example": "2026-03-25", + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "game_types": { + "example": [ + "R" + ], "items": { - "$ref": "#/definitions/opensea.ActivityEvent" + "type": "string" }, "type": "array" }, - "next_page_cursor": { + "group_by": { + "items": { + "type": "string" + }, + "type": "array" + }, + "league_average": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "limit": { + "example": 100, + "type": "integer" + }, + "min": { + "example": "q", "type": "string" }, - "slug": { - "example": "boredapeyachtclub", + "min_group_pitches": { + "example": "1", "type": "string" }, - "token_id": { + "offset": { + "example": 0, + "type": "integer" + }, + "pitch_hand": { + "example": "R", "type": "string" - } - }, - "type": "object" - }, - "opensea.CategoriesResponse": { - "properties": { - "categories": { + }, + "pitch_types": { + "example": [ + "FF" + ], "items": { - "$ref": "#/definitions/opensea.Category" + "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "opensea.Category": { - "properties": { - "children": { + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.CategoryChild" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "slug": { - "example": "collections", + "seasons": { + "example": [ + "2026" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "sort": { + "example": "arm_angle", + "type": "string" + }, + "sort_dir": { + "example": "asc", "type": "string" + }, + "source_url": { + "type": "string" + }, + "teams": { + "example": [ + "147" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "total": { + "example": 276, + "type": "integer" } }, "type": "object" }, - "opensea.CategoryChild": { + "mlb.statcastArmStrengthPlayerResponseDoc": { "properties": { - "display_name": { - "example": "PFPs", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "slug": { - "example": "pfps", + "data": { + "$ref": "#/definitions/mlb.StatcastArmStrengthPlayerResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "opensea.Chain": { + "mlb.statcastArmStrengthResponseDoc": { "properties": { - "arch": { - "example": "EVM", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "identifier": { - "example": "ethereum", - "type": "string" + "data": { + "$ref": "#/definitions/mlb.StatcastArmStrengthResponse" }, - "name": { - "example": "Ethereum", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "opensea.ChainsResponse": { + "mlb.statcastArmValueDetailsResponseDoc": { "properties": { - "chains": { - "items": { - "$ref": "#/definitions/opensea.Chain" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/mlb.StatcastArmValueDetailsResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "opensea.ChartPoint": { + "mlb.statcastArmValueResponseDoc": { "properties": { - "currency": { - "example": "ETH", - "type": "string" - }, - "time": { - "example": "2026-08-23T13:11:15.715Z", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "usd": { - "example": 19182.64, - "type": "number" + "data": { + "$ref": "#/definitions/mlb.StatcastArmValueResponse" }, - "value": { - "example": 7.899, - "type": "number" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "opensea.ChartResponse": { + "mlb.statcastBaserunningResponseDoc": { "properties": { - "metric": { - "example": "floor_price", - "type": "string" - }, - "points": { - "items": { - "$ref": "#/definitions/opensea.ChartPoint" - }, - "type": "array" + "code": { + "type": "integer" }, - "slug": { - "example": "boredapeyachtclub", - "type": "string" + "data": { + "$ref": "#/definitions/mlb.StatcastBaserunningResponse" }, - "timeframe": { - "example": "SEVEN_DAYS", + "msg": { "type": "string" } }, "type": "object" }, - "opensea.Collection": { + "mlb.statcastBatTrackingResponseDoc": { "properties": { - "banner_image_url": { + "board": { "type": "string" }, - "category": { - "example": "PFPS", + "date_end": { "type": "string" }, - "chain": { - "example": "ethereum", + "date_start": { "type": "string" }, - "contract_address": { - "example": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d", + "fetched_at": { "type": "string" }, - "created_at": { - "example": "2021-04-22T23:14:24.000Z", + "game_type": { "type": "string" }, - "description": { - "type": "string" + "limit": { + "type": "integer" }, - "discord_url": { + "min_group_swings": { "type": "string" }, - "external_url": { + "min_swings": { "type": "string" }, - "floor_price": { - "$ref": "#/definitions/opensea.Price" + "offset": { + "type": "integer" }, - "id": { - "example": "46188685bcac4206ace63c9d017abbb7", - "type": "string" + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "image_url": { + "season_end": { "type": "string" }, - "instagram_username": { + "season_start": { "type": "string" }, - "is_verified": { - "example": true, - "type": "boolean" - }, - "name": { - "example": "Bored Ape Yacht Club", + "sort": { "type": "string" }, - "slug": { - "example": "boredapeyachtclub", + "sort_dir": { "type": "string" }, - "stats": { - "$ref": "#/definitions/opensea.CollectionStats" + "source_url": { + "type": "string" }, - "top_offer": { - "$ref": "#/definitions/opensea.Price" + "total": { + "type": "integer" }, - "twitter_username": { + "type": { "type": "string" } }, "type": "object" }, - "opensea.CollectionHoldersResponse": { + "mlb.statcastBattedBallResponseDoc": { "properties": { - "holders": { + "board": { + "example": "batted-ball", + "type": "string" + }, + "game_types": { + "example": [ + "R" + ], "items": { - "$ref": "#/definitions/opensea.Holder" + "type": "string" }, "type": "array" }, - "next_page_cursor": { - "type": "string" - }, - "slug": { - "example": "boredapeyachtclub", - "type": "string" - } - }, - "type": "object" - }, - "opensea.CollectionItemsResponse": { - "properties": { - "items": { + "league_average": { "items": { - "$ref": "#/definitions/opensea.Item" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "next_page_cursor": { + "min": { + "example": "q", "type": "string" }, - "slug": { - "example": "boredapeyachtclub", + "min_split": { + "example": "1", "type": "string" - } - }, - "type": "object" - }, - "opensea.CollectionItemsShelfResponse": { - "properties": { - "items": { + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.Item" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "shelf": { - "example": "best_deals", - "type": "string" + "seasons": { + "example": [ + "2026" + ], + "items": { + "type": "string" + }, + "type": "array" }, - "slug": { - "example": "boredapeyachtclub", + "show_league_average": { + "example": true, + "type": "boolean" + }, + "total": { + "example": 346, + "type": "integer" + }, + "type": { + "example": "batter", "type": "string" } }, "type": "object" }, - "opensea.CollectionOffersResponse": { + "mlb.statcastBirthdayIndexResponseDoc": { "properties": { - "next_page_cursor": { - "type": "string" - }, - "offers": { - "items": { - "$ref": "#/definitions/opensea.OfferAggregate" - }, - "type": "array" - }, - "slug": { - "example": "boredapeyachtclub", + "date": { + "example": "5-2", "type": "string" }, - "total_currency": { - "example": "WETH", + "fetched_at": { "type": "string" }, - "total_offers": { - "example": 314, + "limit": { + "example": 100, "type": "integer" }, - "total_value_token": { - "example": 55.0032, - "type": "number" + "min_games": { + "example": 1, + "type": "integer" }, - "total_value_usd": { - "example": 135216.02, - "type": "number" - } - }, - "type": "object" - }, - "opensea.CollectionSearchResponse": { - "properties": { - "collections": { + "offset": { + "example": 0, + "type": "integer" + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.CollectionSummary" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "query": { - "example": "ape", + "show_inactives": { + "example": false, + "type": "boolean" + }, + "sort": { + "example": "daysUntil", "type": "string" - } - }, - "type": "object" - }, - "opensea.CollectionShelfResponse": { - "properties": { - "collections": { + }, + "sort_dir": { + "example": "asc", + "type": "string" + }, + "source_url": { + "type": "string" + }, + "today_batters": { "items": { - "$ref": "#/definitions/opensea.CollectionSummary" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "next_page_cursor": { - "type": "string" + "today_pitchers": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "shelf": { - "example": "top_movers", + "total": { + "example": 241, + "type": "integer" + }, + "type": { + "example": "batter", "type": "string" } }, "type": "object" }, - "opensea.CollectionStats": { + "mlb.statcastBoardResponseDoc": { "properties": { - "listed_item_count": { - "example": 298, + "code": { + "example": 200, "type": "integer" }, - "one_day": { - "$ref": "#/definitions/opensea.WindowStats" + "data": { + "$ref": "#/definitions/mlb.StatcastBoardResponse" }, - "one_hour": { - "$ref": "#/definitions/opensea.WindowStats" + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "mlb.statcastCatcherBlockingDetailsResponseDoc": { + "properties": { + "board": { + "example": "catcher-blocking-details", + "type": "string" }, - "sales": { - "example": 57369, + "entity_id": { + "example": 682626, "type": "integer" }, - "seven_days": { - "$ref": "#/definitions/opensea.WindowStats" - }, - "thirty_days": { - "$ref": "#/definitions/opensea.WindowStats" + "fetched_at": { + "type": "string" }, - "total_supply": { - "example": 9998, + "limit": { + "example": 100, "type": "integer" }, - "unique_item_count": { - "example": 9998, + "offset": { + "example": 0, "type": "integer" }, - "volume_currency": { - "example": "ETH", - "type": "string" + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "volume_native": { - "example": 1580610.96, - "type": "number" + "source_url": { + "type": "string" }, - "volume_usd": { - "example": 3756342321.66, - "type": "number" + "total": { + "example": 3319, + "type": "integer" } }, "type": "object" }, - "opensea.CollectionSummary": { + "mlb.statcastCatcherBlockingResponseDoc": { "properties": { - "category": { - "example": "PFPS", - "type": "string" - }, - "chain": { - "example": "ethereum", + "board": { + "example": "catcher-blocking", "type": "string" }, - "contract_address": { + "fetched_at": { "type": "string" }, - "floor_price": { - "$ref": "#/definitions/opensea.Price" - }, - "id": { + "game_type": { + "example": "Regular", "type": "string" }, - "image_url": { + "minimum": { + "example": "q", "type": "string" }, - "is_verified": { - "type": "boolean" - }, - "markets": { + "rows": { "items": { - "$ref": "#/definitions/opensea.MarketListing" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "name": { - "example": "Bored Ape Yacht Club", + "source_url": { "type": "string" }, - "slug": { - "example": "boredapeyachtclub", - "type": "string" + "total": { + "example": 74, + "type": "integer" }, - "stats": { - "$ref": "#/definitions/opensea.CollectionStats" + "type": { + "example": "Cat", + "type": "string" } }, "type": "object" }, - "opensea.CollectionTopSalesResponse": { + "mlb.statcastCatcherFramingDetailsResponseDoc": { "properties": { - "sales": { + "board": { + "example": "catcher-framing-details", + "type": "string" + }, + "entity_id": { + "example": 663886, + "type": "integer" + }, + "fetched_at": { + "type": "string" + }, + "limit": { + "example": 100, + "type": "integer" + }, + "offset": { + "example": 0, + "type": "integer" + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.ActivityEvent" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "slug": { - "example": "boredapeyachtclub", + "source_url": { "type": "string" + }, + "total": { + "example": 8570, + "type": "integer" } }, "type": "object" }, - "opensea.CollectionTrait": { + "mlb.statcastCatcherFramingResponseDoc": { "properties": { - "comparison_operator": { + "board": { + "example": "catcher-framing", "type": "string" }, - "trait_type": { - "example": "Background", + "fetched_at": { "type": "string" }, - "values": { - "items": { - "$ref": "#/definitions/opensea.TraitValue" - }, - "type": "array" - } - }, - "type": "object" - }, - "opensea.CollectionTraitOffersResponse": { - "properties": { - "next_page_cursor": { + "game_type": { + "example": "Regular", "type": "string" }, - "offers": { + "limit": { + "example": 100, + "type": "integer" + }, + "offset": { + "example": 0, + "type": "integer" + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.TraitOfferAggregate" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "slug": { - "example": "boredapeyachtclub", - "type": "string" - }, - "total_currency": { - "example": "WETH", + "source_url": { "type": "string" }, - "total_offers": { - "example": 6, + "total": { + "example": 56, "type": "integer" }, - "total_value_token": { - "example": 96.13, - "type": "number" - }, - "total_value_usd": { - "example": 96.13, - "type": "number" + "type": { + "example": "catcher", + "type": "string" } }, "type": "object" }, - "opensea.CollectionTraitsResponse": { + "mlb.statcastCatcherPopTimeResponseDoc": { "properties": { - "next_page_cursor": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "slug": { - "example": "boredapeyachtclub", - "type": "string" + "data": { + "$ref": "#/definitions/mlb.StatcastCatcherPopTimeResponse" }, - "traits": { - "items": { - "$ref": "#/definitions/opensea.CollectionTrait" - }, - "type": "array" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "opensea.CollectionsResponse": { + "mlb.statcastCatcherStanceResponseDoc": { "properties": { - "collections": { - "items": { - "$ref": "#/definitions/opensea.CollectionSummary" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/mlb.StatcastCatcherStanceResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "opensea.DepthLevel": { + "mlb.statcastCatcherThrowingDetailsResponseDoc": { "properties": { - "price": { - "$ref": "#/definitions/opensea.Price" - }, - "quantity": { - "example": 2, + "code": { + "example": 200, "type": "integer" + }, + "data": { + "$ref": "#/definitions/mlb.StatcastCatcherThrowingDetailsResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "opensea.DepthResponse": { + "mlb.statcastCatcherThrowingResponseDoc": { "properties": { - "chain": { - "type": "string" - }, - "contract_address": { - "type": "string" - }, - "listings": { - "items": { - "$ref": "#/definitions/opensea.DepthLevel" - }, - "type": "array" - }, - "offers": { - "items": { - "$ref": "#/definitions/opensea.DepthLevel" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" }, - "slug": { - "example": "boredapeyachtclub", - "type": "string" + "data": { + "$ref": "#/definitions/mlb.StatcastCatcherThrowingResponse" }, - "token_id": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "opensea.Drop": { + "mlb.statcastFieldingRunValueResponseDoc": { "properties": { - "chain": { - "example": "base", - "type": "string" - }, - "collection": { - "$ref": "#/definitions/opensea.CollectionSummary" + "code": { + "example": 200, + "type": "integer" }, - "contract_address": { - "type": "string" + "data": { + "$ref": "#/definitions/mlb.StatcastFieldingRunValueResponse" }, - "type": { - "example": "Erc721SeaDropV1", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "opensea.DropsResponse": { + "mlb.statcastFirstBaseReceivingDetailsResponseDoc": { "properties": { - "drops": { - "items": { - "$ref": "#/definitions/opensea.Drop" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" }, - "next_page_cursor": { - "type": "string" + "data": { + "$ref": "#/definitions/mlb.StatcastFirstBaseReceivingDetailsResponse" }, - "type": { - "example": "UPCOMING", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "opensea.Holder": { + "mlb.statcastFirstBaseReceivingResponseDoc": { "properties": { - "account": { - "$ref": "#/definitions/opensea.Account" - }, - "quantity": { - "example": 143, + "code": { + "example": 200, "type": "integer" + }, + "data": { + "$ref": "#/definitions/mlb.StatcastFirstBaseReceivingResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "opensea.Item": { + "mlb.statcastHomeRunsDetailsResponseDoc": { "properties": { - "best_listing": { - "$ref": "#/definitions/opensea.Price" - }, - "best_offer": { - "$ref": "#/definitions/opensea.Price" - }, - "chain": { - "example": "ethereum", + "cat": { + "example": "adj_xhr", "type": "string" }, - "collection_name": { - "example": "Bored Ape Yacht Club", + "player_id": { + "example": "691718", "type": "string" }, - "collection_slug": { - "example": "boredapeyachtclub", + "player_type": { + "example": "Batter", "type": "string" }, - "contract_address": { - "type": "string" + "plays": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "created_at": { - "type": "string" + "total": { + "example": 61, + "type": "integer" }, - "description": { + "year": { + "example": "2026", + "type": "string" + } + }, + "type": "object" + }, + "mlb.statcastHomeRunsResponseDoc": { + "properties": { + "board": { + "example": "home-runs", "type": "string" }, - "id": { + "cat": { + "example": "adj_xhr", "type": "string" }, - "image_url": { + "min": { + "example": "10", "type": "string" }, - "is_fungible": { - "type": "boolean" + "player_type": { + "example": "Batter", + "type": "string" }, - "last_sale": { - "$ref": "#/definitions/opensea.Price" + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "last_sale_at": { + "sort": { + "example": "xhr", "type": "string" }, - "marketplace": { - "example": "opensea", + "sort_dir": { + "example": "desc", "type": "string" }, - "name": { - "example": "#1", + "team": { + "example": "112", "type": "string" }, - "owner": { - "$ref": "#/definitions/opensea.Account" - }, - "rarity_rank": { - "example": 1204, + "total": { + "example": 49, "type": "integer" }, - "token_id": { - "example": "1", + "year": { + "example": "2026", "type": "string" - }, - "traits": { - "items": { - "$ref": "#/definitions/opensea.Trait" - }, - "type": "array" } }, "type": "object" }, - "opensea.ItemOrdersResponse": { + "mlb.statcastParkFactorsResponseDoc": { "properties": { - "chain": { - "example": "ethereum", - "type": "string" - }, - "contract_address": { - "example": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d", - "type": "string" - }, - "next_page_cursor": { + "board": { + "example": "statcast-park-factors", "type": "string" }, - "orders": { + "rows": { "items": { - "$ref": "#/definitions/opensea.Order" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "token_id": { - "example": "1", - "type": "string" - } - }, - "type": "object" - }, - "opensea.ItemOwner": { - "properties": { - "account": { - "$ref": "#/definitions/opensea.Account" + "total": { + "example": 29, + "type": "integer" }, - "quantity": { - "example": "1", + "type": { + "example": "year", "type": "string" } }, "type": "object" }, - "opensea.ItemOwnersResponse": { + "mlb.statcastPercentileResponseDoc": { "properties": { - "chain": { - "example": "ethereum", - "type": "string" - }, - "contract_address": { + "board": { + "example": "percentile-rankings", "type": "string" }, - "has_more": { - "type": "boolean" - }, - "next_page_cursor": { + "fetched_at": { "type": "string" }, - "owners": { + "filters": { "items": { - "$ref": "#/definitions/opensea.ItemOwner" + "$ref": "#/definitions/mlb.StatcastPercentileFilter" }, "type": "array" }, - "token_id": { - "example": "1", - "type": "string" + "limit": { + "example": 100, + "type": "integer" }, - "total_owners": { - "example": 1, + "offset": { + "example": 0, "type": "integer" - } - }, - "type": "object" - }, - "opensea.ItemSearchResponse": { - "properties": { - "items": { + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.Item" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "query": { - "example": "gold", + "sort": { + "example": "percent_rank_xwoba", "type": "string" }, - "slug": { - "example": "boredapeyachtclub", + "sort_dir": { + "example": "desc", "type": "string" - } - }, - "type": "object" - }, - "opensea.MarketListing": { - "properties": { - "listed_item_count": { - "example": 190, - "type": "integer" }, - "marketplace": { - "example": "opensea", + "source_url": { "type": "string" }, - "name": { - "example": "OpenSea", - "type": "string" - } - }, - "type": "object" - }, - "opensea.OfferAggregate": { - "properties": { - "id": { + "team": { + "example": "147", "type": "string" }, - "price": { - "$ref": "#/definitions/opensea.Price" - }, - "total_offers": { - "example": 1, + "total": { + "example": 28, "type": "integer" + }, + "type": { + "example": "batter", + "type": "string" + }, + "year": { + "example": "2026", + "type": "string" } }, "type": "object" }, - "opensea.Order": { + "mlb.statcastPitchArsenalDetailsResponseDoc": { "properties": { - "end_time": { + "pitch_type": { + "example": "FF", "type": "string" }, - "id": { + "player_id": { + "example": "592332", "type": "string" }, - "maker": { - "$ref": "#/definitions/opensea.Account" - }, - "marketplace": { - "example": "opensea", + "player_type": { + "example": "pitcher", "type": "string" }, - "price": { - "$ref": "#/definitions/opensea.Price" + "plays": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "quantity": { - "example": "1", - "type": "string" + "total": { + "example": 416, + "type": "integer" }, - "start_time": { + "year": { + "example": "2026", "type": "string" } }, "type": "object" }, - "opensea.Price": { + "mlb.statcastPitchArsenalResponseDoc": { "properties": { - "amount": { - "example": 7.85, - "type": "number" + "board": { + "example": "pitch-arsenal-stats", + "type": "string" }, - "chain": { - "example": "ethereum", + "min_pa": { + "example": "1", "type": "string" }, - "contract_address": { - "example": "0x0000000000000000000000000000000000000000", + "min_pitches": { + "example": "q", "type": "string" }, - "currency": { - "example": "ETH", + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "total": { + "example": 523, + "type": "integer" + }, + "type": { + "example": "pitcher", "type": "string" }, - "usd": { - "example": 19295.3, - "type": "number" + "year": { + "example": "2026", + "type": "string" } }, "type": "object" }, - "opensea.Profile": { + "mlb.statcastPitchArsenalsResponseDoc": { "properties": { - "address": { - "example": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", - "type": "string" - }, - "banner_image_url": { - "type": "string" - }, - "display_name": { - "example": "vitalik.eth", + "board": { + "example": "pitch-arsenals", "type": "string" }, - "external_url": { + "hand": { + "example": "R", "type": "string" }, - "image_url": { + "min_pitches": { + "example": "q", "type": "string" }, - "is_verified": { - "type": "boolean" + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "kind": { - "example": "WALLET", - "type": "string" + "total": { + "example": 231, + "type": "integer" }, - "twitter_username": { + "type": { + "example": "avg_speed", "type": "string" }, - "username": { + "year": { + "example": "2026", "type": "string" } }, "type": "object" }, - "opensea.ProfileCollection": { + "mlb.statcastPitchMovementResponseDoc": { "properties": { - "collection": { - "$ref": "#/definitions/opensea.CollectionSummary" + "board": { + "example": "pitch-movement", + "type": "string" }, - "item_count": { - "example": 1, - "type": "integer" + "hand": { + "example": "R", + "type": "string" }, - "total_quantity": { - "example": 1, - "type": "integer" - } - }, - "type": "object" - }, - "opensea.ProfileCollectionsResponse": { - "properties": { - "address": { + "min": { + "example": "q", "type": "string" }, - "collections": { + "pitch_type": { + "example": "FF", + "type": "string" + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.ProfileCollection" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "next_page_cursor": { + "total": { + "example": 431, + "type": "integer" + }, + "year": { + "example": "2026", "type": "string" } }, "type": "object" }, - "opensea.ProfileItemsResponse": { + "mlb.statcastPitchTempoPlayerResponseDoc": { "properties": { - "address": { - "example": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", + "entity_id": { + "example": "608718", "type": "string" }, - "items": { + "game_type": { + "example": "Regular", + "type": "string" + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.Item" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "next_page_cursor": { + "season_end": { + "example": "2026", "type": "string" }, - "total_items": { - "example": 3441, + "season_start": { + "example": "2026", + "type": "string" + }, + "total": { + "example": 10, "type": "integer" - } - }, - "type": "object" - }, - "opensea.RankedCollection": { - "properties": { - "collection": { - "$ref": "#/definitions/opensea.CollectionSummary" }, - "score": { - "example": "28.3713030851", + "type": { + "example": "Pit", "type": "string" } }, "type": "object" }, - "opensea.RankingsResponse": { + "mlb.statcastPitchTempoResponseDoc": { "properties": { - "collections": { + "board": { + "example": "pitch_tempo", + "type": "string" + }, + "game_type": { + "example": "Regular", + "type": "string" + }, + "minimum_pitches": { + "example": "q", + "type": "string" + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.RankedCollection" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "next_page_cursor": { + "season_end": { + "example": "2026", "type": "string" }, - "ranking": { - "example": "TRENDING", + "season_start": { + "example": "2026", "type": "string" }, - "timeframe": { - "example": "ONE_DAY", + "total": { + "example": 348, + "type": "integer" + }, + "type": { + "example": "Pit", "type": "string" } }, "type": "object" }, - "opensea.SocialProofResponse": { + "mlb.statcastPitchTimerResponseDoc": { "properties": { - "notable_collectors": { + "board": { + "example": "pitch-timer-infractions", + "type": "string" + }, + "rows": { "items": { - "$ref": "#/definitions/opensea.Account" + "additionalProperties": {}, + "type": "object" }, "type": "array" }, - "slug": { - "example": "boredapeyachtclub", + "season": { + "example": "2026", "type": "string" }, - "social_count": { - "example": 5605, + "total": { + "example": 30, "type": "integer" - } - }, - "type": "object" - }, - "opensea.Trait": { - "properties": { - "trait_type": { - "example": "Background", - "type": "string" }, - "value": { - "example": "Orange", + "type": { + "example": "Team", "type": "string" } }, "type": "object" }, - "opensea.TraitOfferAggregate": { + "mlb.statcastPlayerDetailsResponseDoc": { "properties": { - "id": { - "type": "string" - }, - "price": { - "$ref": "#/definitions/opensea.Price" - }, - "total_offers": { - "example": 1, + "code": { + "example": 200, "type": "integer" }, - "trait_type": { - "example": "Fur", - "type": "string" + "data": { + "$ref": "#/definitions/mlb.StatcastPlayerDetailsResponse" }, - "trait_value": { - "example": "Solid Gold", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "opensea.TraitValue": { + "mlb.statcastResponseDoc": { "properties": { - "count": { - "example": 1170, + "code": { + "example": 200, "type": "integer" }, - "value": { - "example": "Gray", + "data": { + "$ref": "#/definitions/mlb.StatcastResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "opensea.WindowStats": { + "mlb.statcastRollingResponseDoc": { "properties": { - "floor_price_change": { - "example": 0.0065, - "type": "number" + "fetched_at": { + "type": "string" }, - "sales": { - "example": 42, + "groups": { + "items": { + "$ref": "#/definitions/mlb.StatcastRollingGroup" + }, + "type": "array" + }, + "limit": { + "example": 100, "type": "integer" }, - "volume_native": { - "example": 318.4, - "type": "number" + "metric": { + "example": "xwoba", + "type": "string" }, - "volume_usd": { - "example": 782344.1, - "type": "number" + "offset": { + "example": 0, + "type": "integer" + }, + "source_url": { + "type": "string" + }, + "total": { + "example": 2509, + "type": "integer" } }, "type": "object" }, - "opensea.activityResponseDoc": { + "mlb.statcastRunValueResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" + "board": { + "example": "swing-take", + "type": "string" }, - "data": { - "$ref": "#/definitions/opensea.ActivityResponse" + "group": { + "example": "Batter", + "type": "string" }, - "msg": { - "example": "OK", + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "total": { + "example": 300, + "type": "integer" + }, + "year": { + "example": "2026", "type": "string" } }, "type": "object" }, - "opensea.categoriesResponseDoc": { + "mlb.statcastRunningGameDetailsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.CategoriesResponse" + "$ref": "#/definitions/mlb.StatcastRunningGameDetailsResponse" }, "msg": { "example": "OK", @@ -107547,14 +109957,14 @@ }, "type": "object" }, - "opensea.chainsResponseDoc": { + "mlb.statcastRunningGameResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.ChainsResponse" + "$ref": "#/definitions/mlb.StatcastRunningGameResponse" }, "msg": { "example": "OK", @@ -107563,14 +109973,14 @@ }, "type": "object" }, - "opensea.chartResponseDoc": { + "mlb.statcastSprintSpeedResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.ChartResponse" + "$ref": "#/definitions/mlb.StatcastSprintSpeedResponse" }, "msg": { "example": "OK", @@ -107579,14 +109989,14 @@ }, "type": "object" }, - "opensea.collectionHoldersResponseDoc": { + "mlb.statcastSprintSpeedTeamsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.CollectionHoldersResponse" + "$ref": "#/definitions/mlb.StatcastSprintSpeedTeamsResponse" }, "msg": { "example": "OK", @@ -107595,62 +110005,131 @@ }, "type": "object" }, - "opensea.collectionItemsResponseDoc": { + "mlb.statcastSwingPathResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" + "board": { + "example": "swing-path-attack-angle", + "type": "string" }, - "data": { - "$ref": "#/definitions/opensea.CollectionItemsResponse" + "game_type": { + "example": "Regular", + "type": "string" }, - "msg": { - "example": "OK", + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "season_end": { + "example": "2026", + "type": "string" + }, + "season_start": { + "example": "2026", + "type": "string" + }, + "total": { + "example": 203, + "type": "integer" + }, + "type": { + "example": "batter", "type": "string" } }, "type": "object" }, - "opensea.collectionOffersResponseDoc": { + "mlb.statcastSwingTimingDetailsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" + "details": { + "additionalProperties": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "type": "object" }, - "data": { - "$ref": "#/definitions/opensea.CollectionOffersResponse" + "fetched_at": { + "type": "string" }, - "msg": { - "example": "OK", + "row_id": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "total": { + "type": "integer" + }, + "type": { "type": "string" } }, "type": "object" }, - "opensea.collectionResponseDoc": { + "mlb.statcastSwingTimingResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" + "board": { + "example": "swing-timing-miss-distance", + "type": "string" }, - "data": { - "$ref": "#/definitions/opensea.Collection" + "game_types": { + "example": [ + "R" + ], + "items": { + "type": "string" + }, + "type": "array" }, - "msg": { - "example": "OK", + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "seasons": { + "example": [ + "2026" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "splits": { + "example": [ + "api_pitch_type_group09" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "total": { + "example": 926, + "type": "integer" + }, + "type": { + "example": "batter", "type": "string" } }, "type": "object" }, - "opensea.collectionSearchResponseDoc": { + "mlb.statcastTopPerformersResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.CollectionSearchResponse" + "$ref": "#/definitions/mlb.StatcastTopPerformersResponse" }, "msg": { "example": "OK", @@ -107659,30 +110138,72 @@ }, "type": "object" }, - "opensea.collectionShelfResponseDoc": { + "mlb.statcastYearToYearResponseDoc": { "properties": { - "code": { - "example": 200, + "board": { + "example": "year-to-year", + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "group": { + "example": "Batter", + "type": "string" + }, + "limit": { + "example": 100, "type": "integer" }, - "data": { - "$ref": "#/definitions/opensea.CollectionShelfResponse" + "next_year": { + "example": 2026, + "type": "integer" }, - "msg": { - "example": "OK", + "offset": { + "example": 0, + "type": "integer" + }, + "rows": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "sort": { + "example": "hard_hit_percent_diff_2025", + "type": "string" + }, + "sort_dir": { + "example": "desc", + "type": "string" + }, + "source_url": { + "type": "string" + }, + "total": { + "example": 177, + "type": "integer" + }, + "type": { + "example": "hard_hit_percent", + "type": "string" + }, + "year": { + "example": "2025", "type": "string" } }, "type": "object" }, - "opensea.collectionTopSalesResponseDoc": { + "mlb.statsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.CollectionTopSalesResponse" + "$ref": "#/definitions/mlb.StatsResponse" }, "msg": { "example": "OK", @@ -107691,14 +110212,14 @@ }, "type": "object" }, - "opensea.collectionTraitOffersResponseDoc": { + "mlb.teamsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.CollectionTraitOffersResponse" + "$ref": "#/definitions/mlb.TeamsResponse" }, "msg": { "example": "OK", @@ -107707,174 +110228,284 @@ }, "type": "object" }, - "opensea.collectionTraitsResponseDoc": { + "mlb.transactionsResponseDoc": { "properties": { "code": { - "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.CollectionTraitsResponse" + "$ref": "#/definitions/mlb.TransactionsResponse" }, "msg": { - "example": "OK", "type": "string" } }, "type": "object" }, - "opensea.collectionsResponseDoc": { + "modaoperandi.CategoriesResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" + "availability": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" }, - "data": { - "$ref": "#/definitions/opensea.CollectionsResponse" + "categories": { + "items": { + "$ref": "#/definitions/modaoperandi.Category" + }, + "type": "array" }, - "msg": { - "example": "OK", + "colors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "designers": { + "items": { + "$ref": "#/definitions/modaoperandi.Designer" + }, + "type": "array" + }, + "gender": { "type": "string" + }, + "sizes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sorts": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "opensea.depthResponseDoc": { + "modaoperandi.Category": { "properties": { - "code": { - "example": 200, - "type": "integer" + "name": { + "type": "string" }, - "data": { - "$ref": "#/definitions/opensea.DepthResponse" + "slug": { + "type": "string" }, - "msg": { - "example": "OK", + "total_items": { + "type": "integer" + }, + "url": { "type": "string" } }, "type": "object" }, - "opensea.dropsResponseDoc": { + "modaoperandi.Designer": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/opensea.DropsResponse" + "name": { + "type": "string" }, - "msg": { - "example": "OK", + "slug": { "type": "string" + }, + "total_items": { + "type": "integer" } }, "type": "object" }, - "opensea.itemOrdersResponseDoc": { + "modaoperandi.DesignersResponse": { "properties": { - "code": { - "example": 200, + "count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/opensea.ItemOrdersResponse" + "designers": { + "items": { + "$ref": "#/definitions/modaoperandi.Designer" + }, + "type": "array" }, - "msg": { - "example": "OK", + "gender": { "type": "string" } }, "type": "object" }, - "opensea.itemOwnersResponseDoc": { + "modaoperandi.Detail": { "properties": { - "code": { - "example": 200, - "type": "integer" + "availability": { + "type": "string" }, - "data": { - "$ref": "#/definitions/opensea.ItemOwnersResponse" + "color": { + "type": "string" }, - "msg": { - "example": "OK", + "currency": { + "type": "string" + }, + "description": { + "type": "string" + }, + "designer": { + "type": "string" + }, + "details": { + "type": "string" + }, + "id": { + "type": "string" + }, + "images": { + "items": { + "type": "string" + }, + "type": "array" + }, + "in_stock": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "price": { + "type": "number" + }, + "sizes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { "type": "string" } }, "type": "object" }, - "opensea.itemResponseDoc": { + "modaoperandi.Facets": { "properties": { - "code": { - "example": 200, - "type": "integer" + "availability": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" }, - "data": { - "$ref": "#/definitions/opensea.Item" + "categories": { + "items": { + "$ref": "#/definitions/modaoperandi.Category" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" + "colors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "designers": { + "items": { + "$ref": "#/definitions/modaoperandi.Designer" + }, + "type": "array" + }, + "sizes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sorts": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "opensea.itemSearchResponseDoc": { + "modaoperandi.Product": { "properties": { - "code": { - "example": 200, - "type": "integer" + "availability": { + "type": "string" }, - "data": { - "$ref": "#/definitions/opensea.ItemSearchResponse" + "color": { + "type": "string" }, - "msg": { - "example": "OK", + "currency": { + "type": "string" + }, + "designer": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image_url": { + "type": "string" + }, + "in_stock": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "price": { + "type": "number" + }, + "url": { "type": "string" } }, "type": "object" }, - "opensea.itemsShelfResponseDoc": { + "modaoperandi.SearchResponse": { "properties": { - "code": { - "example": 200, + "category": { + "type": "string" + }, + "count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/opensea.CollectionItemsShelfResponse" + "facets": { + "$ref": "#/definitions/modaoperandi.Facets" }, - "msg": { - "example": "OK", + "gender": { "type": "string" - } - }, - "type": "object" - }, - "opensea.profileCollectionsResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "limit": { "type": "integer" }, - "data": { - "$ref": "#/definitions/opensea.ProfileCollectionsResponse" + "page": { + "type": "integer" }, - "msg": { - "example": "OK", + "products": { + "items": { + "$ref": "#/definitions/modaoperandi.Product" + }, + "type": "array" + }, + "query": { + "type": "string" + }, + "source_url": { "type": "string" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "opensea.profileItemsResponseDoc": { + "modaoperandi.categoriesDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.ProfileItemsResponse" + "$ref": "#/definitions/modaoperandi.CategoriesResponse" }, "msg": { "example": "OK", @@ -107883,14 +110514,14 @@ }, "type": "object" }, - "opensea.profileResponseDoc": { + "modaoperandi.designersDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.Profile" + "$ref": "#/definitions/modaoperandi.DesignersResponse" }, "msg": { "example": "OK", @@ -107899,14 +110530,14 @@ }, "type": "object" }, - "opensea.rankingsResponseDoc": { + "modaoperandi.productDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.RankingsResponse" + "$ref": "#/definitions/modaoperandi.Detail" }, "msg": { "example": "OK", @@ -107915,14 +110546,14 @@ }, "type": "object" }, - "opensea.socialProofResponseDoc": { + "modaoperandi.searchDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/opensea.SocialProofResponse" + "$ref": "#/definitions/modaoperandi.SearchResponse" }, "msg": { "example": "OK", @@ -107931,592 +110562,653 @@ }, "type": "object" }, - "opentable.Cuisine": { + "moncler.CategoriesResponse": { "properties": { - "id": { - "type": "string" - }, - "name": { - "example": "Steakhouse", - "type": "string" - }, - "primary": { - "type": "boolean" + "categories": { + "items": { + "$ref": "#/definitions/moncler.Category" + }, + "type": "array" } }, "type": "object" }, - "opentable.Menu": { + "moncler.Category": { "properties": { - "currency": { + "category_id": { "type": "string" }, - "sections": { + "children": { "items": { - "$ref": "#/definitions/opentable.MenuSection" + "$ref": "#/definitions/moncler.Category" }, "type": "array" }, - "title": { - "type": "string" - } - }, - "type": "object" - }, - "opentable.MenuItem": { - "properties": { "description": { "type": "string" }, - "price": { + "name": { "type": "string" }, - "title": { + "parent_id": { "type": "string" } }, "type": "object" }, - "opentable.MenuSection": { + "moncler.CategoryResponse": { "properties": { - "items": { + "category_id": { + "type": "string" + }, + "facets": { "items": { - "$ref": "#/definitions/opentable.MenuItem" + "$ref": "#/definitions/moncler.SearchFacet" }, "type": "array" }, - "title": { - "type": "string" - } - }, - "type": "object" - }, - "opentable.MenusResponse": { - "properties": { - "menus": { + "limit": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "results": { "items": { - "$ref": "#/definitions/opentable.Menu" + "$ref": "#/definitions/moncler.SearchHit" }, "type": "array" }, - "restaurant_id": { - "type": "string" - } - }, - "type": "object" - }, - "opentable.PriceBand": { - "properties": { - "band": { - "example": "3", - "type": "string" + "sort_options": { + "items": { + "$ref": "#/definitions/moncler.SortOption" + }, + "type": "array" }, - "label": { - "example": "$31 to $50", - "type": "string" + "total": { + "type": "integer" } }, "type": "object" }, - "opentable.RestaurantResponse": { + "moncler.Product": { "properties": { - "availability_date_time": { - "description": "AvailabilityDateTime echoes the DateTime the Timeslots below were\ncomputed for (either the caller's or the now-default GetRestaurant\napplies -- see its doc comment).", - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { + "brand": { "type": "string" }, - "country_code": { + "care_instructions": { "type": "string" }, - "cuisines": { - "items": { - "$ref": "#/definitions/opentable.Cuisine" - }, - "type": "array" - }, - "currency_code": { + "collection": { "type": "string" }, - "description": { + "color": { "type": "string" }, - "dining_style": { + "composition": { "type": "string" }, - "dress_code": { + "currency": { "type": "string" }, - "email": { + "gender": { "type": "string" }, - "features": { + "images": { "items": { - "type": "string" + "$ref": "#/definitions/moncler.ProductImageGroup" }, "type": "array" }, - "hours": { - "type": "string" + "in_stock": { + "type": "boolean" }, - "id": { + "long_description": { "type": "string" }, - "latitude": { - "type": "number" + "made_in": { + "type": "string" }, - "line1": { + "master_id": { "type": "string" }, - "line2": { + "name": { "type": "string" }, - "longitude": { + "price": { "type": "number" }, - "max_advance_days": { - "type": "integer" - }, - "max_party_size": { - "type": "integer" - }, - "name": { + "product_id": { "type": "string" }, - "phone_number": { + "product_url": { "type": "string" }, - "photos_count": { - "type": "integer" + "related_products": { + "description": "RelatedProducts are \"styled with\" items Moncler's own product page\nsuggests alongside this product.", + "items": { + "$ref": "#/definitions/moncler.RelatedProduct" + }, + "type": "array" }, - "postal_code": { + "short_description": { "type": "string" }, - "price_band": { - "$ref": "#/definitions/opentable.PriceBand" - }, - "reviews": { - "$ref": "#/definitions/opentable.ReviewSummary" + "size_guide": { + "allOf": [ + { + "$ref": "#/definitions/moncler.SizeGuide" + } + ], + "description": "SizeGuide is this product's size chart (per-size body measurements\nand/or a cross-region size conversion table), when the upstream\nprovides one." }, - "state": { - "type": "string" + "stock_level": { + "type": "number" }, - "timeslots": { + "variants": { "items": { - "$ref": "#/definitions/opentable.Timeslot" + "$ref": "#/definitions/moncler.ProductVariant" }, "type": "array" }, - "website": { - "type": "string" + "variation_attributes": { + "items": { + "$ref": "#/definitions/moncler.ProductVariationAttribute" + }, + "type": "array" } }, "type": "object" }, - "opentable.Review": { + "moncler.ProductImage": { "properties": { - "author": { - "type": "string" - }, - "author_metro": { - "type": "string" - }, - "id": { + "alt": { "type": "string" }, - "posted_date": { + "url": { "type": "string" - }, - "recommended": { - "type": "boolean" - }, - "reservation_date": { + } + }, + "type": "object" + }, + "moncler.ProductImageGroup": { + "properties": { + "color": { "type": "string" }, - "statistics": { - "$ref": "#/definitions/opentable.ReviewStatistics" + "images": { + "items": { + "$ref": "#/definitions/moncler.ProductImage" + }, + "type": "array" }, - "text": { + "view_type": { "type": "string" } }, "type": "object" }, - "opentable.ReviewStatistics": { + "moncler.ProductVariant": { "properties": { - "ambience": { - "type": "number" + "orderable": { + "type": "boolean" }, - "food": { + "price": { "type": "number" }, - "noise": { - "type": "number" + "product_id": { + "type": "string" }, - "overall_rating": { - "type": "number" + "variation_values": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "moncler.ProductVariationAttribute": { + "properties": { + "id": { + "type": "string" }, - "service": { - "type": "number" + "label": { + "type": "string" }, - "value": { - "type": "number" + "values": { + "items": { + "$ref": "#/definitions/moncler.ProductVariationValue" + }, + "type": "array" } }, "type": "object" }, - "opentable.ReviewSummary": { + "moncler.ProductVariationValue": { "properties": { - "ambience": { - "type": "number" - }, - "count": { - "type": "integer" + "label": { + "type": "string" }, - "food": { - "type": "number" + "orderable": { + "type": "boolean" }, - "noise": { - "type": "number" + "value": { + "type": "string" + } + }, + "type": "object" + }, + "moncler.RelatedProduct": { + "properties": { + "currency": { + "type": "string" }, - "overall_rating": { - "example": 4.8, - "type": "number" + "image_url": { + "type": "string" }, - "review_count": { - "type": "integer" + "name": { + "type": "string" }, - "service": { + "price": { "type": "number" }, - "value": { - "type": "number" + "product_id": { + "type": "string" } }, "type": "object" }, - "opentable.ReviewsResponse": { + "moncler.SearchFacet": { "properties": { - "page": { - "type": "integer" + "id": { + "type": "string" }, - "restaurant_id": { + "label": { "type": "string" }, - "reviews": { + "values": { "items": { - "$ref": "#/definitions/opentable.Review" + "$ref": "#/definitions/moncler.SearchFacetValue" }, "type": "array" } }, "type": "object" }, - "opentable.SearchResponse": { + "moncler.SearchFacetValue": { "properties": { - "results": { - "items": { - "$ref": "#/definitions/opentable.SearchResult" - }, - "type": "array" + "count": { + "type": "integer" }, - "term": { + "label": { + "type": "string" + }, + "value": { "type": "string" } }, "type": "object" }, - "opentable.SearchResult": { + "moncler.SearchHit": { "properties": { - "availability_date_time": { - "description": "AvailabilityDateTime/Timeslots mirror RestaurantResponse's inline\navailability -- search returns the same nested shape per result.", + "currency": { "type": "string" }, - "city": { + "image_alt": { "type": "string" }, - "country": { + "image_url": { "type": "string" }, - "description": { + "name": { "type": "string" }, - "id": { - "type": "string" + "orderable": { + "type": "boolean" }, - "latitude": { + "price": { "type": "number" }, - "line1": { - "type": "string" - }, - "line2": { + "product_id": { "type": "string" }, - "longitude": { + "stock_level": { "type": "number" }, - "name": { - "type": "string" - }, - "postal_code": { - "type": "string" - }, - "state": { - "type": "string" - }, - "timeslots": { + "variant_ids": { "items": { - "$ref": "#/definitions/opentable.Timeslot" + "type": "string" }, "type": "array" } }, "type": "object" }, - "opentable.Timeslot": { + "moncler.SearchResponse": { "properties": { - "available": { - "type": "boolean" - }, - "date_time": { - "example": "2026-08-03T19:00", - "type": "string" + "facets": { + "items": { + "$ref": "#/definitions/moncler.SearchFacet" + }, + "type": "array" }, - "points": { + "limit": { "type": "integer" }, - "price_amount": { + "offset": { "type": "integer" }, - "redemption_tier": { - "type": "string" - }, - "token": { - "description": "Token is the upstream booking token for this slot. It is opaque and\nonly meaningful back to OpenTable's own booking flow -- this service\ndoes not implement booking, only discovery.", + "query": { "type": "string" }, - "type": { - "example": "Standard", - "type": "string" - } - }, - "type": "object" - }, - "opentable.menusResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "results": { + "items": { + "$ref": "#/definitions/moncler.SearchHit" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/opentable.MenusResponse" + "sort_options": { + "items": { + "$ref": "#/definitions/moncler.SortOption" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" + "total": { + "type": "integer" } }, "type": "object" }, - "opentable.restaurantResponseDoc": { + "moncler.SizeGuide": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/opentable.RestaurantResponse" + "country_sizes": { + "items": { + "$ref": "#/definitions/moncler.SizeGuideCountrySizes" + }, + "type": "array" }, - "msg": { - "example": "OK", + "description": { "type": "string" + }, + "rows": { + "items": { + "$ref": "#/definitions/moncler.SizeGuideRow" + }, + "type": "array" } }, "type": "object" }, - "opentable.reviewsResponseDoc": { + "moncler.SizeGuideCountrySizes": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/opentable.ReviewsResponse" - }, - "msg": { - "example": "OK", + "country": { "type": "string" + }, + "sizes": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "opentable.searchResponseDoc": { + "moncler.SizeGuideMeasurement": { "properties": { - "code": { - "example": 200, - "type": "integer" + "cm": { + "type": "string" }, - "data": { - "$ref": "#/definitions/opentable.SearchResponse" + "inches": { + "type": "string" }, - "msg": { - "example": "OK", + "label": { "type": "string" } }, "type": "object" }, - "otto.CategoriesResponse": { + "moncler.SizeGuideRow": { "properties": { - "categories": { + "measurements": { "items": { - "$ref": "#/definitions/otto.Category" + "$ref": "#/definitions/moncler.SizeGuideMeasurement" }, "type": "array" }, - "count": { - "type": "integer" - }, - "fetched_at": { - "type": "string" - }, - "source_url": { + "size": { "type": "string" } }, "type": "object" }, - "otto.Category": { + "moncler.SortOption": { "properties": { - "name": { + "id": { "type": "string" }, - "url": { + "label": { "type": "string" } }, "type": "object" }, - "otto.Product": { + "moncler.Store": { "properties": { - "brand": { + "address": { "type": "string" }, - "colors": { + "city": { + "type": "string" + }, + "country_code": { + "type": "string" + }, + "country_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "hours": { "items": { - "type": "string" + "$ref": "#/definitions/moncler.StoreHours" }, "type": "array" }, - "currency": { - "type": "string" - }, - "images": { + "hours_schedule": { "items": { - "type": "string" + "$ref": "#/definitions/moncler.StoreDaySchedule" }, "type": "array" }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, "name": { "type": "string" }, - "price": { - "type": "number" + "phone": { + "type": "string" }, - "sizes": { - "items": { - "type": "string" - }, - "type": "array" + "postal_code": { + "type": "string" }, - "url": { + "region": { + "type": "string" + }, + "state_code": { + "type": "string" + }, + "store_id": { + "type": "string" + }, + "store_type": { "type": "string" } }, "type": "object" }, - "otto.ProductResponse": { + "moncler.StoreDaySchedule": { "properties": { - "browser_rendered": { + "day": { + "type": "string" + }, + "is_closed": { "type": "boolean" }, - "fetched_at": { + "slots": { + "items": { + "$ref": "#/definitions/moncler.StoreHoursSlot" + }, + "type": "array" + } + }, + "type": "object" + }, + "moncler.StoreHours": { + "properties": { + "day": { "type": "string" }, - "product": { - "$ref": "#/definitions/otto.Product" + "text": { + "type": "string" } }, "type": "object" }, - "otto.ProductSummary": { + "moncler.StoreHoursSlot": { "properties": { - "brand": { + "end": { "type": "string" }, - "currency": { + "start": { "type": "string" + } + }, + "type": "object" + }, + "moncler.StoresResponse": { + "properties": { + "stores": { + "items": { + "$ref": "#/definitions/moncler.Store" + }, + "type": "array" + } + }, + "type": "object" + }, + "moncler.SuggestResponse": { + "properties": { + "categories": { + "items": { + "$ref": "#/definitions/moncler.SuggestedCategory" + }, + "type": "array" }, - "image": { - "type": "string" + "phrases": { + "items": { + "type": "string" + }, + "type": "array" }, - "name": { + "query": { "type": "string" }, - "price": { - "type": "number" + "terms": { + "items": { + "$ref": "#/definitions/moncler.SuggestedTerm" + }, + "type": "array" + } + }, + "type": "object" + }, + "moncler.SuggestedCategory": { + "properties": { + "category_id": { + "type": "string" }, - "product_id": { + "name": { "type": "string" }, - "url": { + "parent_category_name": { "type": "string" + } + }, + "type": "object" + }, + "moncler.SuggestedTerm": { + "properties": { + "corrected": { + "type": "boolean" }, - "variation_id": { + "term": { "type": "string" } }, "type": "object" }, - "otto.SearchResponse": { + "moncler.categoriesResponseDoc": { "properties": { - "count": { + "code": { + "example": 200, "type": "integer" }, - "fetched_at": { - "type": "string" + "data": { + "$ref": "#/definitions/moncler.CategoriesResponse" }, - "offset": { + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "moncler.categoryResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "products": { - "items": { - "$ref": "#/definitions/otto.ProductSummary" - }, - "type": "array" + "data": { + "$ref": "#/definitions/moncler.CategoryResponse" }, - "query": { + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "moncler.productResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "source_url": { + "data": { + "$ref": "#/definitions/moncler.Product" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "otto.categoriesResponseDoc": { + "moncler.searchResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/otto.CategoriesResponse" + "$ref": "#/definitions/moncler.SearchResponse" }, "msg": { "example": "OK", @@ -108525,14 +111217,14 @@ }, "type": "object" }, - "otto.productResponseDoc": { + "moncler.storesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/otto.ProductResponse" + "$ref": "#/definitions/moncler.StoresResponse" }, "msg": { "example": "OK", @@ -108541,14 +111233,14 @@ }, "type": "object" }, - "otto.searchResponseDoc": { + "moncler.suggestResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/otto.SearchResponse" + "$ref": "#/definitions/moncler.SuggestResponse" }, "msg": { "example": "OK", @@ -108557,11 +111249,11 @@ }, "type": "object" }, - "pagesix.AuthorResponse": { + "moneycontrol.AuthorResponse": { "properties": { "articles": { "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" + "$ref": "#/definitions/moneycontrol.HeadlineItem" }, "type": "array" }, @@ -108571,7 +111263,7 @@ }, "type": "array" }, - "image_url": { + "job_title": { "type": "string" }, "name": { @@ -108579,7 +111271,7 @@ }, "social_links": { "items": { - "$ref": "#/definitions/pagesix.AuthorSocialLink" + "$ref": "#/definitions/moneycontrol.AuthorSocialLink" }, "type": "array" }, @@ -108589,7 +111281,7 @@ }, "type": "object" }, - "pagesix.AuthorSocialLink": { + "moneycontrol.AuthorSocialLink": { "properties": { "type": { "type": "string" @@ -108600,27 +111292,45 @@ }, "type": "object" }, - "pandamart.CategoriesResponse": { + "moneycontrol.HeadlineItem": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/pandamart.Category" - }, - "type": "array" + "author": { + "type": "string" }, - "code": { + "image_url": { "type": "string" }, - "market": { + "published_at": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "pandamart.Category": { + "motleyfool.AuthorResponse": { "properties": { - "id": { - "type": "string" + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" + }, + "biography": { + "items": { + "type": "string" + }, + "type": "array" }, "image_url": { "type": "string" @@ -108628,2003 +111338,2240 @@ "name": { "type": "string" }, - "product_count": { - "type": "integer" - }, - "sub_categories": { - "items": { - "$ref": "#/definitions/pandamart.Category" - }, - "type": "array" + "url": { + "type": "string" } }, "type": "object" }, - "pandamart.Chain": { + "nationafrica.AuthorArticle": { "properties": { - "code": { + "premium": { + "type": "boolean" + }, + "summary": { "type": "string" }, - "name": { + "title": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "pandamart.Product": { + "nationafrica.AuthorResponse": { "properties": { - "description": { - "type": "string" - }, - "discount_badge": { - "type": "string" + "articles": { + "items": { + "$ref": "#/definitions/nationafrica.AuthorArticle" + }, + "type": "array" }, - "id": { + "bio": { "type": "string" }, "image_url": { "type": "string" }, - "is_available": { - "type": "boolean" - }, "name": { "type": "string" }, - "original_price": { - "type": "number" - }, - "price": { - "type": "number" - }, - "sku": { + "slug": { "type": "string" }, - "stock_amount": { - "type": "integer" + "url": { + "type": "string" } }, "type": "object" }, - "pandamart.ProductAttributes": { + "national.AuthorResponse": { "properties": { - "base_content_value": { - "type": "number" + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" }, - "base_unit": { + "image_url": { "type": "string" }, - "nutrition_grade": { + "name": { "type": "string" }, - "price_per_base_unit": { - "type": "number" + "slug": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "pandamart.ProductDetailResponse": { + "nationalpost.AuthorArticle": { "properties": { - "attributes": { - "$ref": "#/definitions/pandamart.ProductAttributes" - }, - "category_id": { - "type": "string" - }, - "code": { - "type": "string" - }, - "description": { + "category": { "type": "string" }, - "discount_badge": { + "summary": { "type": "string" }, - "id": { + "title": { "type": "string" }, - "image_url": { + "url": { "type": "string" + } + }, + "type": "object" + }, + "nationalpost.AuthorResponse": { + "properties": { + "article_count": { + "type": "integer" }, - "is_available": { - "type": "boolean" + "articles": { + "items": { + "$ref": "#/definitions/nationalpost.AuthorArticle" + }, + "type": "array" }, - "market": { + "bio": { "type": "string" }, "name": { "type": "string" }, - "original_price": { - "type": "number" - }, - "price": { - "type": "number" - }, - "sku": { + "slug": { "type": "string" }, - "stock_amount": { - "type": "integer" + "url": { + "type": "string" } }, "type": "object" }, - "pandamart.ProductShelf": { + "nbc.ArticleResponse": { "properties": { - "items": { + "authors": { "items": { - "$ref": "#/definitions/pandamart.Product" + "type": "string" }, "type": "array" }, - "title": { - "type": "string" - } - }, - "type": "object" - }, - "pandamart.ProductsResponse": { - "properties": { - "code": { + "description": { "type": "string" }, - "item_count": { - "type": "integer" - }, - "market": { + "image_url": { "type": "string" }, - "shelves": { + "paragraphs": { "items": { - "$ref": "#/definitions/pandamart.ProductShelf" + "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "pandamart.SearchResponse": { - "properties": { - "available_count": { - "type": "integer" }, - "market": { + "published_at": { "type": "string" }, - "offset": { - "type": "integer" + "section": { + "type": "string" }, - "returned_count": { - "type": "integer" + "title": { + "type": "string" }, - "stores": { - "items": { - "$ref": "#/definitions/pandamart.Store" - }, - "type": "array" + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "pandamart.Store": { + "nbc.AuthorArticle": { "properties": { - "address": { + "image_url": { "type": "string" }, - "budget": { - "type": "integer" - }, - "chain": { - "$ref": "#/definitions/pandamart.Chain" - }, - "city": { + "published_at": { + "description": "PublishedAt is NBC News' own relative time string for this feed (e.g.\n\"4h ago\", \"2d ago\") -- the author feed's markup carries no\nmachine-readable timestamp to convert to an absolute date.", "type": "string" }, - "code": { + "section": { + "description": "Section is the article's topic label as NBC News' own byline shows it\n(e.g. \"Immigration\"), distinct from the \"news\"/\"world\"/etc. site\nbrand label shown alongside it.", "type": "string" }, - "distance_km": { - "type": "number" - }, - "has_discount": { - "type": "boolean" - }, - "hero_image_url": { + "title": { "type": "string" }, - "is_delivery_available": { - "type": "boolean" - }, - "is_pickup_available": { - "type": "boolean" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" + "url": { + "type": "string" + } + }, + "type": "object" + }, + "nbc.AuthorResponse": { + "properties": { + "articles": { + "items": { + "$ref": "#/definitions/nbc.AuthorArticle" + }, + "type": "array" }, - "minimum_delivery_fee": { - "type": "number" + "bio": { + "type": "string" }, - "minimum_delivery_time_minutes": { - "type": "number" + "image_url": { + "type": "string" }, - "minimum_order_amount": { - "type": "number" + "job_title": { + "type": "string" }, "name": { "type": "string" }, - "tags": { + "social_links": { "items": { - "$ref": "#/definitions/pandamart.Tag" + "$ref": "#/definitions/nbc.AuthorSocialLink" }, "type": "array" }, - "timezone": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "nbc.AuthorSocialLink": { + "properties": { + "platform": { "type": "string" }, - "web_path": { + "url": { "type": "string" } }, "type": "object" }, - "pandamart.StoreResponse": { + "nbc.HeadlineItem": { "properties": { - "address": { + "author": { "type": "string" }, - "budget": { - "type": "integer" - }, - "chain": { - "$ref": "#/definitions/pandamart.Chain" - }, - "city": { + "image_url": { "type": "string" }, - "code": { + "published_at": { "type": "string" }, - "distance_km": { - "type": "number" - }, - "has_discount": { - "type": "boolean" - }, - "hero_image_url": { + "summary": { "type": "string" }, - "is_delivery_available": { - "type": "boolean" - }, - "is_pickup_available": { - "type": "boolean" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "market": { + "title": { "type": "string" }, - "minimum_delivery_fee": { - "type": "number" - }, - "minimum_delivery_time_minutes": { - "type": "number" - }, - "minimum_order_amount": { - "type": "number" - }, - "name": { + "url": { "type": "string" - }, - "tags": { + } + }, + "type": "object" + }, + "nbc.HeadlinesResponse": { + "properties": { + "items": { "items": { - "$ref": "#/definitions/pandamart.Tag" + "$ref": "#/definitions/nbc.HeadlineItem" }, "type": "array" }, - "timezone": { - "type": "string" - }, - "web_path": { + "section": { "type": "string" } }, "type": "object" }, - "pandamart.StoreSearchResponse": { + "nbc.NewsResponse": { "properties": { - "code": { - "type": "string" - }, - "has_more": { - "type": "boolean" - }, - "limit": { - "type": "integer" - }, - "market": { - "type": "string" - }, - "page": { - "type": "integer" - }, - "products": { + "items": { "items": { - "$ref": "#/definitions/pandamart.Product" + "$ref": "#/definitions/nbc.HeadlineItem" }, "type": "array" - }, - "query": { - "type": "string" - }, - "sort": { - "type": "string" - }, - "total_products": { - "type": "integer" } }, "type": "object" }, - "pandamart.Tag": { + "nbc.Section": { "properties": { - "code": { + "name": { "type": "string" }, - "text": { + "slug": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "pandamart.categoriesResponseDoc": { + "nbc.SectionsResponse": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" - }, - "data": { - "$ref": "#/definitions/pandamart.CategoriesResponse" - }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "sections": { + "items": { + "$ref": "#/definitions/nbc.Section" + }, + "type": "array" } }, "type": "object" }, - "pandamart.productDetailResponseDoc": { + "nbc.articleResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pandamart.ProductDetailResponse" + "$ref": "#/definitions/nbc.ArticleResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "pandamart.productsResponseDoc": { + "nbc.authorResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pandamart.ProductsResponse" + "$ref": "#/definitions/nbc.AuthorResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "pandamart.searchResponseDoc": { + "nbc.headlinesResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pandamart.SearchResponse" + "$ref": "#/definitions/nbc.HeadlinesResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "pandamart.storeResponseDoc": { + "nbc.newsResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pandamart.StoreResponse" + "$ref": "#/definitions/nbc.NewsResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "pandamart.storeSearchResponseDoc": { + "nbc.sectionsResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pandamart.StoreSearchResponse" + "$ref": "#/definitions/nbc.SectionsResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "panera.AtWorkDropOff": { + "ndtv.ArticleResponse": { "properties": { - "cutoff_time": { - "example": "09:00", + "authors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { "type": "string" }, - "day_of_week": { - "example": "Monday", + "image_url": { "type": "string" }, - "drop_off_time": { - "example": "10:45", + "paragraphs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "paywalled": { + "description": "Paywalled is true when the publisher serves only a teaser of this\narticle to anonymous readers, so Paragraphs is a partial body rather than\nthe full text. It is omitted when the full public body was returned.", + "type": "boolean" + }, + "premium": { + "type": "boolean" + }, + "published_at": { + "type": "string" + }, + "section": { + "type": "string" + }, + "title": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "panera.AtWorkLocation": { + "ndtv.AuthorArticle": { "properties": { - "active": { - "example": true, - "type": "boolean" + "image_url": { + "type": "string" }, - "city": { - "example": "Fenton", + "published_on": { "type": "string" }, - "contact_name": { + "section": { "type": "string" }, - "contact_phone": { + "summary": { "type": "string" }, - "country": { - "example": "US", + "title": { "type": "string" }, - "drop_off_schedule": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ndtv.AuthorResponse": { + "properties": { + "articles": { "items": { - "$ref": "#/definitions/panera.AtWorkDropOff" + "$ref": "#/definitions/ndtv.AuthorArticle" }, "type": "array" }, - "id": { - "example": "P2U-000320", + "bio": { "type": "string" }, - "latitude": { - "example": 38.5401336, - "type": "number" + "image_url": { + "type": "string" }, - "lead_time_minutes": { - "example": 90, + "job_title": { + "type": "string" + }, + "name": { + "type": "string" + }, + "page": { "type": "integer" }, - "location_type": { - "example": "Office/Production Facility/Other", + "same_as": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ndtv.HeadlineItem": { + "properties": { + "author": { "type": "string" }, - "longitude": { - "example": -90.4772361, - "type": "number" + "image_url": { + "type": "string" }, - "name": { - "example": "Panera Bread Support Center", + "published_at": { "type": "string" }, - "postal_code": { - "example": "63026", + "summary": { "type": "string" }, - "service_cafe_id": { - "example": "600668", + "title": { "type": "string" }, - "state": { - "example": "MO", + "type": { "type": "string" }, - "street": { - "example": "1400 S Hwy Dr", + "url": { "type": "string" } }, "type": "object" }, - "panera.AtWorkLocationsResponse": { + "ndtv.LatestVideosResponse": { "properties": { - "count": { - "example": 2, - "type": "integer" - }, - "fetched_at": { - "type": "string" - }, - "locations": { + "items": { "items": { - "$ref": "#/definitions/panera.AtWorkLocation" + "$ref": "#/definitions/ndtv.VideoCard" }, "type": "array" }, - "source_url": { - "type": "string" + "page": { + "type": "integer" } }, "type": "object" }, - "panera.CafeResponse": { + "ndtv.LiveBlogCard": { "properties": { - "available": { - "example": true, - "type": "boolean" - }, - "cafe_id": { - "example": 601447, - "type": "integer" + "image_url": { + "type": "string" }, - "city": { - "example": "Addison", + "published_at": { "type": "string" }, - "features": { - "description": "Features are Panera's own per-cafe amenity flags that are true for\nthis cafe (e.g. hasDriveThru, hasDelivery, hasCurbside, hasKiosk).", - "items": { - "type": "string" - }, - "type": "array" + "summary": { + "type": "string" }, - "fetched_at": { + "title": { "type": "string" }, - "fulfillment": { - "description": "Fulfillment is one entry per channel Panera publishes availability\nfor at this cafe.", + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ndtv.LiveBlogResponse": { + "properties": { + "authors": { "items": { - "$ref": "#/definitions/panera.Fulfillment" + "type": "string" }, "type": "array" }, - "latitude": { - "example": 41.948594, - "type": "number" - }, - "longitude": { - "example": -88.026398, - "type": "number" - }, - "name": { - "example": "Addison - W Lake St east of Rohlwing Rd", - "type": "string" - }, - "open_now": { - "example": true, - "type": "boolean" - }, - "phone": { - "example": "630-250-4952", + "description": { "type": "string" }, - "postal_code": { - "example": "60101", + "image_url": { "type": "string" }, - "source_url": { + "published_at": { "type": "string" }, - "state": { - "example": "IL", + "section": { "type": "string" }, - "street": { - "example": "1600 West Lake Street", + "title": { "type": "string" }, - "timezone": { - "example": "America/Chicago", + "updated_at": { "type": "string" }, - "upcoming_hours": { - "description": "UpcomingHours is the published storefront schedule for the next\ncalendar week, with concrete dates rather than abstract weekdays.", + "updates": { "items": { - "$ref": "#/definitions/panera.UpcomingDay" + "$ref": "#/definitions/ndtv.LiveBlogUpdate" }, "type": "array" + }, + "url": { + "type": "string" } }, "type": "object" }, - "panera.CateringCategory": { + "ndtv.LiveBlogUpdate": { "properties": { - "cat_id": { - "example": 181, - "type": "integer" - }, - "image_key": { - "type": "string" - }, - "item_ids": { - "description": "ItemIDs are the items under this category. Look them up in the\nresponse's top-level Items list.", + "authors": { "items": { - "type": "integer" + "type": "string" }, "type": "array" }, - "name": { - "example": "Sandwiches", + "body": { "type": "string" }, - "sort_weight": { - "type": "integer" + "image_url": { + "type": "string" + }, + "published_at": { + "type": "string" + }, + "title": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "panera.CateringDeliveryInfoResponse": { + "ndtv.LiveBlogsResponse": { "properties": { - "available_dates": { + "items": { "items": { - "$ref": "#/definitions/panera.CateringDeliverySlotDay" + "$ref": "#/definitions/ndtv.LiveBlogCard" }, "type": "array" }, - "cafe_id": { - "example": 606477, + "page": { "type": "integer" + } + }, + "type": "object" + }, + "ndtv.SearchResponse": { + "properties": { + "has_more": { + "type": "boolean" }, - "delivery_fee": { - "example": 15, - "type": "number" - }, - "fetched_at": { - "type": "string" - }, - "hours": { - "items": { - "$ref": "#/definitions/panera.DayHours" - }, - "type": "array" - }, - "lead_times": { + "items": { "items": { - "$ref": "#/definitions/panera.CateringDeliveryLeadTime" + "$ref": "#/definitions/ndtv.HeadlineItem" }, "type": "array" }, - "min_order_amount": { - "example": 50, - "type": "number" + "page": { + "type": "integer" }, - "source_url": { + "query": { "type": "string" + }, + "total_results": { + "type": "integer" } }, "type": "object" }, - "panera.CateringDeliveryLeadTime": { + "ndtv.VideoCard": { "properties": { - "is_large_order_tier": { - "example": true, - "type": "boolean" + "duration": { + "type": "string" }, - "lead_time_minutes": { - "example": 240, - "type": "integer" + "image_url": { + "type": "string" }, - "min_order_amount": { - "example": 750, - "type": "number" + "published_at": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "panera.CateringDeliverySlotDay": { + "ndtv.VideoCategoriesResponse": { "properties": { - "date": { - "example": "2026-09-10", - "type": "string" - }, - "ranges": { + "categories": { "items": { - "$ref": "#/definitions/panera.HourRange" + "$ref": "#/definitions/ndtv.VideoCategory" }, "type": "array" } }, "type": "object" }, - "panera.CateringMenuItem": { + "ndtv.VideoCategory": { "properties": { - "allergens": { - "$ref": "#/definitions/panera.MenuAllergens" + "name": { + "type": "string" }, - "customizable": { - "example": true, - "type": "boolean" + "slug": { + "type": "string" }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ndtv.VideoResponse": { + "properties": { "description": { "type": "string" }, - "image_key": { + "duration": { "type": "string" }, - "in_stock": { - "description": "InStock reflects this cafe's live catering stockout feed for today's\nfulfillment date. false means Panera currently has this item\nunavailable to order for catering at this specific cafe.", - "example": true, - "type": "boolean" + "image_url": { + "type": "string" }, - "item_id": { - "example": 647093, - "type": "integer" + "published_at": { + "type": "string" }, - "name": { - "example": "Ciabatta Sausage, Egg & Cheese Sandwich", + "title": { "type": "string" }, - "nutrients": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ndtv.VideosResponse": { + "properties": { + "category": { + "type": "string" + }, + "items": { "items": { - "$ref": "#/definitions/panera.MenuNutrient" + "$ref": "#/definitions/ndtv.VideoCard" }, "type": "array" }, - "portion": { - "example": "Individual", - "type": "string" - }, - "price": { - "example": 10.99, - "type": "number" - }, - "product_type": { - "example": "SANDWICH", - "type": "string" + "page": { + "type": "integer" } }, "type": "object" }, - "panera.CateringMenuResponse": { + "news18.AuthorResponse": { "properties": { - "cafe_id": { - "example": 601447, - "type": "integer" + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" }, - "categories": { + "biography": { "items": { - "$ref": "#/definitions/panera.CateringCategory" + "type": "string" }, "type": "array" }, - "count": { - "example": 257, - "type": "integer" + "image_url": { + "type": "string" }, - "fetched_at": { + "name": { "type": "string" }, - "items": { + "social_links": { "items": { - "$ref": "#/definitions/panera.CateringMenuItem" + "$ref": "#/definitions/news18.AuthorSocialLink" }, "type": "array" }, - "source_url": { + "url": { "type": "string" } }, "type": "object" }, - "panera.DayHours": { + "news18.AuthorSocialLink": { "properties": { - "day_of_week": { - "example": "Monday", + "type": { "type": "string" }, - "ranges": { - "items": { - "$ref": "#/definitions/panera.HourRange" - }, - "type": "array" + "url": { + "type": "string" } }, "type": "object" }, - "panera.Fulfillment": { + "newscomau.AuthorResponse": { "properties": { - "available": { - "example": true, - "type": "boolean" - }, - "hours": { + "articles": { "items": { - "$ref": "#/definitions/panera.DayHours" + "$ref": "#/definitions/newscomau.HeadlineItem" }, "type": "array" }, - "lead_time_minutes": { - "example": 20, - "type": "integer" - }, - "open_now": { - "example": true, - "type": "boolean" + "biography": { + "items": { + "type": "string" + }, + "type": "array" }, - "type": { - "example": "delivery", - "type": "string" - } - }, - "type": "object" - }, - "panera.GeocodeResponse": { - "properties": { - "address": { - "example": "Chicago, IL", + "image_url": { "type": "string" }, - "count": { - "example": 1, - "type": "integer" + "job_title": { + "type": "string" }, - "fetched_at": { + "name": { "type": "string" }, - "results": { + "social_urls": { "items": { - "$ref": "#/definitions/panera.GeocodeResult" + "type": "string" }, "type": "array" }, - "source_url": { + "url": { "type": "string" } }, "type": "object" }, - "panera.GeocodeResult": { + "newscomau.HeadlineItem": { "properties": { - "city": { - "example": "Chicago", + "author": { "type": "string" }, - "country": { - "example": "US", + "image_url": { "type": "string" }, - "formatted_address": { - "example": "Chicago, IL US", + "published_at": { "type": "string" }, - "latitude": { - "example": 41.85003, - "type": "number" + "summary": { + "type": "string" }, - "longitude": { - "example": -87.65005, - "type": "number" + "title": { + "type": "string" }, - "resolved": { - "description": "Resolved is false when Panera could not geocode the address at all\n(an empty, malformed, or nonsense query).", - "example": true, - "type": "boolean" + "type": { + "type": "string" }, - "state": { - "example": "IL", + "url": { "type": "string" } }, "type": "object" }, - "panera.HourRange": { + "newsmax.AuthorResponse": { "properties": { - "close": { - "example": "21:00", + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" + }, + "biography": { + "items": { + "type": "string" + }, + "type": "array" + }, + "image_url": { "type": "string" }, - "open": { - "example": "06:00", + "name": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "panera.ItemDetailResponse": { + "newsplatform.ArticleResponse": { "properties": { - "allergens": { - "$ref": "#/definitions/panera.MenuAllergens" - }, - "cafe_id": { - "example": 601447, - "type": "integer" + "authors": { + "items": { + "type": "string" + }, + "type": "array" }, "description": { "type": "string" }, - "fetched_at": { - "type": "string" - }, - "ingredient_statement": { - "type": "string" - }, - "item_id": { - "example": 650115, - "type": "integer" - }, - "name": { - "example": "Almond Pastry", + "image_url": { "type": "string" }, - "nutrients": { + "paragraphs": { "items": { - "$ref": "#/definitions/panera.MenuNutrient" + "type": "string" }, "type": "array" }, - "sizes": { - "items": { - "$ref": "#/definitions/panera.ItemDetailSize" - }, - "type": "array" + "paywalled": { + "description": "Paywalled is true when the publisher serves only a teaser of this\narticle to anonymous readers, so Paragraphs is a partial body rather than\nthe full text. It is omitted when the full public body was returned.", + "type": "boolean" }, - "source_url": { + "published_at": { "type": "string" - } - }, - "type": "object" - }, - "panera.ItemDetailSize": { - "properties": { - "calories": { - "example": 120, - "type": "number" }, - "is_default": { - "example": true, - "type": "boolean" + "section": { + "type": "string" }, - "item_id": { - "example": 646541, - "type": "integer" + "title": { + "type": "string" }, - "name": { - "example": "Regular", + "updated_at": { "type": "string" }, - "price": { - "example": 3.49, - "type": "number" + "url": { + "type": "string" } }, "type": "object" }, - "panera.ItemOption": { + "newsplatform.HeadlineItem": { "properties": { - "allergens": { - "$ref": "#/definitions/panera.MenuAllergens" + "author": { + "type": "string" }, - "default_qty": { - "example": 1, - "type": "integer" + "image_url": { + "type": "string" }, - "image_key": { - "example": "pecans-whole-r", + "published_at": { "type": "string" }, - "is_default": { - "example": true, - "type": "boolean" + "summary": { + "type": "string" }, - "item_id": { - "example": 4266, - "type": "integer" + "title": { + "type": "string" }, - "variants": { + "type": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "newsplatform.HeadlinesResponse": { + "properties": { + "items": { "items": { - "$ref": "#/definitions/panera.ItemOptionVariant" + "$ref": "#/definitions/newsplatform.HeadlineItem" }, "type": "array" + }, + "section": { + "type": "string" } }, "type": "object" }, - "panera.ItemOptionGroup": { + "newsplatform.NewsResponse": { "properties": { - "group_id": { - "example": 1080, - "type": "integer" - }, - "max_allowed": { - "example": 5, - "type": "integer" + "items": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "newsplatform.Section": { + "properties": { + "name": { + "type": "string" }, - "min_allowed": { - "example": 0, - "type": "integer" + "slug": { + "type": "string" }, - "options": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "newsplatform.SectionsResponse": { + "properties": { + "sections": { "items": { - "$ref": "#/definitions/panera.ItemOption" + "$ref": "#/definitions/newsplatform.Section" }, "type": "array" } }, "type": "object" }, - "panera.ItemOptionVariant": { + "newsweek.AuthorArticle": { "properties": { - "item_id": { - "example": 5741, - "type": "integer" + "section": { + "type": "string" }, - "price": { - "example": 0.69, - "type": "number" + "section_url": { + "type": "string" }, - "variant_type": { - "example": "Light", + "summary": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "panera.ItemOptionsResponse": { + "newsweek.AuthorResponse": { "properties": { - "cafe_id": { - "example": 601447, + "articles": { + "items": { + "$ref": "#/definitions/newsweek.AuthorArticle" + }, + "type": "array" + }, + "bio": { + "type": "string" + }, + "email": { + "type": "string" + }, + "has_next_page": { + "type": "boolean" + }, + "image_url": { + "type": "string" + }, + "job_title": { + "type": "string" + }, + "name": { + "type": "string" + }, + "page": { "type": "integer" }, - "fetched_at": { + "slug": { "type": "string" }, - "groups": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "newyorker.ArticleResponse": { + "properties": { + "authors": { "items": { - "$ref": "#/definitions/panera.ItemOptionGroup" + "type": "string" }, "type": "array" }, - "item_id": { - "example": 643423, - "type": "integer" + "description": { + "type": "string" }, - "source_url": { + "image_url": { + "type": "string" + }, + "is_accessible_for_free": { + "type": "boolean" + }, + "is_truncated": { + "type": "boolean" + }, + "paragraphs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "published_at": { + "type": "string" + }, + "section": { + "type": "string" + }, + "title": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "panera.LocationCafe": { + "newyorker.AuthorLink": { "properties": { - "cafe_id": { - "example": 601447, - "type": "integer" - }, - "city": { - "example": "Addison", + "type": { "type": "string" }, - "country_code": { - "example": "US", + "url": { "type": "string" + } + }, + "type": "object" + }, + "newyorker.AuthorResponse": { + "properties": { + "articles": { + "items": { + "$ref": "#/definitions/newyorker.HeadlineItem" + }, + "type": "array" }, - "features": { - "description": "Features are Panera's own per-cafe capability flags that are true for\nthis cafe (e.g. hasDriveThru, hasDelivery, hasCurbside, hasKiosk).", + "biography": { "items": { "type": "string" }, "type": "array" }, - "latitude": { - "example": 41.948594, - "type": "number" + "image_url": { + "type": "string" }, - "longitude": { - "example": -88.026398, - "type": "number" + "links": { + "items": { + "$ref": "#/definitions/newyorker.AuthorLink" + }, + "type": "array" }, "name": { - "example": "Addison - W Lake St east of Rohlwing Rd", "type": "string" }, - "phone": { - "example": "630-250-4952", + "url": { + "type": "string" + } + }, + "type": "object" + }, + "newyorker.HeadlineItem": { + "properties": { + "author": { "type": "string" }, - "postal_code": { - "example": "60101", + "image_url": { "type": "string" }, - "state": { - "example": "IL", + "published_at": { "type": "string" }, - "street": { - "example": "1600 West Lake Street", + "summary": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "panera.LocationCity": { + "nike.AvailabilityResponse": { "properties": { - "cafe_count": { - "example": 1, + "count": { "type": "integer" }, - "cafes": { + "fetched_at": { + "type": "string" + }, + "group_key": { + "type": "string" + }, + "sizes": { "items": { - "$ref": "#/definitions/panera.LocationCafe" + "$ref": "#/definitions/nike.SizeAvailability" }, "type": "array" }, - "city": { - "example": "Addison", + "source_url": { "type": "string" } }, "type": "object" }, - "panera.LocationsResponse": { + "nike.Breadcrumb": { "properties": { - "cities": { - "description": "Cities lists every city in the requested state (or just the one\nmatching city, when both are given), each with its cafes. Populated\nonly when state is given.", + "name": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "type": "object" + }, + "nike.CategoriesResponse": { + "properties": { + "categories": { "items": { - "$ref": "#/definitions/panera.LocationCity" + "$ref": "#/definitions/nike.TopLevelCategory" }, "type": "array" }, - "city": { - "example": "Addison", - "type": "string" - }, - "count": { - "example": 50, - "type": "integer" - }, "fetched_at": { "type": "string" }, "source_url": { "type": "string" + } + }, + "type": "object" + }, + "nike.CategoryGroup": { + "properties": { + "name": { + "type": "string" }, - "state": { - "example": "IL", + "path": { "type": "string" }, - "states": { - "description": "States lists every state Panera serves, with its cafe count. Populated\nonly when neither state nor city is given.", + "slug": { + "type": "string" + }, + "subcategories": { "items": { - "$ref": "#/definitions/panera.StateSummary" + "$ref": "#/definitions/nike.CategorySubcategory" }, "type": "array" } }, "type": "object" }, - "panera.MenuAllergenEntry": { + "nike.CategorySubcategory": { "properties": { - "id": { - "example": "TREENUTS", + "name": { "type": "string" }, - "name": { - "example": "Tree Nuts", + "path": { + "type": "string" + }, + "slug": { "type": "string" } }, "type": "object" }, - "panera.MenuAllergens": { + "nike.ColorDetail": { "properties": { - "contains": { + "color_code": { + "type": "string" + }, + "color_description": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "discount_percentage": { + "type": "integer" + }, + "grouping_label": { + "type": "string" + }, + "images": { "items": { - "$ref": "#/definitions/panera.MenuAllergenEntry" + "type": "string" }, "type": "array" }, - "may_contain": { + "initial_price": { + "type": "number" + }, + "is_buyable": { + "type": "boolean" + }, + "price": { + "type": "number" + }, + "size_chart_url": { + "type": "string" + }, + "sizes": { "items": { - "$ref": "#/definitions/panera.MenuAllergenEntry" + "$ref": "#/definitions/nike.ProductSize" }, "type": "array" + }, + "style_code": { + "type": "string" + }, + "style_color": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "panera.MenuCategory": { + "nike.ColorVariant": { "properties": { - "cat_id": { - "example": 20, + "color_description": { + "type": "string" + }, + "color_label": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "discount_percentage": { "type": "integer" }, - "image_key": { - "example": "panini-and-sandwiches", + "image_url": { "type": "string" }, - "item_ids": { - "description": "ItemIDs are the items directly under this category. Look them up in\nthe response's top-level Items list.", + "initial_price": { + "type": "number" + }, + "price": { + "type": "number" + }, + "slug": { + "type": "string" + }, + "style_color": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "nike.FacetNav": { + "properties": { + "breadcrumbs": { "items": { - "type": "integer" + "$ref": "#/definitions/nike.Breadcrumb" }, "type": "array" }, - "name": { - "example": "Sandwiches", + "categories": { + "items": { + "$ref": "#/definitions/nike.FacetOption" + }, + "type": "array" + }, + "filters": { + "items": { + "$ref": "#/definitions/nike.Filter" + }, + "type": "array" + } + }, + "type": "object" + }, + "nike.FacetOption": { + "properties": { + "label": { "type": "string" }, - "sort_weight": { - "example": 6, + "path": { + "type": "string" + }, + "result_count": { "type": "integer" }, - "subcategories": { + "selected": { + "type": "boolean" + } + }, + "type": "object" + }, + "nike.Filter": { + "properties": { + "name": { + "type": "string" + }, + "options": { "items": { - "$ref": "#/definitions/panera.MenuCategory" + "$ref": "#/definitions/nike.FacetOption" }, "type": "array" } }, "type": "object" }, - "panera.MenuItem": { + "nike.ProductDetailResponse": { "properties": { - "allergens": { - "$ref": "#/definitions/panera.MenuAllergens" - }, - "customizable": { - "example": true, - "type": "boolean" + "color_code": { + "type": "string" }, - "description": { + "color_description": { "type": "string" }, - "image_key": { - "example": "strawberry-poppyseed-salad-pantry-reno-half", + "colors": { + "items": { + "$ref": "#/definitions/nike.ColorVariant" + }, + "type": "array" + }, + "currency": { "type": "string" }, - "in_stock": { - "description": "InStock reflects this cafe's live stockout feed. false means Panera\ncurrently has this item unavailable to order at this specific cafe.", - "example": true, - "type": "boolean" + "description": { + "type": "string" }, - "item_id": { - "example": 1805, + "discount_percentage": { "type": "integer" }, - "name": { - "example": "Half Strawberry Poppyseed Salad", + "fetched_at": { "type": "string" }, - "nutrients": { + "genders": { "items": { - "$ref": "#/definitions/panera.MenuNutrient" + "type": "string" + }, + "type": "array" + }, + "images": { + "items": { + "type": "string" }, "type": "array" }, + "initial_price": { + "type": "number" + }, + "is_buyable": { + "type": "boolean" + }, "price": { - "example": 6.19, "type": "number" }, + "product_details": { + "items": { + "type": "string" + }, + "type": "array" + }, "product_type": { - "example": "SALAD", "type": "string" }, - "tags": { - "description": "Tags are Panera's own merchandising badges for this item (e.g.\nNEW_PRODUCT, LIMITED_TIME, IN_SEASON, ITS_BACK, MY_PANERA_EXCLUSIVE).\nBest-effort: badges are fetched from a separate feed keyed to a\ndifferent id space than the rest of this catalog, so not every item\nresolves one -- see common.go's package doc.", + "reason_to_buy": { + "type": "string" + }, + "sizes": { "items": { - "type": "string" + "$ref": "#/definitions/nike.ProductSize" }, "type": "array" }, - "wellness": { - "description": "Wellness are Panera's own dietary labels (e.g. Vegan, Vegetarian,\nGluten Conscious).", + "slug": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "sport_tags": { "items": { "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "panera.MenuNutrient": { - "properties": { - "name": { - "example": "Calories", + }, + "style_code": { "type": "string" }, - "unit": { - "example": "Cal", + "style_color": { "type": "string" }, - "value": { - "example": 580, - "type": "number" + "subtitle": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "panera.MenuResponse": { + "nike.ProductDetailsResponse": { "properties": { - "cafe_id": { - "example": 601447, - "type": "integer" - }, - "categories": { + "colors": { "items": { - "$ref": "#/definitions/panera.MenuCategory" + "$ref": "#/definitions/nike.ColorDetail" }, "type": "array" }, "count": { - "example": 343, "type": "integer" }, + "description": { + "type": "string" + }, "fetched_at": { "type": "string" }, - "items": { + "genders": { "items": { - "$ref": "#/definitions/panera.MenuItem" + "type": "string" }, "type": "array" }, + "group_key": { + "type": "string" + }, + "product_type": { + "type": "string" + }, + "reason_to_buy": { + "type": "string" + }, "source_url": { "type": "string" + }, + "subtitle": { + "type": "string" + }, + "title": { + "type": "string" } }, "type": "object" }, - "panera.QuantityRule": { + "nike.ProductGroup": { "properties": { - "item_ids": { + "badge_label": { + "type": "string" + }, + "colors": { "items": { - "type": "integer" + "$ref": "#/definitions/nike.ColorVariant" }, "type": "array" }, - "name": { - "example": "Souffle", + "group_key": { "type": "string" }, - "scope": { - "example": "group", + "product_type": { "type": "string" }, - "windows": { - "items": { - "$ref": "#/definitions/panera.QuantityRuleWindow" - }, - "type": "array" + "subtitle": { + "type": "string" + }, + "title": { + "type": "string" } }, "type": "object" }, - "panera.QuantityRuleWindow": { + "nike.ProductReview": { "properties": { - "from_offset_days": { - "example": 0, + "author": { + "type": "string" + }, + "body": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "headline": { + "type": "string" + }, + "helpful_votes": { "type": "integer" }, - "max_quantity": { - "example": 6, + "id": { + "type": "string" + }, + "location": { + "type": "string" + }, + "not_helpful_votes": { "type": "integer" }, - "to_offset_days": { - "example": 2, + "rating": { "type": "integer" + }, + "recommended": { + "type": "boolean" } }, "type": "object" }, - "panera.QuantityRulesResponse": { + "nike.ProductReviewsResponse": { "properties": { - "cafe_id": { - "example": 601447, - "type": "integer" + "average_rating": { + "type": "number" }, "count": { - "example": 3, "type": "integer" }, "fetched_at": { "type": "string" }, - "rules": { + "page": { + "type": "integer" + }, + "page_size": { + "type": "integer" + }, + "rating_histogram": { + "description": "RatingHistogram is the count of ratings per star, ascending: index 0\nis 1-star, index 4 is 5-star.", "items": { - "$ref": "#/definitions/panera.QuantityRule" + "type": "integer" }, "type": "array" }, + "reviews": { + "items": { + "$ref": "#/definitions/nike.ProductReview" + }, + "type": "array" + }, + "slug": { + "type": "string" + }, "source_url": { "type": "string" + }, + "style_color": { + "type": "string" + }, + "total_pages": { + "type": "integer" + }, + "total_reviews": { + "type": "integer" } }, "type": "object" }, - "panera.RetiredProduct": { + "nike.ProductSize": { "properties": { - "availability_stage": { - "description": "AvailabilityStage is Panera's own classification -- observed values\nare RETIRED (permanently discontinued) and SEASONAL (currently out of\nrotation, may return).", - "example": "SEASONAL", - "type": "string" - }, - "description": { + "label": { "type": "string" }, - "image_key": { + "localized_label": { "type": "string" }, - "item_id": { - "example": 650699, - "type": "integer" - }, - "name": { - "example": "Italian Steak & Mozz", + "sku_id": { "type": "string" }, - "portion": { - "example": "Whole", + "status": { "type": "string" } }, "type": "object" }, - "panera.RetiredProductsResponse": { + "nike.RecommendationsResponse": { "properties": { - "cafe_id": { - "example": 601447, - "type": "integer" - }, "count": { - "example": 332, "type": "integer" }, "fetched_at": { "type": "string" }, - "items": { + "recommendations": { "items": { - "$ref": "#/definitions/panera.RetiredProduct" + "$ref": "#/definitions/nike.RecommendedProduct" }, "type": "array" }, "source_url": { "type": "string" + }, + "style_color": { + "type": "string" } }, "type": "object" }, - "panera.StateSummary": { + "nike.RecommendedProduct": { "properties": { - "cafe_count": { - "example": 85, + "currency": { + "type": "string" + }, + "image_url": { + "type": "string" + }, + "initial_price": { + "type": "number" + }, + "price": { + "type": "number" + }, + "price_type": { + "type": "string" + }, + "rank": { "type": "integer" }, - "country_code": { - "example": "US", + "style_color": { "type": "string" }, - "state": { - "example": "IL", + "style_type": { "type": "string" - } - }, - "type": "object" - }, - "panera.TimeSlotWindow": { - "properties": { - "end_time": { - "example": "2026-09-10T11:15:00-05:00", + }, + "subtitle": { "type": "string" }, - "start_time": { - "example": "2026-09-10T11:10:00-05:00", + "title": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "panera.TimeSlotsResponse": { + "nike.SearchResponse": { "properties": { - "cafe_id": { - "example": 601447, - "type": "integer" - }, - "close": { - "example": "21:00", + "category": { "type": "string" }, "count": { - "example": 178, "type": "integer" }, - "date": { - "example": "2026-09-10", - "type": "string" + "facet_nav": { + "allOf": [ + { + "$ref": "#/definitions/nike.FacetNav" + } + ], + "description": "FacetNav is the navigation/filtering data Nike's own response\nalready carries alongside product results -- subcategory\nrefinement options, named filter groups (price/size/color/etc.),\nand (for category browsing) a breadcrumb trail. Nil when the\nupstream returned no navigation data. See FacetNav's doc comment." }, "fetched_at": { "type": "string" }, - "open": { - "example": "06:00", + "keyword": { "type": "string" }, - "source_url": { - "type": "string" + "page": { + "type": "integer" }, - "windows": { + "page_size": { + "type": "integer" + }, + "products": { "items": { - "$ref": "#/definitions/panera.TimeSlotWindow" + "$ref": "#/definitions/nike.ProductGroup" }, "type": "array" + }, + "source_url": { + "type": "string" + }, + "total_pages": { + "type": "integer" + }, + "total_products": { + "type": "integer" } }, "type": "object" }, - "panera.UpcomingDay": { + "nike.SizeAvailability": { "properties": { - "close": { - "example": "21:00", + "available": { + "type": "boolean" + }, + "grouping_label": { "type": "string" }, - "closed": { - "example": false, - "type": "boolean" + "gtin": { + "type": "string" }, - "date": { - "example": "2026-09-02", + "label": { "type": "string" }, - "day_of_week": { - "example": "Wednesday", + "localized_label": { "type": "string" }, - "open": { - "example": "06:00", + "ship": { + "type": "string" + }, + "style_color": { "type": "string" } }, "type": "object" }, - "panera.UpsellSuggestion": { + "nike.Store": { "properties": { - "item_id": { - "example": 7392, - "type": "integer" + "address": { + "type": "string" }, - "item_name": { - "example": "Bacon Turkey Bravo Sandwich on Thin Tom Basil - Retail - Half Portion", + "business_concept": { "type": "string" }, - "suggestions": { - "items": { - "$ref": "#/definitions/panera.UpsellSuggestionItem" - }, - "type": "array" - } - }, - "type": "object" - }, - "panera.UpsellSuggestionItem": { - "properties": { - "item_id": { - "example": 801215, - "type": "integer" + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "distance_miles": { + "type": "number" + }, + "facility_type": { + "type": "string" + }, + "image_url": { + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" }, "name": { - "example": "Extra Turkey", + "type": "string" + }, + "phone": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "region": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "store_concept": { + "type": "string" + }, + "store_number": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "panera.UpsellSuggestionsResponse": { + "nike.StoreResponse": { "properties": { - "cafe_id": { - "example": 601447, - "type": "integer" - }, "count": { - "example": 513, "type": "integer" }, "fetched_at": { "type": "string" }, - "items": { - "items": { - "$ref": "#/definitions/panera.UpsellSuggestion" - }, - "type": "array" + "lat": { + "type": "number" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "panera.atWorkLocationsResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "lng": { + "type": "number" + }, + "page": { "type": "integer" }, - "data": { - "$ref": "#/definitions/panera.AtWorkLocationsResponse" + "page_size": { + "type": "integer" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "panera.cafeResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "radius_miles": { "type": "integer" }, - "data": { - "$ref": "#/definitions/panera.CafeResponse" + "source_url": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "stores": { + "items": { + "$ref": "#/definitions/nike.Store" + }, + "type": "array" + }, + "total_stores": { + "type": "integer" } }, "type": "object" }, - "panera.cateringDeliveryInfoResponseDoc": { + "nike.SuggestResponse": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/panera.CateringDeliveryInfoResponse" + "fetched_at": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "query": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "suggestions": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "panera.cateringMenuResponseDoc": { + "nike.TopLevelCategory": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "groups": { + "items": { + "$ref": "#/definitions/nike.CategoryGroup" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/panera.CateringMenuResponse" + "name": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "path": { + "type": "string" } }, "type": "object" }, - "panera.geocodeResponseDoc": { + "nike.availabilityResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/panera.GeocodeResponse" + "$ref": "#/definitions/nike.AvailabilityResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "panera.itemDetailResponseDoc": { + "nike.categoriesResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/panera.ItemDetailResponse" + "$ref": "#/definitions/nike.CategoriesResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "panera.itemOptionsResponseDoc": { + "nike.productDetailsResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/panera.ItemOptionsResponse" + "$ref": "#/definitions/nike.ProductDetailsResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "panera.locationsResponseDoc": { + "nike.productResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/panera.LocationsResponse" + "$ref": "#/definitions/nike.ProductDetailResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "panera.menuResponseDoc": { + "nike.productReviewsResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/panera.MenuResponse" + "$ref": "#/definitions/nike.ProductReviewsResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "panera.quantityRulesResponseDoc": { + "nike.recommendationsResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/panera.QuantityRulesResponse" + "$ref": "#/definitions/nike.RecommendationsResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "panera.retiredProductsResponseDoc": { + "nike.searchResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/panera.RetiredProductsResponse" + "$ref": "#/definitions/nike.SearchResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "panera.timeSlotsResponseDoc": { + "nike.storesResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/panera.TimeSlotsResponse" + "$ref": "#/definitions/nike.StoreResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "panera.upsellSuggestionsResponseDoc": { + "nike.suggestResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/panera.UpsellSuggestionsResponse" + "$ref": "#/definitions/nike.SuggestResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.AllergenFlags": { + "ninetofivegoogle.AuthorResponse": { "properties": { - "egg": { - "type": "boolean" - }, - "fish": { - "type": "boolean" - }, - "milk": { - "type": "boolean" + "articles": { + "items": { + "$ref": "#/definitions/ninetofivegoogle.HeadlineItem" + }, + "type": "array" }, - "peanut": { - "type": "boolean" + "biography": { + "items": { + "type": "string" + }, + "type": "array" }, - "sesame": { - "type": "boolean" + "image_url": { + "type": "string" }, - "shellfish": { - "type": "boolean" + "name": { + "type": "string" }, - "soy": { - "type": "boolean" + "social_links": { + "items": { + "$ref": "#/definitions/ninetofivegoogle.AuthorSocialLink" + }, + "type": "array" }, - "tree_nut": { - "type": "boolean" + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ninetofivegoogle.AuthorSocialLink": { + "properties": { + "type": { + "type": "string" }, - "wheat": { - "type": "boolean" + "url": { + "type": "string" } }, "type": "object" }, - "papajohns.AllergenItem": { + "ninetofivegoogle.HeadlineItem": { "properties": { - "allergens": { - "$ref": "#/definitions/papajohns.AllergenFlags" + "author": { + "type": "string" }, - "name": { - "example": "Original Crust", + "image_url": { "type": "string" }, - "section": { - "example": "Crust Options", + "published_at": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "papajohns.AllergensResponse": { + "ninetofivemac.AuthorResponse": { "properties": { - "count": { - "example": 170, - "type": "integer" + "articles": { + "items": { + "$ref": "#/definitions/ninetofivemac.HeadlineItem" + }, + "type": "array" }, - "fetched_at": { + "biography": { + "items": { + "type": "string" + }, + "type": "array" + }, + "image_url": { "type": "string" }, - "items": { + "name": { + "type": "string" + }, + "social_links": { "items": { - "$ref": "#/definitions/papajohns.AllergenItem" + "$ref": "#/definitions/ninetofivemac.AuthorSocialLink" }, "type": "array" }, - "source_url": { + "url": { "type": "string" } }, "type": "object" }, - "papajohns.Deal": { + "ninetofivemac.AuthorSocialLink": { "properties": { - "description": { + "type": { "type": "string" }, - "id": { - "example": "66262", + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ninetofivemac.HeadlineItem": { + "properties": { + "author": { "type": "string" }, "image_url": { "type": "string" }, - "offer_code": { - "description": "OfferCode is the code the offer is redeemed with.", - "example": "EDNJX", + "published_at": { "type": "string" }, - "price": { - "description": "Price is the offer price where the deal advertises one. A deal whose\nprice depends on what the customer builds reports 0.", - "example": 12.99, - "type": "number" - }, - "regular_price": { - "description": "RegularPrice is the struck-through pre-offer price, present only when\nthe deal actually advertises a saving.", - "example": 23.49, - "type": "number" - }, - "tag": { - "description": "Tag is the merchandising label, e.g. \"Featured Deal\".", - "example": "Featured Deal", + "summary": { "type": "string" }, "title": { - "example": "Ultimate Pepperoni Pizza", + "type": "string" + }, + "type": { "type": "string" }, "url": { - "description": "URL is the deal-builder link for this offer.", "type": "string" } }, "type": "object" }, - "papajohns.DealsResponse": { + "npr.ArticleResponse": { "properties": { - "count": { - "example": 16, - "type": "integer" + "authors": { + "items": { + "type": "string" + }, + "type": "array" }, - "deals": { + "description": { + "type": "string" + }, + "image_url": { + "type": "string" + }, + "paragraphs": { "items": { - "$ref": "#/definitions/papajohns.Deal" + "type": "string" }, "type": "array" }, - "fetched_at": { + "published_at": { "type": "string" }, - "national_default": { - "description": "NationalDefault is true when no store was selected. National promotions\nare frequently placeholders prompting the customer to pick a store, so a\ncaller should prefer passing a store_id.", - "example": false, - "type": "boolean" + "section": { + "type": "string" }, - "source_url": { + "title": { "type": "string" }, - "store_id": { - "example": 5054, - "type": "integer" + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "papajohns.DirectoryChild": { + "npr.AuthorArticle": { "properties": { - "is_store": { - "description": "IsStore marks a child that is a store page rather than another\ndirectory level -- call /papajohns/store with its path.", - "example": false, - "type": "boolean" + "image_url": { + "type": "string" }, - "name": { - "example": "CA", + "published_at": { "type": "string" }, - "path": { - "example": "united-states/ca", + "summary": { "type": "string" }, - "store_count": { - "description": "StoreCount is how many stores sit under this branch, as Yext reports\nit. Absent once children are stores themselves.", - "example": 222, - "type": "integer" + "title": { + "type": "string" }, "url": { "type": "string" @@ -110632,778 +113579,565 @@ }, "type": "object" }, - "papajohns.DirectoryResponse": { + "npr.AuthorResponse": { "properties": { - "children": { + "articles": { "items": { - "$ref": "#/definitions/papajohns.DirectoryChild" + "$ref": "#/definitions/npr.AuthorArticle" }, "type": "array" }, - "count": { - "example": 120, - "type": "integer" - }, - "fetched_at": { + "bio": { "type": "string" }, - "name": { + "job_title": { "type": "string" }, - "path": { - "example": "united-states/ca", + "name": { "type": "string" }, - "source_url": { + "url": { "type": "string" } }, "type": "object" }, - "papajohns.IndiaAvailability": { + "npr.CategoriesResponse": { "properties": { - "blacked_out_channel_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "blacked_out_days": { - "items": { - "type": "string" - }, - "type": "array" - }, - "blacked_out_store_ids": { + "categories": { "items": { - "type": "string" + "$ref": "#/definitions/npr.Category" }, "type": "array" } }, "type": "object" }, - "papajohns.IndiaCurrency": { + "npr.Category": { "properties": { - "code": { - "example": "₹", - "type": "string" - }, - "country_code": { - "example": "91", + "name": { "type": "string" }, - "locale": { - "example": "en-IN", + "slug": { "type": "string" }, - "name": { - "example": "Indian Rupee", + "url": { "type": "string" } }, "type": "object" }, - "papajohns.IndiaDealChoice": { + "npr.HeadlineItem": { "properties": { - "category": { - "example": "Pizzas", + "author": { "type": "string" }, - "item_id": { - "example": "71", + "published_at": { "type": "string" }, - "name": { - "example": "MARGHERITA", + "summary": { "type": "string" }, - "price": { - "example": 399, - "type": "number" - }, - "size": { - "example": "Medium", + "title": { "type": "string" }, - "size_id": { - "example": "2", + "url": { "type": "string" } }, "type": "object" }, - "papajohns.IndiaDealResponse": { + "npr.HeadlinesResponse": { "properties": { - "buy_x": { - "type": "integer" - }, - "category_id": { - "example": "11", - "type": "string" - }, - "currency": { - "$ref": "#/definitions/papajohns.IndiaCurrency" - }, - "description": { - "example": "Sakkath Combo", - "type": "string" - }, - "end_time": { - "example": "23:59:59", - "type": "string" - }, - "fetched_at": { - "type": "string" - }, - "get_y": { - "type": "integer" - }, - "highest_of_two": { - "type": "boolean" - }, - "id": { - "example": "17", - "type": "string" - }, - "image_url": { + "items": { + "items": { + "$ref": "#/definitions/npr.HeadlineItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "npr.TopicItem": { + "properties": { + "published_at": { "type": "string" }, - "market": { - "example": "india", + "summary": { "type": "string" }, - "name": { - "example": "Sakkath Veg Combo - Dine In", + "title": { "type": "string" }, - "price": { - "description": "Price is the deal's fixed price when price_type is fixedPrice, and 0\nfor a computed deal (BuyXGetY, HalfAndHalf, variablePrice).", - "example": 699, - "type": "number" - }, - "price_type": { - "example": "fixedPrice", + "url": { "type": "string" - }, - "slots": { + } + }, + "type": "object" + }, + "npr.TopicResponse": { + "properties": { + "items": { "items": { - "$ref": "#/definitions/papajohns.IndiaDealSlot" + "$ref": "#/definitions/npr.TopicItem" }, "type": "array" }, - "source_url": { + "topic": { "type": "string" + } + }, + "type": "object" + }, + "npr.articleResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "start_time": { - "example": "00:00:00", - "type": "string" + "data": { + "$ref": "#/definitions/npr.ArticleResponse" }, - "sum_of_two": { - "description": "SumOfTwo and HighestOfTwo describe how a two-item deal is priced when\nprice_type is HalfAndHalf.", - "type": "boolean" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.IndiaDealSlot": { + "npr.authorResponseDoc": { "properties": { - "choice_count": { - "example": 5, + "code": { + "example": 200, "type": "integer" }, - "choices": { - "items": { - "$ref": "#/definitions/papajohns.IndiaDealChoice" - }, - "type": "array" + "data": { + "$ref": "#/definitions/npr.AuthorResponse" }, - "id": { - "example": "1376", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "npr.categoriesResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "name": { - "type": "string" + "data": { + "$ref": "#/definitions/npr.CategoriesResponse" }, - "optional": { - "example": false, - "type": "boolean" + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "npr.headlinesResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "percentage_off": { - "type": "number" + "data": { + "$ref": "#/definitions/npr.HeadlinesResponse" }, - "quantity": { - "example": 1, + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "npr.topicResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "size": { - "example": "Medium", + "data": { + "$ref": "#/definitions/npr.TopicResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "papajohns.IndiaMenuCategory": { + "numbeo.CityIndexEntry": { "properties": { - "description": { + "city": { "type": "string" }, - "id": { - "example": "6", + "city_slug": { "type": "string" }, - "image_url": { - "type": "string" + "cost_of_living_index": { + "type": "number" }, - "item_count": { - "example": 29, - "type": "integer" + "cost_of_living_plus_rent_index": { + "type": "number" }, - "items": { - "items": { - "$ref": "#/definitions/papajohns.IndiaMenuItem" - }, - "type": "array" + "groceries_index": { + "type": "number" }, - "name": { - "example": "Pizzas", - "type": "string" + "local_purchasing_power_index": { + "type": "number" }, "rank": { - "example": 7, "type": "integer" }, - "subcategories": { - "items": { - "$ref": "#/definitions/papajohns.IndiaMenuSubcategory" - }, - "type": "array" + "rent_index": { + "type": "number" + }, + "restaurant_price_index": { + "type": "number" } }, "type": "object" }, - "papajohns.IndiaMenuFilters": { + "numbeo.CostOfLivingCityResponse": { "properties": { - "availability_filter_applied": { - "description": "AvailabilityFilterApplied is false unless store_id, channel_id, and day\nwere all supplied -- the operator's blackout rules need all three.", - "example": false, - "type": "boolean" - }, - "category_id": { - "type": "string" + "categories": { + "items": { + "$ref": "#/definitions/numbeo.PriceCategory" + }, + "type": "array" }, - "channel": { - "example": "Delivery", + "city": { "type": "string" }, - "channel_id": { + "city_slug": { "type": "string" }, - "day": { - "type": "string" + "contributors_12mo": { + "type": "integer" }, - "day_name": { - "example": "Monday", + "country": { "type": "string" }, - "store_id": { + "last_update": { "type": "string" }, - "tag": { + "source_url": { "type": "string" } }, "type": "object" }, - "papajohns.IndiaMenuItem": { + "numbeo.CostOfLivingCountryResponse": { "properties": { - "availability": { - "allOf": [ - { - "$ref": "#/definitions/papajohns.IndiaAvailability" - } - ], - "description": "Availability lists the store/channel/day combinations where this item is\nblacked out. The item is unavailable only where all three match; empty\nlists mean it is available everywhere." - }, - "buy_x": { - "type": "integer" - }, - "category_id": { - "example": "6", - "type": "string" - }, - "customizable": { - "description": "Customizable reports whether the item exposes a size/crust/topping tree.", - "example": true, - "type": "boolean" - }, - "description": { - "type": "string" + "categories": { + "items": { + "$ref": "#/definitions/numbeo.PriceCategory" + }, + "type": "array" }, - "discounted": { - "example": false, - "type": "boolean" + "cities": { + "items": { + "$ref": "#/definitions/numbeo.CityIndexEntry" + }, + "type": "array" }, - "get_y": { + "contributors_12mo": { "type": "integer" }, - "id": { - "example": "71", + "country": { "type": "string" }, - "image_url": { + "last_update": { "type": "string" }, - "kind": { - "description": "Kind is \"item\" for an a la carte product or \"deal\" for a combo/offer.", - "example": "item", + "source_url": { "type": "string" + } + }, + "type": "object" + }, + "numbeo.CountryIndexEntry": { + "properties": { + "cost_of_living_index": { + "type": "number" }, - "name": { - "example": "MARGHERITA", + "cost_of_living_plus_rent_index": { + "type": "number" + }, + "country": { "type": "string" }, - "price": { - "description": "Price is the item's list price in the franchise currency. A deal with a\ncomputed price (BuyXGetY, HalfAndHalf, variablePrice) reports 0 here --\nread price_type instead.", - "example": 399, + "groceries_index": { "type": "number" }, - "price_type": { - "description": "PriceType is set on deals only: fixedPrice, BuyXGetY, HalfAndHalf, or\nvariablePrice.", - "example": "BuyXGetY", - "type": "string" + "local_purchasing_power_index": { + "type": "number" }, "rank": { - "example": 1, "type": "integer" }, - "sizes": { - "description": "Sizes is populated only when include_options=true.", - "items": { - "$ref": "#/definitions/papajohns.IndiaMenuSize" - }, - "type": "array" - }, - "strike_off_price": { - "example": 499, + "rent_index": { "type": "number" }, - "sub_category_id": { - "example": "4", - "type": "string" - }, - "tags": { - "description": "Tags are the item's dietary/attribute markers, e.g. Veg, Non Veg, Spicy.", - "items": { - "type": "string" - }, - "type": "array" - }, - "upsell": { - "example": false, - "type": "boolean" + "restaurant_price_index": { + "type": "number" } }, "type": "object" }, - "papajohns.IndiaMenuItemResponse": { + "numbeo.IndexRankingEntry": { "properties": { - "category": { - "description": "Category is the section this item was found under.", - "example": "Pizzas", - "type": "string" - }, - "currency": { - "$ref": "#/definitions/papajohns.IndiaCurrency" - }, - "fetched_at": { + "city": { "type": "string" }, - "item": { - "$ref": "#/definitions/papajohns.IndiaMenuItem" - }, - "market": { - "example": "india", + "city_slug": { "type": "string" }, - "source_url": { + "country": { "type": "string" }, - "taxes": { + "indices": { "items": { - "$ref": "#/definitions/papajohns.IndiaTax" + "$ref": "#/definitions/numbeo.NamedValue" }, "type": "array" + }, + "rank": { + "type": "integer" } }, "type": "object" }, - "papajohns.IndiaMenuOptionChoice": { + "numbeo.IndexRow": { "properties": { - "default": { - "example": true, - "type": "boolean" - }, - "extra": { - "example": false, - "type": "boolean" - }, - "half_price": { - "example": 399.5, - "type": "number" - }, - "id": { - "example": "1", - "type": "string" - }, - "image_url": { - "type": "string" - }, "name": { - "example": "Original Crust", "type": "string" }, - "price": { - "example": 799, - "type": "number" - }, - "removable": { - "example": false, - "type": "boolean" + "qualifier": { + "type": "string" }, - "strike_off_price": { + "value": { "type": "number" } }, "type": "object" }, - "papajohns.IndiaMenuOptionGroup": { + "numbeo.IndexSection": { "properties": { - "base_price": { - "example": true, - "type": "boolean" - }, - "choices": { + "rows": { "items": { - "$ref": "#/definitions/papajohns.IndiaMenuOptionChoice" + "$ref": "#/definitions/numbeo.IndexRow" }, "type": "array" }, - "halves_enabled": { - "example": true, - "type": "boolean" - }, - "id": { - "example": "1", - "type": "string" - }, - "name": { - "example": "Crust", - "type": "string" - }, - "selection_rule": { - "example": "Exactly", - "type": "string" - }, - "selection_spec": { - "example": "1", + "title": { "type": "string" } }, "type": "object" }, - "papajohns.IndiaMenuResponse": { + "numbeo.IndicesCityResponse": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/papajohns.IndiaMenuCategory" - }, - "type": "array" + "city": { + "type": "string" }, - "currency": { - "$ref": "#/definitions/papajohns.IndiaCurrency" + "city_slug": { + "type": "string" }, - "fetched_at": { + "contributors_note": { "type": "string" }, - "filters": { - "$ref": "#/definitions/papajohns.IndiaMenuFilters" + "country": { + "type": "string" }, - "item_count": { - "example": 114, - "type": "integer" + "headline_indices": { + "items": { + "$ref": "#/definitions/numbeo.NamedValue" + }, + "type": "array" }, - "market": { - "example": "india", + "index": { "type": "string" }, - "source_url": { + "last_update": { "type": "string" }, - "tags": { + "price_categories": { "items": { - "type": "string" + "$ref": "#/definitions/numbeo.PriceCategory" }, "type": "array" }, - "taxes": { + "sections": { "items": { - "$ref": "#/definitions/papajohns.IndiaTax" + "$ref": "#/definitions/numbeo.IndexSection" }, "type": "array" + }, + "source_url": { + "type": "string" } }, "type": "object" }, - "papajohns.IndiaMenuSize": { + "numbeo.IndicesCountryResponse": { "properties": { - "default": { - "example": true, - "type": "boolean" + "cities": { + "items": { + "$ref": "#/definitions/numbeo.IndexRankingEntry" + }, + "type": "array" }, - "id": { - "example": "3", + "contributors_note": { "type": "string" }, - "name": { - "example": "Large", + "country": { "type": "string" }, - "option_groups": { + "headline_indices": { "items": { - "$ref": "#/definitions/papajohns.IndiaMenuOptionGroup" + "$ref": "#/definitions/numbeo.NamedValue" }, "type": "array" }, - "rank": { - "example": 1, - "type": "integer" - } - }, - "type": "object" - }, - "papajohns.IndiaMenuSubcategory": { - "properties": { - "id": { - "example": "8", + "index": { "type": "string" }, - "items": { + "last_update": { + "type": "string" + }, + "price_categories": { "items": { - "$ref": "#/definitions/papajohns.IndiaMenuItem" + "$ref": "#/definitions/numbeo.PriceCategory" }, "type": "array" }, - "name": { - "example": "India Special", + "sections": { + "items": { + "$ref": "#/definitions/numbeo.IndexSection" + }, + "type": "array" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "papajohns.IndiaStore": { + "numbeo.IndicesRankingsByCountryResponse": { "properties": { - "address": { - "type": "string" - }, - "channels": { - "description": "Channels lists the order channels this store publishes hours for.", + "countries": { "items": { - "type": "string" + "$ref": "#/definitions/numbeo.IndexRankingEntry" }, "type": "array" }, - "email": { + "index": { "type": "string" }, - "hours": { + "source_url": { + "type": "string" + } + }, + "type": "object" + }, + "numbeo.IndicesRankingsResponse": { + "properties": { + "cities": { "items": { - "$ref": "#/definitions/papajohns.IndiaStoreHours" + "$ref": "#/definitions/numbeo.IndexRankingEntry" }, "type": "array" }, - "id": { - "example": "7", + "index": { "type": "string" }, - "latitude": { - "example": 12.840903161072498, - "type": "number" - }, - "longitude": { - "example": 77.65593675511532, - "type": "number" - }, - "name": { - "example": "PJPB - 360° Business Park, Electronics City BLR", + "period": { "type": "string" }, - "phone": { - "example": "9240244043", + "scope": { "type": "string" }, - "store_code": { - "example": "QRyCHD", + "source_url": { "type": "string" } }, "type": "object" }, - "papajohns.IndiaStoreHours": { + "numbeo.NamedValue": { "properties": { - "channel": { - "example": "Take Away", - "type": "string" - }, - "channel_id": { - "example": "2", - "type": "string" - }, - "closes": { - "example": "23:00:59", - "type": "string" - }, - "day": { - "example": "Monday", + "name": { "type": "string" }, - "opens": { - "example": "11:00:00", - "type": "string" + "value": { + "type": "number" } }, "type": "object" }, - "papajohns.IndiaStoresResponse": { + "numbeo.PriceCategory": { "properties": { - "channel": { - "example": "Delivery", - "type": "string" - }, - "channel_id": { - "type": "string" - }, - "count": { - "example": 9, - "type": "integer" - }, - "fetched_at": { - "type": "string" - }, - "market": { - "example": "india", - "type": "string" - }, - "source_url": { + "category": { "type": "string" }, - "stores": { + "items": { "items": { - "$ref": "#/definitions/papajohns.IndiaStore" + "$ref": "#/definitions/numbeo.PriceItem" }, "type": "array" } }, "type": "object" }, - "papajohns.IndiaTax": { + "numbeo.PriceItem": { "properties": { - "inclusive": { - "example": false, - "type": "boolean" + "currency_symbol": { + "type": "string" }, "name": { - "example": "GST", "type": "string" }, - "type": { - "example": "percentage", - "type": "string" + "price": { + "type": "number" }, - "value": { - "example": 5, + "range_high": { + "type": "number" + }, + "range_low": { "type": "number" } }, "type": "object" }, - "papajohns.IntlDeal": { + "numbeo.RankingsByCountryResponse": { "properties": { - "availability": { - "description": "Availability lists the weekdays the offer runs on.", + "countries": { "items": { - "type": "string" + "$ref": "#/definitions/numbeo.CountryIndexEntry" }, "type": "array" }, - "category": { - "example": "app", - "type": "string" - }, - "description": { - "type": "string" - }, - "dispatch_method": { - "description": "DispatchMethod is the fulfillment this offer applies to.", - "example": "pj_delivery", - "type": "string" - }, - "end_date": { - "example": "2026-09-30T23:45:00Z", - "type": "string" - }, - "id": { - "example": 955, - "type": "integer" - }, - "image_url": { - "type": "string" - }, - "name": { - "example": "Combo Veranito delivery", - "type": "string" - }, - "offer_id": { - "description": "OfferID is set when this promotion is backed by a structured offer, and\nis the id GET /papajohns/intl/offer takes to return its full\ncomposition. Absent when the banner points at something else.", - "example": 660, - "type": "integer" - }, - "product": { - "description": "Product is the offer's headline product name.", - "example": "Combo Veranito", - "type": "string" - }, - "start_date": { - "example": "2025-10-24T00:00:00Z", - "type": "string" - }, - "url": { + "source_url": { "type": "string" } }, "type": "object" }, - "papajohns.IntlDealsResponse": { + "numbeo.RankingsResponse": { "properties": { - "count": { - "example": 1, - "type": "integer" - }, - "deals": { + "cities": { "items": { - "$ref": "#/definitions/papajohns.IntlDeal" + "$ref": "#/definitions/numbeo.CityIndexEntry" }, "type": "array" }, - "dispatch_method": { - "example": "pj_delivery", - "type": "string" - }, - "fetched_at": { + "period": { "type": "string" }, - "market": { - "example": "spain", + "scope": { "type": "string" }, "source_url": { @@ -111412,2980 +114146,2554 @@ }, "type": "object" }, - "papajohns.IntlDeliveryZone": { + "numbeo.costOfLivingCityResponseDoc": { "properties": { - "delivery_price": { - "example": 0, - "type": "number" - }, - "minimum_order_for_delivery": { - "type": "number" + "code": { + "example": 200, + "type": "integer" }, - "minimum_order_for_free_delivery": { - "type": "number" + "data": { + "$ref": "#/definitions/numbeo.CostOfLivingCityResponse" }, - "name": { - "example": "Zona 1", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "papajohns.IntlIngredient": { + "numbeo.costOfLivingCountryResponseDoc": { "properties": { - "available_as_half": { - "description": "AvailableAsHalf reports whether it can be applied to just one half.", - "example": true, - "type": "boolean" - }, - "base": { - "description": "Base marks an ingredient included on the pizza by default.", - "example": false, - "type": "boolean" + "code": { + "example": 200, + "type": "integer" }, - "category": { - "description": "Category is the ingredient family, e.g. meat or vegetable.", - "example": "base_sauce", - "type": "string" + "data": { + "$ref": "#/definitions/numbeo.CostOfLivingCountryResponse" }, - "description": { + "msg": { + "example": "OK", "type": "string" - }, - "id": { - "example": 25, + } + }, + "type": "object" + }, + "numbeo.indicesCityResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "image_url": { - "type": "string" + "data": { + "$ref": "#/definitions/numbeo.IndicesCityResponse" }, - "name": { - "example": "Salsa de Tomate", + "msg": { + "example": "OK", "type": "string" - }, - "premium": { - "description": "Premium marks an ingredient charged at the premium rate rather than the\nnormal one.", - "example": false, - "type": "boolean" } }, "type": "object" }, - "papajohns.IntlIngredientPrices": { + "numbeo.indicesCountryResponseDoc": { "properties": { - "normal": { - "additionalProperties": { - "format": "float64", - "type": "number" - }, - "type": "object" + "code": { + "example": 200, + "type": "integer" }, - "premium": { - "additionalProperties": { - "format": "float64", - "type": "number" - }, - "type": "object" + "data": { + "$ref": "#/definitions/numbeo.IndicesCountryResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.IntlIngredientsResponse": { + "numbeo.indicesRankingsByCountryResponseDoc": { "properties": { - "category": { - "example": "meat", - "type": "string" - }, - "count": { - "example": 39, + "code": { + "example": 200, "type": "integer" }, - "fetched_at": { - "type": "string" - }, - "ingredients": { - "items": { - "$ref": "#/definitions/papajohns.IntlIngredient" - }, - "type": "array" + "data": { + "$ref": "#/definitions/numbeo.IndicesRankingsByCountryResponse" }, - "market": { - "example": "spain", + "msg": { + "example": "OK", "type": "string" - }, - "menu_id": { - "example": 8, + } + }, + "type": "object" + }, + "numbeo.indicesRankingsResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "prices": { - "allOf": [ - { - "$ref": "#/definitions/papajohns.IntlIngredientPrices" - } - ], - "description": "Prices is what adding one extra ingredient costs, keyed by size code." - }, - "sizes": { - "additionalProperties": { - "type": "string" - }, - "type": "object" + "data": { + "$ref": "#/definitions/numbeo.IndicesRankingsResponse" }, - "source_url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "papajohns.IntlMenuProduct": { + "numbeo.rankingsByCountryResponseDoc": { "properties": { - "alcohol": { - "type": "boolean" + "code": { + "example": 200, + "type": "integer" }, - "category": { - "example": "pizza", - "type": "string" + "data": { + "$ref": "#/definitions/numbeo.RankingsByCountryResponse" }, - "currency": { - "example": "EUR", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "numbeo.rankingsResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "customizable": { - "type": "boolean" + "data": { + "$ref": "#/definitions/numbeo.RankingsResponse" }, - "description": { + "msg": { + "example": "OK", "type": "string" - }, - "discount": { - "type": "number" - }, - "food_type": { - "description": "FoodType carries dietary markers the platform publishes, e.g. vegetarian.", - "items": { - "type": "string" - }, - "type": "array" - }, - "id": { - "example": 8, - "type": "integer" - }, - "image_url": { + } + }, + "type": "object" + }, + "nydailynews.AuthorArticle": { + "properties": { + "published_at": { "type": "string" }, - "initial_price": { - "type": "number" - }, - "kind": { - "description": "Kind is \"pizza\" or \"side\" -- the platform's two product families.", - "example": "pizza", + "summary": { "type": "string" }, - "name": { - "example": "Super Papa", + "title": { "type": "string" }, - "price": { - "description": "Price is set only for a product the platform prices directly rather than\nthrough variants. Read variants for anything with sizes or crusts.", - "type": "number" - }, - "price_from": { - "description": "PriceFrom is the cheapest variant price, so a caller can rank products\nwithout walking every variant. Absent when the product has no priced\nvariant and no direct price.", - "example": 14.99, - "type": "number" - }, - "variants": { - "items": { - "$ref": "#/definitions/papajohns.IntlMenuVariant" - }, - "type": "array" + "url": { + "type": "string" } }, "type": "object" }, - "papajohns.IntlMenuResponse": { + "nydailynews.AuthorResponse": { "properties": { - "count": { - "example": 43, - "type": "integer" - }, - "crusts": { - "additionalProperties": { - "type": "string" + "articles": { + "items": { + "$ref": "#/definitions/nydailynews.AuthorArticle" }, - "type": "object" + "type": "array" }, - "currency": { - "example": "EUR", + "bio": { "type": "string" }, - "fetched_at": { + "email": { "type": "string" }, - "food_type": { - "example": "vegetarian", + "job_title": { "type": "string" }, - "kind": { - "example": "pizza", + "name": { "type": "string" }, - "market": { - "example": "spain", + "slug": { "type": "string" }, - "products": { - "items": { - "$ref": "#/definitions/papajohns.IntlMenuProduct" - }, - "type": "array" - }, - "sizes": { - "additionalProperties": { - "type": "string" - }, - "description": "Sizes and Crusts map every machine code used in this response to the\nmarket's own display label.", - "type": "object" - }, - "source_url": { + "twitter": { "type": "string" }, - "store_id": { - "example": 9, - "type": "integer" + "url": { + "type": "string" } }, "type": "object" }, - "papajohns.IntlMenuVariant": { + "nymag.AuthorArticle": { "properties": { - "crust": { - "example": "traditional", - "type": "string" - }, - "crust_label": { - "example": "Original", + "excerpt": { "type": "string" }, - "currency": { - "example": "EUR", + "published_at": { "type": "string" }, - "discount": { - "type": "number" - }, - "initial_price": { - "description": "InitialPrice is the pre-discount price when a promotion is active.", - "type": "number" - }, - "name": { - "description": "Name is the variant's own label where the platform gives it one, e.g. a\ndrink's \"500ML\". Pizza variants are identified by size and crust instead.", - "example": "500ML", + "section": { "type": "string" }, - "nutrition": { - "$ref": "#/definitions/papajohns.IntlNutrition" - }, - "price": { - "example": 19.98, - "type": "number" - }, - "size": { - "description": "Size and Crust are the platform's stable machine codes.", - "example": "family", + "title": { "type": "string" }, - "size_label": { - "description": "SizeLabel and CrustLabel are the market's own display names for those\ncodes, in the local language.", - "example": "Familiar", + "url": { "type": "string" } }, "type": "object" }, - "papajohns.IntlNutrition": { + "nymag.AuthorResponse": { "properties": { - "calories": { - "example": 1090, - "type": "number" + "articles": { + "items": { + "$ref": "#/definitions/nymag.AuthorArticle" + }, + "type": "array" }, - "grams": { - "example": 470, - "type": "number" + "bio": { + "type": "string" }, - "portions": { - "example": "8", + "job_title": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "papajohns.IntlOfferChoice": { + "nypost.AuthorResponse": { "properties": { - "crust": { - "example": "traditional", - "type": "string" + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" }, - "crust_label": { - "example": "Original", - "type": "string" + "biography": { + "items": { + "type": "string" + }, + "type": "array" }, - "description": { + "image_url": { "type": "string" }, "name": { - "example": "Italiana Ranch", "type": "string" }, - "product_id": { - "description": "ProductID is the underlying product, usable with\nGET /papajohns/intl/product.", - "example": 336, - "type": "integer" + "social_links": { + "items": { + "$ref": "#/definitions/nypost.AuthorSocialLink" + }, + "type": "array" }, - "size": { - "example": "family", + "url": { "type": "string" - }, - "size_label": { - "description": "SizeLabel and CrustLabel are the market's own display names.", - "example": "Familiar", + } + }, + "type": "object" + }, + "nypost.AuthorSocialLink": { + "properties": { + "type": { "type": "string" }, - "surcharge": { - "description": "Surcharge is what picking this choice adds to the offer price. Absent\nwhen the choice costs nothing extra.", - "example": 1.9, - "type": "number" - }, - "variant_id": { - "example": 830, - "type": "integer" + "url": { + "type": "string" } }, "type": "object" }, - "papajohns.IntlOfferResponse": { + "nyt.ArticleResponse": { "properties": { - "availability": { - "description": "Availability lists the weekdays the offer runs on.", + "authors": { "items": { "type": "string" }, "type": "array" }, - "currency": { - "example": "EUR", - "type": "string" - }, - "customizable": { - "example": true, - "type": "boolean" - }, "description": { "type": "string" }, - "discount": { - "type": "number" - }, - "dispatch_method": { - "description": "DispatchMethod is the fulfillment this offer applies to, e.g. both.", - "example": "both", - "type": "string" - }, - "end_date": { - "example": "2026-09-21T23:45:00Z", - "type": "string" - }, - "fetched_at": { - "type": "string" - }, - "free_extras": { - "description": "FreeExtras is how many extra ingredients are included at no charge, and\nMinIngredients/MaxIngredients bound how many may be chosen.", - "example": 2, - "type": "integer" - }, - "id": { - "example": 660, - "type": "integer" - }, "image_url": { "type": "string" }, - "ingredient_categories": { - "description": "IngredientCategories lists the ingredient families this offer allows.", + "keywords": { "items": { "type": "string" }, "type": "array" }, - "market": { - "example": "spain", - "type": "string" - }, - "max_ingredients": { - "example": 10, - "type": "integer" - }, - "min_ingredients": { - "example": 1, - "type": "integer" + "paragraphs": { + "items": { + "type": "string" + }, + "type": "array" }, - "name": { - "example": "Combo Veranito", + "published_at": { "type": "string" }, - "offer_type": { - "description": "OfferType is the platform's own classification, e.g. Combo.", - "example": "Combo", + "section": { "type": "string" }, - "price": { - "example": 19.98, - "type": "number" - }, - "promoted": { - "example": true, - "type": "boolean" + "title": { + "type": "string" }, - "source_url": { + "updated_at": { "type": "string" }, - "start_date": { - "example": "2023-09-19T01:00:00Z", + "url": { + "type": "string" + } + }, + "type": "object" + }, + "nyt.AuthorAboutSection": { + "properties": { + "heading": { "type": "string" }, - "steps": { + "paragraphs": { "items": { - "$ref": "#/definitions/papajohns.IntlOfferStep" + "type": "string" }, "type": "array" } }, "type": "object" }, - "papajohns.IntlOfferStep": { + "nyt.AuthorArticle": { "properties": { - "choice_count": { - "example": 12, - "type": "integer" - }, - "choices": { + "authors": { "items": { - "$ref": "#/definitions/papajohns.IntlOfferChoice" + "type": "string" }, "type": "array" }, - "id": { - "example": 1919, - "type": "integer" + "description": { + "type": "string" }, - "name": { - "example": "❶ Elige tu pizza familiar", + "image_url": { "type": "string" }, - "optional": { - "description": "Optional reports whether the step may be skipped.", - "example": false, - "type": "boolean" + "title": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "papajohns.IntlProductResponse": { + "nyt.AuthorContactItem": { "properties": { - "available_as_half": { - "description": "AvailableAsHalf reports whether this product may be used as one half of\na half-and-half pizza.", - "example": true, - "type": "boolean" - }, - "category": { - "example": "pizza", + "label": { "type": "string" }, - "cheese_changeable": { - "example": true, - "type": "boolean" - }, - "customizable": { - "description": "Customizable reports whether toppings may be changed on this product.", - "example": true, - "type": "boolean" - }, - "description": { + "url": { "type": "string" }, - "fetched_at": { + "value": { "type": "string" - }, - "food_type": { + } + }, + "type": "object" + }, + "nyt.AuthorResponse": { + "properties": { + "about": { "items": { - "type": "string" + "$ref": "#/definitions/nyt.AuthorAboutSection" }, "type": "array" }, - "free_extras": { - "description": "FreeExtras is how many extra ingredients are included at no charge.", - "example": 2, - "type": "integer" - }, - "id": { - "example": 8, - "type": "integer" - }, - "image_url": { - "type": "string" + "articles": { + "items": { + "$ref": "#/definitions/nyt.AuthorArticle" + }, + "type": "array" }, - "image_urls": { + "contact": { "items": { - "type": "string" + "$ref": "#/definitions/nyt.AuthorContactItem" }, "type": "array" }, - "market": { - "example": "spain", + "image_url": { "type": "string" }, "name": { - "example": "Super Papa", "type": "string" }, - "slug": { - "example": "super-papa", + "tagline": { "type": "string" }, - "source_url": { + "url": { "type": "string" } }, "type": "object" }, - "papajohns.IntlStore": { + "nyt.CategoriesResponse": { "properties": { - "address": { - "type": "string" - }, - "city": { - "example": "Madrid", - "type": "string" - }, - "delivery_open": { - "example": true, - "type": "boolean" - }, - "delivery_wait_minutes": { - "example": 30, - "type": "integer" - }, - "delivery_zones": { - "items": { - "$ref": "#/definitions/papajohns.IntlDeliveryZone" - }, - "type": "array" - }, - "external_delivery": { - "example": true, - "type": "boolean" - }, - "future_orders": { - "example": true, - "type": "boolean" - }, - "hours": { + "categories": { "items": { - "$ref": "#/definitions/papajohns.IntlStoreHours" + "$ref": "#/definitions/nyt.Category" }, "type": "array" - }, - "id": { - "example": 9, - "type": "integer" - }, - "latitude": { - "example": 40.401686, - "type": "number" - }, - "longitude": { - "example": -3.708348, - "type": "number" - }, - "map_url": { - "type": "string" - }, - "menu_id": { - "description": "MenuID identifies the catalog this restaurant serves. Several\nrestaurants usually share one.", - "example": 8, - "type": "integer" - }, + } + }, + "type": "object" + }, + "nyt.Category": { + "properties": { "name": { - "example": "Vallejo Nájera", - "type": "string" - }, - "order_method": { - "description": "OrderMethod is the fulfillment the restaurant supports, as upstream\nreports it, e.g. both, delivery, or pick_up.", - "example": "both", "type": "string" }, - "payment_methods": { - "description": "PaymentMethods lists only the methods this restaurant actually accepts.", + "sections": { "items": { - "type": "string" + "$ref": "#/definitions/nyt.CategoryLink" }, "type": "array" }, - "phone": { - "example": "+34910493017", + "slug": { "type": "string" }, - "pickup_open": { - "example": true, - "type": "boolean" - }, - "pickup_wait_minutes": { - "example": 15, - "type": "integer" - }, - "region": { - "example": "Madrid", + "url": { "type": "string" } }, "type": "object" }, - "papajohns.IntlStoreHours": { + "nyt.CategoryLink": { "properties": { - "closes": { - "example": "23:59:59", - "type": "string" - }, - "day": { - "example": "monday", + "name": { "type": "string" }, - "dispatch_method": { - "description": "DispatchMethod is the fulfillment channel this window applies to,\ne.g. in_store or pj_delivery.", - "example": "in_store", + "slug": { "type": "string" }, - "opens": { - "example": "12:00:00", + "url": { "type": "string" } }, "type": "object" }, - "papajohns.IntlStoresResponse": { + "nyt.HeadlineItem": { "properties": { - "count": { - "description": "Count is how many restaurants this response carries.", - "example": 5, - "type": "integer" - }, - "fetched_at": { + "author": { "type": "string" }, - "fulfillment": { - "description": "Fulfillment, Latitude and Longitude echo a coordinate search and are\nabsent on a store_id lookup, which has no search origin. They are\nomitted rather than zeroed because 0,0 is itself a real coordinate.", - "example": "delivery", + "description": { "type": "string" }, - "latitude": { - "example": 40.4168, - "type": "number" - }, - "longitude": { - "example": -3.7038, - "type": "number" - }, - "market": { - "example": "spain", + "image_url": { "type": "string" }, - "page": { - "description": "Page, TotalPages and TotalCount describe the rest of the result set, so\na caller can tell a first page from the whole of it. TotalCount is the\nmarket-wide restaurant total rather than a match count, because the\nsearch has no radius cut-off -- every restaurant in the market is\nranked, and this is where in that ranking the response sits. All three\nare absent for a store_id lookup and for pickup, neither of which\nupstream paginates.", - "example": 1, - "type": "integer" + "published_at": { + "type": "string" }, - "source_url": { + "title": { "type": "string" }, - "stores": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "nyt.HeadlinesResponse": { + "properties": { + "items": { "items": { - "$ref": "#/definitions/papajohns.IntlStore" + "$ref": "#/definitions/nyt.HeadlineItem" }, "type": "array" }, - "total_count": { - "example": 97, - "type": "integer" - }, - "total_pages": { - "example": 20, - "type": "integer" + "section": { + "type": "string" } }, "type": "object" }, - "papajohns.LatamCategory": { + "nyt.Section": { "properties": { - "id": { - "example": "1", - "type": "string" - }, "name": { - "example": "Pizzas", "type": "string" }, - "product_count": { - "example": 25, - "type": "integer" + "slug": { + "type": "string" }, - "products": { - "items": { - "$ref": "#/definitions/papajohns.LatamProduct" - }, - "type": "array" + "url": { + "type": "string" } }, "type": "object" }, - "papajohns.LatamMenuResponse": { + "nyt.SectionsResponse": { "properties": { - "categories": { + "sections": { "items": { - "$ref": "#/definitions/papajohns.LatamCategory" + "$ref": "#/definitions/nyt.Section" }, "type": "array" + } + }, + "type": "object" + }, + "nyt.articleResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "category": { - "type": "string" + "data": { + "$ref": "#/definitions/nyt.ArticleResponse" }, - "currency": { - "example": "USD", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "nyt.authorResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "fetched_at": { - "type": "string" + "data": { + "$ref": "#/definitions/nyt.AuthorResponse" }, - "market": { - "example": "el-salvador", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "nyt.categoriesResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "partial": { - "description": "Partial is true when a paginated upstream failed part-way and the\nresponse carries only the pages that were retrieved. A menu that is\nquietly short is indistinguishable from one that genuinely has fewer\nitems, so it is flagged rather than left to look complete.", - "example": false, - "type": "boolean" + "data": { + "$ref": "#/definitions/nyt.CategoriesResponse" }, - "product_count": { - "description": "ProductCount is how many products the response carries. Where the\nupstream paginates, every page is followed before returning.", - "example": 25, + "msg": { + "example": "OK", + "type": "string" + } + }, + "type": "object" + }, + "nyt.headlinesResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "source_url": { + "data": { + "$ref": "#/definitions/nyt.HeadlinesResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "papajohns.LatamProduct": { + "nyt.sectionsResponseDoc": { "properties": { - "category": { - "example": "Pizzas", + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/nyt.SectionsResponse" + }, + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "nzherald.AuthorResponse": { + "properties": { + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" }, - "currency": { - "example": "USD", + "biography": { + "items": { + "type": "string" + }, + "type": "array" + }, + "email": { "type": "string" }, - "description": { + "image_url": { "type": "string" }, - "id": { - "example": "8", + "job_title": { "type": "string" }, - "image_url": { + "location": { "type": "string" }, "name": { - "example": "The Works", "type": "string" }, - "price_from": { - "description": "PriceFrom is the cheapest priced variant, so a caller can rank products\nwithout walking every variant.", - "example": 11.99, - "type": "number" - }, "url": { "type": "string" - }, - "variants": { - "items": { - "$ref": "#/definitions/papajohns.LatamVariant" - }, - "type": "array" } }, "type": "object" }, - "papajohns.LatamVariant": { + "oldnavy.AvailabilityResponse": { "properties": { - "available": { - "example": true, - "type": "boolean" + "brand": { + "type": "string" }, - "crust": { - "example": "Masa Original", + "count": { + "type": "integer" + }, + "fetched_at": { "type": "string" }, - "currency": { - "example": "USD", + "pid": { "type": "string" }, - "fulfillment": { - "description": "Fulfillment is the order channel this price applies to, where the market\nprices delivery and pickup differently. Colombia does: the same item is\ncommonly ~15% dearer for \"Domicilio\" than \"Recoger en Tienda\", so two\nvariants that look otherwise identical are not duplicates.", - "example": "Domicilio", + "source_url": { "type": "string" }, - "list_price": { - "description": "ListPrice is the pre-discount price where the market publishes one and\nit actually differs from price.", - "type": "number" + "stores": { + "items": { + "$ref": "#/definitions/oldnavy.StoreStockSummary" + }, + "type": "array" }, - "name": { - "description": "Name is the market's own label for the variant where it gives one.", - "example": "Gigante", + "style_id": { + "type": "string" + } + }, + "type": "object" + }, + "oldnavy.CategoriesResponse": { + "properties": { + "brand": { "type": "string" }, - "price": { - "example": 14.99, - "type": "number" + "categories": { + "items": { + "$ref": "#/definitions/oldnavy.CategoryNavEntry" + }, + "type": "array" }, - "sauce": { - "description": "Sauce is populated only by Colombia, whose SKUs vary by sauce too.", - "example": "Salsa Pizza", + "cid": { "type": "string" }, - "size": { - "description": "Size and Crust are populated where the market distinguishes them.", - "example": "GIGANTE", + "fetched_at": { "type": "string" }, - "sku": { + "source_url": { "type": "string" } }, "type": "object" }, - "papajohns.MenuCategory": { + "oldnavy.CategoryColorSummary": { "properties": { + "back_order_inventory_count": { + "type": "integer" + }, + "back_order_inventory_status": { + "type": "string" + }, "id": { - "example": "pizza", "type": "string" }, "image_url": { "type": "string" }, + "inventory_count": { + "type": "integer" + }, + "inventory_status": { + "type": "string" + }, "name": { - "example": "Pizza", "type": "string" }, - "product_count": { - "description": "ProductCount is how many priced SKUs this category contains.", - "example": 96, + "percentage_off": { "type": "integer" }, - "sections": { - "items": { - "$ref": "#/definitions/papajohns.MenuSection" - }, - "type": "array" + "price": { + "type": "number" + }, + "regular_price": { + "type": "number" + }, + "short_description": { + "type": "string" } }, "type": "object" }, - "papajohns.MenuCrust": { + "oldnavy.CategoryGroup": { "properties": { - "code": { - "example": "PIZZA_ORIGINAL", + "category_id": { "type": "string" }, - "default": { - "example": true, - "type": "boolean" + "category_name": { + "type": "string" }, - "id": { - "example": 1, - "type": "integer" + "items": { + "items": { + "$ref": "#/definitions/oldnavy.CategoryGroupItem" + }, + "type": "array" }, - "name": { - "example": "Original Crust", + "sub_category_id": { "type": "string" }, - "sub_type": { - "example": "Original", + "sub_category_name": { "type": "string" } }, "type": "object" }, - "papajohns.MenuInstruction": { + "oldnavy.CategoryGroupItem": { "properties": { - "choices": { - "items": { - "$ref": "#/definitions/papajohns.MenuInstructionChoice" - }, - "type": "array" - }, - "description": { - "example": "How much cheese?", + "cc_id": { "type": "string" }, - "id": { - "example": 2, - "type": "integer" - }, - "name": { - "example": "CHEESE", + "style_id": { "type": "string" } }, "type": "object" }, - "papajohns.MenuInstructionChoice": { + "oldnavy.CategoryNavEntry": { "properties": { - "code": { - "example": "ILC", + "cid": { "type": "string" }, - "default": { - "example": false, - "type": "boolean" - }, - "id": { - "example": 6, - "type": "integer" - }, "name": { - "example": "Light Cheese", + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "papajohns.MenuItemResponse": { + "oldnavy.CategoryProductSummary": { "properties": { - "category": { - "example": "pizza", - "type": "string" + "colors": { + "items": { + "$ref": "#/definitions/oldnavy.CategoryColorSummary" + }, + "type": "array" }, - "fetched_at": { + "id": { "type": "string" }, - "group": { - "allOf": [ - { - "$ref": "#/definitions/papajohns.MenuProductGroup" - } - ], - "description": "Group is the product group this SKU belongs to, carrying the full\ncustomization axes for it." + "name": { + "type": "string" }, - "national_default": { - "example": false, - "type": "boolean" + "review_count": { + "type": "integer" }, - "product": { - "$ref": "#/definitions/papajohns.MenuProduct" + "review_score": { + "type": "number" }, - "section": { - "example": "Most Popular", + "url": { "type": "string" }, - "source_url": { + "web_product_type": { "type": "string" - }, - "store_id": { - "example": 5054, - "type": "integer" } }, "type": "object" }, - "papajohns.MenuProduct": { + "oldnavy.CategoryResponse": { "properties": { - "calories": { - "description": "Calories is per the serving described by serving_label.", - "example": 210, - "type": "integer" - }, - "code": { - "example": "PR10Q1", + "brand": { "type": "string" }, - "crust_id": { - "example": 1, - "type": "integer" + "categories": { + "items": { + "$ref": "#/definitions/oldnavy.CategoryGroup" + }, + "type": "array" }, - "description": { + "category_id": { "type": "string" }, - "disclaimer": { - "type": "string" + "count": { + "type": "integer" }, - "image_url": { - "type": "string" + "facets": { + "items": { + "$ref": "#/definitions/oldnavy.Facet" + }, + "type": "array" }, - "name": { - "example": "10 Inch Original Pepperoni Pizza", + "fetched_at": { "type": "string" }, - "price": { - "description": "Price is this store's price. A build-your-own SKU whose price depends\nentirely on the customer's choices reports 0.", - "example": 14.99, - "type": "number" + "page": { + "type": "integer" }, - "regular_price": { - "description": "RegularPrice is the pre-promotion menu price where it differs.", - "example": 14.99, - "type": "number" + "page_size": { + "type": "integer" }, - "serving_label": { - "description": "ServingLabel describes what calories are counted per, e.g. \"/slice, 6 slices\".", - "example": "/slice, 6 slices", - "type": "string" + "products": { + "items": { + "$ref": "#/definitions/oldnavy.CategoryProductSummary" + }, + "type": "array" }, - "size": { - "description": "Size is the size label this SKU represents within its group.", - "example": "Small", + "source_url": { "type": "string" }, - "size_id": { - "example": 2, + "total_colors": { "type": "integer" }, - "sku": { - "example": "1-1-2-115", + "total_pages": { + "type": "integer" + } + }, + "type": "object" + }, + "oldnavy.ColorSummary": { + "properties": { + "id": { "type": "string" }, - "slices": { - "example": 6, + "image_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "percentage_off": { "type": "integer" }, - "surcharge": { + "price": { "type": "number" }, - "title": { - "description": "Title is the shorter in-menu label, e.g. \"Small Original Crust - Pepperoni\".", + "regular_price": { + "type": "number" + }, + "short_description": { "type": "string" } }, "type": "object" }, - "papajohns.MenuProductGroup": { + "oldnavy.Facet": { "properties": { - "allow_half_toppings": { - "example": true, - "type": "boolean" - }, - "available_topping_ids": { - "items": { - "type": "integer" - }, - "type": "array" - }, - "crusts": { - "items": { - "$ref": "#/definitions/papajohns.MenuCrust" - }, - "type": "array" - }, - "customizable": { - "description": "Customizable reports how far the product can be customized, as upstream\nclassifies it, e.g. full or none.", - "example": "full", - "type": "string" - }, - "description": { - "type": "string" - }, - "featured": { + "is_range": { "type": "boolean" }, - "free_toppings": { - "type": "integer" - }, - "id": { - "example": "cyo", + "label": { "type": "string" }, - "image_url": { + "name": { "type": "string" }, - "instructions": { + "options": { "items": { - "$ref": "#/definitions/papajohns.MenuInstruction" + "$ref": "#/definitions/oldnavy.FacetOption" }, "type": "array" }, - "max_same_topping": { - "example": 2, - "type": "integer" - }, - "max_toppings": { - "description": "Topping rules. AvailableToppingIDs are upstream's own numeric ids; this\nAPI publishes no name for them, so they are exposed as ids rather than\ninvented labels.", - "example": 7, - "type": "integer" - }, - "price_from": { - "description": "PriceFrom is the cheapest priced SKU in the group, so a caller can rank\nproducts without walking every SKU.", - "example": 14.99, + "range_max": { "type": "number" }, - "products": { - "items": { - "$ref": "#/definitions/papajohns.MenuProduct" - }, - "type": "array" - }, - "sizes": { - "description": "Sizes, Crusts and Instructions are populated only when\ninclude_options=true.", - "items": { - "$ref": "#/definitions/papajohns.MenuSize" - }, - "type": "array" + "range_min": { + "type": "number" }, - "title": { - "example": "Create Your Own Pizza", + "type": { "type": "string" } }, "type": "object" }, - "papajohns.MenuResponse": { + "oldnavy.FacetOption": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/papajohns.MenuCategory" - }, - "type": "array" - }, - "category": { - "example": "pizza", - "type": "string" - }, - "fetched_at": { - "type": "string" - }, - "national_default": { - "description": "NationalDefault is true when no store was selected, so a caller can tell\na real store's prices from the fallback menu.", - "example": false, - "type": "boolean" - }, - "product_count": { - "example": 206, + "count": { "type": "integer" }, - "source_url": { + "label": { "type": "string" }, - "store_id": { - "description": "StoreID echoes the restaurant the prices belong to. 0 is the national\ndefault menu.", - "example": 5054, - "type": "integer" + "value": { + "type": "string" } }, "type": "object" }, - "papajohns.MenuSection": { + "oldnavy.ProductDetailResponse": { "properties": { + "brand": { + "type": "string" + }, + "color": { + "type": "string" + }, "description": { "type": "string" }, - "id": { - "example": "most_popular", + "fetched_at": { "type": "string" }, + "images": { + "items": { + "type": "string" + }, + "type": "array" + }, "name": { - "example": "Most Popular", "type": "string" }, - "product_groups": { + "offers": { "items": { - "$ref": "#/definitions/papajohns.MenuProductGroup" + "$ref": "#/definitions/oldnavy.ProductOffer" }, "type": "array" - } - }, - "type": "object" - }, - "papajohns.MenuSize": { - "properties": { - "default": { - "example": false, - "type": "boolean" }, - "id": { - "example": 2, + "pid": { + "type": "string" + }, + "rating_count": { "type": "integer" }, - "measure": { - "description": "Measure is the physical size where the group has one, e.g. 10\".", - "example": "10\"", + "rating_value": { + "type": "number" + }, + "related_items": { + "items": { + "$ref": "#/definitions/oldnavy.RelatedItem" + }, + "type": "array" + }, + "source_url": { "type": "string" }, - "name": { - "description": "Name is the size's marketing name, e.g. Small.", - "example": "Small", + "url": { "type": "string" } }, "type": "object" }, - "papajohns.NearbyResponse": { + "oldnavy.ProductOffer": { "properties": { - "count": { - "example": 10, - "type": "integer" + "availability": { + "type": "string" }, - "fetched_at": { + "currency": { "type": "string" }, - "radius": { - "example": 25, - "type": "integer" + "price": { + "type": "number" }, - "source_url": { + "sku": { "type": "string" }, - "stores": { - "items": { - "$ref": "#/definitions/papajohns.NearbyStore" - }, - "type": "array" - }, - "total_in_radius": { - "description": "TotalInRadius is how many stores fall inside the radius overall,\nwhich is usually far more than one page. Use it with `offset` to\npage.", - "example": 73, - "type": "integer" + "url": { + "type": "string" } }, "type": "object" }, - "papajohns.NearbyStore": { + "oldnavy.ProductReviewsResponse": { "properties": { - "address": { - "$ref": "#/definitions/papajohns.StoreAddress" - }, - "delivery_hours": { - "description": "DeliveryHours and TakeoutHours are Papa John's own per-channel hours,\npublished separately from Hours and commonly later-closing.", - "items": { - "$ref": "#/definitions/papajohns.StoreHours" - }, - "type": "array" - }, - "distance_kilometers": { - "example": 0.97, + "average_rating": { "type": "number" }, - "distance_miles": { - "description": "DistanceMiles and DistanceKilometers are measured from the requested\ncoordinate.", - "example": 0.6, - "type": "number" + "brand": { + "type": "string" }, - "hours": { - "description": "Hours is the store's general published week of hours.", - "items": { - "$ref": "#/definitions/papajohns.StoreHours" - }, - "type": "array" + "count": { + "type": "integer" }, - "latitude": { - "example": 34.0614412, - "type": "number" + "fetched_at": { + "type": "string" }, - "longitude": { - "example": -118.2439367, - "type": "number" + "page": { + "type": "integer" }, - "name": { - "example": "Papa Johns Pizza", - "type": "string" + "page_size": { + "type": "integer" }, - "order_url": { - "description": "OrderURL is Papa John's own carryout ordering deep link for this\nstore.", + "pid": { "type": "string" }, - "path": { - "description": "Path is the /papajohns/store path for this store, so a caller can go\nstraight to the detail endpoint.", - "type": "string" + "rating_count": { + "type": "integer" }, - "payment_options": { - "description": "PaymentOptions are the payment methods this store accepts, e.g.\nAPPLEPAY, CASH, VISA.", + "rating_histogram": { + "description": "RatingHistogram is the count of ratings per star, ascending: index 0\nis 1-star, index 4 is 5-star.", "items": { - "type": "string" + "type": "integer" }, "type": "array" }, - "phone_number": { - "description": "PhoneNumber is Papa John's own E.164-shaped mainPhone, e.g.\n\"+12136172727\" -- deliberately left as published rather than\nreformatted, since geosearch and the store page publish phone\nnumbers in different shapes (mainPhone here vs. a display-formatted\nstring on /papajohns/store).", - "example": "+12136172727", - "type": "string" + "recommended_ratio": { + "type": "number" }, - "pickup_and_delivery_services": { - "description": "PickupAndDeliveryServices are the fulfillment flags Papa John's\npublishes for this store, e.g. IN_STORE_PICKUP, SAME_DAY_DELIVERY.", + "reviews": { "items": { - "type": "string" + "$ref": "#/definitions/oldnavy.Review" }, "type": "array" }, - "price_range": { - "description": "PriceRange is Papa John's own relative price tier, e.g. ONE, TWO.", - "example": "TWO", - "type": "string" - }, - "store_id": { - "example": "4269", + "source_url": { "type": "string" }, - "takeout_hours": { - "items": { - "$ref": "#/definitions/papajohns.StoreHours" - }, - "type": "array" + "total_pages": { + "type": "integer" }, - "timezone": { - "example": "America/Los_Angeles", - "type": "string" + "total_reviews": { + "type": "integer" } }, "type": "object" }, - "papajohns.NutritionFacts": { + "oldnavy.ProductSummary": { "properties": { - "calories": { - "example": 200, - "type": "number" - }, - "calories_from_fat": { - "example": 25, - "type": "number" - }, - "cholesterol_mg": { - "type": "number" + "colors": { + "items": { + "$ref": "#/definitions/oldnavy.ColorSummary" + }, + "type": "array" }, - "dietary_fiber_g": { - "example": 1, - "type": "number" + "id": { + "type": "string" }, - "protein_g": { - "example": 6, - "type": "number" + "name": { + "type": "string" }, - "saturated_fat_g": { - "example": 0.5, + "price_max": { "type": "number" }, - "sodium_mg": { - "example": 360, + "price_min": { "type": "number" }, - "sugars_g": { - "example": 3, - "type": "number" + "review_count": { + "type": "integer" }, - "total_carbohydrate_g": { - "example": 36, + "review_score": { "type": "number" }, - "total_fat_g": { - "example": 3, + "sale_price_max": { "type": "number" }, - "trans_fat_g": { + "sale_price_min": { "type": "number" - } - }, - "type": "object" - }, - "papajohns.NutritionItem": { - "properties": { - "name": { - "example": "Cheese Pizza", - "type": "string" }, - "variants": { - "items": { - "$ref": "#/definitions/papajohns.NutritionVariant" - }, - "type": "array" - } - }, - "type": "object" - }, - "papajohns.NutritionResponse": { - "properties": { - "category": { - "example": "pizzas", + "thumbnail_url": { "type": "string" }, - "count": { - "example": 34, - "type": "integer" - }, - "fetched_at": { + "url": { "type": "string" }, - "items": { - "items": { - "$ref": "#/definitions/papajohns.NutritionItem" - }, - "type": "array" - }, - "source_url": { + "web_product_type": { "type": "string" } }, "type": "object" }, - "papajohns.NutritionVariant": { + "oldnavy.RelatedItem": { "properties": { - "label": { - "description": "Label combines every column header Papa John's own table used to\ndistinguish this variant (crust type and/or size), joined with \" - \".\nA single-column table (most non-pizza items) yields the lone column\nheader verbatim, e.g. \"Regular\".", - "example": "Original Crust - Large", + "name": { "type": "string" }, - "nutrition": { - "$ref": "#/definitions/papajohns.NutritionFacts" - }, - "serving_size": { - "example": "1 slice", + "pid": { "type": "string" }, - "servings": { - "example": "8 slices per pizza", + "url": { "type": "string" } }, "type": "object" }, - "papajohns.StoreAddress": { + "oldnavy.Review": { "properties": { - "city": { - "example": "Alhambra", + "author": { "type": "string" }, - "country": { - "example": "US", + "body": { "type": "string" }, - "line1": { - "example": "2136 S FREMONT AVE", + "created_at": { "type": "string" }, - "postal_code": { - "example": "91803", + "headline": { "type": "string" }, - "region": { - "example": "CA", - "type": "string" - } - }, - "type": "object" - }, - "papajohns.StoreHours": { - "properties": { - "closed": { - "description": "Closed is true when Papa John's publishes the day with no open\ninterval.", - "example": false, - "type": "boolean" + "helpful_votes": { + "type": "integer" }, - "closes": { - "example": "00:15", + "id": { "type": "string" }, - "day_of_week": { - "example": "Monday", + "location": { "type": "string" }, - "opens": { - "example": "10:30", + "not_helpful_votes": { + "type": "integer" + }, + "rating": { + "type": "integer" + }, + "updated_at": { "type": "string" + }, + "verified_purchase": { + "type": "boolean" } }, "type": "object" }, - "papajohns.StoreResponse": { + "oldnavy.SearchResponse": { "properties": { - "address": { - "$ref": "#/definitions/papajohns.StoreAddress" - }, - "fetched_at": { + "brand": { "type": "string" }, - "google_place_id": { - "type": "string" + "count": { + "type": "integer" }, - "hours": { - "description": "Hours is the store's general published week of hours.", + "facets": { "items": { - "$ref": "#/definitions/papajohns.StoreHours" + "$ref": "#/definitions/oldnavy.Facet" }, "type": "array" }, - "latitude": { - "example": 34.06838390790909, - "type": "number" - }, - "longitude": { - "example": -118.14934906165672, - "type": "number" - }, - "name": { - "example": "Papa Johns Pizza", + "fetched_at": { "type": "string" }, - "order_url": { - "description": "OrderURL is Papa John's own carryout ordering deep link for this\nstore, which embeds the same store_id.", + "keyword": { "type": "string" }, - "path": { - "type": "string" + "page": { + "type": "integer" }, - "phone_number": { - "example": "(626) 642-5645", - "type": "string" + "page_size": { + "type": "integer" }, - "pickup_hours": { - "description": "PickupHours is Papa John's own published carryout/pickup hours,\npublished separately from Hours and sometimes shorter.", + "products": { "items": { - "$ref": "#/definitions/papajohns.StoreHours" + "$ref": "#/definitions/oldnavy.ProductSummary" }, "type": "array" }, "source_url": { "type": "string" }, - "store_id": { - "example": "5054", - "type": "string" + "total_pages": { + "type": "integer" }, - "timezone": { - "example": "America/Los_Angeles", - "type": "string" + "total_products": { + "type": "integer" } }, "type": "object" }, - "papajohns.StorefrontCategory": { + "oldnavy.SizeStock": { "properties": { - "alias": { - "description": "Alias is upstream's own stable slug for the section, which survives the\ndisplay name being renamed for a season.", - "example": "pizza", + "fit": { "type": "string" }, - "id": { - "example": "1", + "sku": { "type": "string" }, - "name": { - "example": "Пицца", + "status": { "type": "string" - }, - "product_count": { - "example": 25, - "type": "integer" - }, - "products": { - "items": { - "$ref": "#/definitions/papajohns.StorefrontProduct" - }, - "type": "array" } }, "type": "object" }, - "papajohns.StorefrontMenuResponse": { + "oldnavy.Store": { "properties": { - "categories": { - "description": "Categories carry the whole national catalog. The menu does not vary by\ncity, so there is no city to report.", - "items": { - "$ref": "#/definitions/papajohns.StorefrontCategory" - }, - "type": "array" + "address": { + "type": "string" }, - "category": { + "city": { "type": "string" }, - "currency": { - "example": "RUB", + "country": { "type": "string" }, - "fetched_at": { + "distance_miles": { + "type": "number" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "name": { "type": "string" }, - "market": { - "example": "russia", + "phone": { "type": "string" }, - "product_count": { - "example": 185, - "type": "integer" + "postal_code": { + "type": "string" }, - "source_url": { + "region": { "type": "string" }, - "variant_count": { - "example": 892, - "type": "integer" + "specialties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": "string" } }, "type": "object" }, - "papajohns.StorefrontProduct": { + "oldnavy.StoreResponse": { "properties": { - "category": { - "example": "Пицца", + "brand": { "type": "string" }, - "currency": { - "example": "RUB", - "type": "string" + "count": { + "type": "integer" }, - "description": { + "fetched_at": { "type": "string" }, - "id": { - "example": "12345", - "type": "string" + "lat": { + "type": "number" }, - "image_url": { - "type": "string" + "lng": { + "type": "number" }, - "name": { - "example": "Прайм говядина Барбекю", + "search": { "type": "string" }, - "price_from": { - "description": "PriceFrom is the cheapest priced variant, so a caller can rank products\nwithout walking every variant.", - "example": 680, - "type": "number" - }, - "url": { + "source_url": { "type": "string" }, - "variants": { + "stores": { "items": { - "$ref": "#/definitions/papajohns.StorefrontVariant" + "$ref": "#/definitions/oldnavy.Store" }, "type": "array" } }, "type": "object" }, - "papajohns.StorefrontVariant": { + "oldnavy.StoreStockSummary": { "properties": { - "available": { - "example": true, - "type": "boolean" - }, - "crust": { - "description": "Crust is the dough the variant is made with. Russia publishes two\n(Традиционное, Тонкое); Poland publishes none, so this is empty there.", - "example": "Традиционное", + "address": { "type": "string" }, - "currency": { - "example": "RUB", + "city": { "type": "string" }, - "price": { - "example": 680, + "distance_miles": { "type": "number" }, - "size": { - "description": "Size is the pizza diameter where the market publishes one, with its own\nunit (\"23 см\").", - "example": "23 см", + "name": { "type": "string" }, - "sku": { - "example": "172764", + "phone": { "type": "string" }, - "stuffed_crust": { - "description": "StuffedCrust names the filling baked into the rim, where the variant has\none. Upstream reports none/cheese/sausage/sausage_cheese; \"none\" is\nreported here as an empty value rather than the literal word.", - "example": "cheese", + "postal_code": { "type": "string" - } - }, - "type": "object" - }, - "papajohns.allergensResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" }, - "data": { - "$ref": "#/definitions/papajohns.AllergensResponse" + "region": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "sizes": { + "items": { + "$ref": "#/definitions/oldnavy.SizeStock" + }, + "type": "array" + }, + "store_id": { + "type": "string" } }, "type": "object" }, - "papajohns.dealsResponseDoc": { + "oldnavy.availabilityResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/papajohns.DealsResponse" + "$ref": "#/definitions/oldnavy.AvailabilityResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.directoryResponseDoc": { + "oldnavy.categoriesResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/papajohns.DirectoryResponse" + "$ref": "#/definitions/oldnavy.CategoriesResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.indiaDealResponseDoc": { + "oldnavy.categoryResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/papajohns.IndiaDealResponse" + "$ref": "#/definitions/oldnavy.CategoryResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.indiaMenuItemResponseDoc": { + "oldnavy.productResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/papajohns.IndiaMenuItemResponse" + "$ref": "#/definitions/oldnavy.ProductDetailResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.indiaMenuResponseDoc": { + "oldnavy.productReviewsResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/papajohns.IndiaMenuResponse" + "$ref": "#/definitions/oldnavy.ProductReviewsResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.indiaStoresResponseDoc": { + "oldnavy.searchResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/papajohns.IndiaStoresResponse" + "$ref": "#/definitions/oldnavy.SearchResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.intlDealsResponseDoc": { + "oldnavy.storesResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/papajohns.IntlDealsResponse" + "$ref": "#/definitions/oldnavy.StoreResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "papajohns.intlIngredientsResponseDoc": { + "opensea.Account": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "address": { + "example": "0x46efbaedc92067e6d60e84ed6395099723252496", + "type": "string" }, - "data": { - "$ref": "#/definitions/papajohns.IntlIngredientsResponse" + "display_name": { + "example": "gordongoner", + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "image_url": { + "type": "string" } }, "type": "object" }, - "papajohns.intlMenuResponseDoc": { + "opensea.ActivityEvent": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "chain": { + "type": "string" }, - "data": { - "$ref": "#/definitions/papajohns.IntlMenuResponse" + "collection_name": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "papajohns.intlOfferResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "collection_slug": { + "example": "boredapeyachtclub", + "type": "string" }, - "data": { - "$ref": "#/definitions/papajohns.IntlOfferResponse" + "contract_address": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "papajohns.intlProductResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "event_time": { + "example": "2026-08-30T08:38:47.235Z", + "type": "string" }, - "data": { - "$ref": "#/definitions/papajohns.IntlProductResponse" + "from": { + "$ref": "#/definitions/opensea.Account" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "id": { + "type": "string" + }, + "item_image_url": { + "type": "string" + }, + "item_name": { + "type": "string" + }, + "marketplace": { + "example": "opensea", + "type": "string" + }, + "price": { + "$ref": "#/definitions/opensea.Price" + }, + "quantity": { + "example": "1", + "type": "string" + }, + "sale_type": { + "type": "string" + }, + "to": { + "$ref": "#/definitions/opensea.Account" + }, + "token_id": { + "example": "3766", + "type": "string" + }, + "transaction_hash": { + "type": "string" + }, + "type": { + "example": "Sale", + "type": "string" } }, "type": "object" }, - "papajohns.intlStoresResponseDoc": { + "opensea.ActivityResponse": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "events": { + "items": { + "$ref": "#/definitions/opensea.ActivityEvent" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/papajohns.IntlStoresResponse" + "next_page_cursor": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "slug": { + "example": "boredapeyachtclub", + "type": "string" + }, + "token_id": { + "type": "string" } }, "type": "object" }, - "papajohns.latamMenuResponseDoc": { + "opensea.CategoriesResponse": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" - }, - "data": { - "$ref": "#/definitions/papajohns.LatamMenuResponse" - }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "categories": { + "items": { + "$ref": "#/definitions/opensea.Category" + }, + "type": "array" } }, "type": "object" }, - "papajohns.menuItemResponseDoc": { + "opensea.Category": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" - }, - "data": { - "$ref": "#/definitions/papajohns.MenuItemResponse" + "children": { + "items": { + "$ref": "#/definitions/opensea.CategoryChild" + }, + "type": "array" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "slug": { + "example": "collections", + "type": "string" } }, "type": "object" }, - "papajohns.menuResponseDoc": { + "opensea.CategoryChild": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" - }, - "data": { - "$ref": "#/definitions/papajohns.MenuResponse" + "display_name": { + "example": "PFPs", + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "slug": { + "example": "pfps", + "type": "string" } }, "type": "object" }, - "papajohns.nearbyResponseDoc": { + "opensea.Chain": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "arch": { + "example": "EVM", + "type": "string" }, - "data": { - "$ref": "#/definitions/papajohns.NearbyResponse" + "identifier": { + "example": "ethereum", + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "name": { + "example": "Ethereum", + "type": "string" } }, "type": "object" }, - "papajohns.nutritionResponseDoc": { + "opensea.ChainsResponse": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" - }, - "data": { - "$ref": "#/definitions/papajohns.NutritionResponse" - }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "chains": { + "items": { + "$ref": "#/definitions/opensea.Chain" + }, + "type": "array" } }, "type": "object" }, - "papajohns.storeResponseDoc": { + "opensea.ChartPoint": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "currency": { + "example": "ETH", + "type": "string" }, - "data": { - "$ref": "#/definitions/papajohns.StoreResponse" + "time": { + "example": "2026-08-23T13:11:15.715Z", + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "usd": { + "example": 19182.64, + "type": "number" + }, + "value": { + "example": 7.899, + "type": "number" } }, "type": "object" }, - "papajohns.storefrontMenuResponseDoc": { + "opensea.ChartResponse": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "metric": { + "example": "floor_price", + "type": "string" }, - "data": { - "$ref": "#/definitions/papajohns.StorefrontMenuResponse" + "points": { + "items": { + "$ref": "#/definitions/opensea.ChartPoint" + }, + "type": "array" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "slug": { + "example": "boredapeyachtclub", + "type": "string" + }, + "timeframe": { + "example": "SEVEN_DAYS", + "type": "string" } }, "type": "object" }, - "patreon.Creator": { + "opensea.Collection": { "properties": { - "avatar_url": { + "banner_image_url": { "type": "string" }, - "collection_count": { - "type": "integer" + "category": { + "example": "PFPS", + "type": "string" }, - "cover_url": { + "chain": { + "example": "ethereum", "type": "string" }, - "creation_count": { - "type": "integer" + "contract_address": { + "example": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d", + "type": "string" }, - "currency": { - "example": "EUR", + "created_at": { + "example": "2021-04-22T23:14:24.000Z", "type": "string" }, - "handle": { - "example": "CachyOS", + "description": { "type": "string" }, - "has_public_rss": { - "type": "boolean" + "discord_url": { + "type": "string" }, - "id": { - "example": "8655479", + "external_url": { "type": "string" }, - "is_monthly": { - "type": "boolean" + "floor_price": { + "$ref": "#/definitions/opensea.Price" }, - "is_nsfw": { - "type": "boolean" + "id": { + "example": "46188685bcac4206ace63c9d017abbb7", + "type": "string" }, - "name": { - "example": "CachyOS", + "image_url": { "type": "string" }, - "offers_free_membership": { - "type": "boolean" + "instagram_username": { + "type": "string" }, - "offers_paid_membership": { + "is_verified": { + "example": true, "type": "boolean" }, - "paid_member_count": { - "type": "integer" - }, - "patron_count": { - "type": "integer" - }, - "pledge_sum_cents": { - "type": "integer" - }, - "show_count": { - "type": "integer" - }, - "social_links": { - "items": { - "$ref": "#/definitions/patreon.CreatorSocialLink" - }, - "type": "array" - }, - "summary": { + "name": { + "example": "Bored Ape Yacht Club", "type": "string" }, - "url": { - "example": "https://www.patreon.com/CachyOS", - "type": "string" - } - }, - "type": "object" - }, - "patreon.CreatorSocialLink": { - "properties": { - "label": { - "example": "CachyOS", + "slug": { + "example": "boredapeyachtclub", "type": "string" }, - "platform": { - "example": "twitter", - "type": "string" + "stats": { + "$ref": "#/definitions/opensea.CollectionStats" }, - "url": { - "example": "https://twitter.com/CachyOS", + "top_offer": { + "$ref": "#/definitions/opensea.Price" + }, + "twitter_username": { "type": "string" } }, "type": "object" }, - "patreon.ExploreCreator": { + "opensea.CollectionHoldersResponse": { "properties": { - "avatar_url": { - "type": "string" - }, - "creation_name": { - "example": "creating YouTube videos", - "type": "string" - }, - "id": { - "example": "4270549", - "type": "string" - }, - "is_nsfw": { - "type": "boolean" + "holders": { + "items": { + "$ref": "#/definitions/opensea.Holder" + }, + "type": "array" }, - "name": { - "example": "Reckless Ben", + "next_page_cursor": { "type": "string" }, - "url": { - "example": "https://www.patreon.com/RecklessBen", + "slug": { + "example": "boredapeyachtclub", "type": "string" } }, "type": "object" }, - "patreon.ExploreResult": { + "opensea.CollectionItemsResponse": { "properties": { - "sections": { + "items": { "items": { - "$ref": "#/definitions/patreon.ExploreSection" + "$ref": "#/definitions/opensea.Item" }, "type": "array" }, - "topic": { - "example": "podcasts_and_shows", + "next_page_cursor": { + "type": "string" + }, + "slug": { + "example": "boredapeyachtclub", "type": "string" } }, "type": "object" }, - "patreon.ExploreSection": { + "opensea.CollectionItemsShelfResponse": { "properties": { - "creators": { + "items": { "items": { - "$ref": "#/definitions/patreon.ExploreCreator" + "$ref": "#/definitions/opensea.Item" }, "type": "array" }, - "title": { - "example": "Top creators", + "shelf": { + "example": "best_deals", "type": "string" }, - "type": { - "enum": [ - "popular-campaigns", - "trending-campaigns", - "new-campaigns" - ], - "example": "popular-campaigns", + "slug": { + "example": "boredapeyachtclub", "type": "string" } }, "type": "object" }, - "patreon.MembershipTier": { + "opensea.CollectionOffersResponse": { "properties": { - "amount_cents": { - "example": 500, - "type": "integer" + "next_page_cursor": { + "type": "string" }, - "benefits": { + "offers": { "items": { - "$ref": "#/definitions/patreon.MembershipTierBenefit" + "$ref": "#/definitions/opensea.OfferAggregate" }, "type": "array" }, - "currency": { - "example": "USD", + "slug": { + "example": "boredapeyachtclub", "type": "string" }, - "description": { + "total_currency": { + "example": "WETH", "type": "string" }, - "id": { - "example": "17218833", - "type": "string" + "total_offers": { + "example": 314, + "type": "integer" }, - "title": { - "example": "Supporter", - "type": "string" + "total_value_token": { + "example": 55.0032, + "type": "number" + }, + "total_value_usd": { + "example": 135216.02, + "type": "number" } }, "type": "object" }, - "patreon.MembershipTierBenefit": { + "opensea.CollectionSearchResponse": { "properties": { - "description": { - "type": "string" + "collections": { + "items": { + "$ref": "#/definitions/opensea.CollectionSummary" + }, + "type": "array" }, - "title": { - "example": "Support the project", + "query": { + "example": "ape", "type": "string" } }, "type": "object" }, - "patreon.MembershipTiersResult": { + "opensea.CollectionShelfResponse": { "properties": { - "creator_id": { - "example": "8655479", - "type": "string" - }, - "handle": { - "example": "CachyOS", - "type": "string" - }, - "tiers": { + "collections": { "items": { - "$ref": "#/definitions/patreon.MembershipTier" + "$ref": "#/definitions/opensea.CollectionSummary" }, "type": "array" + }, + "next_page_cursor": { + "type": "string" + }, + "shelf": { + "example": "top_movers", + "type": "string" } }, "type": "object" }, - "patreon.PublicRSSEpisode": { + "opensea.CollectionStats": { "properties": { - "description": { - "type": "string" + "listed_item_count": { + "example": 298, + "type": "integer" }, - "duration": { - "type": "string" + "one_day": { + "$ref": "#/definitions/opensea.WindowStats" }, - "enclosure_type": { - "type": "string" + "one_hour": { + "$ref": "#/definitions/opensea.WindowStats" }, - "enclosure_url": { - "type": "string" + "sales": { + "example": 57369, + "type": "integer" }, - "episode_type": { - "type": "string" + "seven_days": { + "$ref": "#/definitions/opensea.WindowStats" }, - "guid": { - "type": "string" + "thirty_days": { + "$ref": "#/definitions/opensea.WindowStats" }, - "image_url": { - "type": "string" + "total_supply": { + "example": 9998, + "type": "integer" }, - "link": { - "type": "string" + "unique_item_count": { + "example": 9998, + "type": "integer" }, - "published_at": { + "volume_currency": { + "example": "ETH", "type": "string" }, - "title": { - "type": "string" + "volume_native": { + "example": 1580610.96, + "type": "number" + }, + "volume_usd": { + "example": 3756342321.66, + "type": "number" } }, "type": "object" }, - "patreon.PublicRSSFeed": { + "opensea.CollectionSummary": { "properties": { - "author": { - "type": "string" - }, - "campaign_id": { - "example": "80117", + "category": { + "example": "PFPS", "type": "string" }, - "copyright": { + "chain": { + "example": "ethereum", "type": "string" }, - "description": { + "contract_address": { "type": "string" }, - "episodes": { - "items": { - "$ref": "#/definitions/patreon.PublicRSSEpisode" - }, - "type": "array" + "floor_price": { + "$ref": "#/definitions/opensea.Price" }, - "explicit": { + "id": { "type": "string" }, "image_url": { "type": "string" }, - "language": { - "type": "string" + "is_verified": { + "type": "boolean" }, - "link": { - "type": "string" + "markets": { + "items": { + "$ref": "#/definitions/opensea.MarketListing" + }, + "type": "array" }, - "show_id": { - "example": "1322380", + "name": { + "example": "Bored Ape Yacht Club", "type": "string" }, - "title": { + "slug": { + "example": "boredapeyachtclub", "type": "string" }, - "type": { - "type": "string" + "stats": { + "$ref": "#/definitions/opensea.CollectionStats" } }, "type": "object" }, - "patreon.creatorResponseDoc": { + "opensea.CollectionTopSalesResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/patreon.Creator" + "sales": { + "items": { + "$ref": "#/definitions/opensea.ActivityEvent" + }, + "type": "array" }, - "msg": { - "example": "success", + "slug": { + "example": "boredapeyachtclub", "type": "string" } }, "type": "object" }, - "patreon.exploreResponseDoc": { + "opensea.CollectionTrait": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/patreon.ExploreResult" - }, - "msg": { - "example": "success", + "comparison_operator": { "type": "string" - } - }, - "type": "object" - }, - "patreon.membershipTiersResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/patreon.MembershipTiersResult" }, - "msg": { - "example": "success", + "trait_type": { + "example": "Background", "type": "string" - } - }, - "type": "object" - }, - "patreon.publicRSSResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/patreon.PublicRSSFeed" }, - "msg": { - "example": "success", - "type": "string" + "values": { + "items": { + "$ref": "#/definitions/opensea.TraitValue" + }, + "type": "array" } }, "type": "object" }, - "pcgamer.AuthorResponse": { + "opensea.CollectionTraitOffersResponse": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" + "next_page_cursor": { + "type": "string" }, - "biography": { + "offers": { "items": { - "type": "string" + "$ref": "#/definitions/opensea.TraitOfferAggregate" }, "type": "array" }, - "has_next_page": { - "type": "boolean" - }, - "job_title": { + "slug": { + "example": "boredapeyachtclub", "type": "string" }, - "name": { + "total_currency": { + "example": "WETH", "type": "string" }, - "page": { + "total_offers": { + "example": 6, "type": "integer" }, - "slug": { - "type": "string" - }, - "social_links": { - "items": { - "$ref": "#/definitions/pcgamer.AuthorSocialLink" - }, - "type": "array" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "pcgamer.AuthorSocialLink": { - "properties": { - "platform": { - "type": "string" + "total_value_token": { + "example": 96.13, + "type": "number" }, - "url": { - "type": "string" + "total_value_usd": { + "example": 96.13, + "type": "number" } }, "type": "object" }, - "pcmag.AuthorResponse": { + "opensea.CollectionTraitsResponse": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" - }, - "biography": { - "type": "string" - }, - "expertise": { - "items": { - "$ref": "#/definitions/pcmag.AuthorTopic" - }, - "type": "array" - }, - "image_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { + "next_page_cursor": { "type": "string" }, "slug": { + "example": "boredapeyachtclub", "type": "string" }, - "social_links": { + "traits": { "items": { - "$ref": "#/definitions/pcmag.AuthorSocialLink" + "$ref": "#/definitions/opensea.CollectionTrait" }, "type": "array" - }, - "url": { - "type": "string" } }, "type": "object" }, - "pcmag.AuthorSocialLink": { + "opensea.CollectionsResponse": { "properties": { - "platform": { - "type": "string" - }, - "url": { - "type": "string" + "collections": { + "items": { + "$ref": "#/definitions/opensea.CollectionSummary" + }, + "type": "array" } }, "type": "object" }, - "pcmag.AuthorTopic": { + "opensea.DepthLevel": { "properties": { - "name": { - "type": "string" + "price": { + "$ref": "#/definitions/opensea.Price" }, - "url": { - "type": "string" + "quantity": { + "example": 2, + "type": "integer" } }, "type": "object" }, - "people.AuthorInfoItem": { + "opensea.DepthResponse": { "properties": { - "label": { - "type": "string" - }, - "url": { + "chain": { "type": "string" }, - "value": { + "contract_address": { "type": "string" - } - }, - "type": "object" - }, - "people.AuthorResponse": { - "properties": { - "articles": { - "items": { - "$ref": "#/definitions/people.HeadlineItem" - }, - "type": "array" }, - "biography": { + "listings": { "items": { - "type": "string" + "$ref": "#/definitions/opensea.DepthLevel" }, "type": "array" }, - "info": { + "offers": { "items": { - "$ref": "#/definitions/people.AuthorInfoItem" + "$ref": "#/definitions/opensea.DepthLevel" }, "type": "array" }, - "job_title": { - "type": "string" - }, - "name": { + "slug": { + "example": "boredapeyachtclub", "type": "string" }, - "url": { + "token_id": { "type": "string" } }, "type": "object" }, - "people.HeadlineItem": { + "opensea.Drop": { "properties": { - "author": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "published_at": { + "chain": { + "example": "base", "type": "string" }, - "summary": { - "type": "string" + "collection": { + "$ref": "#/definitions/opensea.CollectionSummary" }, - "title": { + "contract_address": { "type": "string" }, "type": { - "type": "string" - }, - "url": { + "example": "Erc721SeaDropV1", "type": "string" } }, "type": "object" }, - "phillyinquirer.AuthorResponse": { + "opensea.DropsResponse": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" - }, - "biography": { + "drops": { "items": { - "type": "string" + "$ref": "#/definitions/opensea.Drop" }, "type": "array" }, - "image_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "slug": { + "next_page_cursor": { "type": "string" }, - "social_links": { - "items": { - "$ref": "#/definitions/phillyinquirer.AuthorSocialLink" - }, - "type": "array" - }, - "url": { + "type": { + "example": "UPCOMING", "type": "string" } }, "type": "object" }, - "phillyinquirer.AuthorSocialLink": { + "opensea.Holder": { "properties": { - "platform": { - "type": "string" + "account": { + "$ref": "#/definitions/opensea.Account" }, - "url": { - "type": "string" + "quantity": { + "example": 143, + "type": "integer" } }, "type": "object" }, - "philstar.AuthorArticle": { + "opensea.Item": { "properties": { - "published_at": { + "best_listing": { + "$ref": "#/definitions/opensea.Price" + }, + "best_offer": { + "$ref": "#/definitions/opensea.Price" + }, + "chain": { + "example": "ethereum", "type": "string" }, - "section": { + "collection_name": { + "example": "Bored Ape Yacht Club", "type": "string" }, - "summary": { + "collection_slug": { + "example": "boredapeyachtclub", "type": "string" }, - "title": { + "contract_address": { "type": "string" }, - "url": { + "created_at": { + "type": "string" + }, + "description": { "type": "string" - } - }, - "type": "object" - }, - "philstar.AuthorResponse": { - "properties": { - "articles": { - "items": { - "$ref": "#/definitions/philstar.AuthorArticle" - }, - "type": "array" }, "id": { "type": "string" }, - "name": { + "image_url": { "type": "string" }, - "photo_url": { + "is_fungible": { + "type": "boolean" + }, + "last_sale": { + "$ref": "#/definitions/opensea.Price" + }, + "last_sale_at": { "type": "string" }, - "url": { + "marketplace": { + "example": "opensea", + "type": "string" + }, + "name": { + "example": "#1", + "type": "string" + }, + "owner": { + "$ref": "#/definitions/opensea.Account" + }, + "rarity_rank": { + "example": 1204, + "type": "integer" + }, + "token_id": { + "example": "1", "type": "string" + }, + "traits": { + "items": { + "$ref": "#/definitions/opensea.Trait" + }, + "type": "array" } }, "type": "object" }, - "phonearena.AuthorResponse": { + "opensea.ItemOrdersResponse": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" - }, - "biography": { - "items": { - "type": "string" - }, - "type": "array" - }, - "image_url": { - "type": "string" - }, - "name": { + "chain": { + "example": "ethereum", "type": "string" }, - "role": { + "contract_address": { + "example": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d", "type": "string" }, - "slug": { + "next_page_cursor": { "type": "string" }, - "social_links": { + "orders": { "items": { - "$ref": "#/definitions/phonearena.AuthorSocialLink" + "$ref": "#/definitions/opensea.Order" }, "type": "array" }, - "url": { + "token_id": { + "example": "1", "type": "string" } }, "type": "object" }, - "phonearena.AuthorSocialLink": { + "opensea.ItemOwner": { "properties": { - "platform": { - "type": "string" + "account": { + "$ref": "#/definitions/opensea.Account" }, - "url": { + "quantity": { + "example": "1", "type": "string" } }, "type": "object" }, - "pinterest.Board": { + "opensea.ItemOwnersResponse": { "properties": { - "cover_image_url": { + "chain": { + "example": "ethereum", "type": "string" }, - "description": { + "contract_address": { "type": "string" }, - "follower_count": { - "type": "integer" + "has_more": { + "type": "boolean" }, - "id": { + "next_page_cursor": { "type": "string" }, - "name": { - "type": "string" + "owners": { + "items": { + "$ref": "#/definitions/opensea.ItemOwner" + }, + "type": "array" }, - "owner_username": { + "token_id": { + "example": "1", "type": "string" }, - "pin_count": { + "total_owners": { + "example": 1, "type": "integer" + } + }, + "type": "object" + }, + "opensea.ItemSearchResponse": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/opensea.Item" + }, + "type": "array" }, - "privacy": { + "query": { + "example": "gold", "type": "string" }, - "url": { + "slug": { + "example": "boredapeyachtclub", "type": "string" } }, "type": "object" }, - "pinterest.BoardResponse": { + "opensea.MarketListing": { "properties": { - "cover_image_url": { - "type": "string" - }, - "description": { - "type": "string" - }, - "follower_count": { + "listed_item_count": { + "example": 190, "type": "integer" }, - "id": { + "marketplace": { + "example": "opensea", "type": "string" }, "name": { - "type": "string" - }, - "owner_username": { - "type": "string" - }, - "pin_count": { - "type": "integer" - }, - "pins": { - "items": { - "$ref": "#/definitions/pinterest.PinSummary" - }, - "type": "array" - }, - "privacy": { - "type": "string" - }, - "url": { + "example": "OpenSea", "type": "string" } }, "type": "object" }, - "pinterest.CategoriesResponse": { + "opensea.OfferAggregate": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/pinterest.Category" - }, - "type": "array" + "id": { + "type": "string" + }, + "price": { + "$ref": "#/definitions/opensea.Price" + }, + "total_offers": { + "example": 1, + "type": "integer" } }, "type": "object" }, - "pinterest.Category": { + "opensea.Order": { "properties": { + "end_time": { + "type": "string" + }, "id": { "type": "string" }, - "name": { + "maker": { + "$ref": "#/definitions/opensea.Account" + }, + "marketplace": { + "example": "opensea", "type": "string" }, - "slug": { + "price": { + "$ref": "#/definitions/opensea.Price" + }, + "quantity": { + "example": "1", + "type": "string" + }, + "start_time": { "type": "string" } }, "type": "object" }, - "pinterest.IdeaResponse": { + "opensea.Price": { "properties": { - "description": { - "type": "string" + "amount": { + "example": 7.85, + "type": "number" }, - "follower_count": { - "type": "integer" + "chain": { + "example": "ethereum", + "type": "string" }, - "id": { + "contract_address": { + "example": "0x0000000000000000000000000000000000000000", "type": "string" }, - "name": { + "currency": { + "example": "ETH", "type": "string" }, - "pins": { - "items": { - "$ref": "#/definitions/pinterest.PinSummary" - }, - "type": "array" + "usd": { + "example": 19295.3, + "type": "number" } }, "type": "object" }, - "pinterest.PinDetail": { + "opensea.Profile": { "properties": { - "board_name": { + "address": { + "example": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", "type": "string" }, - "comment_count": { - "type": "integer" - }, - "created_at": { + "banner_image_url": { "type": "string" }, - "description": { + "display_name": { + "example": "vitalik.eth", "type": "string" }, - "domain": { + "external_url": { "type": "string" }, - "dominant_color": { + "image_url": { "type": "string" }, - "id": { - "type": "string" + "is_verified": { + "type": "boolean" }, - "image_url": { + "kind": { + "example": "WALLET", "type": "string" }, - "link": { + "twitter_username": { "type": "string" }, - "pinner_username": { + "username": { "type": "string" + } + }, + "type": "object" + }, + "opensea.ProfileCollection": { + "properties": { + "collection": { + "$ref": "#/definitions/opensea.CollectionSummary" }, - "repin_count": { + "item_count": { + "example": 1, "type": "integer" }, - "title": { - "type": "string" - }, - "url": { - "type": "string" + "total_quantity": { + "example": 1, + "type": "integer" } }, "type": "object" }, - "pinterest.PinSummary": { + "opensea.ProfileCollectionsResponse": { "properties": { - "board_name": { + "address": { "type": "string" }, - "description": { - "type": "string" + "collections": { + "items": { + "$ref": "#/definitions/opensea.ProfileCollection" + }, + "type": "array" }, - "domain": { + "next_page_cursor": { "type": "string" - }, - "dominant_color": { + } + }, + "type": "object" + }, + "opensea.ProfileItemsResponse": { + "properties": { + "address": { + "example": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", "type": "string" }, - "id": { - "type": "string" + "items": { + "items": { + "$ref": "#/definitions/opensea.Item" + }, + "type": "array" }, - "image_url": { + "next_page_cursor": { "type": "string" }, - "link": { + "total_items": { + "example": 3441, + "type": "integer" + } + }, + "type": "object" + }, + "opensea.RankedCollection": { + "properties": { + "collection": { + "$ref": "#/definitions/opensea.CollectionSummary" + }, + "score": { + "example": "28.3713030851", "type": "string" + } + }, + "type": "object" + }, + "opensea.RankingsResponse": { + "properties": { + "collections": { + "items": { + "$ref": "#/definitions/opensea.RankedCollection" + }, + "type": "array" }, - "pinner_username": { + "next_page_cursor": { "type": "string" }, - "title": { + "ranking": { + "example": "TRENDING", "type": "string" }, - "url": { + "timeframe": { + "example": "ONE_DAY", "type": "string" } }, "type": "object" }, - "pinterest.SearchResponse": { + "opensea.SocialProofResponse": { "properties": { - "pins": { + "notable_collectors": { "items": { - "$ref": "#/definitions/pinterest.PinSummary" + "$ref": "#/definitions/opensea.Account" }, "type": "array" }, - "query": { + "slug": { + "example": "boredapeyachtclub", "type": "string" + }, + "social_count": { + "example": 5605, + "type": "integer" } }, "type": "object" }, - "pinterest.User": { + "opensea.Trait": { "properties": { - "about": { + "trait_type": { + "example": "Background", "type": "string" }, - "avatar_url": { + "value": { + "example": "Orange", "type": "string" - }, - "board_count": { - "type": "integer" - }, - "follower_count": { - "type": "integer" - }, - "following_count": { - "type": "integer" - }, - "full_name": { + } + }, + "type": "object" + }, + "opensea.TraitOfferAggregate": { + "properties": { + "id": { "type": "string" }, - "is_verified_merchant": { - "type": "boolean" + "price": { + "$ref": "#/definitions/opensea.Price" }, - "pin_count": { + "total_offers": { + "example": 1, "type": "integer" }, - "username": { + "trait_type": { + "example": "Fur", "type": "string" }, - "website_url": { + "trait_value": { + "example": "Solid Gold", "type": "string" } }, "type": "object" }, - "pinterest.UserBoardsResponse": { + "opensea.TraitValue": { "properties": { - "boards": { - "items": { - "$ref": "#/definitions/pinterest.Board" - }, - "type": "array" + "count": { + "example": 1170, + "type": "integer" }, - "username": { + "value": { + "example": "Gray", "type": "string" } }, "type": "object" }, - "pinterest.UserPinsResponse": { + "opensea.WindowStats": { "properties": { - "pins": { - "items": { - "$ref": "#/definitions/pinterest.PinSummary" - }, - "type": "array" + "floor_price_change": { + "example": 0.0065, + "type": "number" }, - "username": { - "type": "string" + "sales": { + "example": 42, + "type": "integer" + }, + "volume_native": { + "example": 318.4, + "type": "number" + }, + "volume_usd": { + "example": 782344.1, + "type": "number" } }, "type": "object" }, - "pinterest.boardResponseDoc": { + "opensea.activityResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pinterest.BoardResponse" + "$ref": "#/definitions/opensea.ActivityResponse" }, "msg": { "example": "OK", @@ -114394,14 +116702,14 @@ }, "type": "object" }, - "pinterest.categoriesResponseDoc": { + "opensea.categoriesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pinterest.CategoriesResponse" + "$ref": "#/definitions/opensea.CategoriesResponse" }, "msg": { "example": "OK", @@ -114410,14 +116718,14 @@ }, "type": "object" }, - "pinterest.ideaResponseDoc": { + "opensea.chainsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pinterest.IdeaResponse" + "$ref": "#/definitions/opensea.ChainsResponse" }, "msg": { "example": "OK", @@ -114426,14 +116734,14 @@ }, "type": "object" }, - "pinterest.pinResponseDoc": { + "opensea.chartResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pinterest.PinDetail" + "$ref": "#/definitions/opensea.ChartResponse" }, "msg": { "example": "OK", @@ -114442,14 +116750,14 @@ }, "type": "object" }, - "pinterest.searchResponseDoc": { + "opensea.collectionHoldersResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pinterest.SearchResponse" + "$ref": "#/definitions/opensea.CollectionHoldersResponse" }, "msg": { "example": "OK", @@ -114458,14 +116766,14 @@ }, "type": "object" }, - "pinterest.userBoardsResponseDoc": { + "opensea.collectionItemsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pinterest.UserBoardsResponse" + "$ref": "#/definitions/opensea.CollectionItemsResponse" }, "msg": { "example": "OK", @@ -114474,14 +116782,14 @@ }, "type": "object" }, - "pinterest.userPinsResponseDoc": { + "opensea.collectionOffersResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pinterest.UserPinsResponse" + "$ref": "#/definitions/opensea.CollectionOffersResponse" }, "msg": { "example": "OK", @@ -114490,14 +116798,14 @@ }, "type": "object" }, - "pinterest.userResponseDoc": { + "opensea.collectionResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pinterest.User" + "$ref": "#/definitions/opensea.Collection" }, "msg": { "example": "OK", @@ -114506,116 +116814,94 @@ }, "type": "object" }, - "pitchbook.DataTable": { + "opensea.collectionSearchResponseDoc": { "properties": { - "columns": { - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "example": "Investors", - "type": "string" - }, - "row_ids": { - "items": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" }, - "rows": { - "items": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": "array" + "data": { + "$ref": "#/definitions/opensea.CollectionSearchResponse" }, - "total": { - "example": 23, - "type": "integer" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "pitchbook.FAQ": { + "opensea.collectionShelfResponseDoc": { "properties": { - "answer": { - "example": "Thinking Machines Lab was founded in 2024.", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "question": { - "example": "When was Thinking Machines Lab founded?", + "data": { + "$ref": "#/definitions/opensea.CollectionShelfResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "pitchbook.ProfileResponse": { + "opensea.collectionTopSalesResponseDoc": { "properties": { - "contact": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "description": { - "type": "string" - }, - "faqs": { - "items": { - "$ref": "#/definitions/pitchbook.FAQ" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" }, - "fetched_at": { - "example": "2026-07-08T20:00:00Z", - "type": "string" + "data": { + "$ref": "#/definitions/opensea.CollectionTopSalesResponse" }, - "id": { - "example": "752821-12", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "opensea.collectionTraitOffersResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "kind": { - "example": "company", - "type": "string" + "data": { + "$ref": "#/definitions/opensea.CollectionTraitOffersResponse" }, - "name": { - "example": "Thinking Machines Lab", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "opensea.collectionTraitsResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "overview": { - "additionalProperties": { - "type": "string" - }, - "type": "object" + "data": { + "$ref": "#/definitions/opensea.CollectionTraitsResponse" }, - "source_url": { - "example": "https://pitchbook.com/profiles/company/752821-12", + "msg": { + "example": "OK", "type": "string" - }, - "tables": { - "items": { - "$ref": "#/definitions/pitchbook.DataTable" - }, - "type": "array" } }, "type": "object" }, - "pitchbook.advisorResponseDoc": { + "opensea.collectionsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pitchbook.ProfileResponse" + "$ref": "#/definitions/opensea.CollectionsResponse" }, "msg": { "example": "OK", @@ -114624,14 +116910,14 @@ }, "type": "object" }, - "pitchbook.companyResponseDoc": { + "opensea.depthResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pitchbook.ProfileResponse" + "$ref": "#/definitions/opensea.DepthResponse" }, "msg": { "example": "OK", @@ -114640,14 +116926,14 @@ }, "type": "object" }, - "pitchbook.fundResponseDoc": { + "opensea.dropsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pitchbook.ProfileResponse" + "$ref": "#/definitions/opensea.DropsResponse" }, "msg": { "example": "OK", @@ -114656,14 +116942,14 @@ }, "type": "object" }, - "pitchbook.investorResponseDoc": { + "opensea.itemOrdersResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pitchbook.ProfileResponse" + "$ref": "#/definitions/opensea.ItemOrdersResponse" }, "msg": { "example": "OK", @@ -114672,14 +116958,14 @@ }, "type": "object" }, - "pitchbook.limitedPartnerResponseDoc": { + "opensea.itemOwnersResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pitchbook.ProfileResponse" + "$ref": "#/definitions/opensea.ItemOwnersResponse" }, "msg": { "example": "OK", @@ -114688,6413 +116974,6331 @@ }, "type": "object" }, - "pizzahut.Address": { + "opensea.itemResponseDoc": { "properties": { - "address1": { - "example": "932 8th Ave", - "type": "string" - }, - "address2": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "city": { - "example": "New York", - "type": "string" + "data": { + "$ref": "#/definitions/opensea.Item" }, - "country_code": { - "example": "US", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "opensea.itemSearchResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "latitude": { - "example": 40.7655, - "type": "number" - }, - "longitude": { - "example": -73.9835, - "type": "number" + "data": { + "$ref": "#/definitions/opensea.ItemSearchResponse" }, - "phone": { - "example": "+19296452154", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "opensea.itemsShelfResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "postal_code": { - "example": "10019", - "type": "string" + "data": { + "$ref": "#/definitions/opensea.CollectionItemsShelfResponse" }, - "state": { - "example": "NY", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "pizzahut.BundleChoice": { + "opensea.profileCollectionsResponseDoc": { "properties": { - "choice_code": { - "example": "748", - "type": "string" - }, - "max_allowed_selections": { - "example": 1, + "code": { + "example": 200, "type": "integer" }, - "min_allowed_selections": { - "example": 1, - "type": "integer" + "data": { + "$ref": "#/definitions/opensea.ProfileCollectionsResponse" }, - "name": { - "example": "1st Pizza", + "msg": { + "example": "OK", "type": "string" - }, - "variants": { - "items": { - "$ref": "#/definitions/pizzahut.BundleChoiceVariant" - }, - "type": "array" } }, "type": "object" }, - "pizzahut.BundleChoiceVariant": { + "opensea.profileItemsResponseDoc": { "properties": { - "name": { - "example": "Medium Hand-Tossed Create Your Own 1-Top Pizza", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "upcharge": { - "$ref": "#/definitions/pizzahut.Money" + "data": { + "$ref": "#/definitions/opensea.ProfileItemsResponse" }, - "variant_code": { - "example": "variant_CLSS001_010BCYO1T_SIZE050M_BASE020H", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "pizzahut.BundleChoicesResponse": { + "opensea.profileResponseDoc": { "properties": { - "bundle_code": { - "example": "MEAL501BD", - "type": "string" - }, - "channel": { - "example": "WEB", - "type": "string" - }, - "choice_count": { - "example": 4, + "code": { + "example": 200, "type": "integer" }, - "choices": { - "items": { - "$ref": "#/definitions/pizzahut.BundleChoice" - }, - "type": "array" + "data": { + "$ref": "#/definitions/opensea.Profile" }, - "description": { - "example": "All your faves - 2 medium 1-topping pizzas, 8 boneless wings, and 5 breadsticks!", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "opensea.rankingsResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "fetched_at": { - "type": "string" + "data": { + "$ref": "#/definitions/opensea.RankingsResponse" }, - "name": { - "example": "Big Dinner Box", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "opensea.socialProofResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "price": { - "$ref": "#/definitions/pizzahut.Money" - }, - "source_url": { - "type": "string" + "data": { + "$ref": "#/definitions/opensea.SocialProofResponse" }, - "store_number": { - "example": "040937", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "pizzahut.DeliveryEstimateResponse": { + "opentable.Cuisine": { "properties": { - "delivery_provider": { - "example": "INTERNAL", + "id": { "type": "string" }, - "dropoff_at": { + "name": { + "example": "Steakhouse", "type": "string" }, - "fee": { - "allOf": [ - { - "$ref": "#/definitions/pizzahut.Money" - } - ], - "description": "Fee is the total delivery fee; Fees breaks it down by line item." + "primary": { + "type": "boolean" + } + }, + "type": "object" + }, + "opentable.Menu": { + "properties": { + "currency": { + "type": "string" }, - "fees": { + "sections": { "items": { - "$ref": "#/definitions/pizzahut.DeliveryFeeLine" + "$ref": "#/definitions/opentable.MenuSection" }, "type": "array" }, - "fetched_at": { - "type": "string" - }, - "pickup_at": { - "type": "string" - }, - "reason": { - "example": "The requested StoreDeliveryProvider has not be enabled at this store", - "type": "string" - }, - "serviceable": { - "description": "Serviceable is true only when the upstream returned a real estimate.\nA false value with Reason populated covers every other case this\nfamily has seen live: the provider not enabled at this store\n(confirmed live for DOORDASH against a real INTERNAL-only store) or\nthe upstream delivery marketplace itself reporting an error --\nPizza Hut's schema represents these as distinct typed results, not\none boolean. See this type's own doc comment for a caveat about\nwhat Serviceable:true does and does not confirm for INTERNAL.", - "example": true, - "type": "boolean" - }, - "source_url": { - "type": "string" - }, - "store_number": { - "example": "040937", + "title": { "type": "string" } }, "type": "object" }, - "pizzahut.DeliveryFeeLine": { + "opentable.MenuItem": { "properties": { - "amount": { - "$ref": "#/definitions/pizzahut.Money" + "description": { + "type": "string" }, - "name": { - "example": "Delivery fee", + "price": { "type": "string" }, - "type": { - "example": "DELIVERY_FEE", + "title": { "type": "string" } }, "type": "object" }, - "pizzahut.DeliveryProvider": { + "opentable.MenuSection": { "properties": { - "enabled": { - "example": true, - "type": "boolean" + "items": { + "items": { + "$ref": "#/definitions/opentable.MenuItem" + }, + "type": "array" }, - "provider": { - "example": "INTERNAL", + "title": { "type": "string" } }, "type": "object" }, - "pizzahut.MenuCategory": { + "opentable.MenusResponse": { "properties": { - "category_code": { - "example": "pizza", - "type": "string" - }, - "description": { - "type": "string" - }, - "items": { + "menus": { "items": { - "$ref": "#/definitions/pizzahut.MenuItem" + "$ref": "#/definitions/opentable.Menu" }, "type": "array" }, - "name": { - "example": "Pizza", + "restaurant_id": { "type": "string" } }, "type": "object" }, - "pizzahut.MenuItem": { + "opentable.PriceBand": { "properties": { - "available": { - "description": "Available is false when this item (or, for a product, every one of\nits variants at once) is currently blacked out -- a real,\nlive-confirmed \"temporarily unavailable\"/\"sold out\" signal (a\ndessert item was found blacked out at a real store, 2026-09-06),\ndistinct from an item genuinely being removed from the menu (which\nsimply would not appear here at all). Check a product's own\nVariants[].Available too -- a product itself can be orderable while\none specific size/style variant is blacked out, and vice versa.", - "example": true, - "type": "boolean" - }, - "code": { - "example": "CLSS001P|PROD220P", + "band": { + "example": "3", "type": "string" }, - "description": { + "label": { + "example": "$31 to $50", "type": "string" - }, - "image_url": { + } + }, + "type": "object" + }, + "opentable.RestaurantResponse": { + "properties": { + "availability_date_time": { + "description": "AvailabilityDateTime echoes the DateTime the Timeslots below were\ncomputed for (either the caller's or the now-default GetRestaurant\napplies -- see its doc comment).", "type": "string" }, - "name": { - "example": "Pepperoni Pizza", + "city": { "type": "string" }, - "price": { - "$ref": "#/definitions/pizzahut.Money" - }, - "type": { - "example": "product", + "country": { "type": "string" }, - "variant_code": { - "description": "VariantCode is the specific priced variant this item's Price\nreflects (present for type=product, whose price comes from its\ndefault variant).", - "example": "variant_CLSS001_220P_SIZE060L_BASE020H", + "country_code": { "type": "string" }, - "variants": { - "description": "Variants lists every other priced size/crust/style variant this\nproduct item offers beyond its default (type=product only). Empty\nwhen the product has no additional variants beyond the default, or\nfor bundle/variant items.", - "items": { - "$ref": "#/definitions/pizzahut.MenuVariant" - }, - "type": "array" - } - }, - "type": "object" - }, - "pizzahut.MenuResponse": { - "properties": { - "categories": { + "cuisines": { "items": { - "$ref": "#/definitions/pizzahut.MenuCategory" + "$ref": "#/definitions/opentable.Cuisine" }, "type": "array" }, - "channel": { - "example": "WEB", - "type": "string" - }, - "currency": { - "example": "USD", + "currency_code": { "type": "string" }, - "fetched_at": { + "description": { "type": "string" }, - "item_count": { - "description": "ItemCount counts only items reachable through Categories, matching\nthis field's original meaning -- it does not include\nUncategorizedItems.", - "example": 120, - "type": "integer" - }, - "menu_id": { - "example": "22590d80-9482-4f7b-9594-d7ba2885b928", + "dining_style": { "type": "string" }, - "source_url": { + "dress_code": { "type": "string" }, - "store_number": { - "example": "040937", + "email": { "type": "string" }, - "uncategorized_items": { - "description": "UncategorizedItems lists real, separately-priced products and bundles\nthis restaurant's menu carries that are not linked to any category --\nconfirmed live 2026-09-06 (coverage-expansion round 2): Pizza Hut's\n`Menu.products`/`Menu.bundles` support a `categorized: false` filter,\nand at least one store sampled had 9 such products (e.g. a $0.99\n\"Ranch Dip Cup\", \"Garlic Dip Cup\") that Categories' own category walk\nnever surfaces at all -- a real gap in the prior category-walk-only\napproach, not a parser omission. A platform-wide placeholder product\nnamed \"Reserved\" (price $0.00) appears in this list at every store\nsampled; it is included as upstream returns it rather than filtered,\nsince this repo does not invent filtering heuristics without a\nconfirmed upstream signal to key on. Empty when every product/bundle\nis reachable through Categories (no uncategorized bundle has been\nobserved on any store sampled).", + "features": { "items": { - "$ref": "#/definitions/pizzahut.MenuItem" + "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "pizzahut.MenuVariant": { - "properties": { - "available": { - "description": "Available is false when this specific variant is currently blacked\nout (temporarily unavailable) -- confirmed live 2026-09-06 that this\ngenuinely varies independently per variant, not just per product.", - "example": true, - "type": "boolean" }, - "name": { - "example": "Large Original Stuffed Crust® Pepperoni Pizza", + "hours": { "type": "string" }, - "price": { - "$ref": "#/definitions/pizzahut.Money" - }, - "variant_code": { - "example": "variant_CLSS001_220P_SIZE060L_BASE431S", + "id": { "type": "string" - } - }, - "type": "object" - }, - "pizzahut.Modifier": { - "properties": { - "modifier_code": { - "example": "CLSS001P|TOPP012P", + }, + "latitude": { + "type": "number" + }, + "line1": { "type": "string" }, - "name": { - "example": "Pepperoni", + "line2": { "type": "string" }, - "weights": { - "items": { - "$ref": "#/definitions/pizzahut.ModifierWeight" - }, - "type": "array" - } - }, - "type": "object" - }, - "pizzahut.ModifierSlot": { - "properties": { - "max_allowed_selections": { - "example": 5, - "type": "integer" + "longitude": { + "type": "number" }, - "min_allowed_selections": { - "example": 0, + "max_advance_days": { "type": "integer" }, - "modifiers": { - "items": { - "$ref": "#/definitions/pizzahut.Modifier" - }, - "type": "array" + "max_party_size": { + "type": "integer" }, "name": { - "example": "Pizza Toppings", "type": "string" }, - "slot_code": { - "example": "slot_pizza_toppings", + "phone_number": { "type": "string" - } - }, - "type": "object" - }, - "pizzahut.ModifierWeight": { - "properties": { - "modifier_weight_code": { - "example": "CLSS001P|TOPP200XC", + }, + "photos_count": { + "type": "integer" + }, + "postal_code": { "type": "string" }, - "name": { - "example": "Extra Cheese", + "price_band": { + "$ref": "#/definitions/opentable.PriceBand" + }, + "reviews": { + "$ref": "#/definitions/opentable.ReviewSummary" + }, + "state": { "type": "string" }, - "price": { - "$ref": "#/definitions/pizzahut.Money" + "timeslots": { + "items": { + "$ref": "#/definitions/opentable.Timeslot" + }, + "type": "array" + }, + "website": { + "type": "string" } }, "type": "object" }, - "pizzahut.ModifiersResponse": { + "opentable.Review": { "properties": { - "channel": { - "example": "WEB", + "author": { "type": "string" }, - "fetched_at": { + "author_metro": { "type": "string" }, - "name": { - "example": "Large Hand-Tossed Create Your Own 1-Top Pizza", + "id": { "type": "string" }, - "price": { - "$ref": "#/definitions/pizzahut.Money" - }, - "slot_count": { - "example": 6, - "type": "integer" + "posted_date": { + "type": "string" }, - "slots": { - "items": { - "$ref": "#/definitions/pizzahut.ModifierSlot" - }, - "type": "array" + "recommended": { + "type": "boolean" }, - "source_url": { + "reservation_date": { "type": "string" }, - "store_number": { - "example": "040937", - "type": "string" + "statistics": { + "$ref": "#/definitions/opentable.ReviewStatistics" }, - "variant_code": { - "example": "variant_CLSS001_010BCYO1T_SIZE060L_BASE020H", + "text": { "type": "string" } }, "type": "object" }, - "pizzahut.Money": { + "opentable.ReviewStatistics": { "properties": { - "amount": { - "example": 20.99, + "ambience": { "type": "number" }, - "amount_cents": { - "example": 2099, - "type": "integer" + "food": { + "type": "number" }, - "currency_code": { - "example": "USD", - "type": "string" + "noise": { + "type": "number" + }, + "overall_rating": { + "type": "number" + }, + "service": { + "type": "number" + }, + "value": { + "type": "number" } }, "type": "object" }, - "pizzahut.OccasionHours": { + "opentable.ReviewSummary": { "properties": { - "allow_tip": { - "example": true, - "type": "boolean" + "ambience": { + "type": "number" }, - "enabled": { - "example": true, - "type": "boolean" + "count": { + "type": "integer" }, - "max_order_amount": { - "$ref": "#/definitions/pizzahut.Money" + "food": { + "type": "number" }, - "min_order_amount": { - "$ref": "#/definitions/pizzahut.Money" + "noise": { + "type": "number" }, - "occasion": { - "example": "CARRYOUT", - "type": "string" + "overall_rating": { + "example": 4.8, + "type": "number" }, - "payment_types": { - "items": { - "$ref": "#/definitions/pizzahut.PaymentType" - }, - "type": "array" + "review_count": { + "type": "integer" }, - "windows": { - "items": { - "$ref": "#/definitions/pizzahut.TimeWindow" - }, - "type": "array" + "service": { + "type": "number" + }, + "value": { + "type": "number" } }, "type": "object" }, - "pizzahut.PaymentType": { + "opentable.ReviewsResponse": { "properties": { - "name": { - "example": "APPLEPAY", - "type": "string" + "page": { + "type": "integer" }, - "type": { - "example": "CARD", + "restaurant_id": { "type": "string" + }, + "reviews": { + "items": { + "$ref": "#/definitions/opentable.Review" + }, + "type": "array" } }, "type": "object" }, - "pizzahut.Store": { + "opentable.SearchResponse": { "properties": { - "accepting_online_orders": { - "example": true, - "type": "boolean" - }, - "address": { - "$ref": "#/definitions/pizzahut.Address" - }, - "archived": { - "example": false, - "type": "boolean" - }, - "delivery_providers": { + "results": { "items": { - "$ref": "#/definitions/pizzahut.DeliveryProvider" + "$ref": "#/definitions/opentable.SearchResult" }, "type": "array" }, - "name": { - "example": "040937", - "type": "string" - }, - "store_number": { - "example": "040937", - "type": "string" - }, - "timezone": { - "example": "America/New_York", + "term": { "type": "string" } }, "type": "object" }, - "pizzahut.StoreResponse": { + "opentable.SearchResult": { "properties": { - "accepting_online_orders": { - "example": true, - "type": "boolean" + "availability_date_time": { + "description": "AvailabilityDateTime/Timeslots mirror RestaurantResponse's inline\navailability -- search returns the same nested shape per result.", + "type": "string" }, - "address": { - "$ref": "#/definitions/pizzahut.Address" + "city": { + "type": "string" }, - "archived": { - "example": false, - "type": "boolean" + "country": { + "type": "string" }, - "delivery_providers": { - "items": { - "$ref": "#/definitions/pizzahut.DeliveryProvider" - }, - "type": "array" + "description": { + "type": "string" }, - "fetched_at": { + "id": { "type": "string" }, - "hours": { - "description": "Hours is this restaurant's recurring open windows per order channel\n(occasion) -- CARRYOUT, DELIVERY, DINE_IN, DRIVE_THRU,\nCATERING_CARRYOUT -- plus each occasion's ordering constraints\n(minimum/maximum order amount, whether tipping is offered, accepted\npayment methods; see OccasionHours). A restaurant that does not offer\na given occasion at all omits it from this list. Every real store\nsampled during this family's builds only offers CARRYOUT and\nDELIVERY; DINE_IN/DRIVE_THRU/CATERING_CARRYOUT are schema-valid but\nhave not been observed live.", - "items": { - "$ref": "#/definitions/pizzahut.OccasionHours" - }, - "type": "array" + "latitude": { + "type": "number" }, - "name": { - "example": "040937", + "line1": { "type": "string" }, - "source_url": { + "line2": { "type": "string" }, - "store_number": { - "example": "040937", - "type": "string" + "longitude": { + "type": "number" }, - "timezone": { - "example": "America/New_York", + "name": { "type": "string" - } - }, - "type": "object" - }, - "pizzahut.StoresResponse": { - "properties": { - "count": { - "example": 5, - "type": "integer" }, - "fetched_at": { + "postal_code": { "type": "string" }, - "has_more": { - "example": false, - "type": "boolean" - }, - "source_url": { + "state": { "type": "string" }, - "stores": { + "timeslots": { "items": { - "$ref": "#/definitions/pizzahut.Store" + "$ref": "#/definitions/opentable.Timeslot" }, "type": "array" - }, - "total_count": { - "description": "TotalCount is how many restaurants matched upstream; it can exceed\nCount when more results exist than max_results asked for.", - "example": 9, - "type": "integer" } }, "type": "object" }, - "pizzahut.TimeWindow": { + "opentable.Timeslot": { "properties": { - "blackout": { - "example": false, + "available": { "type": "boolean" }, - "days": { - "example": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7 - ], - "items": { - "type": "integer" - }, - "type": "array" - }, - "duration": { - "example": "16:00:00", + "date_time": { + "example": "2026-08-03T19:00", "type": "string" }, - "start_time": { - "example": "11:00:00", - "type": "string" - } - }, - "type": "object" - }, - "pizzahut.bundleChoicesResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "points": { "type": "integer" }, - "data": { - "$ref": "#/definitions/pizzahut.BundleChoicesResponse" - }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "pizzahut.deliveryEstimateResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "price_amount": { "type": "integer" }, - "data": { - "$ref": "#/definitions/pizzahut.DeliveryEstimateResponse" + "redemption_tier": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "token": { + "description": "Token is the upstream booking token for this slot. It is opaque and\nonly meaningful back to OpenTable's own booking flow -- this service\ndoes not implement booking, only discovery.", + "type": "string" + }, + "type": { + "example": "Standard", + "type": "string" } }, "type": "object" }, - "pizzahut.menuResponseDoc": { + "opentable.menusResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pizzahut.MenuResponse" + "$ref": "#/definitions/opentable.MenusResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "pizzahut.modifiersResponseDoc": { + "opentable.restaurantResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pizzahut.ModifiersResponse" + "$ref": "#/definitions/opentable.RestaurantResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "pizzahut.storeResponseDoc": { + "opentable.reviewsResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pizzahut.StoreResponse" + "$ref": "#/definitions/opentable.ReviewsResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "pizzahut.storesResponseDoc": { + "opentable.searchResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pizzahut.StoresResponse" + "$ref": "#/definitions/opentable.SearchResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "playstation.AddOn": { + "otto.CategoriesResponse": { "properties": { - "classification": { - "type": "string" + "categories": { + "items": { + "$ref": "#/definitions/otto.Category" + }, + "type": "array" }, - "name": { - "type": "string" + "count": { + "type": "integer" }, - "price": { - "$ref": "#/definitions/playstation.DetailPrice" + "fetched_at": { + "type": "string" }, - "product_id": { + "source_url": { "type": "string" } }, "type": "object" }, - "playstation.CollectionLink": { + "otto.Category": { "properties": { - "category_id": { - "type": "string" - }, - "link_type": { + "name": { "type": "string" }, - "name": { + "url": { "type": "string" } }, "type": "object" }, - "playstation.ConceptDetail": { + "otto.Product": { "properties": { - "add_ons": { - "items": { - "$ref": "#/definitions/playstation.AddOn" - }, - "type": "array" - }, - "content_rating": { - "$ref": "#/definitions/playstation.ContentRating" - }, - "default_product_id": { - "type": "string" - }, - "description": { + "brand": { "type": "string" }, - "editions": { - "items": { - "$ref": "#/definitions/playstation.Edition" - }, - "type": "array" - }, - "genres": { + "colors": { "items": { "type": "string" }, "type": "array" }, - "id": { - "type": "string" - }, - "invariant_name": { + "currency": { "type": "string" }, - "media": { + "images": { "items": { - "$ref": "#/definitions/playstation.Media" + "type": "string" }, "type": "array" }, "name": { "type": "string" }, - "platforms": { + "price": { + "type": "number" + }, + "sizes": { "items": { "type": "string" }, "type": "array" }, - "price": { - "$ref": "#/definitions/playstation.DetailPrice" - }, - "publisher": { - "type": "string" - }, - "release_date": { + "url": { "type": "string" + } + }, + "type": "object" + }, + "otto.ProductResponse": { + "properties": { + "browser_rendered": { + "type": "boolean" }, - "source_url": { + "fetched_at": { "type": "string" }, - "star_rating": { - "$ref": "#/definitions/playstation.StarRating" + "product": { + "$ref": "#/definitions/otto.Product" } }, "type": "object" }, - "playstation.ConceptReview": { + "otto.ProductSummary": { "properties": { - "author": { - "$ref": "#/definitions/playstation.ReviewAuthor" - }, - "comment": { + "brand": { "type": "string" }, - "edition_name": { + "currency": { "type": "string" }, - "helpful_count": { - "type": "integer" - }, - "id": { + "image": { "type": "string" }, - "is_spoiler": { - "type": "boolean" - }, - "last_updated": { + "name": { "type": "string" }, - "product_name": { + "price": { + "type": "number" + }, + "product_id": { "type": "string" }, - "rating": { - "type": "integer" + "url": { + "type": "string" }, - "title": { + "variation_id": { "type": "string" } }, "type": "object" }, - "playstation.ConceptReviewsResponse": { + "otto.SearchResponse": { "properties": { - "concept_id": { - "type": "string" - }, - "has_next_page": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "page": { - "type": "integer" - }, - "page_size": { + "count": { "type": "integer" }, - "rating": { - "type": "integer" + "fetched_at": { + "type": "string" }, - "returned": { + "offset": { "type": "integer" }, - "reviews": { + "products": { "items": { - "$ref": "#/definitions/playstation.ConceptReview" + "$ref": "#/definitions/otto.ProductSummary" }, "type": "array" }, - "sort": { + "query": { "type": "string" }, "source_url": { "type": "string" - }, - "star_rating": { - "$ref": "#/definitions/playstation.StarRating" - }, - "total_count": { - "type": "integer" } }, "type": "object" }, - "playstation.ContentRating": { + "otto.categoriesResponseDoc": { "properties": { - "authority": { - "type": "string" - }, - "description": { - "type": "string" - }, - "descriptors": { - "description": "Descriptors are the human-readable content/interactivity disclosures the\nrating carries (e.g. \"Blood\", \"Violence\", \"In-Game Purchases\", \"Users\nInteract\"), merged from the store's descriptors + interactiveElements lists.", - "items": { - "type": "string" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" }, - "name": { - "type": "string" + "data": { + "$ref": "#/definitions/otto.CategoriesResponse" }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "playstation.DetailPrice": { + "otto.productResponseDoc": { "properties": { - "applicability": { - "type": "string" - }, - "base_price": { - "type": "string" - }, - "base_price_value": { + "code": { + "example": 200, "type": "integer" }, - "currency_code": { - "type": "string" - }, - "discount_text": { - "type": "string" + "data": { + "$ref": "#/definitions/otto.ProductResponse" }, - "discounted_price": { + "msg": { + "example": "OK", "type": "string" - }, - "discounted_value": { + } + }, + "type": "object" + }, + "otto.searchResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "end_time": { - "type": "string" - }, - "is_exclusive": { - "type": "boolean" - }, - "is_free": { - "type": "boolean" - }, - "is_tied_to_subscription": { - "type": "boolean" - }, - "service_branding": { - "items": { - "type": "string" - }, - "type": "array" + "data": { + "$ref": "#/definitions/otto.SearchResponse" }, - "upsell_text": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "playstation.Edition": { + "pagesix.AuthorResponse": { "properties": { - "classification": { - "type": "string" - }, - "name": { - "type": "string" + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" }, - "platforms": { + "biography": { "items": { "type": "string" }, "type": "array" }, - "price": { - "$ref": "#/definitions/playstation.DetailPrice" - }, - "product_id": { - "type": "string" - } - }, - "type": "object" - }, - "playstation.Facet": { - "properties": { - "display_name": { + "image_url": { "type": "string" }, "name": { "type": "string" }, - "values": { + "social_links": { "items": { - "$ref": "#/definitions/playstation.FacetValue" + "$ref": "#/definitions/pagesix.AuthorSocialLink" }, "type": "array" + }, + "url": { + "type": "string" } }, "type": "object" }, - "playstation.FacetValue": { + "pagesix.AuthorSocialLink": { "properties": { - "count": { - "type": "integer" - }, - "display_name": { + "type": { "type": "string" }, - "key": { + "url": { "type": "string" } }, "type": "object" }, - "playstation.GridResponse": { + "pandamart.CategoriesResponse": { "properties": { - "count": { - "type": "integer" - }, - "facets": { - "items": { - "$ref": "#/definitions/playstation.Facet" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "items": { + "categories": { "items": { - "$ref": "#/definitions/playstation.StoreItem" + "$ref": "#/definitions/pandamart.Category" }, "type": "array" }, - "name": { + "code": { "type": "string" }, - "next_page": { - "type": "integer" - }, - "page_info": { - "$ref": "#/definitions/playstation.PageInfo" - }, - "source_url": { + "market": { "type": "string" } }, "type": "object" }, - "playstation.ListPrice": { + "pandamart.Category": { "properties": { - "base_price": { + "id": { "type": "string" }, - "discount_text": { + "image_url": { "type": "string" }, - "discounted_price": { + "name": { "type": "string" }, - "is_exclusive": { - "type": "boolean" - }, - "is_free": { - "type": "boolean" - }, - "is_tied_to_subscription": { - "type": "boolean" - }, - "service_branding": { - "items": { - "type": "string" - }, - "type": "array" + "product_count": { + "type": "integer" }, - "upsell_service_branding": { + "sub_categories": { "items": { - "type": "string" + "$ref": "#/definitions/pandamart.Category" }, "type": "array" - }, - "upsell_text": { - "type": "string" } }, "type": "object" }, - "playstation.Media": { + "pandamart.Chain": { "properties": { - "role": { - "type": "string" - }, - "type": { + "code": { "type": "string" }, - "url": { + "name": { "type": "string" } }, "type": "object" }, - "playstation.MerchResponse": { + "pandamart.Product": { "properties": { - "collections": { - "items": { - "$ref": "#/definitions/playstation.CollectionLink" - }, - "type": "array" - }, - "count": { - "type": "integer" + "description": { + "type": "string" }, - "items": { - "items": { - "$ref": "#/definitions/playstation.StoreItem" - }, - "type": "array" + "discount_badge": { + "type": "string" }, - "sections": { - "items": { - "$ref": "#/definitions/playstation.Section" - }, - "type": "array" + "id": { + "type": "string" }, - "source_url": { + "image_url": { "type": "string" - } - }, - "type": "object" - }, - "playstation.PageInfo": { - "properties": { - "is_last": { + }, + "is_available": { "type": "boolean" }, - "offset": { - "type": "integer" + "name": { + "type": "string" }, - "size": { - "type": "integer" + "original_price": { + "type": "number" }, - "total_count": { + "price": { + "type": "number" + }, + "sku": { + "type": "string" + }, + "stock_amount": { "type": "integer" } }, "type": "object" }, - "playstation.ProductDetail": { + "pandamart.ProductAttributes": { "properties": { - "classification": { - "type": "string" + "base_content_value": { + "type": "number" }, - "concept_id": { + "base_unit": { "type": "string" }, - "content_rating": { - "$ref": "#/definitions/playstation.ContentRating" - }, - "edition_name": { + "nutrition_grade": { "type": "string" }, - "genres": { - "items": { - "type": "string" - }, - "type": "array" + "price_per_base_unit": { + "type": "number" + } + }, + "type": "object" + }, + "pandamart.ProductDetailResponse": { + "properties": { + "attributes": { + "$ref": "#/definitions/pandamart.ProductAttributes" }, - "id": { + "category_id": { "type": "string" }, - "media": { - "items": { - "$ref": "#/definitions/playstation.Media" - }, - "type": "array" - }, - "name": { + "code": { "type": "string" }, - "np_title_id": { + "description": { "type": "string" }, - "platforms": { - "items": { - "type": "string" - }, - "type": "array" - }, - "price": { - "$ref": "#/definitions/playstation.DetailPrice" - }, - "publisher": { + "discount_badge": { "type": "string" }, - "release_date": { + "id": { "type": "string" }, - "screen_languages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "source_url": { + "image_url": { "type": "string" }, - "spoken_languages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "star_rating": { - "$ref": "#/definitions/playstation.StarRating" + "is_available": { + "type": "boolean" }, - "type": { + "market": { "type": "string" - } - }, - "type": "object" - }, - "playstation.ReviewAuthor": { - "properties": { - "avatar_url": { + }, + "name": { "type": "string" }, - "is_officially_verified": { - "type": "boolean" + "original_price": { + "type": "number" }, - "is_ps_plus_subscriber": { - "type": "boolean" + "price": { + "type": "number" }, - "online_id": { + "sku": { "type": "string" + }, + "stock_amount": { + "type": "integer" } }, "type": "object" }, - "playstation.SearchResponse": { + "pandamart.ProductShelf": { "properties": { - "count": { - "type": "integer" - }, "items": { "items": { - "$ref": "#/definitions/playstation.StoreItem" + "$ref": "#/definitions/pandamart.Product" }, "type": "array" }, - "next_page": { - "type": "integer" - }, - "page_info": { - "$ref": "#/definitions/playstation.PageInfo" - }, - "source_url": { - "type": "string" - }, - "term": { + "title": { "type": "string" } }, "type": "object" }, - "playstation.Section": { + "pandamart.ProductsResponse": { "properties": { - "count": { + "code": { + "type": "string" + }, + "item_count": { "type": "integer" }, - "id": { + "market": { "type": "string" }, - "items": { + "shelves": { "items": { - "$ref": "#/definitions/playstation.StoreItem" + "$ref": "#/definitions/pandamart.ProductShelf" }, "type": "array" - }, - "name": { - "type": "string" } }, "type": "object" }, - "playstation.StarRating": { + "pandamart.SearchResponse": { "properties": { - "average": { - "type": "number" + "available_count": { + "type": "integer" }, - "count": { + "market": { + "type": "string" + }, + "offset": { "type": "integer" }, - "distribution": { + "returned_count": { + "type": "integer" + }, + "stores": { "items": { - "$ref": "#/definitions/playstation.StarRatingCount" + "$ref": "#/definitions/pandamart.Store" }, "type": "array" } }, "type": "object" }, - "playstation.StarRatingCount": { + "pandamart.Store": { "properties": { - "percent": { - "type": "integer" + "address": { + "type": "string" }, - "stars": { + "budget": { "type": "integer" - } - }, - "type": "object" - }, - "playstation.StoreItem": { - "properties": { - "classification": { - "type": "string" }, - "id": { + "chain": { + "$ref": "#/definitions/pandamart.Chain" + }, + "city": { "type": "string" }, - "kind": { + "code": { "type": "string" }, - "media": { - "items": { - "$ref": "#/definitions/playstation.Media" - }, - "type": "array" + "distance_km": { + "type": "number" }, - "name": { + "has_discount": { + "type": "boolean" + }, + "hero_image_url": { "type": "string" }, - "np_title_id": { + "is_delivery_available": { + "type": "boolean" + }, + "is_pickup_available": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "minimum_delivery_fee": { + "type": "number" + }, + "minimum_delivery_time_minutes": { + "type": "number" + }, + "minimum_order_amount": { + "type": "number" + }, + "name": { "type": "string" }, - "platforms": { + "tags": { "items": { - "type": "string" + "$ref": "#/definitions/pandamart.Tag" }, "type": "array" }, - "price": { - "$ref": "#/definitions/playstation.ListPrice" + "timezone": { + "type": "string" + }, + "web_path": { + "type": "string" } }, "type": "object" }, - "playstation.SuggestItem": { + "pandamart.StoreResponse": { "properties": { - "classification": { + "address": { "type": "string" }, - "id": { + "budget": { + "type": "integer" + }, + "chain": { + "$ref": "#/definitions/pandamart.Chain" + }, + "city": { "type": "string" }, - "image": { - "$ref": "#/definitions/playstation.Media" + "code": { + "type": "string" }, - "name": { + "distance_km": { + "type": "number" + }, + "has_discount": { + "type": "boolean" + }, + "hero_image_url": { "type": "string" }, - "platforms": { - "items": { - "type": "string" - }, - "type": "array" + "is_delivery_available": { + "type": "boolean" }, - "price": { - "$ref": "#/definitions/playstation.SuggestPrice" + "is_pickup_available": { + "type": "boolean" }, - "publisher": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "market": { "type": "string" }, - "release_date": { + "minimum_delivery_fee": { + "type": "number" + }, + "minimum_delivery_time_minutes": { + "type": "number" + }, + "minimum_order_amount": { + "type": "number" + }, + "name": { "type": "string" }, - "short_name": { + "tags": { + "items": { + "$ref": "#/definitions/pandamart.Tag" + }, + "type": "array" + }, + "timezone": { "type": "string" }, - "store_url": { + "web_path": { "type": "string" } }, "type": "object" }, - "playstation.SuggestPrice": { + "pandamart.StoreSearchResponse": { "properties": { - "display": { + "code": { "type": "string" }, - "value": { + "has_more": { + "type": "boolean" + }, + "limit": { "type": "integer" - } - }, - "type": "object" - }, - "playstation.SuggestResponse": { - "properties": { - "cc": { + }, + "market": { "type": "string" }, - "items": { + "page": { + "type": "integer" + }, + "products": { "items": { - "$ref": "#/definitions/playstation.SuggestItem" + "$ref": "#/definitions/pandamart.Product" }, "type": "array" }, - "l": { - "type": "string" - }, - "source_url": { + "query": { "type": "string" }, - "term": { + "sort": { "type": "string" }, - "total": { + "total_products": { "type": "integer" } }, "type": "object" }, - "playstation.conceptResponseDoc": { + "pandamart.Tag": { "properties": { "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/playstation.ConceptDetail" + "type": "string" }, - "msg": { - "example": "OK", + "text": { "type": "string" } }, "type": "object" }, - "playstation.conceptReviewsResponseDoc": { + "pandamart.categoriesResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/playstation.ConceptReviewsResponse" + "$ref": "#/definitions/pandamart.CategoriesResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "playstation.gridResponseDoc": { + "pandamart.productDetailResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/playstation.GridResponse" + "$ref": "#/definitions/pandamart.ProductDetailResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "playstation.merchResponseDoc": { + "pandamart.productsResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/playstation.MerchResponse" + "$ref": "#/definitions/pandamart.ProductsResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "playstation.productResponseDoc": { + "pandamart.searchResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/playstation.ProductDetail" + "$ref": "#/definitions/pandamart.SearchResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "playstation.searchResponseDoc": { + "pandamart.storeResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/playstation.SearchResponse" + "$ref": "#/definitions/pandamart.StoreResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "playstation.suggestResponseDoc": { + "pandamart.storeSearchResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/playstation.SuggestResponse" + "$ref": "#/definitions/pandamart.StoreSearchResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "politico.ArticleResponse": { + "panera.AtWorkDropOff": { "properties": { - "authors": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "paragraphs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "published_at": { - "type": "string" - }, - "title": { + "cutoff_time": { + "example": "09:00", "type": "string" }, - "updated_at": { + "day_of_week": { + "example": "Monday", "type": "string" }, - "url": { + "drop_off_time": { + "example": "10:45", "type": "string" } }, "type": "object" }, - "politico.AuthorArticle": { + "panera.AtWorkLocation": { "properties": { - "published_at": { + "active": { + "example": true, + "type": "boolean" + }, + "city": { + "example": "Fenton", "type": "string" }, - "title": { + "contact_name": { "type": "string" }, - "url": { + "contact_phone": { "type": "string" - } - }, - "type": "object" - }, - "politico.AuthorResponse": { - "properties": { - "articles": { + }, + "country": { + "example": "US", + "type": "string" + }, + "drop_off_schedule": { "items": { - "$ref": "#/definitions/politico.AuthorArticle" + "$ref": "#/definitions/panera.AtWorkDropOff" }, "type": "array" }, - "bio": { + "id": { + "example": "P2U-000320", "type": "string" }, - "image_url": { - "type": "string" + "latitude": { + "example": 38.5401336, + "type": "number" }, - "job_title": { + "lead_time_minutes": { + "example": 90, + "type": "integer" + }, + "location_type": { + "example": "Office/Production Facility/Other", "type": "string" }, + "longitude": { + "example": -90.4772361, + "type": "number" + }, "name": { + "example": "Panera Bread Support Center", "type": "string" }, - "slug": { + "postal_code": { + "example": "63026", "type": "string" }, - "url": { + "service_cafe_id": { + "example": "600668", + "type": "string" + }, + "state": { + "example": "MO", + "type": "string" + }, + "street": { + "example": "1400 S Hwy Dr", "type": "string" } }, "type": "object" }, - "politico.CategoriesResponse": { + "panera.AtWorkLocationsResponse": { "properties": { - "groups": { + "count": { + "example": 2, + "type": "integer" + }, + "fetched_at": { + "type": "string" + }, + "locations": { "items": { - "$ref": "#/definitions/politico.CategoryGroup" + "$ref": "#/definitions/panera.AtWorkLocation" }, "type": "array" - } - }, - "type": "object" - }, - "politico.Category": { - "properties": { - "name": { - "type": "string" }, - "slug": { + "source_url": { "type": "string" } }, "type": "object" }, - "politico.CategoryGroup": { + "panera.CafeResponse": { "properties": { - "name": { + "available": { + "example": true, + "type": "boolean" + }, + "cafe_id": { + "example": 601447, + "type": "integer" + }, + "city": { + "example": "Addison", "type": "string" }, - "sections": { + "features": { + "description": "Features are Panera's own per-cafe amenity flags that are true for\nthis cafe (e.g. hasDriveThru, hasDelivery, hasCurbside, hasKiosk).", "items": { - "$ref": "#/definitions/politico.Category" + "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "politico.HeadlineItem": { - "properties": { - "author": { + }, + "fetched_at": { "type": "string" }, - "published_at": { + "fulfillment": { + "description": "Fulfillment is one entry per channel Panera publishes availability\nfor at this cafe.", + "items": { + "$ref": "#/definitions/panera.Fulfillment" + }, + "type": "array" + }, + "latitude": { + "example": 41.948594, + "type": "number" + }, + "longitude": { + "example": -88.026398, + "type": "number" + }, + "name": { + "example": "Addison - W Lake St east of Rohlwing Rd", "type": "string" }, - "summary": { + "open_now": { + "example": true, + "type": "boolean" + }, + "phone": { + "example": "630-250-4952", "type": "string" }, - "title": { + "postal_code": { + "example": "60101", "type": "string" }, - "url": { + "source_url": { "type": "string" - } - }, - "type": "object" - }, - "politico.HeadlinesResponse": { - "properties": { - "items": { + }, + "state": { + "example": "IL", + "type": "string" + }, + "street": { + "example": "1600 West Lake Street", + "type": "string" + }, + "timezone": { + "example": "America/Chicago", + "type": "string" + }, + "upcoming_hours": { + "description": "UpcomingHours is the published storefront schedule for the next\ncalendar week, with concrete dates rather than abstract weekdays.", "items": { - "$ref": "#/definitions/politico.HeadlineItem" + "$ref": "#/definitions/panera.UpcomingDay" }, "type": "array" } }, "type": "object" }, - "politico.TopicItem": { + "panera.CateringCategory": { "properties": { - "authors": { + "cat_id": { + "example": 181, + "type": "integer" + }, + "image_key": { + "type": "string" + }, + "item_ids": { + "description": "ItemIDs are the items under this category. Look them up in the\nresponse's top-level Items list.", "items": { - "type": "string" + "type": "integer" }, "type": "array" }, - "published_at": { - "type": "string" - }, - "title": { + "name": { + "example": "Sandwiches", "type": "string" }, - "url": { - "type": "string" + "sort_weight": { + "type": "integer" } }, "type": "object" }, - "politico.TopicResponse": { + "panera.CateringDeliveryInfoResponse": { "properties": { - "items": { + "available_dates": { "items": { - "$ref": "#/definitions/politico.TopicItem" + "$ref": "#/definitions/panera.CateringDeliverySlotDay" }, "type": "array" }, - "topic": { - "type": "string" - } - }, - "type": "object" - }, - "politico.articleResponseDoc": { - "properties": { - "code": { - "example": 200, + "cafe_id": { + "example": 606477, "type": "integer" }, - "data": { - "$ref": "#/definitions/politico.ArticleResponse" + "delivery_fee": { + "example": 15, + "type": "number" }, - "msg": { - "example": "OK", + "fetched_at": { "type": "string" - } - }, - "type": "object" - }, - "politico.authorResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/politico.AuthorResponse" + "hours": { + "items": { + "$ref": "#/definitions/panera.DayHours" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "politico.categoriesResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "lead_times": { + "items": { + "$ref": "#/definitions/panera.CateringDeliveryLeadTime" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/politico.CategoriesResponse" + "min_order_amount": { + "example": 50, + "type": "number" }, - "msg": { - "example": "OK", + "source_url": { "type": "string" } }, "type": "object" }, - "politico.headlinesResponseDoc": { + "panera.CateringDeliveryLeadTime": { "properties": { - "code": { - "example": 200, - "type": "integer" + "is_large_order_tier": { + "example": true, + "type": "boolean" }, - "data": { - "$ref": "#/definitions/politico.HeadlinesResponse" + "lead_time_minutes": { + "example": 240, + "type": "integer" }, - "msg": { - "example": "OK", - "type": "string" + "min_order_amount": { + "example": 750, + "type": "number" } }, "type": "object" }, - "politico.topicResponseDoc": { + "panera.CateringDeliverySlotDay": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/politico.TopicResponse" - }, - "msg": { - "example": "OK", + "date": { + "example": "2026-09-10", "type": "string" + }, + "ranges": { + "items": { + "$ref": "#/definitions/panera.HourRange" + }, + "type": "array" } }, "type": "object" }, - "polygon.AuthorResponse": { + "panera.CateringMenuItem": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" + "allergens": { + "$ref": "#/definitions/panera.MenuAllergens" }, - "biography": { + "customizable": { + "example": true, + "type": "boolean" + }, + "description": { "type": "string" }, - "image_url": { + "image_key": { "type": "string" }, + "in_stock": { + "description": "InStock reflects this cafe's live catering stockout feed for today's\nfulfillment date. false means Panera currently has this item\nunavailable to order for catering at this specific cafe.", + "example": true, + "type": "boolean" + }, + "item_id": { + "example": 647093, + "type": "integer" + }, "name": { + "example": "Ciabatta Sausage, Egg & Cheese Sandwich", "type": "string" }, - "social_links": { + "nutrients": { "items": { - "$ref": "#/definitions/polygon.AuthorSocialLink" + "$ref": "#/definitions/panera.MenuNutrient" }, "type": "array" }, - "title": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "polygon.AuthorSocialLink": { - "properties": { - "type": { + "portion": { + "example": "Individual", "type": "string" }, - "url": { + "price": { + "example": 10.99, + "type": "number" + }, + "product_type": { + "example": "SANDWICH", "type": "string" } }, "type": "object" }, - "polymarket.ActivityTradesResponse": { + "panera.CateringMenuResponse": { "properties": { - "event_id": { - "example": "101772", - "type": "string" - }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" - }, - "filter_amount": { - "example": "1", - "type": "string" - }, - "filter_type": { - "example": "CASH", - "type": "string" - }, - "limit": { - "example": 50, + "cafe_id": { + "example": 601447, "type": "integer" }, - "market": { - "example": "0x3f2604d62ac3ee496ffd6d30156f30663fbaf22097f17f09d7364c35db255d2b", - "type": "string" + "categories": { + "items": { + "$ref": "#/definitions/panera.CateringCategory" + }, + "type": "array" }, - "offset": { - "example": 0, + "count": { + "example": 257, "type": "integer" }, - "source_url": { - "example": "https://data-api.polymarket.com/trades?takerOnly=true&limit=50&offset=0&filterType=CASH&filterAmount=1", - "type": "string" - }, - "taker_only": { - "example": "true", + "fetched_at": { "type": "string" }, - "trades": { + "items": { "items": { - "$ref": "#/definitions/polymarket.TradeSummary" + "$ref": "#/definitions/panera.CateringMenuItem" }, "type": "array" - } - }, - "type": "object" - }, - "polymarket.BatchTokenMidpoint": { - "properties": { - "midpoint": { - "example": 0.285, - "type": "number" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "source_url": { "type": "string" } }, "type": "object" }, - "polymarket.BatchTokenMidpointsOption": { + "panera.DayHours": { "properties": { - "token_ids": { + "day_of_week": { + "example": "Monday", + "type": "string" + }, + "ranges": { "items": { - "type": "string" + "$ref": "#/definitions/panera.HourRange" }, "type": "array" } }, - "required": [ - "token_ids" - ], "type": "object" }, - "polymarket.BatchTokenMidpointsResponse": { + "panera.Fulfillment": { "properties": { - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" + "available": { + "example": true, + "type": "boolean" }, - "midpoints": { + "hours": { "items": { - "$ref": "#/definitions/polymarket.BatchTokenMidpoint" + "$ref": "#/definitions/panera.DayHours" }, "type": "array" }, - "missing": { - "items": { - "type": "string" - }, - "type": "array" + "lead_time_minutes": { + "example": 20, + "type": "integer" }, - "source_url": { - "example": "https://clob.polymarket.com/midpoints", - "type": "string" + "open_now": { + "example": true, + "type": "boolean" }, - "token_ids": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "polymarket.BatchTokenOrderBooksOption": { - "properties": { - "token_ids": { - "items": { - "type": "string" - }, - "type": "array" + "type": { + "example": "delivery", + "type": "string" } }, - "required": [ - "token_ids" - ], "type": "object" }, - "polymarket.BatchTokenOrderBooksResponse": { + "panera.GeocodeResponse": { "properties": { - "books": { - "items": { - "$ref": "#/definitions/polymarket.OrderBookSummary" - }, - "type": "array" + "address": { + "example": "Chicago, IL", + "type": "string" + }, + "count": { + "example": 1, + "type": "integer" }, "fetched_at": { - "example": "2026-06-07T11:00:00Z", "type": "string" }, - "missing": { + "results": { "items": { - "type": "string" + "$ref": "#/definitions/panera.GeocodeResult" }, "type": "array" }, "source_url": { - "example": "https://clob.polymarket.com/books", "type": "string" - }, - "token_ids": { - "items": { - "type": "string" - }, - "type": "array" } }, "type": "object" }, - "polymarket.BatchTokenPrice": { + "panera.GeocodeResult": { "properties": { - "buy_price": { - "example": 0.03, + "city": { + "example": "Chicago", + "type": "string" + }, + "country": { + "example": "US", + "type": "string" + }, + "formatted_address": { + "example": "Chicago, IL US", + "type": "string" + }, + "latitude": { + "example": 41.85003, "type": "number" }, - "sell_price": { - "example": 0.54, + "longitude": { + "example": -87.65005, "type": "number" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "resolved": { + "description": "Resolved is false when Panera could not geocode the address at all\n(an empty, malformed, or nonsense query).", + "example": true, + "type": "boolean" + }, + "state": { + "example": "IL", "type": "string" } }, "type": "object" }, - "polymarket.BatchTokenPricesOption": { + "panera.HourRange": { "properties": { - "side": { + "close": { + "example": "21:00", "type": "string" }, - "token_ids": { - "items": { - "type": "string" - }, - "type": "array" + "open": { + "example": "06:00", + "type": "string" } }, - "required": [ - "token_ids" - ], "type": "object" }, - "polymarket.BatchTokenPricesResponse": { + "panera.ItemDetailResponse": { "properties": { + "allergens": { + "$ref": "#/definitions/panera.MenuAllergens" + }, + "cafe_id": { + "example": 601447, + "type": "integer" + }, + "description": { + "type": "string" + }, "fetched_at": { - "example": "2026-06-07T11:00:00Z", "type": "string" }, - "missing": { + "ingredient_statement": { + "type": "string" + }, + "item_id": { + "example": 650115, + "type": "integer" + }, + "name": { + "example": "Almond Pastry", + "type": "string" + }, + "nutrients": { "items": { - "type": "string" + "$ref": "#/definitions/panera.MenuNutrient" }, "type": "array" }, - "prices": { + "sizes": { "items": { - "$ref": "#/definitions/polymarket.BatchTokenPrice" + "$ref": "#/definitions/panera.ItemDetailSize" }, "type": "array" }, - "side": { - "example": "buy", - "type": "string" - }, "source_url": { - "example": "https://clob.polymarket.com/prices", "type": "string" - }, - "token_ids": { - "items": { - "type": "string" - }, - "type": "array" } }, "type": "object" }, - "polymarket.BatchTokenSpread": { + "panera.ItemDetailSize": { "properties": { - "spread": { - "example": 0.51, + "calories": { + "example": 120, "type": "number" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "is_default": { + "example": true, + "type": "boolean" + }, + "item_id": { + "example": 646541, + "type": "integer" + }, + "name": { + "example": "Regular", "type": "string" + }, + "price": { + "example": 3.49, + "type": "number" } }, "type": "object" }, - "polymarket.BatchTokenSpreadsOption": { + "panera.ItemOption": { "properties": { - "token_ids": { + "allergens": { + "$ref": "#/definitions/panera.MenuAllergens" + }, + "default_qty": { + "example": 1, + "type": "integer" + }, + "image_key": { + "example": "pecans-whole-r", + "type": "string" + }, + "is_default": { + "example": true, + "type": "boolean" + }, + "item_id": { + "example": 4266, + "type": "integer" + }, + "variants": { "items": { - "type": "string" + "$ref": "#/definitions/panera.ItemOptionVariant" }, "type": "array" } }, - "required": [ - "token_ids" - ], "type": "object" }, - "polymarket.BatchTokenSpreadsResponse": { + "panera.ItemOptionGroup": { "properties": { - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" - }, - "missing": { - "items": { - "type": "string" - }, - "type": "array" + "group_id": { + "example": 1080, + "type": "integer" }, - "source_url": { - "example": "https://clob.polymarket.com/spreads", - "type": "string" + "max_allowed": { + "example": 5, + "type": "integer" }, - "spreads": { - "items": { - "$ref": "#/definitions/polymarket.BatchTokenSpread" - }, - "type": "array" + "min_allowed": { + "example": 0, + "type": "integer" }, - "token_ids": { + "options": { "items": { - "type": "string" + "$ref": "#/definitions/panera.ItemOption" }, "type": "array" } }, "type": "object" }, - "polymarket.ClobMarketResponse": { + "panera.ItemOptionVariant": { "properties": { - "condition_id": { - "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", - "type": "string" - }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" + "item_id": { + "example": 5741, + "type": "integer" }, - "market": { - "$ref": "#/definitions/polymarket.ClobMarketSummary" + "price": { + "example": 0.69, + "type": "number" }, - "source_url": { - "example": "https://clob.polymarket.com/markets/0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", + "variant_type": { + "example": "Light", "type": "string" } }, "type": "object" }, - "polymarket.ClobMarketSummary": { + "panera.ItemOptionsResponse": { "properties": { - "accepting_order_timestamp": { - "type": "string" - }, - "accepting_orders": { - "type": "boolean" - }, - "active": { - "type": "boolean" - }, - "archived": { - "type": "boolean" - }, - "closed": { - "type": "boolean" - }, - "condition_id": { - "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", - "type": "string" - }, - "description": { - "type": "string" - }, - "enable_order_book": { - "type": "boolean" + "cafe_id": { + "example": 601447, + "type": "integer" }, - "end_date": { - "example": "2026-06-08T00:00:00Z", + "fetched_at": { "type": "string" }, - "game_start_time": { - "example": "2026-06-07T20:30:00Z", - "type": "string" + "groups": { + "items": { + "$ref": "#/definitions/panera.ItemOptionGroup" + }, + "type": "array" }, - "icon_url": { - "type": "string" + "item_id": { + "example": 643423, + "type": "integer" }, - "image_url": { + "source_url": { "type": "string" - }, - "is_50_50_outcome": { - "type": "boolean" - }, - "maker_base_fee": { - "example": 1000, + } + }, + "type": "object" + }, + "panera.LocationCafe": { + "properties": { + "cafe_id": { + "example": 601447, "type": "integer" }, - "market_slug": { - "example": "codmw-par-tex-2026-06-07-game4", + "city": { + "example": "Addison", "type": "string" }, - "market_url": { - "example": "https://polymarket.com/event/codmw-par-tex-2026-06-07/codmw-par-tex-2026-06-07-game4", + "country_code": { + "example": "US", "type": "string" }, - "minimum_order_size": { - "example": 5, - "type": "number" + "features": { + "description": "Features are Panera's own per-cafe capability flags that are true for\nthis cafe (e.g. hasDriveThru, hasDelivery, hasCurbside, hasKiosk).", + "items": { + "type": "string" + }, + "type": "array" }, - "minimum_tick_size": { - "example": 0.01, + "latitude": { + "example": 41.948594, "type": "number" }, - "neg_risk": { - "type": "boolean" + "longitude": { + "example": -88.026398, + "type": "number" }, - "neg_risk_market_id": { + "name": { + "example": "Addison - W Lake St east of Rohlwing Rd", "type": "string" }, - "neg_risk_request_id": { + "phone": { + "example": "630-250-4952", "type": "string" }, - "notifications_enabled": { - "type": "boolean" - }, - "question": { - "example": "Call of Duty: Paris Gentle Mates vs OpTic Texas - Game 4 Winner", + "postal_code": { + "example": "60101", "type": "string" }, - "question_id": { - "example": "0xf693b08c99a00ca87098bc122ccc956434c2ac8720d8ed77e612d008cf33c2c1", + "state": { + "example": "IL", "type": "string" }, - "rewards": { - "$ref": "#/definitions/polymarket.ClobRewardsSummary" - }, - "seconds_delay": { + "street": { + "example": "1600 West Lake Street", + "type": "string" + } + }, + "type": "object" + }, + "panera.LocationCity": { + "properties": { + "cafe_count": { "example": 1, "type": "integer" }, - "tags": { + "cafes": { "items": { - "type": "string" + "$ref": "#/definitions/panera.LocationCafe" }, "type": "array" }, - "taker_base_fee": { - "example": 1000, + "city": { + "example": "Addison", + "type": "string" + } + }, + "type": "object" + }, + "panera.LocationsResponse": { + "properties": { + "cities": { + "description": "Cities lists every city in the requested state (or just the one\nmatching city, when both are given), each with its cafes. Populated\nonly when state is given.", + "items": { + "$ref": "#/definitions/panera.LocationCity" + }, + "type": "array" + }, + "city": { + "example": "Addison", + "type": "string" + }, + "count": { + "example": 50, "type": "integer" }, - "tokens": { + "fetched_at": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "state": { + "example": "IL", + "type": "string" + }, + "states": { + "description": "States lists every state Panera serves, with its cafe count. Populated\nonly when neither state nor city is given.", "items": { - "$ref": "#/definitions/polymarket.ClobTokenSummary" + "$ref": "#/definitions/panera.StateSummary" }, "type": "array" } }, "type": "object" }, - "polymarket.ClobRewardRate": { + "panera.MenuAllergenEntry": { "properties": { - "asset_address": { - "example": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + "id": { + "example": "TREENUTS", "type": "string" }, - "rewards_daily_rate": { - "example": 5, - "type": "number" + "name": { + "example": "Tree Nuts", + "type": "string" } }, "type": "object" }, - "polymarket.ClobRewardsSummary": { + "panera.MenuAllergens": { "properties": { - "max_spread": { - "example": 2.5, - "type": "number" - }, - "min_size": { - "example": 500, - "type": "number" + "contains": { + "items": { + "$ref": "#/definitions/panera.MenuAllergenEntry" + }, + "type": "array" }, - "rates": { + "may_contain": { "items": { - "$ref": "#/definitions/polymarket.ClobRewardRate" + "$ref": "#/definitions/panera.MenuAllergenEntry" }, "type": "array" } }, "type": "object" }, - "polymarket.ClobTokenSummary": { + "panera.MenuCategory": { "properties": { - "outcome": { - "example": "Paris Gentle Mates", - "type": "string" - }, - "price": { - "example": 0.285, - "type": "number" + "cat_id": { + "example": 20, + "type": "integer" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "image_key": { + "example": "panini-and-sandwiches", "type": "string" }, - "winner": { - "type": "boolean" - } - }, - "type": "object" - }, - "polymarket.EventDetailResponse": { - "properties": { - "event": { - "$ref": "#/definitions/polymarket.EventSummary" + "item_ids": { + "description": "ItemIDs are the items directly under this category. Look them up in\nthe response's top-level Items list.", + "items": { + "type": "integer" + }, + "type": "array" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", + "name": { + "example": "Sandwiches", "type": "string" }, - "slug": { - "example": "world-cup-winner", - "type": "string" + "sort_weight": { + "example": 6, + "type": "integer" }, - "source_url": { - "example": "https://gamma-api.polymarket.com/events/slug/world-cup-winner", - "type": "string" + "subcategories": { + "items": { + "$ref": "#/definitions/panera.MenuCategory" + }, + "type": "array" } }, "type": "object" }, - "polymarket.EventSummary": { + "panera.MenuItem": { "properties": { - "active": { - "type": "boolean" + "allergens": { + "$ref": "#/definitions/panera.MenuAllergens" }, - "closed": { + "customizable": { + "example": true, "type": "boolean" }, - "comment_count": { - "type": "integer" - }, "description": { "type": "string" }, - "end_date": { + "image_key": { + "example": "strawberry-poppyseed-salad-pantry-reno-half", "type": "string" }, - "featured": { + "in_stock": { + "description": "InStock reflects this cafe's live stockout feed. false means Panera\ncurrently has this item unavailable to order at this specific cafe.", + "example": true, "type": "boolean" }, - "icon_url": { - "type": "string" - }, - "id": { - "example": "545095", - "type": "string" + "item_id": { + "example": 1805, + "type": "integer" }, - "image_url": { + "name": { + "example": "Half Strawberry Poppyseed Salad", "type": "string" }, - "liquidity": { - "type": "number" - }, - "markets": { + "nutrients": { "items": { - "$ref": "#/definitions/polymarket.MarketSummary" + "$ref": "#/definitions/panera.MenuNutrient" }, "type": "array" }, - "markets_count": { - "example": 15, - "type": "integer" - }, - "open_interest": { + "price": { + "example": 6.19, "type": "number" }, - "restricted": { - "type": "boolean" - }, - "slug": { - "example": "bitcoin-above-on-june-7-2026", - "type": "string" - }, - "start_date": { + "product_type": { + "example": "SALAD", "type": "string" }, "tags": { + "description": "Tags are Panera's own merchandising badges for this item (e.g.\nNEW_PRODUCT, LIMITED_TIME, IN_SEASON, ITS_BACK, MY_PANERA_EXCLUSIVE).\nBest-effort: badges are fetched from a separate feed keyed to a\ndifferent id space than the rest of this catalog, so not every item\nresolves one -- see common.go's package doc.", "items": { - "$ref": "#/definitions/polymarket.TagSummary" + "type": "string" }, "type": "array" }, - "title": { - "example": "Bitcoin above ___ on June 7?", - "type": "string" - }, - "updated_at": { + "wellness": { + "description": "Wellness are Panera's own dietary labels (e.g. Vegan, Vegetarian,\nGluten Conscious).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "panera.MenuNutrient": { + "properties": { + "name": { + "example": "Calories", "type": "string" }, - "url": { - "example": "https://polymarket.com/event/bitcoin-above-on-june-7-2026", + "unit": { + "example": "Cal", "type": "string" }, - "volume": { - "type": "number" - }, - "volume_24h": { + "value": { + "example": 580, "type": "number" } }, "type": "object" }, - "polymarket.EventsResponse": { + "panera.MenuResponse": { "properties": { - "ascending": { - "type": "boolean" - }, - "closed": { - "example": "false", - "type": "string" + "cafe_id": { + "example": 601447, + "type": "integer" }, - "events": { + "categories": { "items": { - "$ref": "#/definitions/polymarket.EventSummary" + "$ref": "#/definitions/panera.MenuCategory" }, "type": "array" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" - }, - "limit": { - "example": 25, - "type": "integer" - }, - "offset": { - "example": 0, + "count": { + "example": 343, "type": "integer" }, - "order": { - "example": "volume24hr", + "fetched_at": { "type": "string" }, + "items": { + "items": { + "$ref": "#/definitions/panera.MenuItem" + }, + "type": "array" + }, "source_url": { - "example": "https://gamma-api.polymarket.com/events?limit=25", "type": "string" } }, "type": "object" }, - "polymarket.HomepageFeedResponse": { + "panera.QuantityRule": { "properties": { - "cursor": { - "type": "string" - }, - "events": { + "item_ids": { "items": { - "$ref": "#/definitions/polymarket.EventSummary" + "type": "integer" }, "type": "array" }, - "feed": { - "example": "politics", + "name": { + "example": "Souffle", "type": "string" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", + "scope": { + "example": "group", "type": "string" }, - "has_more": { - "type": "boolean" - }, - "limit": { - "example": 20, - "type": "integer" - }, - "markets": { + "windows": { "items": { - "$ref": "#/definitions/polymarket.MarketSummary" + "$ref": "#/definitions/panera.QuantityRuleWindow" }, "type": "array" + } + }, + "type": "object" + }, + "panera.QuantityRuleWindow": { + "properties": { + "from_offset_days": { + "example": 0, + "type": "integer" }, - "next_cursor": { - "type": "string" + "max_quantity": { + "example": 6, + "type": "integer" }, - "source_kind": { - "example": "events_keyset", + "to_offset_days": { + "example": 2, + "type": "integer" + } + }, + "type": "object" + }, + "panera.QuantityRulesResponse": { + "properties": { + "cafe_id": { + "example": 601447, + "type": "integer" + }, + "count": { + "example": 3, + "type": "integer" + }, + "fetched_at": { "type": "string" }, + "rules": { + "items": { + "$ref": "#/definitions/panera.QuantityRule" + }, + "type": "array" + }, "source_url": { - "example": "https://gamma-api.polymarket.com/events/keyset?limit=20&tag_slug=politics", "type": "string" } }, "type": "object" }, - "polymarket.LeaderboardEntry": { + "panera.RetiredProduct": { "properties": { - "profile_image_url": { - "type": "string" - }, - "profit_loss": { - "example": 322870.79601049656, - "type": "number" - }, - "proxy_wallet": { - "example": "0x4bff30af91642dc7d2b19a8664378fe55c45fc26", + "availability_stage": { + "description": "AvailabilityStage is Panera's own classification -- observed values\nare RETIRED (permanently discontinued) and SEASONAL (currently out of\nrotation, may return).", + "example": "SEASONAL", "type": "string" }, - "rank": { - "example": "1", + "description": { "type": "string" }, - "user_name": { - "example": "Sassy-Bucket", + "image_key": { "type": "string" }, - "verified_badge": { - "type": "boolean" + "item_id": { + "example": 650699, + "type": "integer" }, - "volume": { - "example": 770358.109102, - "type": "number" + "name": { + "example": "Italian Steak & Mozz", + "type": "string" }, - "x_username": { - "example": "polymarket", + "portion": { + "example": "Whole", "type": "string" } }, "type": "object" }, - "polymarket.LeaderboardResponse": { + "panera.RetiredProductsResponse": { "properties": { - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" + "cafe_id": { + "example": 601447, + "type": "integer" }, - "limit": { - "example": 20, + "count": { + "example": 332, "type": "integer" }, - "rows": { + "fetched_at": { + "type": "string" + }, + "items": { "items": { - "$ref": "#/definitions/polymarket.LeaderboardEntry" + "$ref": "#/definitions/panera.RetiredProduct" }, "type": "array" }, - "sort_by": { - "example": "profit", + "source_url": { "type": "string" + } + }, + "type": "object" + }, + "panera.StateSummary": { + "properties": { + "cafe_count": { + "example": 85, + "type": "integer" }, - "source_url": { - "example": "https://data-api.polymarket.com/v1/leaderboard?window=30d&sortBy=profit&limit=20", + "country_code": { + "example": "US", "type": "string" }, - "window": { - "example": "30d", + "state": { + "example": "IL", "type": "string" } }, "type": "object" }, - "polymarket.MacroDashboardResponse": { + "panera.TimeSlotWindow": { "properties": { - "cursor": { + "end_time": { + "example": "2026-09-10T11:15:00-05:00", "type": "string" }, - "events": { - "items": { - "$ref": "#/definitions/polymarket.EventSummary" - }, - "type": "array" - }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", + "start_time": { + "example": "2026-09-10T11:10:00-05:00", "type": "string" + } + }, + "type": "object" + }, + "panera.TimeSlotsResponse": { + "properties": { + "cafe_id": { + "example": 601447, + "type": "integer" }, - "has_more": { - "type": "boolean" + "close": { + "example": "21:00", + "type": "string" }, - "limit": { - "example": 20, + "count": { + "example": 178, "type": "integer" }, - "next_cursor": { + "date": { + "example": "2026-09-10", + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "open": { + "example": "06:00", "type": "string" }, "source_url": { - "example": "https://gamma-api.polymarket.com/events/keyset?tag_slug=macro&limit=20", "type": "string" + }, + "windows": { + "items": { + "$ref": "#/definitions/panera.TimeSlotWindow" + }, + "type": "array" } }, "type": "object" }, - "polymarket.MarketDetailResponse": { + "panera.UpcomingDay": { "properties": { - "condition_id": { - "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", + "close": { + "example": "21:00", "type": "string" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" + "closed": { + "example": false, + "type": "boolean" }, - "id": { - "example": "558934", + "date": { + "example": "2026-09-02", "type": "string" }, - "market": { - "$ref": "#/definitions/polymarket.MarketSummary" - }, - "slug": { - "example": "will-spain-win-the-2026-fifa-world-cup-963", + "day_of_week": { + "example": "Wednesday", "type": "string" }, - "source_url": { - "example": "https://gamma-api.polymarket.com/markets/558934", + "open": { + "example": "06:00", "type": "string" } }, "type": "object" }, - "polymarket.MarketLiquidityResponse": { + "panera.UpsellSuggestion": { "properties": { - "clob_market": { - "$ref": "#/definitions/polymarket.ClobMarketSummary" + "item_id": { + "example": 7392, + "type": "integer" }, - "condition_id": { - "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", + "item_name": { + "example": "Bacon Turkey Bravo Sandwich on Thin Tom Basil - Retail - Half Portion", "type": "string" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" + "suggestions": { + "items": { + "$ref": "#/definitions/panera.UpsellSuggestionItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "panera.UpsellSuggestionItem": { + "properties": { + "item_id": { + "example": 801215, + "type": "integer" }, - "id": { - "example": "558934", + "name": { + "example": "Extra Turkey", "type": "string" + } + }, + "type": "object" + }, + "panera.UpsellSuggestionsResponse": { + "properties": { + "cafe_id": { + "example": 601447, + "type": "integer" }, - "market": { - "$ref": "#/definitions/polymarket.MarketSummary" + "count": { + "example": 513, + "type": "integer" }, - "slug": { - "example": "will-spain-win-the-2026-fifa-world-cup-963", + "fetched_at": { "type": "string" }, - "source_urls": { + "items": { "items": { - "type": "string" + "$ref": "#/definitions/panera.UpsellSuggestion" }, "type": "array" }, - "tokens": { - "items": { - "$ref": "#/definitions/polymarket.MarketLiquidityTokenSummary" - }, - "type": "array" + "source_url": { + "type": "string" } }, "type": "object" }, - "polymarket.MarketLiquidityTokenSummary": { + "panera.atWorkLocationsResponseDoc": { "properties": { - "ask_depth": { - "example": 654.33, - "type": "number" - }, - "bid_depth": { - "example": 117.57, - "type": "number" - }, - "buy_price": { - "example": 0.16, - "type": "number" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "clob_price": { - "example": 0.161, - "type": "number" + "data": { + "$ref": "#/definitions/panera.AtWorkLocationsResponse" }, - "gamma_price": { - "example": 0.16, - "type": "number" - }, - "last_trade_price": { - "example": 0.162, - "type": "number" - }, - "midpoint": { - "example": 0.165, - "type": "number" - }, - "orderbook_best_ask": { - "example": 0.17, - "type": "number" - }, - "orderbook_best_bid": { - "example": 0.16, - "type": "number" - }, - "orderbook_spread": { - "example": 0.01, - "type": "number" - }, - "outcome": { - "example": "Yes", - "type": "string" - }, - "sell_price": { - "example": 0.17, - "type": "number" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "panera.cafeResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "spread": { - "example": 0.01, - "type": "number" + "data": { + "$ref": "#/definitions/panera.CafeResponse" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", - "type": "string" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "polymarket.MarketSummary": { + "panera.cateringDeliveryInfoResponseDoc": { "properties": { - "active": { - "type": "boolean" - }, - "best_ask": { - "type": "number" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "best_bid": { - "type": "number" + "data": { + "$ref": "#/definitions/panera.CateringDeliveryInfoResponse" }, - "closed": { - "type": "boolean" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "panera.cateringMenuResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "condition_id": { - "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", - "type": "string" + "data": { + "$ref": "#/definitions/panera.CateringMenuResponse" }, - "end_date": { - "type": "string" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "panera.geocodeResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "id": { - "example": "558934", - "type": "string" + "data": { + "$ref": "#/definitions/panera.GeocodeResponse" }, - "last_trade_price": { - "type": "number" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "panera.itemDetailResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "liquidity": { - "type": "number" + "data": { + "$ref": "#/definitions/panera.ItemDetailResponse" }, - "outcomes": { - "items": { - "$ref": "#/definitions/polymarket.OutcomePricePoint" - }, - "type": "array" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "panera.itemOptionsResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "question": { - "example": "Will Spain win the 2026 FIFA World Cup?", - "type": "string" + "data": { + "$ref": "#/definitions/panera.ItemOptionsResponse" }, - "slug": { - "example": "will-spain-win-the-2026-fifa-world-cup-963", - "type": "string" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "panera.locationsResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "token_ids": { - "items": { - "type": "string" - }, - "type": "array" + "data": { + "$ref": "#/definitions/panera.LocationsResponse" }, - "url": { - "example": "https://polymarket.com/event/world-cup-winner/will-spain-win-the-2026-fifa-world-cup-963", - "type": "string" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "panera.menuResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "volume": { - "type": "number" + "data": { + "$ref": "#/definitions/panera.MenuResponse" }, - "volume_24h": { - "type": "number" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "polymarket.MarketsResponse": { + "panera.quantityRulesResponseDoc": { "properties": { - "ascending": { - "type": "boolean" - }, - "closed": { - "example": "false", - "type": "string" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" + "data": { + "$ref": "#/definitions/panera.QuantityRulesResponse" }, - "limit": { - "example": 25, + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "panera.retiredProductsResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, - "markets": { - "items": { - "$ref": "#/definitions/polymarket.MarketSummary" - }, - "type": "array" + "data": { + "$ref": "#/definitions/panera.RetiredProductsResponse" }, - "offset": { - "example": 0, + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "panera.timeSlotsResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, - "order": { - "example": "volume24hr", - "type": "string" + "data": { + "$ref": "#/definitions/panera.TimeSlotsResponse" }, - "source_url": { - "example": "https://gamma-api.polymarket.com/markets?limit=25", - "type": "string" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "polymarket.OrderBookLevel": { + "panera.upsellSuggestionsResponseDoc": { "properties": { - "price": { - "example": 0.03, - "type": "number" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "size": { - "example": 5, - "type": "number" + "data": { + "$ref": "#/definitions/panera.UpsellSuggestionsResponse" + }, + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "polymarket.OrderBookSummary": { + "papajohns.AllergenFlags": { "properties": { - "asks": { - "items": { - "$ref": "#/definitions/polymarket.OrderBookLevel" - }, - "type": "array" + "egg": { + "type": "boolean" }, - "bids": { - "items": { - "$ref": "#/definitions/polymarket.OrderBookLevel" - }, - "type": "array" + "fish": { + "type": "boolean" }, - "condition_id": { - "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", - "type": "string" + "milk": { + "type": "boolean" }, - "hash": { - "example": "31facd52b62495bbc142facb81275400d978f6bf", - "type": "string" + "peanut": { + "type": "boolean" }, - "last_trade_price": { - "example": 0.285, - "type": "number" + "sesame": { + "type": "boolean" }, - "min_order_size": { - "example": 5, - "type": "number" + "shellfish": { + "type": "boolean" }, - "neg_risk": { + "soy": { "type": "boolean" }, - "tick_size": { - "example": 0.01, - "type": "number" + "tree_nut": { + "type": "boolean" }, - "timestamp": { - "example": "1780837460175", + "wheat": { + "type": "boolean" + } + }, + "type": "object" + }, + "papajohns.AllergenItem": { + "properties": { + "allergens": { + "$ref": "#/definitions/papajohns.AllergenFlags" + }, + "name": { + "example": "Original Crust", "type": "string" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "section": { + "example": "Crust Options", "type": "string" } }, "type": "object" }, - "polymarket.OutcomePricePoint": { + "papajohns.AllergensResponse": { "properties": { - "best_ask": { - "example": 0.162, - "type": "number" + "count": { + "example": 170, + "type": "integer" }, - "best_bid": { - "example": 0.161, - "type": "number" + "fetched_at": { + "type": "string" }, - "last_trade_price": { - "example": 0.162, - "type": "number" + "items": { + "items": { + "$ref": "#/definitions/papajohns.AllergenItem" + }, + "type": "array" }, - "liquidity": { - "example": 1093391.84, - "type": "number" + "source_url": { + "type": "string" + } + }, + "type": "object" + }, + "papajohns.Deal": { + "properties": { + "description": { + "type": "string" }, - "market_id": { - "example": "558934", + "id": { + "example": "66262", "type": "string" }, - "market_slug": { - "example": "will-spain-win-the-2026-fifa-world-cup-963", + "image_url": { "type": "string" }, - "outcome": { - "example": "Yes", + "offer_code": { + "description": "OfferCode is the code the offer is redeemed with.", + "example": "EDNJX", "type": "string" }, "price": { - "example": 0.1615, + "description": "Price is the offer price where the deal advertises one. A deal whose\nprice depends on what the customer builds reports 0.", + "example": 12.99, "type": "number" }, - "question": { - "example": "Will Spain win the 2026 FIFA World Cup?", + "regular_price": { + "description": "RegularPrice is the struck-through pre-offer price, present only when\nthe deal actually advertises a saving.", + "example": 23.49, + "type": "number" + }, + "tag": { + "description": "Tag is the merchandising label, e.g. \"Featured Deal\".", + "example": "Featured Deal", "type": "string" }, - "volume": { - "example": 30983849.24, - "type": "number" + "title": { + "example": "Ultimate Pepperoni Pizza", + "type": "string" + }, + "url": { + "description": "URL is the deal-builder link for this offer.", + "type": "string" } }, "type": "object" }, - "polymarket.PredictionsResponse": { + "papajohns.DealsResponse": { "properties": { - "cursor": { - "type": "string" + "count": { + "example": 16, + "type": "integer" }, - "events": { + "deals": { "items": { - "$ref": "#/definitions/polymarket.EventSummary" + "$ref": "#/definitions/papajohns.Deal" }, "type": "array" }, "fetched_at": { - "example": "2026-06-07T11:00:00Z", "type": "string" }, - "has_more": { + "national_default": { + "description": "NationalDefault is true when no store was selected. National promotions\nare frequently placeholders prompting the customer to pick a store, so a\ncaller should prefer passing a store_id.", + "example": false, "type": "boolean" }, - "limit": { - "example": 20, - "type": "integer" - }, - "next_cursor": { + "source_url": { "type": "string" }, - "recurrence": { - "example": "daily", - "type": "string" + "store_id": { + "example": 5054, + "type": "integer" + } + }, + "type": "object" + }, + "papajohns.DirectoryChild": { + "properties": { + "is_store": { + "description": "IsStore marks a child that is a store page rather than another\ndirectory level -- call /papajohns/store with its path.", + "example": false, + "type": "boolean" }, - "sort": { - "example": "competitive", + "name": { + "example": "CA", "type": "string" }, - "source_url": { - "example": "https://gamma-api.polymarket.com/events/keyset?limit=20&order=competitive", + "path": { + "example": "united-states/ca", "type": "string" }, - "status": { - "example": "all", - "type": "string" + "store_count": { + "description": "StoreCount is how many stores sit under this branch, as Yext reports\nit. Absent once children are stores themselves.", + "example": 222, + "type": "integer" }, - "tag": { - "example": "politics", + "url": { "type": "string" } }, "type": "object" }, - "polymarket.PriceHistoryPoint": { + "papajohns.DirectoryResponse": { "properties": { - "price": { - "example": 0.48, - "type": "number" + "children": { + "items": { + "$ref": "#/definitions/papajohns.DirectoryChild" + }, + "type": "array" }, - "timestamp": { - "example": 1780826405, + "count": { + "example": 120, "type": "integer" - } - }, - "type": "object" - }, - "polymarket.ProfileMatch": { - "properties": { - "id": { - "example": "123", + }, + "fetched_at": { "type": "string" }, "name": { - "example": "Trader", "type": "string" }, - "username": { - "example": "trader", + "path": { + "example": "united-states/ca", + "type": "string" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "polymarket.PublicDataResponse": { + "papajohns.IndiaAvailability": { "properties": { - "data": { - "type": "object" - }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" + "blacked_out_channel_ids": { + "items": { + "type": "string" + }, + "type": "array" }, - "route": { - "example": "sports", - "type": "string" + "blacked_out_days": { + "items": { + "type": "string" + }, + "type": "array" }, - "source_url": { - "example": "https://gamma-api.polymarket.com/sports", - "type": "string" + "blacked_out_store_ids": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "polymarket.RewardsConfigSummary": { + "papajohns.IndiaCurrency": { "properties": { - "asset_address": { - "example": "0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB", + "code": { + "example": "₹", "type": "string" }, - "end_date": { - "example": "2500-12-31", + "country_code": { + "example": "91", "type": "string" }, - "id": { - "example": 0, - "type": "integer" - }, - "rate_per_day": { - "example": 10.00036, - "type": "number" - }, - "start_date": { - "example": "2026-06-07", + "locale": { + "example": "en-IN", "type": "string" }, - "total_rewards": { - "example": 0, - "type": "number" + "name": { + "example": "Indian Rupee", + "type": "string" } }, "type": "object" }, - "polymarket.RewardsMarketResponse": { + "papajohns.IndiaDealChoice": { "properties": { - "condition_id": { - "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", + "category": { + "example": "Pizzas", "type": "string" }, - "count": { - "example": 1, - "type": "integer" + "item_id": { + "example": "71", + "type": "string" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", + "name": { + "example": "MARGHERITA", "type": "string" }, - "market": { - "$ref": "#/definitions/polymarket.RewardsMarketSummary" + "price": { + "example": 399, + "type": "number" }, - "source_url": { - "example": "https://clob.polymarket.com/rewards/markets/0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327?sponsored=true", + "size": { + "example": "Medium", + "type": "string" + }, + "size_id": { + "example": "2", "type": "string" } }, "type": "object" }, - "polymarket.RewardsMarketSummary": { + "papajohns.IndiaDealResponse": { "properties": { - "condition_id": { - "example": "0x2d293b8d8141edcc3317f6e677a01623dc482e7fe8eb4c4e207c9a0987c37d22", - "type": "string" - }, - "daily_reward_rate": { - "example": 10.00036, - "type": "number" + "buy_x": { + "type": "integer" }, - "earning_percentage": { - "example": 0, - "type": "number" + "category_id": { + "example": "11", + "type": "string" }, - "earnings": { - "items": { - "type": "object" - }, - "type": "array" + "currency": { + "$ref": "#/definitions/papajohns.IndiaCurrency" }, - "event_id": { - "example": "568951", + "description": { + "example": "Sakkath Combo", "type": "string" }, - "event_slug": { - "example": "sc2-hero-cure-2026-06-07", + "end_time": { + "example": "23:59:59", "type": "string" }, - "event_url": { - "example": "https://polymarket.com/event/sc2-hero-cure-2026-06-07", + "fetched_at": { "type": "string" }, - "image_url": { - "type": "string" + "get_y": { + "type": "integer" }, - "maker_address": { - "example": "0x0000000000000000000000000000000000000000", - "type": "string" + "highest_of_two": { + "type": "boolean" }, - "market_competitiveness": { - "example": 2.83, - "type": "number" + "id": { + "example": "17", + "type": "string" }, - "market_id": { - "example": "2461586", + "image_url": { "type": "string" }, - "market_slug": { - "example": "sc2-hero-cure-2026-06-07", + "market": { + "example": "india", "type": "string" }, - "market_url": { - "example": "https://polymarket.com/event/sc2-hero-cure-2026-06-07/sc2-hero-cure-2026-06-07", + "name": { + "example": "Sakkath Veg Combo - Dine In", "type": "string" }, - "question": { - "example": "StarCraft II: herO vs Cure (BO7) - Global StarCraft II League Playoffs", + "price": { + "description": "Price is the deal's fixed price when price_type is fixedPrice, and 0\nfor a computed deal (BuyXGetY, HalfAndHalf, variablePrice).", + "example": 699, + "type": "number" + }, + "price_type": { + "example": "fixedPrice", "type": "string" }, - "rewards_config": { + "slots": { "items": { - "$ref": "#/definitions/polymarket.RewardsConfigSummary" + "$ref": "#/definitions/papajohns.IndiaDealSlot" }, "type": "array" }, - "rewards_max_spread": { - "example": 4.5, - "type": "number" + "source_url": { + "type": "string" }, - "rewards_min_size": { - "example": 50, - "type": "number" + "start_time": { + "example": "00:00:00", + "type": "string" }, - "spread": { - "example": 0.01, - "type": "number" + "sum_of_two": { + "description": "SumOfTwo and HighestOfTwo describe how a two-item deal is priced when\nprice_type is HalfAndHalf.", + "type": "boolean" + } + }, + "type": "object" + }, + "papajohns.IndiaDealSlot": { + "properties": { + "choice_count": { + "example": 5, + "type": "integer" }, - "tokens": { + "choices": { "items": { - "$ref": "#/definitions/polymarket.RewardsTokenSummary" + "$ref": "#/definitions/papajohns.IndiaDealChoice" }, "type": "array" }, - "total_configured_rewards": { - "example": 0, - "type": "number" + "id": { + "example": "1376", + "type": "string" }, - "volume_24h": { - "example": 79.9901, + "name": { + "type": "string" + }, + "optional": { + "example": false, + "type": "boolean" + }, + "percentage_off": { "type": "number" + }, + "quantity": { + "example": 1, + "type": "integer" + }, + "size": { + "example": "Medium", + "type": "string" } }, "type": "object" }, - "polymarket.RewardsMarketsResponse": { + "papajohns.IndiaMenuCategory": { "properties": { - "count": { - "example": 100, - "type": "integer" - }, - "cursor": { - "example": "MA==", + "description": { "type": "string" }, - "date": { - "example": "2026-06-07", + "id": { + "example": "6", "type": "string" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", + "image_url": { "type": "string" }, - "has_more": { - "type": "boolean" + "item_count": { + "example": 29, + "type": "integer" }, - "limit": { - "example": 100, + "items": { + "items": { + "$ref": "#/definitions/papajohns.IndiaMenuItem" + }, + "type": "array" + }, + "name": { + "example": "Pizzas", + "type": "string" + }, + "rank": { + "example": 7, "type": "integer" }, - "markets": { + "subcategories": { "items": { - "$ref": "#/definitions/polymarket.RewardsMarketSummary" + "$ref": "#/definitions/papajohns.IndiaMenuSubcategory" }, "type": "array" + } + }, + "type": "object" + }, + "papajohns.IndiaMenuFilters": { + "properties": { + "availability_filter_applied": { + "description": "AvailabilityFilterApplied is false unless store_id, channel_id, and day\nwere all supplied -- the operator's blackout rules need all three.", + "example": false, + "type": "boolean" }, - "next_cursor": { - "example": "MTAw", + "category_id": { "type": "string" }, - "order_by": { - "example": "market", + "channel": { + "example": "Delivery", "type": "string" }, - "position": { - "example": "desc", + "channel_id": { "type": "string" }, - "q": { - "example": "bitcoin", + "day": { "type": "string" }, - "source_url": { - "example": "https://polymarket.com/api/rewards/markets?orderBy=market", + "day_name": { + "example": "Monday", "type": "string" }, - "tag_slug": { - "example": "all", + "store_id": { "type": "string" }, - "total_count": { - "example": 5430, - "type": "integer" + "tag": { + "type": "string" } }, "type": "object" }, - "polymarket.RewardsTokenSummary": { + "papajohns.IndiaMenuItem": { "properties": { - "outcome": { - "example": "herO", - "type": "string" + "availability": { + "allOf": [ + { + "$ref": "#/definitions/papajohns.IndiaAvailability" + } + ], + "description": "Availability lists the store/channel/day combinations where this item is\nblacked out. The item is unavailable only where all three match; empty\nlists mean it is available everywhere." }, - "price": { - "example": 0.995, - "type": "number" + "buy_x": { + "type": "integer" }, - "token_id": { - "example": "49033998602764986470838384384660931821099068366428064235699748485619139146655", + "category_id": { + "example": "6", "type": "string" - } - }, - "type": "object" - }, - "polymarket.SearchResponse": { - "properties": { - "ascending": { - "type": "boolean" }, - "events": { - "items": { - "$ref": "#/definitions/polymarket.EventSummary" - }, - "type": "array" + "customizable": { + "description": "Customizable reports whether the item exposes a size/crust/topping tree.", + "example": true, + "type": "boolean" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", + "description": { "type": "string" }, - "has_more": { + "discounted": { + "example": false, "type": "boolean" }, - "limit": { - "example": 10, + "get_y": { "type": "integer" }, - "profiles": { - "items": { - "$ref": "#/definitions/polymarket.ProfileMatch" - }, - "type": "array" + "id": { + "example": "71", + "type": "string" }, - "query": { - "example": "bitcoin", + "image_url": { "type": "string" }, - "sort": { - "example": "relevance", + "kind": { + "description": "Kind is \"item\" for an a la carte product or \"deal\" for a combo/offer.", + "example": "item", "type": "string" }, - "source_url": { - "example": "https://gamma-api.polymarket.com/public-search?q=bitcoin&limit_per_type=10", + "name": { + "example": "MARGHERITA", "type": "string" }, - "status": { - "example": "open", + "price": { + "description": "Price is the item's list price in the franchise currency. A deal with a\ncomputed price (BuyXGetY, HalfAndHalf, variablePrice) reports 0 here --\nread price_type instead.", + "example": 399, + "type": "number" + }, + "price_type": { + "description": "PriceType is set on deals only: fixedPrice, BuyXGetY, HalfAndHalf, or\nvariablePrice.", + "example": "BuyXGetY", + "type": "string" + }, + "rank": { + "example": 1, + "type": "integer" + }, + "sizes": { + "description": "Sizes is populated only when include_options=true.", + "items": { + "$ref": "#/definitions/papajohns.IndiaMenuSize" + }, + "type": "array" + }, + "strike_off_price": { + "example": 499, + "type": "number" + }, + "sub_category_id": { + "example": "4", "type": "string" }, "tags": { + "description": "Tags are the item's dietary/attribute markers, e.g. Veg, Non Veg, Spicy.", "items": { - "$ref": "#/definitions/polymarket.TagSummary" + "type": "string" }, "type": "array" }, - "total_results": { - "example": 123, - "type": "integer" + "upsell": { + "example": false, + "type": "boolean" } }, "type": "object" }, - "polymarket.SimilarEventsResponse": { + "papajohns.IndiaMenuItemResponse": { "properties": { - "events": { - "items": { - "$ref": "#/definitions/polymarket.EventSummary" - }, - "type": "array" + "category": { + "description": "Category is the section this item was found under.", + "example": "Pizzas", + "type": "string" + }, + "currency": { + "$ref": "#/definitions/papajohns.IndiaCurrency" }, "fetched_at": { - "example": "2026-06-07T11:00:00Z", "type": "string" }, - "limit": { - "example": 10, - "type": "integer" + "item": { + "$ref": "#/definitions/papajohns.IndiaMenuItem" + }, + "market": { + "example": "india", + "type": "string" }, "source_url": { - "example": "https://gamma-api.polymarket.com/events/similar?event_slug=world-cup-winner", "type": "string" + }, + "taxes": { + "items": { + "$ref": "#/definitions/papajohns.IndiaTax" + }, + "type": "array" } }, "type": "object" }, - "polymarket.TagResponse": { + "papajohns.IndiaMenuOptionChoice": { "properties": { - "fetched_at": { - "example": "2026-06-07T11:00:00Z", + "default": { + "example": true, + "type": "boolean" + }, + "extra": { + "example": false, + "type": "boolean" + }, + "half_price": { + "example": 399.5, + "type": "number" + }, + "id": { + "example": "1", "type": "string" }, - "source_url": { - "example": "https://gamma-api.polymarket.com/tags/slug/crypto", + "image_url": { "type": "string" }, - "tag": { - "$ref": "#/definitions/polymarket.TagSummary" + "name": { + "example": "Original Crust", + "type": "string" + }, + "price": { + "example": 799, + "type": "number" + }, + "removable": { + "example": false, + "type": "boolean" + }, + "strike_off_price": { + "type": "number" } }, "type": "object" }, - "polymarket.TagSummary": { + "papajohns.IndiaMenuOptionGroup": { "properties": { + "base_price": { + "example": true, + "type": "boolean" + }, + "choices": { + "items": { + "$ref": "#/definitions/papajohns.IndiaMenuOptionChoice" + }, + "type": "array" + }, + "halves_enabled": { + "example": true, + "type": "boolean" + }, "id": { - "example": "21", + "example": "1", "type": "string" }, - "label": { - "example": "Crypto", + "name": { + "example": "Crust", "type": "string" }, - "slug": { - "example": "crypto", + "selection_rule": { + "example": "Exactly", + "type": "string" + }, + "selection_spec": { + "example": "1", "type": "string" } }, "type": "object" }, - "polymarket.TagsResponse": { + "papajohns.IndiaMenuResponse": { "properties": { + "categories": { + "items": { + "$ref": "#/definitions/papajohns.IndiaMenuCategory" + }, + "type": "array" + }, + "currency": { + "$ref": "#/definitions/papajohns.IndiaCurrency" + }, "fetched_at": { - "example": "2026-06-07T11:00:00Z", "type": "string" }, - "limit": { - "example": 25, - "type": "integer" + "filters": { + "$ref": "#/definitions/papajohns.IndiaMenuFilters" }, - "offset": { - "example": 0, + "item_count": { + "example": 114, "type": "integer" }, + "market": { + "example": "india", + "type": "string" + }, "source_url": { - "example": "https://gamma-api.polymarket.com/tags?limit=25", "type": "string" }, "tags": { "items": { - "$ref": "#/definitions/polymarket.TagSummary" + "type": "string" + }, + "type": "array" + }, + "taxes": { + "items": { + "$ref": "#/definitions/papajohns.IndiaTax" }, "type": "array" } }, "type": "object" }, - "polymarket.TokenMidpointResponse": { + "papajohns.IndiaMenuSize": { "properties": { - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" - }, - "midpoint": { - "example": 0.285, - "type": "number" + "default": { + "example": true, + "type": "boolean" }, - "source_url": { - "example": "https://clob.polymarket.com/midpoint?token_id=81927025054404355287140018940169293739219157042658469116956164881873598220211", + "id": { + "example": "3", "type": "string" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "name": { + "example": "Large", "type": "string" - } - }, - "type": "object" - }, - "polymarket.TokenOrderBookResponse": { - "properties": { - "book": { - "$ref": "#/definitions/polymarket.OrderBookSummary" }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" + "option_groups": { + "items": { + "$ref": "#/definitions/papajohns.IndiaMenuOptionGroup" + }, + "type": "array" }, - "source_url": { - "example": "https://clob.polymarket.com/book?token_id=81927025054404355287140018940169293739219157042658469116956164881873598220211", + "rank": { + "example": 1, + "type": "integer" + } + }, + "type": "object" + }, + "papajohns.IndiaMenuSubcategory": { + "properties": { + "id": { + "example": "8", "type": "string" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "items": { + "items": { + "$ref": "#/definitions/papajohns.IndiaMenuItem" + }, + "type": "array" + }, + "name": { + "example": "India Special", "type": "string" } }, "type": "object" }, - "polymarket.TokenPriceHistoryResponse": { + "papajohns.IndiaStore": { "properties": { - "end_ts": { - "example": 1780840800, - "type": "integer" - }, - "fetched_at": { - "example": "2026-06-07T11:00:00Z", + "address": { "type": "string" }, - "fidelity": { - "example": 60, - "type": "integer" + "channels": { + "description": "Channels lists the order channels this store publishes hours for.", + "items": { + "type": "string" + }, + "type": "array" }, - "interval": { - "example": "1d", + "email": { "type": "string" }, - "points": { + "hours": { "items": { - "$ref": "#/definitions/polymarket.PriceHistoryPoint" + "$ref": "#/definitions/papajohns.IndiaStoreHours" }, "type": "array" }, - "source_url": { - "example": "https://clob.polymarket.com/prices-history?fidelity=60&interval=1d&market=81927025054404355287140018940169293739219157042658469116956164881873598220211", + "id": { + "example": "7", "type": "string" }, - "start_ts": { - "example": 1780754400, - "type": "integer" - }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", - "type": "string" - } - }, - "type": "object" - }, - "polymarket.TokenPriceResponse": { - "properties": { - "fetched_at": { - "example": "2026-06-07T11:00:00Z", - "type": "string" + "latitude": { + "example": 12.840903161072498, + "type": "number" }, - "price": { - "example": 0.03, + "longitude": { + "example": 77.65593675511532, "type": "number" }, - "side": { - "example": "buy", + "name": { + "example": "PJPB - 360° Business Park, Electronics City BLR", "type": "string" }, - "source_url": { - "example": "https://clob.polymarket.com/price?side=buy&token_id=81927025054404355287140018940169293739219157042658469116956164881873598220211", + "phone": { + "example": "9240244043", "type": "string" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "store_code": { + "example": "QRyCHD", "type": "string" } }, "type": "object" }, - "polymarket.TokenSpreadResponse": { + "papajohns.IndiaStoreHours": { "properties": { - "fetched_at": { - "example": "2026-06-07T11:00:00Z", + "channel": { + "example": "Take Away", "type": "string" }, - "source_url": { - "example": "https://clob.polymarket.com/spread?token_id=81927025054404355287140018940169293739219157042658469116956164881873598220211", + "channel_id": { + "example": "2", "type": "string" }, - "spread": { - "example": 0.51, - "type": "number" + "closes": { + "example": "23:00:59", + "type": "string" }, - "token_id": { - "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "day": { + "example": "Monday", + "type": "string" + }, + "opens": { + "example": "11:00:00", "type": "string" } }, "type": "object" }, - "polymarket.TradeSummary": { + "papajohns.IndiaStoresResponse": { "properties": { - "asset": { - "example": "90219780179584544303349592653084019110196125806694819219181473744581426681835", + "channel": { + "example": "Delivery", "type": "string" }, - "bio": { + "channel_id": { "type": "string" }, - "condition_id": { - "example": "0x3f2604d62ac3ee496ffd6d30156f30663fbaf22097f17f09d7364c35db255d2b", + "count": { + "example": 9, + "type": "integer" + }, + "fetched_at": { "type": "string" }, - "event_slug": { - "example": "btc-updown-15m-1780835400", + "market": { + "example": "india", "type": "string" }, - "icon_url": { + "source_url": { "type": "string" }, + "stores": { + "items": { + "$ref": "#/definitions/papajohns.IndiaStore" + }, + "type": "array" + } + }, + "type": "object" + }, + "papajohns.IndiaTax": { + "properties": { + "inclusive": { + "example": false, + "type": "boolean" + }, "name": { - "example": "trader", + "example": "GST", "type": "string" }, - "outcome": { - "example": "Up", + "type": { + "example": "percentage", "type": "string" }, - "outcome_index": { - "example": 0, - "type": "integer" - }, - "price": { - "example": 0.52744, + "value": { + "example": 5, "type": "number" + } + }, + "type": "object" + }, + "papajohns.IntlDeal": { + "properties": { + "availability": { + "description": "Availability lists the weekdays the offer runs on.", + "items": { + "type": "string" + }, + "type": "array" }, - "profile_image_optimized": { + "category": { + "example": "app", "type": "string" }, - "profile_image_url": { + "description": { "type": "string" }, - "proxy_wallet": { - "example": "0x400e9b5e37f7209adb6938d49d63c48f154319d2", + "dispatch_method": { + "description": "DispatchMethod is the fulfillment this offer applies to.", + "example": "pj_delivery", "type": "string" }, - "pseudonym": { - "example": "Noisy-Dimple", + "end_date": { + "example": "2026-09-30T23:45:00Z", "type": "string" }, - "side": { - "example": "BUY", - "type": "string" + "id": { + "example": 955, + "type": "integer" }, - "size": { - "example": 25, - "type": "number" + "image_url": { + "type": "string" }, - "slug": { - "example": "btc-updown-15m-1780835400", + "name": { + "example": "Combo Veranito delivery", "type": "string" }, - "timestamp": { - "example": 1780835568, + "offer_id": { + "description": "OfferID is set when this promotion is backed by a structured offer, and\nis the id GET /papajohns/intl/offer takes to return its full\ncomposition. Absent when the banner points at something else.", + "example": 660, "type": "integer" }, - "title": { - "example": "Bitcoin Up or Down - June 7, 8:30AM-8:45AM ET", + "product": { + "description": "Product is the offer's headline product name.", + "example": "Combo Veranito", "type": "string" }, - "transaction_hash": { - "example": "0x7ef90efb7e9f921509d8e82ecc76ed3d8384a3740d7ebd81d3bbbfd017899245", + "start_date": { + "example": "2025-10-24T00:00:00Z", "type": "string" }, "url": { - "example": "https://polymarket.com/event/btc-updown-15m-1780835400", "type": "string" - }, - "value": { - "example": 13.186, - "type": "number" } }, "type": "object" }, - "polymarket.activityTradesResponseDoc": { + "papajohns.IntlDealsResponse": { "properties": { - "code": { - "example": 200, + "count": { + "example": 1, "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.ActivityTradesResponse" + "deals": { + "items": { + "$ref": "#/definitions/papajohns.IntlDeal" + }, + "type": "array" }, - "msg": { - "example": "OK", + "dispatch_method": { + "example": "pj_delivery", "type": "string" - } - }, - "type": "object" - }, - "polymarket.batchTokenMidpointsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/polymarket.BatchTokenMidpointsResponse" }, - "msg": { - "example": "OK", + "fetched_at": { "type": "string" - } - }, - "type": "object" - }, - "polymarket.batchTokenOrderBooksResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.BatchTokenOrderBooksResponse" + "market": { + "example": "spain", + "type": "string" }, - "msg": { - "example": "OK", + "source_url": { "type": "string" } }, "type": "object" }, - "polymarket.batchTokenPricesResponseDoc": { + "papajohns.IntlDeliveryZone": { "properties": { - "code": { - "example": 200, - "type": "integer" + "delivery_price": { + "example": 0, + "type": "number" }, - "data": { - "$ref": "#/definitions/polymarket.BatchTokenPricesResponse" + "minimum_order_for_delivery": { + "type": "number" }, - "msg": { - "example": "OK", + "minimum_order_for_free_delivery": { + "type": "number" + }, + "name": { + "example": "Zona 1", "type": "string" } }, "type": "object" }, - "polymarket.batchTokenSpreadsResponseDoc": { + "papajohns.IntlIngredient": { "properties": { - "code": { - "example": 200, - "type": "integer" + "available_as_half": { + "description": "AvailableAsHalf reports whether it can be applied to just one half.", + "example": true, + "type": "boolean" }, - "data": { - "$ref": "#/definitions/polymarket.BatchTokenSpreadsResponse" + "base": { + "description": "Base marks an ingredient included on the pizza by default.", + "example": false, + "type": "boolean" }, - "msg": { - "example": "OK", + "category": { + "description": "Category is the ingredient family, e.g. meat or vegetable.", + "example": "base_sauce", "type": "string" - } - }, - "type": "object" - }, - "polymarket.clobMarketResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.ClobMarketResponse" - }, - "msg": { - "example": "OK", + "description": { "type": "string" - } - }, - "type": "object" - }, - "polymarket.eventDetailResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "id": { + "example": 25, "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.EventDetailResponse" + "image_url": { + "type": "string" }, - "msg": { - "example": "OK", + "name": { + "example": "Salsa de Tomate", "type": "string" + }, + "premium": { + "description": "Premium marks an ingredient charged at the premium rate rather than the\nnormal one.", + "example": false, + "type": "boolean" } }, "type": "object" }, - "polymarket.eventsResponseDoc": { + "papajohns.IntlIngredientPrices": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/polymarket.EventsResponse" + "normal": { + "additionalProperties": { + "format": "float64", + "type": "number" + }, + "type": "object" }, - "msg": { - "example": "OK", - "type": "string" + "premium": { + "additionalProperties": { + "format": "float64", + "type": "number" + }, + "type": "object" } }, "type": "object" }, - "polymarket.homepageFeedResponseDoc": { + "papajohns.IntlIngredientsResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" + "category": { + "example": "meat", + "type": "string" }, - "data": { - "$ref": "#/definitions/polymarket.HomepageFeedResponse" + "count": { + "example": 39, + "type": "integer" }, - "msg": { - "example": "OK", + "fetched_at": { "type": "string" - } - }, - "type": "object" - }, - "polymarket.leaderboardResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.LeaderboardResponse" + "ingredients": { + "items": { + "$ref": "#/definitions/papajohns.IntlIngredient" + }, + "type": "array" }, - "msg": { - "example": "OK", + "market": { + "example": "spain", "type": "string" - } - }, - "type": "object" - }, - "polymarket.macroDashboardResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "menu_id": { + "example": 8, "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.MacroDashboardResponse" + "prices": { + "allOf": [ + { + "$ref": "#/definitions/papajohns.IntlIngredientPrices" + } + ], + "description": "Prices is what adding one extra ingredient costs, keyed by size code." }, - "msg": { - "example": "OK", + "sizes": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "polymarket.marketDetailResponseDoc": { + "papajohns.IntlMenuProduct": { "properties": { - "code": { - "example": 200, - "type": "integer" + "alcohol": { + "type": "boolean" }, - "data": { - "$ref": "#/definitions/polymarket.MarketDetailResponse" + "category": { + "example": "pizza", + "type": "string" }, - "msg": { - "example": "OK", + "currency": { + "example": "EUR", "type": "string" - } - }, - "type": "object" - }, - "polymarket.marketLiquidityResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.MarketLiquidityResponse" + "customizable": { + "type": "boolean" }, - "msg": { - "example": "OK", + "description": { "type": "string" - } - }, - "type": "object" - }, - "polymarket.marketsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.MarketsResponse" + "discount": { + "type": "number" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "polymarket.predictionsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "food_type": { + "description": "FoodType carries dietary markers the platform publishes, e.g. vegetarian.", + "items": { + "type": "string" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/polymarket.PredictionsResponse" + "id": { + "example": 8, + "type": "integer" }, - "msg": { - "example": "OK", + "image_url": { "type": "string" - } - }, - "type": "object" - }, - "polymarket.publicDataResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.PublicDataResponse" + "initial_price": { + "type": "number" }, - "msg": { - "example": "OK", + "kind": { + "description": "Kind is \"pizza\" or \"side\" -- the platform's two product families.", + "example": "pizza", "type": "string" - } - }, - "type": "object" - }, - "polymarket.rewardsMarketResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.RewardsMarketResponse" - }, - "msg": { - "example": "OK", + "name": { + "example": "Super Papa", "type": "string" + }, + "price": { + "description": "Price is set only for a product the platform prices directly rather than\nthrough variants. Read variants for anything with sizes or crusts.", + "type": "number" + }, + "price_from": { + "description": "PriceFrom is the cheapest variant price, so a caller can rank products\nwithout walking every variant. Absent when the product has no priced\nvariant and no direct price.", + "example": 14.99, + "type": "number" + }, + "variants": { + "items": { + "$ref": "#/definitions/papajohns.IntlMenuVariant" + }, + "type": "array" } }, "type": "object" }, - "polymarket.rewardsMarketsResponseDoc": { + "papajohns.IntlMenuResponse": { "properties": { - "code": { - "example": 200, + "count": { + "example": 43, "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.RewardsMarketsResponse" + "crusts": { + "additionalProperties": { + "type": "string" + }, + "type": "object" }, - "msg": { - "example": "OK", + "currency": { + "example": "EUR", "type": "string" - } - }, - "type": "object" - }, - "polymarket.searchResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.SearchResponse" + "fetched_at": { + "type": "string" }, - "msg": { - "example": "OK", + "food_type": { + "example": "vegetarian", "type": "string" - } - }, - "type": "object" - }, - "polymarket.similarEventsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.SimilarEventsResponse" + "kind": { + "example": "pizza", + "type": "string" }, - "msg": { - "example": "OK", + "market": { + "example": "spain", "type": "string" - } - }, - "type": "object" - }, - "polymarket.tagResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.TagResponse" + "products": { + "items": { + "$ref": "#/definitions/papajohns.IntlMenuProduct" + }, + "type": "array" }, - "msg": { - "example": "OK", + "sizes": { + "additionalProperties": { + "type": "string" + }, + "description": "Sizes and Crusts map every machine code used in this response to the\nmarket's own display label.", + "type": "object" + }, + "source_url": { "type": "string" + }, + "store_id": { + "example": 9, + "type": "integer" } }, "type": "object" }, - "polymarket.tagsResponseDoc": { + "papajohns.IntlMenuVariant": { "properties": { - "code": { - "example": 200, - "type": "integer" + "crust": { + "example": "traditional", + "type": "string" }, - "data": { - "$ref": "#/definitions/polymarket.TagsResponse" + "crust_label": { + "example": "Original", + "type": "string" }, - "msg": { - "example": "OK", + "currency": { + "example": "EUR", "type": "string" - } - }, - "type": "object" - }, - "polymarket.tokenMidpointResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.TokenMidpointResponse" + "discount": { + "type": "number" }, - "msg": { - "example": "OK", + "initial_price": { + "description": "InitialPrice is the pre-discount price when a promotion is active.", + "type": "number" + }, + "name": { + "description": "Name is the variant's own label where the platform gives it one, e.g. a\ndrink's \"500ML\". Pizza variants are identified by size and crust instead.", + "example": "500ML", "type": "string" - } - }, - "type": "object" - }, - "polymarket.tokenOrderBookResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.TokenOrderBookResponse" + "nutrition": { + "$ref": "#/definitions/papajohns.IntlNutrition" }, - "msg": { - "example": "OK", + "price": { + "example": 19.98, + "type": "number" + }, + "size": { + "description": "Size and Crust are the platform's stable machine codes.", + "example": "family", + "type": "string" + }, + "size_label": { + "description": "SizeLabel and CrustLabel are the market's own display names for those\ncodes, in the local language.", + "example": "Familiar", "type": "string" } }, "type": "object" }, - "polymarket.tokenPriceHistoryResponseDoc": { + "papajohns.IntlNutrition": { "properties": { - "code": { - "example": 200, - "type": "integer" + "calories": { + "example": 1090, + "type": "number" }, - "data": { - "$ref": "#/definitions/polymarket.TokenPriceHistoryResponse" + "grams": { + "example": 470, + "type": "number" }, - "msg": { - "example": "OK", + "portions": { + "example": "8", "type": "string" } }, "type": "object" }, - "polymarket.tokenPriceResponseDoc": { + "papajohns.IntlOfferChoice": { "properties": { - "code": { - "example": 200, - "type": "integer" + "crust": { + "example": "traditional", + "type": "string" }, - "data": { - "$ref": "#/definitions/polymarket.TokenPriceResponse" + "crust_label": { + "example": "Original", + "type": "string" }, - "msg": { - "example": "OK", + "description": { "type": "string" - } - }, - "type": "object" - }, - "polymarket.tokenSpreadResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "name": { + "example": "Italiana Ranch", + "type": "string" + }, + "product_id": { + "description": "ProductID is the underlying product, usable with\nGET /papajohns/intl/product.", + "example": 336, "type": "integer" }, - "data": { - "$ref": "#/definitions/polymarket.TokenSpreadResponse" + "size": { + "example": "family", + "type": "string" }, - "msg": { - "example": "OK", + "size_label": { + "description": "SizeLabel and CrustLabel are the market's own display names.", + "example": "Familiar", "type": "string" + }, + "surcharge": { + "description": "Surcharge is what picking this choice adds to the offer price. Absent\nwhen the choice costs nothing extra.", + "example": 1.9, + "type": "number" + }, + "variant_id": { + "example": 830, + "type": "integer" } }, "type": "object" }, - "popeyes.Allergens": { + "papajohns.IntlOfferResponse": { "properties": { - "celery": { - "type": "number" - }, - "eggs": { - "type": "number" + "availability": { + "description": "Availability lists the weekdays the offer runs on.", + "items": { + "type": "string" + }, + "type": "array" }, - "fish": { - "type": "number" + "currency": { + "example": "EUR", + "type": "string" }, - "gluten": { - "type": "number" + "customizable": { + "example": true, + "type": "boolean" }, - "lupin": { - "type": "number" + "description": { + "type": "string" }, - "milk": { + "discount": { "type": "number" }, - "mustard": { - "type": "number" + "dispatch_method": { + "description": "DispatchMethod is the fulfillment this offer applies to, e.g. both.", + "example": "both", + "type": "string" }, - "peanuts": { - "type": "number" + "end_date": { + "example": "2026-09-21T23:45:00Z", + "type": "string" }, - "sesame": { - "type": "number" + "fetched_at": { + "type": "string" }, - "shellfish": { - "type": "number" + "free_extras": { + "description": "FreeExtras is how many extra ingredients are included at no charge, and\nMinIngredients/MaxIngredients bound how many may be chosen.", + "example": 2, + "type": "integer" }, - "soy": { - "type": "number" + "id": { + "example": 660, + "type": "integer" }, - "sulphur_dioxide": { - "type": "number" + "image_url": { + "type": "string" }, - "tree_nuts": { - "type": "number" + "ingredient_categories": { + "description": "IngredientCategories lists the ingredient families this offer allows.", + "items": { + "type": "string" + }, + "type": "array" }, - "wheat": { - "type": "number" - } - }, - "type": "object" - }, - "popeyes.DayHours": { - "properties": { - "close": { - "example": "23:00:00", + "market": { + "example": "spain", "type": "string" }, - "day": { - "example": "monday", - "type": "string" + "max_ingredients": { + "example": 10, + "type": "integer" }, - "open": { - "example": "07:00:00", + "min_ingredients": { + "example": 1, + "type": "integer" + }, + "name": { + "example": "Combo Veranito", "type": "string" - } - }, - "type": "object" - }, - "popeyes.FAQEntry": { - "properties": { - "answer": { - "description": "Answer is the FAQ's own answer copy, plain-text extracted from\nPortable Text (links are dropped -- this is a display string, not a\nre-editable document).", + }, + "offer_type": { + "description": "OfferType is the platform's own classification, e.g. Combo.", + "example": "Combo", "type": "string" }, - "id": { - "example": "032999c6-ba27-4f8e-b20e-a4cb28e3c37c", + "price": { + "example": 19.98, + "type": "number" + }, + "promoted": { + "example": true, + "type": "boolean" + }, + "source_url": { "type": "string" }, - "question": { - "example": "How do I remove items from my cart?", + "start_date": { + "example": "2023-09-19T01:00:00Z", "type": "string" + }, + "steps": { + "items": { + "$ref": "#/definitions/papajohns.IntlOfferStep" + }, + "type": "array" } }, "type": "object" }, - "popeyes.FAQResponse": { + "papajohns.IntlOfferStep": { "properties": { - "count": { - "example": 20, + "choice_count": { + "example": 12, "type": "integer" }, - "entries": { + "choices": { "items": { - "$ref": "#/definitions/popeyes.FAQEntry" + "$ref": "#/definitions/papajohns.IntlOfferChoice" }, "type": "array" }, - "fetched_at": { + "id": { + "example": 1919, + "type": "integer" + }, + "name": { + "example": "❶ Elige tu pizza familiar", "type": "string" }, - "has_more": { - "description": "HasMore is a paging heuristic -- see OffersResponse.HasMore.", - "example": true, + "optional": { + "description": "Optional reports whether the step may be skipped.", + "example": false, "type": "boolean" - }, - "source_url": { - "type": "string" } }, "type": "object" }, - "popeyes.LocationResponse": { + "papajohns.IntlProductResponse": { "properties": { - "fetched_at": { + "available_as_half": { + "description": "AvailableAsHalf reports whether this product may be used as one half of\na half-and-half pizza.", + "example": true, + "type": "boolean" + }, + "category": { + "example": "pizza", "type": "string" }, - "restaurant": { - "$ref": "#/definitions/popeyes.Restaurant" + "cheese_changeable": { + "example": true, + "type": "boolean" }, - "source_url": { + "customizable": { + "description": "Customizable reports whether toppings may be changed on this product.", + "example": true, + "type": "boolean" + }, + "description": { "type": "string" - } - }, - "type": "object" - }, - "popeyes.LocationsResponse": { - "properties": { - "count": { - "example": 20, - "type": "integer" }, "fetched_at": { "type": "string" }, - "has_more": { - "example": true, - "type": "boolean" - }, - "restaurants": { + "food_type": { "items": { - "$ref": "#/definitions/popeyes.Restaurant" + "type": "string" }, "type": "array" }, - "source_url": { - "type": "string" - }, - "total_count": { - "description": "TotalCount is how many restaurants matched upstream; it can exceed\nCount when more results exist than max_results asked for.", - "example": 236, + "free_extras": { + "description": "FreeExtras is how many extra ingredients are included at no charge.", + "example": 2, "type": "integer" - } - }, - "type": "object" - }, - "popeyes.MenuCategory": { - "properties": { - "featured": { - "type": "boolean" }, "id": { + "example": 8, + "type": "integer" + }, + "image_url": { "type": "string" }, - "items": { + "image_urls": { "items": { - "$ref": "#/definitions/popeyes.MenuItem" + "type": "string" }, "type": "array" }, + "market": { + "example": "spain", + "type": "string" + }, "name": { - "example": "Chicken Wraps", + "example": "Super Papa", + "type": "string" + }, + "slug": { + "example": "super-papa", + "type": "string" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "popeyes.MenuItem": { + "papajohns.IntlStore": { "properties": { - "allergens": { - "$ref": "#/definitions/popeyes.Allergens" - }, - "id": { - "example": "item_103182", + "address": { "type": "string" }, - "image_url": { + "city": { + "example": "Madrid", "type": "string" }, - "name": { - "example": "Cheese Bites", - "type": "string" - }, - "nutrition": { - "$ref": "#/definitions/popeyes.Nutrition" + "delivery_open": { + "example": true, + "type": "boolean" }, - "price": { - "$ref": "#/definitions/popeyes.Price" + "delivery_wait_minutes": { + "example": 30, + "type": "integer" }, - "type": { - "example": "ITEM", - "type": "string" - } - }, - "type": "object" - }, - "popeyes.MenuResponse": { - "properties": { - "categories": { + "delivery_zones": { "items": { - "$ref": "#/definitions/popeyes.MenuCategory" + "$ref": "#/definitions/papajohns.IntlDeliveryZone" }, "type": "array" }, - "currency": { - "example": "USD", - "type": "string" + "external_delivery": { + "example": true, + "type": "boolean" }, - "fetched_at": { - "type": "string" + "future_orders": { + "example": true, + "type": "boolean" }, - "item_count": { - "example": 120, - "type": "integer" + "hours": { + "items": { + "$ref": "#/definitions/papajohns.IntlStoreHours" + }, + "type": "array" }, - "source_url": { - "type": "string" + "id": { + "example": 9, + "type": "integer" }, - "store_id": { - "example": "14156", - "type": "string" - } - }, - "type": "object" - }, - "popeyes.Nutrition": { - "properties": { - "calories": { - "example": 560, + "latitude": { + "example": 40.401686, "type": "number" }, - "carbohydrates_g": { - "example": 23, + "longitude": { + "example": -3.708348, "type": "number" }, - "cholesterol_mg": { - "example": 75, - "type": "number" + "map_url": { + "type": "string" }, - "fat_g": { - "example": 44, - "type": "number" + "menu_id": { + "description": "MenuID identifies the catalog this restaurant serves. Several\nrestaurants usually share one.", + "example": 8, + "type": "integer" }, - "fiber_g": { - "example": 2, - "type": "number" + "name": { + "example": "Vallejo Nájera", + "type": "string" }, - "proteins_g": { - "example": 17, - "type": "number" + "order_method": { + "description": "OrderMethod is the fulfillment the restaurant supports, as upstream\nreports it, e.g. both, delivery, or pick_up.", + "example": "both", + "type": "string" }, - "saturated_fat_g": { - "type": "number" + "payment_methods": { + "description": "PaymentMethods lists only the methods this restaurant actually accepts.", + "items": { + "type": "string" + }, + "type": "array" }, - "serving_weight_g": { - "type": "number" + "phone": { + "example": "+34910493017", + "type": "string" }, - "sodium_mg": { - "example": 1470, - "type": "number" + "pickup_open": { + "example": true, + "type": "boolean" }, - "sugar_g": { - "example": 2, - "type": "number" + "pickup_wait_minutes": { + "example": 15, + "type": "integer" }, - "trans_fat_g": { - "example": 1, - "type": "number" + "region": { + "example": "Madrid", + "type": "string" } }, "type": "object" }, - "popeyes.Offer": { + "papajohns.IntlStoreHours": { "properties": { - "daypart": { - "description": "Daypart restricts the offer to specific times of day (e.g.\n[\"allDay\"]), when Popeyes publishes a restriction.", - "items": { - "type": "string" - }, - "type": "array" + "closes": { + "example": "23:59:59", + "type": "string" }, - "description": { - "description": "Description is the offer's own short copy (e.g. what's included),\nwhen Popeyes publishes one.", - "example": "3 Piece Chicken", + "day": { + "example": "monday", "type": "string" }, - "id": { - "example": "00a369e5-1b33-4d35-b153-e372e3ebf17f", + "dispatch_method": { + "description": "DispatchMethod is the fulfillment channel this window applies to,\ne.g. in_store or pj_delivery.", + "example": "in_store", "type": "string" }, - "mobile_order_only": { - "description": "MobileOrderOnly is true when the offer is only redeemable through\nPopeyes' own mobile ordering flow.", - "type": "boolean" + "opens": { + "example": "12:00:00", + "type": "string" + } + }, + "type": "object" + }, + "papajohns.IntlStoresResponse": { + "properties": { + "count": { + "description": "Count is how many restaurants this response carries.", + "example": 5, + "type": "integer" }, - "name": { - "example": "3Pc Signature Chicken for $5", + "fetched_at": { "type": "string" }, - "offer_tag": { - "description": "OfferTag is Popeyes' own short badge for the offer's kind (e.g.\nVALUE_DEAL, PERCENTAGE_OFF), when published.", - "example": "VALUE_DEAL", + "fulfillment": { + "description": "Fulfillment, Latitude and Longitude echo a coordinate search and are\nabsent on a store_id lookup, which has no search origin. They are\nomitted rather than zeroed because 0,0 is itself a real coordinate.", + "example": "delivery", "type": "string" }, - "price": { - "example": 5, + "latitude": { + "example": 40.4168, "type": "number" }, - "price_cents": { - "description": "PriceCents/Price are the offer's flat price when it has one (e.g. \"3Pc\nSignature Chicken for $5\" prices at 500 cents). A value of 0 does not\nmean free -- it means the offer's discount is not expressed as a flat\nprice (see OfferTag/Name instead, e.g. a percentage-off or BOGO deal).", - "example": 500, - "type": "integer" + "longitude": { + "example": -3.7038, + "type": "number" }, - "redemption_type": { - "description": "RedemptionType is how the offer is redeemed -- observed live values\ninclude STANDARD (in-app/online) and PAPER_COUPON.", - "example": "STANDARD", + "market": { + "example": "spain", "type": "string" }, - "requires_authentication": { - "description": "RequiresAuthentication is true when the offer's own published rules\nmark it as needing a signed-in Popeyes Rewards account to redeem --\nderived from the offer's rules, not assumed. This build does not\ncall any account/loyalty-scoped API; it only reports what the\noffer's own public CMS record says about itself.", - "type": "boolean" + "page": { + "description": "Page, TotalPages and TotalCount describe the rest of the result set, so\na caller can tell a first page from the whole of it. TotalCount is the\nmarket-wide restaurant total rather than a match count, because the\nsearch has no radius cut-off -- every restaurant in the market is\nranked, and this is where in that ranking the response sits. All three\nare absent for a store_id lookup and for pickup, neither of which\nupstream paginates.", + "example": 1, + "type": "integer" }, - "section": { - "description": "Section is the offer catalog's own grouping (e.g. \"For Two\"), when\nPopeyes assigns one -- most offers do not have one.", - "example": "For Two", + "source_url": { "type": "string" }, - "short_code": { - "description": "ShortCode is the offer's own promo/redemption code, when published.", - "example": "8438", - "type": "string" + "stores": { + "items": { + "$ref": "#/definitions/papajohns.IntlStore" + }, + "type": "array" + }, + "total_count": { + "example": 97, + "type": "integer" + }, + "total_pages": { + "example": 20, + "type": "integer" } }, "type": "object" }, - "popeyes.OffersResponse": { + "papajohns.LatamCategory": { "properties": { - "count": { - "example": 20, - "type": "integer" + "id": { + "example": "1", + "type": "string" }, - "fetched_at": { + "name": { + "example": "Pizzas", "type": "string" }, - "has_more": { - "description": "HasMore is true when this page returned as many offers as Limit\nasked for, meaning more may exist at the next Offset. Sanity's\nGraphQL API for this dataset does not publish a total count for\nallSystemwideOffers, so this is a paging heuristic, not an exact\ntotal.", - "example": true, - "type": "boolean" + "product_count": { + "example": 25, + "type": "integer" }, - "offers": { + "products": { "items": { - "$ref": "#/definitions/popeyes.Offer" + "$ref": "#/definitions/papajohns.LatamProduct" }, "type": "array" - }, - "source_url": { - "type": "string" } }, "type": "object" }, - "popeyes.Price": { + "papajohns.LatamMenuResponse": { "properties": { - "default": { - "example": 3.99, - "type": "number" + "categories": { + "items": { + "$ref": "#/definitions/papajohns.LatamCategory" + }, + "type": "array" }, - "default_cents": { - "example": 399, - "type": "integer" + "category": { + "type": "string" }, - "max": { - "type": "number" + "currency": { + "example": "USD", + "type": "string" }, - "max_cents": { - "type": "integer" + "fetched_at": { + "type": "string" }, - "min": { - "type": "number" + "market": { + "example": "el-salvador", + "type": "string" }, - "min_cents": { + "partial": { + "description": "Partial is true when a paginated upstream failed part-way and the\nresponse carries only the pages that were retrieved. A menu that is\nquietly short is indistinguishable from one that genuinely has fewer\nitems, so it is flagged rather than left to look complete.", + "example": false, + "type": "boolean" + }, + "product_count": { + "description": "ProductCount is how many products the response carries. Where the\nupstream paginates, every page is followed before returning.", + "example": 25, "type": "integer" + }, + "source_url": { + "type": "string" } }, "type": "object" }, - "popeyes.Promotion": { + "papajohns.LatamProduct": { "properties": { - "bonus_points": { - "description": "BonusPoints is set for a flat bonus-points promotion.", - "example": 300, - "type": "integer" + "category": { + "example": "Pizzas", + "type": "string" }, - "end_date": { - "example": "2021-08-16T04:00:00.000Z", + "currency": { + "example": "USD", + "type": "string" + }, + "description": { "type": "string" }, "id": { - "example": "11d41e3c-75b5-458c-8166-7cdfb20a635a", + "example": "8", "type": "string" }, - "message": { - "description": "Message is the promotion's own display copy, when Popeyes publishes\none distinct from Name.", - "example": "Get Double Bonus Points on Your Cart, minimum $20", + "image_url": { "type": "string" }, "name": { - "description": "Name is the promotion's own internal/public label.", - "example": "Get Double Bonus Points on Your Cart, minimum $20", + "example": "The Works", "type": "string" }, - "points_multiplier": { - "description": "PointsMultiplier is set for a \"Nx points\" style promotion (e.g. 2 for\ndouble points); mutually exclusive in practice with BonusPoints.", - "example": 2, + "price_from": { + "description": "PriceFrom is the cheapest priced variant, so a caller can rank products\nwithout walking every variant.", + "example": 11.99, "type": "number" }, - "start_date": { - "description": "StartDate/EndDate bound the promotion's active window, when Popeyes\npublishes one -- both empty means no published window restriction.", - "example": "2021-08-02T04:00:00.000Z", + "url": { "type": "string" + }, + "variants": { + "items": { + "$ref": "#/definitions/papajohns.LatamVariant" + }, + "type": "array" } }, "type": "object" }, - "popeyes.PromotionsResponse": { + "papajohns.LatamVariant": { "properties": { - "count": { - "example": 20, - "type": "integer" + "available": { + "example": true, + "type": "boolean" }, - "fetched_at": { + "crust": { + "example": "Masa Original", "type": "string" }, - "has_more": { - "description": "HasMore is a paging heuristic -- see OffersResponse.HasMore.", - "example": true, - "type": "boolean" + "currency": { + "example": "USD", + "type": "string" }, - "promotions": { - "items": { - "$ref": "#/definitions/popeyes.Promotion" - }, - "type": "array" + "fulfillment": { + "description": "Fulfillment is the order channel this price applies to, where the market\nprices delivery and pickup differently. Colombia does: the same item is\ncommonly ~15% dearer for \"Domicilio\" than \"Recoger en Tienda\", so two\nvariants that look otherwise identical are not duplicates.", + "example": "Domicilio", + "type": "string" }, - "source_url": { + "list_price": { + "description": "ListPrice is the pre-discount price where the market publishes one and\nit actually differs from price.", + "type": "number" + }, + "name": { + "description": "Name is the market's own label for the variant where it gives one.", + "example": "Gigante", + "type": "string" + }, + "price": { + "example": 14.99, + "type": "number" + }, + "sauce": { + "description": "Sauce is populated only by Colombia, whose SKUs vary by sauce too.", + "example": "Salsa Pizza", + "type": "string" + }, + "size": { + "description": "Size and Crust are populated where the market distinguishes them.", + "example": "GIGANTE", + "type": "string" + }, + "sku": { "type": "string" } }, "type": "object" }, - "popeyes.Quest": { + "papajohns.MenuCategory": { "properties": { - "bonus_points": { - "description": "BonusPoints is the loyalty points awarded on completion, when the\nincentive is points-based.", - "example": 550, - "type": "integer" - }, "id": { - "example": "38fe1c9c-6c2b-4d1b-ab86-7bf61105fdfb", + "example": "pizza", "type": "string" }, - "incentive_type": { - "description": "IncentiveType is the reward mechanic -- observed live value is\nBONUS_POINTS; kept as a raw pass-through string since other values may\nexist that this pass did not observe.", - "example": "BONUS_POINTS", + "image_url": { "type": "string" }, - "is_sequential": { - "description": "IsSequential is true when the quest's steps must be completed in\norder.", - "type": "boolean" - }, - "must_activate_by": { - "description": "MustActivateBy is the last date a member could opt in to this quest,\nwhen Popeyes publishes one.", + "name": { + "example": "Pizza", "type": "string" }, - "name": { - "description": "Name is the quest's own public display copy.", - "example": "July Challenge: Make Two Purchases, Get FREE Chicken Sandwich in the form of 550 Bonus Points", + "product_count": { + "description": "ProductCount is how many priced SKUs this category contains.", + "example": 96, + "type": "integer" + }, + "sections": { + "items": { + "$ref": "#/definitions/papajohns.MenuSection" + }, + "type": "array" + } + }, + "type": "object" + }, + "papajohns.MenuCrust": { + "properties": { + "code": { + "example": "PIZZA_ORIGINAL", "type": "string" }, - "on_distinct_purchases": { - "description": "OnDistinctPurchases is true when each qualifying step must be a\nseparate purchase (observed true on every live quest sampled).", + "default": { + "example": true, "type": "boolean" }, - "step_count": { - "description": "StepCount is how many steps make up the quest. This endpoint does not\nexpose each step's own purchase-requirement rules.", + "id": { + "example": 1, "type": "integer" + }, + "name": { + "example": "Original Crust", + "type": "string" + }, + "sub_type": { + "example": "Original", + "type": "string" } }, "type": "object" }, - "popeyes.QuestsResponse": { + "papajohns.MenuInstruction": { "properties": { - "count": { - "example": 10, + "choices": { + "items": { + "$ref": "#/definitions/papajohns.MenuInstructionChoice" + }, + "type": "array" + }, + "description": { + "example": "How much cheese?", + "type": "string" + }, + "id": { + "example": 2, "type": "integer" }, - "fetched_at": { + "name": { + "example": "CHEESE", + "type": "string" + } + }, + "type": "object" + }, + "papajohns.MenuInstructionChoice": { + "properties": { + "code": { + "example": "ILC", "type": "string" }, - "has_more": { - "description": "HasMore is a paging heuristic -- see OffersResponse.HasMore.", + "default": { "example": false, "type": "boolean" }, - "quests": { - "items": { - "$ref": "#/definitions/popeyes.Quest" - }, - "type": "array" + "id": { + "example": 6, + "type": "integer" }, - "source_url": { + "name": { + "example": "Light Cheese", "type": "string" } }, "type": "object" }, - "popeyes.Restaurant": { + "papajohns.MenuItemResponse": { "properties": { - "address": { - "example": "111 Fulton St", - "type": "string" - }, - "address2": { + "category": { + "example": "pizza", "type": "string" }, - "city": { - "example": "New York", + "fetched_at": { "type": "string" }, - "country": { - "example": "USA", - "type": "string" + "group": { + "allOf": [ + { + "$ref": "#/definitions/papajohns.MenuProductGroup" + } + ], + "description": "Group is the product group this SKU belongs to, carrying the full\ncustomization axes for it." }, - "has_breakfast": { + "national_default": { "example": false, "type": "boolean" }, - "has_delivery": { - "example": true, - "type": "boolean" + "product": { + "$ref": "#/definitions/papajohns.MenuProduct" }, - "has_drive_thru": { - "example": false, - "type": "boolean" + "section": { + "example": "Most Popular", + "type": "string" }, - "has_playground": { - "example": false, - "type": "boolean" + "source_url": { + "type": "string" }, - "has_takeout": { - "example": true, - "type": "boolean" + "store_id": { + "example": 5054, + "type": "integer" + } + }, + "type": "object" + }, + "papajohns.MenuProduct": { + "properties": { + "calories": { + "description": "Calories is per the serving described by serving_label.", + "example": 210, + "type": "integer" }, - "has_wifi": { - "example": false, - "type": "boolean" + "code": { + "example": "PR10Q1", + "type": "string" }, - "hours": { - "$ref": "#/definitions/popeyes.RestaurantHours" + "crust_id": { + "example": 1, + "type": "integer" }, - "id": { - "example": "restaurant_242928", + "description": { "type": "string" }, - "is_dark_kitchen": { - "example": false, - "type": "boolean" + "disclaimer": { + "type": "string" }, - "is_halal": { - "example": false, - "type": "boolean" + "image_url": { + "type": "string" }, - "latitude": { - "example": 40.709873, + "name": { + "example": "10 Inch Original Pepperoni Pizza", + "type": "string" + }, + "price": { + "description": "Price is this store's price. A build-your-own SKU whose price depends\nentirely on the customer's choices reports 0.", + "example": 14.99, "type": "number" }, - "longitude": { - "example": -74.006601, + "regular_price": { + "description": "RegularPrice is the pre-promotion menu price where it differs.", + "example": 14.99, "type": "number" }, - "name": { - "example": "111 Fulton St New York, New York 10038 - USA", + "serving_label": { + "description": "ServingLabel describes what calories are counted per, e.g. \"/slice, 6 slices\".", + "example": "/slice, 6 slices", "type": "string" }, - "operator": { - "description": "Operator is the franchise group operating this location, when RBI\npublishes one.", + "size": { + "description": "Size is the size label this SKU represents within its group.", + "example": "Small", "type": "string" }, - "phone": { - "example": "929-579-0553", - "type": "string" + "size_id": { + "example": 2, + "type": "integer" }, - "postal_code": { - "example": "10038", + "sku": { + "example": "1-1-2-115", "type": "string" }, - "state": { - "example": "NY", - "type": "string" + "slices": { + "example": 6, + "type": "integer" }, - "store_id": { - "example": "14156", - "type": "string" + "surcharge": { + "type": "number" }, - "website_url": { - "example": "https://www.popeyes.com/store-locator/store/restaurant_242928", + "title": { + "description": "Title is the shorter in-menu label, e.g. \"Small Original Crust - Pepperoni\".", "type": "string" } }, "type": "object" }, - "popeyes.RestaurantHours": { + "papajohns.MenuProductGroup": { "properties": { - "curbside": { + "allow_half_toppings": { + "example": true, + "type": "boolean" + }, + "available_topping_ids": { "items": { - "$ref": "#/definitions/popeyes.DayHours" + "type": "integer" }, "type": "array" }, - "delivery": { + "crusts": { "items": { - "$ref": "#/definitions/popeyes.DayHours" + "$ref": "#/definitions/papajohns.MenuCrust" }, "type": "array" }, - "dining_room": { + "customizable": { + "description": "Customizable reports how far the product can be customized, as upstream\nclassifies it, e.g. full or none.", + "example": "full", + "type": "string" + }, + "description": { + "type": "string" + }, + "featured": { + "type": "boolean" + }, + "free_toppings": { + "type": "integer" + }, + "id": { + "example": "cyo", + "type": "string" + }, + "image_url": { + "type": "string" + }, + "instructions": { "items": { - "$ref": "#/definitions/popeyes.DayHours" + "$ref": "#/definitions/papajohns.MenuInstruction" }, "type": "array" }, - "drive_thru": { + "max_same_topping": { + "example": 2, + "type": "integer" + }, + "max_toppings": { + "description": "Topping rules. AvailableToppingIDs are upstream's own numeric ids; this\nAPI publishes no name for them, so they are exposed as ids rather than\ninvented labels.", + "example": 7, + "type": "integer" + }, + "price_from": { + "description": "PriceFrom is the cheapest priced SKU in the group, so a caller can rank\nproducts without walking every SKU.", + "example": 14.99, + "type": "number" + }, + "products": { "items": { - "$ref": "#/definitions/popeyes.DayHours" + "$ref": "#/definitions/papajohns.MenuProduct" + }, + "type": "array" + }, + "sizes": { + "description": "Sizes, Crusts and Instructions are populated only when\ninclude_options=true.", + "items": { + "$ref": "#/definitions/papajohns.MenuSize" }, "type": "array" + }, + "title": { + "example": "Create Your Own Pizza", + "type": "string" } }, "type": "object" }, - "popeyes.Reward": { + "papajohns.MenuResponse": { "properties": { - "id": { - "example": "09acd09f-2ca5-4259-934c-0345356b2bb0", + "categories": { + "items": { + "$ref": "#/definitions/papajohns.MenuCategory" + }, + "type": "array" + }, + "category": { + "example": "pizza", "type": "string" }, - "incentive_not_in_menu": { - "description": "IncentiveNotInMenu is true when Popeyes marks the reward's item as\nnot otherwise purchasable on the regular menu (a rewards-exclusive\nitem or bundle).", - "type": "boolean" + "fetched_at": { + "type": "string" }, - "mobile_order_only": { - "description": "MobileOrderOnly is true when the reward is only redeemable through\nPopeyes' own mobile ordering flow, when Popeyes publishes that\nrestriction.", + "national_default": { + "description": "NationalDefault is true when no store was selected, so a caller can tell\na real store's prices from the fallback menu.", + "example": false, "type": "boolean" }, - "name": { - "description": "Name is the reward's own public display copy -- typically the menu\nitem or combo name it redeems.", - "example": "Large Mashed Potatoes", + "product_count": { + "example": 206, + "type": "integer" + }, + "source_url": { "type": "string" }, - "points": { - "description": "Points is the loyalty points cost to redeem, from the reward's own\nLoyaltyPoints rule.", - "example": 600, + "store_id": { + "description": "StoreID echoes the restaurant the prices belong to. 0 is the national\ndefault menu.", + "example": 5054, "type": "integer" } }, "type": "object" }, - "popeyes.RewardsResponse": { + "papajohns.MenuSection": { "properties": { - "count": { - "example": 20, - "type": "integer" + "description": { + "type": "string" }, - "fetched_at": { + "id": { + "example": "most_popular", "type": "string" }, - "has_more": { - "description": "HasMore is a paging heuristic -- see OffersResponse.HasMore.", - "example": true, - "type": "boolean" + "name": { + "example": "Most Popular", + "type": "string" }, - "rewards": { + "product_groups": { "items": { - "$ref": "#/definitions/popeyes.Reward" + "$ref": "#/definitions/papajohns.MenuProductGroup" }, "type": "array" - }, - "source_url": { - "type": "string" } }, "type": "object" }, - "popeyes.faqResponseDoc": { + "papajohns.MenuSize": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "default": { + "example": false, + "type": "boolean" + }, + "id": { + "example": 2, "type": "integer" }, - "data": { - "$ref": "#/definitions/popeyes.FAQResponse" + "measure": { + "description": "Measure is the physical size where the group has one, e.g. 10\".", + "example": "10\"", + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "name": { + "description": "Name is the size's marketing name, e.g. Small.", + "example": "Small", + "type": "string" } }, "type": "object" }, - "popeyes.locationResponseDoc": { + "papajohns.NearbyResponse": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "count": { + "example": 10, "type": "integer" }, - "data": { - "$ref": "#/definitions/popeyes.LocationResponse" + "fetched_at": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "popeyes.locationsResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "radius": { + "example": 25, "type": "integer" }, - "data": { - "$ref": "#/definitions/popeyes.LocationsResponse" + "source_url": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "stores": { + "items": { + "$ref": "#/definitions/papajohns.NearbyStore" + }, + "type": "array" + }, + "total_in_radius": { + "description": "TotalInRadius is how many stores fall inside the radius overall,\nwhich is usually far more than one page. Use it with `offset` to\npage.", + "example": 73, + "type": "integer" } }, "type": "object" }, - "popeyes.menuResponseDoc": { + "papajohns.NearbyStore": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "address": { + "$ref": "#/definitions/papajohns.StoreAddress" }, - "data": { - "$ref": "#/definitions/popeyes.MenuResponse" + "delivery_hours": { + "description": "DeliveryHours and TakeoutHours are Papa John's own per-channel hours,\npublished separately from Hours and commonly later-closing.", + "items": { + "$ref": "#/definitions/papajohns.StoreHours" + }, + "type": "array" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "popeyes.offersResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "distance_kilometers": { + "example": 0.97, + "type": "number" }, - "data": { - "$ref": "#/definitions/popeyes.OffersResponse" + "distance_miles": { + "description": "DistanceMiles and DistanceKilometers are measured from the requested\ncoordinate.", + "example": 0.6, + "type": "number" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "popeyes.promotionsResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "hours": { + "description": "Hours is the store's general published week of hours.", + "items": { + "$ref": "#/definitions/papajohns.StoreHours" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/popeyes.PromotionsResponse" + "latitude": { + "example": 34.0614412, + "type": "number" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "popeyes.questsResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "longitude": { + "example": -118.2439367, + "type": "number" }, - "data": { - "$ref": "#/definitions/popeyes.QuestsResponse" + "name": { + "example": "Papa Johns Pizza", + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "order_url": { + "description": "OrderURL is Papa John's own carryout ordering deep link for this\nstore.", + "type": "string" + }, + "path": { + "description": "Path is the /papajohns/store path for this store, so a caller can go\nstraight to the detail endpoint.", + "type": "string" + }, + "payment_options": { + "description": "PaymentOptions are the payment methods this store accepts, e.g.\nAPPLEPAY, CASH, VISA.", + "items": { + "type": "string" + }, + "type": "array" + }, + "phone_number": { + "description": "PhoneNumber is Papa John's own E.164-shaped mainPhone, e.g.\n\"+12136172727\" -- deliberately left as published rather than\nreformatted, since geosearch and the store page publish phone\nnumbers in different shapes (mainPhone here vs. a display-formatted\nstring on /papajohns/store).", + "example": "+12136172727", + "type": "string" + }, + "pickup_and_delivery_services": { + "description": "PickupAndDeliveryServices are the fulfillment flags Papa John's\npublishes for this store, e.g. IN_STORE_PICKUP, SAME_DAY_DELIVERY.", + "items": { + "type": "string" + }, + "type": "array" + }, + "price_range": { + "description": "PriceRange is Papa John's own relative price tier, e.g. ONE, TWO.", + "example": "TWO", + "type": "string" + }, + "store_id": { + "example": "4269", + "type": "string" + }, + "takeout_hours": { + "items": { + "$ref": "#/definitions/papajohns.StoreHours" + }, + "type": "array" + }, + "timezone": { + "example": "America/Los_Angeles", + "type": "string" } }, "type": "object" }, - "popeyes.rewardsResponseDoc": { + "papajohns.NutritionFacts": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "calories": { + "example": 200, + "type": "number" }, - "data": { - "$ref": "#/definitions/popeyes.RewardsResponse" + "calories_from_fat": { + "example": 25, + "type": "number" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "cholesterol_mg": { + "type": "number" + }, + "dietary_fiber_g": { + "example": 1, + "type": "number" + }, + "protein_g": { + "example": 6, + "type": "number" + }, + "saturated_fat_g": { + "example": 0.5, + "type": "number" + }, + "sodium_mg": { + "example": 360, + "type": "number" + }, + "sugars_g": { + "example": 3, + "type": "number" + }, + "total_carbohydrate_g": { + "example": 36, + "type": "number" + }, + "total_fat_g": { + "example": 3, + "type": "number" + }, + "trans_fat_g": { + "type": "number" } }, "type": "object" }, - "popularTrend.CountryIndustryMeta": { + "papajohns.NutritionItem": { "properties": { - "country": { - "items": { - "$ref": "#/definitions/popularTrend.CountryIndustryMetaItem" - }, - "type": "array" + "name": { + "example": "Cheese Pizza", + "type": "string" }, - "industry": { + "variants": { "items": { - "$ref": "#/definitions/popularTrend.CountryIndustryMetaItem" + "$ref": "#/definitions/papajohns.NutritionVariant" }, "type": "array" } }, "type": "object" }, - "popularTrend.CountryIndustryMetaItem": { + "papajohns.NutritionResponse": { "properties": { - "id": { + "category": { + "example": "pizzas", "type": "string" }, - "value": { + "count": { + "example": 34, + "type": "integer" + }, + "fetched_at": { + "type": "string" + }, + "items": { + "items": { + "$ref": "#/definitions/papajohns.NutritionItem" + }, + "type": "array" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "popularTrend.TopAdsAnalysisPoint": { + "papajohns.NutritionVariant": { "properties": { - "second": { - "type": "integer" + "label": { + "description": "Label combines every column header Papa John's own table used to\ndistinguish this variant (crust type and/or size), joined with \" - \".\nA single-column table (most non-pizza items) yields the lone column\nheader verbatim, e.g. \"Regular\".", + "example": "Original Crust - Large", + "type": "string" }, - "value": { - "type": "number" + "nutrition": { + "$ref": "#/definitions/papajohns.NutritionFacts" + }, + "serving_size": { + "example": "1 slice", + "type": "string" + }, + "servings": { + "example": "8 slices per pizza", + "type": "string" } }, "type": "object" }, - "popularTrend.TopAdsAnalysisResp": { + "papajohns.StoreAddress": { "properties": { - "code": { - "type": "integer" + "city": { + "example": "Alhambra", + "type": "string" }, - "data": { - "properties": { - "analysis": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsAnalysisPoint" - }, - "type": "array" - }, - "duration": { - "type": "number" - }, - "highlight": { - "items": { - "type": "integer" - }, - "type": "array" - }, - "metric": { - "type": "string" - }, - "metric_label": { - "type": "string" - }, - "percentile": { - "type": "number" - }, - "percentile_data": { - "additionalProperties": { - "format": "float64", - "type": "number" - }, - "type": "object" - }, - "percentile_metric": { - "type": "string" - }, - "period_type": { - "type": "integer" - } - }, - "type": "object" - }, - "msg": { + "country": { + "example": "US", "type": "string" }, - "request_id": { + "line1": { + "example": "2136 S FREMONT AVE", "type": "string" - } - }, - "type": "object" - }, - "popularTrend.TopAdsDetailResp": { - "properties": { - "code": { - "type": "integer" }, - "data": { - "$ref": "#/definitions/popularTrend.TopAdsMaterial" - }, - "msg": { + "postal_code": { + "example": "91803", "type": "string" }, - "request_id": { + "region": { + "example": "CA", "type": "string" } }, "type": "object" }, - "popularTrend.TopAdsFilterItem": { + "papajohns.StoreHours": { "properties": { - "has_conversion": { + "closed": { + "description": "Closed is true when Papa John's publishes the day with no open\ninterval.", + "example": false, "type": "boolean" }, - "id": { - "type": "object" - }, - "label": { + "closes": { + "example": "00:15", "type": "string" }, - "parent_id": { - "type": "object" + "day_of_week": { + "example": "Monday", + "type": "string" }, - "value": { + "opens": { + "example": "10:30", "type": "string" } }, "type": "object" }, - "popularTrend.TopAdsFiltersResp": { + "papajohns.StoreResponse": { "properties": { - "code": { - "type": "integer" - }, - "data": { - "properties": { - "ad_format": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "ad_language": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "analysis_metric": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "country": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "duration": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "industry": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "like": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "objective": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "order_by": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "pattern_label": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - }, - "period": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - } - }, - "type": "object" + "address": { + "$ref": "#/definitions/papajohns.StoreAddress" }, - "msg": { + "fetched_at": { "type": "string" }, - "request_id": { + "google_place_id": { "type": "string" - } - }, - "type": "object" - }, - "popularTrend.TopAdsListResp": { - "properties": { - "code": { - "type": "integer" }, - "data": { - "properties": { - "materials": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsMaterial" - }, - "type": "array" - }, - "pagination": { - "$ref": "#/definitions/popularTrend.TopAdsPagination" - } + "hours": { + "description": "Hours is the store's general published week of hours.", + "items": { + "$ref": "#/definitions/papajohns.StoreHours" }, - "type": "object" + "type": "array" }, - "msg": { - "type": "string" + "latitude": { + "example": 34.06838390790909, + "type": "number" }, - "request_id": { + "longitude": { + "example": -118.14934906165672, + "type": "number" + }, + "name": { + "example": "Papa Johns Pizza", "type": "string" - } - }, - "type": "object" - }, - "popularTrend.TopAdsLocationInfoResp": { - "properties": { - "code": { - "type": "integer" }, - "data": { - "properties": { - "first_industry": { - "type": "object" - }, - "initial_country": { - "items": { - "type": "string" - }, - "type": "array" - }, - "l1_industry": { - "type": "integer" - }, - "l2_industry": { - "type": "integer" - }, - "second_industry": { - "type": "object" - } - }, - "type": "object" + "order_url": { + "description": "OrderURL is Papa John's own carryout ordering deep link for this\nstore, which embeds the same store_id.", + "type": "string" }, - "msg": { + "path": { "type": "string" }, - "request_id": { + "phone_number": { + "example": "(626) 642-5645", "type": "string" - } - }, - "type": "object" - }, - "popularTrend.TopAdsLocationsResp": { - "properties": { - "code": { - "type": "integer" }, - "data": { - "properties": { - "country": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" - } + "pickup_hours": { + "description": "PickupHours is Papa John's own published carryout/pickup hours,\npublished separately from Hours and sometimes shorter.", + "items": { + "$ref": "#/definitions/papajohns.StoreHours" }, - "type": "object" + "type": "array" }, - "msg": { + "source_url": { "type": "string" }, - "request_id": { + "store_id": { + "example": "5054", + "type": "string" + }, + "timezone": { + "example": "America/Los_Angeles", "type": "string" } }, "type": "object" }, - "popularTrend.TopAdsMaterial": { + "papajohns.StorefrontCategory": { "properties": { - "ad_title": { + "alias": { + "description": "Alias is upstream's own stable slug for the section, which survives the\ndisplay name being renamed for a season.", + "example": "pizza", "type": "string" }, - "brand_name": { + "id": { + "example": "1", "type": "string" }, - "comment": { - "type": "integer" + "name": { + "example": "Пицца", + "type": "string" }, - "cost": { + "product_count": { + "example": 25, "type": "integer" }, - "country_code": { + "products": { "items": { - "type": "string" + "$ref": "#/definitions/papajohns.StorefrontProduct" + }, + "type": "array" + } + }, + "type": "object" + }, + "papajohns.StorefrontMenuResponse": { + "properties": { + "categories": { + "description": "Categories carry the whole national catalog. The menu does not vary by\ncity, so there is no city to report.", + "items": { + "$ref": "#/definitions/papajohns.StorefrontCategory" }, "type": "array" }, - "ctr": { - "type": "number" + "category": { + "type": "string" }, - "favorite": { - "type": "boolean" + "currency": { + "example": "RUB", + "type": "string" }, - "has_summary": { - "type": "boolean" + "fetched_at": { + "type": "string" }, - "highlight": { + "market": { + "example": "russia", "type": "string" }, - "highlight_text": { + "product_count": { + "example": 185, + "type": "integer" + }, + "source_url": { "type": "string" }, - "id": { + "variant_count": { + "example": 892, + "type": "integer" + } + }, + "type": "object" + }, + "papajohns.StorefrontProduct": { + "properties": { + "category": { + "example": "Пицца", "type": "string" }, - "industry_key": { + "currency": { + "example": "RUB", "type": "string" }, - "is_search": { - "type": "boolean" + "description": { + "type": "string" }, - "keyword_list": { - "items": { - "type": "string" - }, - "type": "array" + "id": { + "example": "12345", + "type": "string" }, - "landing_page": { + "image_url": { "type": "string" }, - "like": { - "type": "integer" + "name": { + "example": "Прайм говядина Барбекю", + "type": "string" }, - "objective_key": { + "price_from": { + "description": "PriceFrom is the cheapest priced variant, so a caller can rank products\nwithout walking every variant.", + "example": 680, + "type": "number" + }, + "url": { "type": "string" }, - "objectives": { + "variants": { "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + "$ref": "#/definitions/papajohns.StorefrontVariant" }, "type": "array" + } + }, + "type": "object" + }, + "papajohns.StorefrontVariant": { + "properties": { + "available": { + "example": true, + "type": "boolean" }, - "pattern_label": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsFilterItem" - }, - "type": "array" + "crust": { + "description": "Crust is the dough the variant is made with. Russia publishes two\n(Традиционное, Тонкое); Poland publishes none, so this is empty there.", + "example": "Традиционное", + "type": "string" }, - "share": { - "type": "integer" + "currency": { + "example": "RUB", + "type": "string" }, - "source": { + "price": { + "example": 680, + "type": "number" + }, + "size": { + "description": "Size is the pizza diameter where the market publishes one, with its own\nunit (\"23 см\").", + "example": "23 см", "type": "string" }, - "source_key": { + "sku": { + "example": "172764", + "type": "string" + }, + "stuffed_crust": { + "description": "StuffedCrust names the filling baked into the rim, where the variant has\none. Upstream reports none/cheese/sausage/sausage_cheese; \"none\" is\nreported here as an empty value rather than the literal word.", + "example": "cheese", + "type": "string" + } + }, + "type": "object" + }, + "papajohns.allergensResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, - "video_info": { - "$ref": "#/definitions/popularTrend.TopAdsVideoInfo" + "data": { + "$ref": "#/definitions/papajohns.AllergensResponse" }, - "voice_over": { - "type": "boolean" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "popularTrend.TopAdsPagination": { + "papajohns.dealsResponseDoc": { "properties": { - "has_more": { - "type": "boolean" - }, - "page": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, - "size": { - "type": "integer" + "data": { + "$ref": "#/definitions/papajohns.DealsResponse" }, - "total": { + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "papajohns.directoryResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, - "total_count": { - "type": "integer" + "data": { + "$ref": "#/definitions/papajohns.DirectoryResponse" + }, + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "popularTrend.TopAdsRecommendResp": { + "papajohns.indiaDealResponseDoc": { "properties": { "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "properties": { - "materials": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsMaterial" - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/definitions/papajohns.IndiaDealResponse" }, "msg": { - "type": "string" - }, - "request_id": { - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "popularTrend.TopAdsSafetyResp": { + "papajohns.indiaMenuItemResponseDoc": { "properties": { "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "properties": { - "cc_banner_key": { - "type": "string" - }, - "creator_search": { - "type": "integer" - }, - "hashtag_search": { - "type": "integer" - }, - "keyword_search": { - "type": "integer" - }, - "sound_search": { - "type": "integer" - }, - "top_ads_search": { - "type": "integer" - } - }, - "type": "object" + "$ref": "#/definitions/papajohns.IndiaMenuItemResponse" }, "msg": { - "type": "string" - }, - "request_id": { - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "popularTrend.TopAdsSpotlightResp": { + "papajohns.indiaMenuResponseDoc": { "properties": { "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "properties": { - "materials": { - "items": { - "$ref": "#/definitions/popularTrend.TopAdsMaterial" - }, - "type": "array" - }, - "pagination": { - "$ref": "#/definitions/popularTrend.TopAdsPagination" - } - }, - "type": "object" + "$ref": "#/definitions/papajohns.IndiaMenuResponse" }, "msg": { - "type": "string" - }, - "request_id": { - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "popularTrend.TopAdsSuggestionsResp": { + "papajohns.indiaStoresResponseDoc": { "properties": { "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "properties": { - "query": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/definitions/papajohns.IndiaStoresResponse" }, "msg": { - "type": "string" - }, - "request_id": { - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "popularTrend.TopAdsVideoInfo": { + "papajohns.intlDealsResponseDoc": { "properties": { - "cover": { - "type": "string" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "duration": { - "type": "number" + "data": { + "$ref": "#/definitions/papajohns.IntlDealsResponse" }, - "height": { + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "papajohns.intlIngredientsResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, - "vid": { - "type": "string" - }, - "video_url": { - "additionalProperties": { - "type": "string" - }, - "type": "object" + "data": { + "$ref": "#/definitions/papajohns.IntlIngredientsResponse" }, - "width": { - "type": "integer" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.countryIndustryMetaResponseDoc": { + "papajohns.intlMenuResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.CountryIndustryMeta" + "$ref": "#/definitions/papajohns.IntlMenuResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsAnalysisResponseDoc": { + "papajohns.intlOfferResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsAnalysisResp" + "$ref": "#/definitions/papajohns.IntlOfferResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsDetailResponseDoc": { + "papajohns.intlProductResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsDetailResp" + "$ref": "#/definitions/papajohns.IntlProductResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsFiltersResponseDoc": { + "papajohns.intlStoresResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsFiltersResp" + "$ref": "#/definitions/papajohns.IntlStoresResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsListResponseDoc": { + "papajohns.latamMenuResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsListResp" + "$ref": "#/definitions/papajohns.LatamMenuResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsLocationInfoResponseDoc": { + "papajohns.menuItemResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsLocationInfoResp" + "$ref": "#/definitions/papajohns.MenuItemResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsLocationsResponseDoc": { + "papajohns.menuResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsLocationsResp" + "$ref": "#/definitions/papajohns.MenuResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsRecommendResponseDoc": { + "papajohns.nearbyResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsRecommendResp" + "$ref": "#/definitions/papajohns.NearbyResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsSafetyResponseDoc": { + "papajohns.nutritionResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsSafetyResp" + "$ref": "#/definitions/papajohns.NutritionResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsSpotlightResponseDoc": { + "papajohns.storeResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsSpotlightResp" + "$ref": "#/definitions/papajohns.StoreResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "populartrend.topAdsSuggestionsResponseDoc": { + "papajohns.storefrontMenuResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/popularTrend.TopAdsSuggestionsResp" + "$ref": "#/definitions/papajohns.StorefrontMenuResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "poshmark.BrandDirectoryEntry": { + "patreon.Creator": { "properties": { - "aliases": { - "items": { - "type": "string" - }, - "type": "array" + "avatar_url": { + "type": "string" }, - "id": { - "example": "4be6779b4630c50002000039", + "collection_count": { + "type": "integer" + }, + "cover_url": { "type": "string" }, - "logo_url": { + "creation_count": { + "type": "integer" + }, + "currency": { + "example": "EUR", "type": "string" }, - "name": { - "example": "Nike", + "handle": { + "example": "CachyOS", "type": "string" }, - "slug": { - "example": "Nike", + "has_public_rss": { + "type": "boolean" + }, + "id": { + "example": "8655479", "type": "string" - } - }, - "type": "object" - }, - "poshmark.BrandResponse": { - "properties": { - "has_more": { - "example": true, + }, + "is_monthly": { "type": "boolean" }, - "listings": { - "items": { - "$ref": "#/definitions/poshmark.Listing" - }, - "type": "array" + "is_nsfw": { + "type": "boolean" }, - "next_max_id": { + "name": { + "example": "CachyOS", "type": "string" }, - "source_url": { - "type": "string" + "offers_free_membership": { + "type": "boolean" }, - "total": { - "example": 210000, + "offers_paid_membership": { + "type": "boolean" + }, + "paid_member_count": { "type": "integer" - } - }, - "type": "object" - }, - "poshmark.BrandsResponse": { - "properties": { - "brands": { + }, + "patron_count": { + "type": "integer" + }, + "pledge_sum_cents": { + "type": "integer" + }, + "show_count": { + "type": "integer" + }, + "social_links": { "items": { - "$ref": "#/definitions/poshmark.BrandDirectoryEntry" + "$ref": "#/definitions/patreon.CreatorSocialLink" }, "type": "array" }, - "source_url": { + "summary": { "type": "string" }, - "total": { - "example": 29887, - "type": "integer" + "url": { + "example": "https://www.patreon.com/CachyOS", + "type": "string" } }, "type": "object" }, - "poshmark.CategoriesResponse": { + "patreon.CreatorSocialLink": { "properties": { - "departments": { - "items": { - "$ref": "#/definitions/poshmark.DepartmentTaxonomy" - }, - "type": "array" + "label": { + "example": "CachyOS", + "type": "string" + }, + "platform": { + "example": "twitter", + "type": "string" + }, + "url": { + "example": "https://twitter.com/CachyOS", + "type": "string" } }, "type": "object" }, - "poshmark.CategoryResponse": { + "patreon.ExploreCreator": { "properties": { - "has_more": { - "example": true, - "type": "boolean" + "avatar_url": { + "type": "string" }, - "listings": { - "items": { - "$ref": "#/definitions/poshmark.Listing" - }, - "type": "array" + "creation_name": { + "example": "creating YouTube videos", + "type": "string" }, - "next_max_id": { + "id": { + "example": "4270549", "type": "string" }, - "source_url": { + "is_nsfw": { + "type": "boolean" + }, + "name": { + "example": "Reckless Ben", "type": "string" }, - "total": { - "example": 84000, - "type": "integer" + "url": { + "example": "https://www.patreon.com/RecklessBen", + "type": "string" } }, "type": "object" }, - "poshmark.CategoryTaxonomyEntry": { + "patreon.ExploreResult": { "properties": { - "id": { - "example": "00268975d97b4e80ef00a955", - "type": "string" - }, - "name": { - "example": "Shoes", - "type": "string" + "sections": { + "items": { + "$ref": "#/definitions/patreon.ExploreSection" + }, + "type": "array" }, - "path": { - "description": "Path is the exact value the category endpoint's path parameter\nexpects, e.g. \"Women-Shoes\".", - "example": "Women-Shoes", + "topic": { + "example": "podcasts_and_shows", "type": "string" } }, "type": "object" }, - "poshmark.ClosetResponse": { + "patreon.ExploreSection": { "properties": { - "has_more": { - "example": true, - "type": "boolean" - }, - "listings": { + "creators": { "items": { - "$ref": "#/definitions/poshmark.Listing" + "$ref": "#/definitions/patreon.ExploreCreator" }, "type": "array" }, - "next_max_id": { + "title": { + "example": "Top creators", "type": "string" }, - "seller": { - "$ref": "#/definitions/poshmark.Seller" - }, - "source_url": { + "type": { + "enum": [ + "popular-campaigns", + "trending-campaigns", + "new-campaigns" + ], + "example": "popular-campaigns", "type": "string" - }, - "total_count": { - "example": 107, - "type": "integer" } }, "type": "object" }, - "poshmark.Comment": { + "patreon.MembershipTier": { "properties": { - "comment": { - "example": "Hi can you tell me the width of the waist?", - "type": "string" + "amount_cents": { + "example": 500, + "type": "integer" }, - "created_at": { - "example": "2026-07-05T09:28:09-07:00", - "type": "string" + "benefits": { + "items": { + "$ref": "#/definitions/patreon.MembershipTierBenefit" + }, + "type": "array" }, - "creator_full_name": { - "example": "Jen Muston", + "currency": { + "example": "USD", "type": "string" }, - "creator_picture_url": { + "description": { "type": "string" }, - "creator_username": { - "example": "muvlax20", + "id": { + "example": "17218833", "type": "string" }, - "id": { - "example": "6a4a86191fea02ce69f41484", + "title": { + "example": "Supporter", "type": "string" } }, "type": "object" }, - "poshmark.DepartmentTaxonomy": { + "patreon.MembershipTierBenefit": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/poshmark.CategoryTaxonomyEntry" - }, - "type": "array" - }, - "id": { - "example": "000e8975d97b4e80ef00a955", - "type": "string" - }, - "name": { - "example": "Women", + "description": { "type": "string" }, - "path": { - "description": "Path is the exact value the category endpoint's path parameter\nexpects for browsing the department itself, e.g. \"Women\".", - "example": "Women", + "title": { + "example": "Support the project", "type": "string" } }, "type": "object" }, - "poshmark.Listing": { + "patreon.MembershipTiersResult": { "properties": { - "brand": { - "example": "FARM Rio", + "creator_id": { + "example": "8655479", "type": "string" }, - "category": { - "example": "Shorts", + "handle": { + "example": "CachyOS", "type": "string" }, - "colors": { - "example": [ - "Red", - "Yellow" - ], + "tiers": { "items": { - "type": "string" + "$ref": "#/definitions/patreon.MembershipTier" }, "type": "array" + } + }, + "type": "object" + }, + "patreon.PublicRSSEpisode": { + "properties": { + "description": { + "type": "string" }, - "comment_count": { - "example": 4, - "type": "integer" + "duration": { + "type": "string" }, - "condition": { - "example": "nwt", + "enclosure_type": { "type": "string" }, - "cover_shot": { - "example": "https://di2ponv0v5otw.cloudfront.net/posts/2026/06/27/6a3fed1de9c77df92e2c0cc6/s_6a3fed24bd4ce3ff762126e5.jpg", + "enclosure_url": { "type": "string" }, - "created_at": { - "example": "2026-06-27T08:32:58-07:00", + "episode_type": { "type": "string" }, - "department": { - "example": "Women", + "guid": { "type": "string" }, - "description": { + "image_url": { "type": "string" }, - "first_available_at": { + "link": { "type": "string" }, - "id": { - "example": "6a3fed1de9c77df92e2c0cc6", + "published_at": { "type": "string" }, - "inventory_status": { - "example": "available", + "title": { + "type": "string" + } + }, + "type": "object" + }, + "patreon.PublicRSSFeed": { + "properties": { + "author": { "type": "string" }, - "like_count": { - "example": 111, - "type": "integer" + "campaign_id": { + "example": "80117", + "type": "string" }, - "original_price": { - "example": 95, - "type": "number" + "copyright": { + "type": "string" }, - "pictures": { + "description": { + "type": "string" + }, + "episodes": { "items": { - "type": "string" + "$ref": "#/definitions/patreon.PublicRSSEpisode" }, "type": "array" }, - "price": { - "example": 55, - "type": "number" - }, - "quantity_available": { - "example": 1, - "type": "integer" - }, - "seller_display_handle": { - "example": "maltimar", - "type": "string" - }, - "seller_full_name": { - "example": "Mary Altimar", + "explicit": { "type": "string" }, - "seller_picture_url": { + "image_url": { "type": "string" }, - "seller_username": { - "example": "maltimar", + "language": { "type": "string" }, - "share_count": { - "example": 13, - "type": "integer" - }, - "size": { - "example": "S", + "link": { "type": "string" }, - "status": { - "example": "published", + "show_id": { + "example": "1322380", "type": "string" }, "title": { - "example": "NWT Farm Rio Shorts", "type": "string" }, - "url": { - "example": "https://poshmark.com/listing/6a3fed1de9c77df92e2c0cc6", + "type": { "type": "string" } }, "type": "object" }, - "poshmark.ListingResponse": { + "patreon.creatorResponseDoc": { "properties": { - "brand": { - "example": "FARM Rio", + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/patreon.Creator" + }, + "msg": { + "example": "success", "type": "string" + } + }, + "type": "object" + }, + "patreon.exploreResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "category": { - "example": "Shorts", + "data": { + "$ref": "#/definitions/patreon.ExploreResult" + }, + "msg": { + "example": "success", + "type": "string" + } + }, + "type": "object" + }, + "patreon.membershipTiersResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/patreon.MembershipTiersResult" + }, + "msg": { + "example": "success", "type": "string" + } + }, + "type": "object" + }, + "patreon.publicRSSResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "colors": { - "example": [ - "Red", - "Yellow" - ], + "data": { + "$ref": "#/definitions/patreon.PublicRSSFeed" + }, + "msg": { + "example": "success", + "type": "string" + } + }, + "type": "object" + }, + "pcgamer.AuthorResponse": { + "properties": { + "articles": { "items": { - "type": "string" + "$ref": "#/definitions/newsplatform.HeadlineItem" }, "type": "array" }, - "comment_count": { - "example": 4, - "type": "integer" - }, - "comments": { + "biography": { "items": { - "$ref": "#/definitions/poshmark.Comment" + "type": "string" }, "type": "array" }, - "condition": { - "example": "nwt", - "type": "string" + "has_next_page": { + "type": "boolean" }, - "cover_shot": { - "example": "https://di2ponv0v5otw.cloudfront.net/posts/2026/06/27/6a3fed1de9c77df92e2c0cc6/s_6a3fed24bd4ce3ff762126e5.jpg", + "job_title": { "type": "string" }, - "created_at": { - "example": "2026-06-27T08:32:58-07:00", + "name": { "type": "string" }, - "department": { - "example": "Women", - "type": "string" + "page": { + "type": "integer" }, - "description": { + "slug": { "type": "string" }, - "first_available_at": { - "type": "string" + "social_links": { + "items": { + "$ref": "#/definitions/pcgamer.AuthorSocialLink" + }, + "type": "array" }, - "id": { - "example": "6a3fed1de9c77df92e2c0cc6", + "url": { "type": "string" - }, - "inventory_status": { - "example": "available", + } + }, + "type": "object" + }, + "pcgamer.AuthorSocialLink": { + "properties": { + "platform": { "type": "string" }, - "like_count": { - "example": 111, - "type": "integer" - }, - "original_price": { - "example": 95, - "type": "number" - }, - "pictures": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "pcmag.AuthorResponse": { + "properties": { + "articles": { "items": { - "type": "string" + "$ref": "#/definitions/newsplatform.HeadlineItem" }, "type": "array" }, - "price": { - "example": 55, - "type": "number" - }, - "quantity_available": { - "example": 1, - "type": "integer" + "biography": { + "type": "string" }, - "seller": { - "$ref": "#/definitions/poshmark.Seller" + "expertise": { + "items": { + "$ref": "#/definitions/pcmag.AuthorTopic" + }, + "type": "array" }, - "seller_display_handle": { - "example": "maltimar", + "image_url": { "type": "string" }, - "seller_full_name": { - "example": "Mary Altimar", + "name": { "type": "string" }, - "seller_picture_url": { + "role": { "type": "string" }, - "seller_username": { - "example": "maltimar", + "slug": { "type": "string" }, - "share_count": { - "example": 13, - "type": "integer" - }, - "similar_listings": { + "social_links": { "items": { - "$ref": "#/definitions/poshmark.Listing" + "$ref": "#/definitions/pcmag.AuthorSocialLink" }, "type": "array" }, - "size": { - "example": "S", + "url": { "type": "string" - }, - "source_url": { + } + }, + "type": "object" + }, + "pcmag.AuthorSocialLink": { + "properties": { + "platform": { "type": "string" }, - "status": { - "example": "published", + "url": { "type": "string" - }, - "title": { - "example": "NWT Farm Rio Shorts", + } + }, + "type": "object" + }, + "pcmag.AuthorTopic": { + "properties": { + "name": { "type": "string" }, "url": { - "example": "https://poshmark.com/listing/6a3fed1de9c77df92e2c0cc6", "type": "string" } }, "type": "object" }, - "poshmark.RatingBreakdown": { + "people.AuthorInfoItem": { "properties": { - "five_star": { - "example": 355, - "type": "integer" - }, - "four_star": { - "example": 7, - "type": "integer" - }, - "one_star": { - "example": 1, - "type": "integer" + "label": { + "type": "string" }, - "three_star": { - "example": 2, - "type": "integer" + "url": { + "type": "string" }, - "two_star": { - "example": 3, - "type": "integer" + "value": { + "type": "string" } }, "type": "object" }, - "poshmark.SearchResponse": { + "people.AuthorResponse": { "properties": { - "has_more": { - "example": true, - "type": "boolean" + "articles": { + "items": { + "$ref": "#/definitions/people.HeadlineItem" + }, + "type": "array" }, - "listings": { + "biography": { "items": { - "$ref": "#/definitions/poshmark.Listing" + "type": "string" }, "type": "array" }, - "next_max_id": { - "example": "ENC_eyJtYXhfaWRzIjpbNDksMSwxXSwicGFnZV9udW0iOjIsInBhZ2VfZ3JvdXBfaWQiOiI2YTcyZTE3OTI1MzYyMTUzMDNhMmVmMWEifQ", + "info": { + "items": { + "$ref": "#/definitions/people.AuthorInfoItem" + }, + "type": "array" + }, + "job_title": { "type": "string" }, - "source_url": { + "name": { "type": "string" }, - "total": { - "example": 120000, - "type": "integer" + "url": { + "type": "string" } }, "type": "object" }, - "poshmark.Seller": { + "people.HeadlineItem": { "properties": { - "cover_shot_url": { - "type": "string" - }, - "display_handle": { - "example": "maltimar", - "type": "string" - }, - "followers": { - "example": 9096, - "type": "integer" - }, - "following": { - "example": 89, - "type": "integer" - }, - "full_name": { - "example": "Mary Altimar", + "author": { "type": "string" }, - "id": { - "example": "5a4f84cb7d70fb0f0f05a37f", + "image_url": { "type": "string" }, - "items_sold_display": { - "example": "500+", + "published_at": { "type": "string" }, - "last_active_at": { - "example": "2026-08-04T19:52:16-07:00", + "summary": { "type": "string" }, - "member_since": { - "example": "2018-01-05T05:59:39-08:00", + "title": { "type": "string" }, - "orders_shipped": { - "example": 522, - "type": "integer" - }, - "picture_url": { - "example": "https://di2ponv0v5otw.cloudfront.net/users/2018/04/23/5a4f84cb7d70fb0f0f05a37f/t_5ade0fdbd0492dff500c741a.jpg", + "type": { "type": "string" }, - "posts_count": { - "example": 698, - "type": "integer" - }, - "rating_average": { - "example": 4.93, - "type": "number" - }, - "rating_breakdown": { - "$ref": "#/definitions/poshmark.RatingBreakdown" - }, - "rating_count": { - "example": 368, - "type": "integer" - }, "url": { - "example": "https://poshmark.com/closet/maltimar", - "type": "string" - }, - "username": { - "example": "maltimar", "type": "string" } }, "type": "object" }, - "poshmark.TrendResponse": { + "phillyinquirer.AuthorResponse": { "properties": { - "cover_shot": { - "type": "string" - }, - "description": { - "type": "string" - }, - "has_more": { - "example": true, - "type": "boolean" + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" }, - "listings": { + "biography": { "items": { - "$ref": "#/definitions/poshmark.Listing" + "type": "string" }, "type": "array" }, + "image_url": { + "type": "string" + }, "name": { - "example": "Vintage Celine Handbags", "type": "string" }, - "next_max_id": { + "role": { "type": "string" }, - "source_url": { + "slug": { "type": "string" }, - "total": { - "example": 5000, - "type": "integer" + "social_links": { + "items": { + "$ref": "#/definitions/phillyinquirer.AuthorSocialLink" + }, + "type": "array" + }, + "url": { + "type": "string" } }, "type": "object" }, - "poshmark.brandsResponseDoc": { + "phillyinquirer.AuthorSocialLink": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/poshmark.BrandsResponse" + "platform": { + "type": "string" }, - "msg": { - "example": "OK", + "url": { "type": "string" } }, "type": "object" }, - "poshmark.categoriesResponseDoc": { + "philstar.AuthorArticle": { "properties": { - "code": { - "example": 200, - "type": "integer" + "published_at": { + "type": "string" }, - "data": { - "$ref": "#/definitions/poshmark.CategoriesResponse" + "section": { + "type": "string" }, - "msg": { - "example": "OK", + "summary": { "type": "string" - } - }, - "type": "object" - }, - "poshmark.searchResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/poshmark.SearchResponse" + "title": { + "type": "string" }, - "msg": { - "example": "OK", + "url": { "type": "string" } }, "type": "object" }, - "prada.CategoriesResponse": { + "philstar.AuthorResponse": { "properties": { - "categories": { + "articles": { "items": { - "$ref": "#/definitions/prada.Category" + "$ref": "#/definitions/philstar.AuthorArticle" }, "type": "array" }, - "count": { - "type": "integer" + "id": { + "type": "string" }, - "fetched_at": { + "name": { "type": "string" }, - "genders": { - "items": { - "$ref": "#/definitions/prada.FacetCount" - }, - "type": "array" + "photo_url": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "prada.Category": { + "phonearena.AuthorResponse": { "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "path": { + "articles": { "items": { - "type": "string" + "$ref": "#/definitions/newsplatform.HeadlineItem" }, "type": "array" }, - "path_ids": { + "biography": { "items": { "type": "string" }, "type": "array" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "prada.CategoryResponse": { - "properties": { - "category_id": { + "image_url": { "type": "string" }, - "count": { - "type": "integer" - }, - "country": { + "name": { "type": "string" }, - "fetched_at": { + "role": { "type": "string" }, - "gender": { + "slug": { "type": "string" }, - "limit": { - "type": "integer" - }, - "page": { - "type": "integer" - }, - "products": { + "social_links": { "items": { - "$ref": "#/definitions/prada.Product" + "$ref": "#/definitions/phonearena.AuthorSocialLink" }, "type": "array" }, - "sort": { + "url": { "type": "string" - }, - "total_pages": { - "type": "integer" - }, - "total_results": { - "type": "integer" } }, "type": "object" }, - "prada.FacetCount": { + "phonearena.AuthorSocialLink": { "properties": { - "count": { - "type": "integer" + "platform": { + "type": "string" }, - "value": { + "url": { "type": "string" } }, "type": "object" }, - "prada.Product": { + "pinterest.Board": { "properties": { - "color": { - "type": "string" - }, - "color_hex": { - "type": "string" - }, - "currency": { + "cover_image_url": { "type": "string" }, - "gender": { - "items": { - "type": "string" - }, - "type": "array" - }, - "image_url": { + "description": { "type": "string" }, - "in_stock": { - "type": "boolean" - }, - "material": { - "type": "string" + "follower_count": { + "type": "integer" }, - "model": { + "id": { "type": "string" }, "name": { "type": "string" }, - "price": { - "type": "number" - }, - "product_type": { - "type": "string" - }, - "pv": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "prada.ProductColorOption": { - "properties": { - "code": { + "owner_username": { "type": "string" }, - "hex": { - "type": "string" + "pin_count": { + "type": "integer" }, - "name": { + "privacy": { "type": "string" }, "url": { @@ -121103,303 +123307,256 @@ }, "type": "object" }, - "prada.ProductResponse": { + "pinterest.BoardResponse": { "properties": { - "breadcrumbs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "color": { + "cover_image_url": { "type": "string" }, - "color_hex": { + "description": { "type": "string" }, - "country": { - "type": "string" + "follower_count": { + "type": "integer" }, - "currency": { + "id": { "type": "string" }, - "description": { + "name": { "type": "string" }, - "discounted_price": { - "type": "number" - }, - "fetched_at": { + "owner_username": { "type": "string" }, - "gender": { - "items": { - "type": "string" - }, - "type": "array" + "pin_count": { + "type": "integer" }, - "images": { + "pins": { "items": { - "type": "string" + "$ref": "#/definitions/pinterest.PinSummary" }, "type": "array" }, - "in_stock": { - "type": "boolean" - }, - "material": { - "type": "string" - }, - "model": { + "privacy": { "type": "string" }, - "name": { + "url": { "type": "string" - }, - "other_colors": { + } + }, + "type": "object" + }, + "pinterest.CategoriesResponse": { + "properties": { + "categories": { "items": { - "$ref": "#/definitions/prada.ProductColorOption" + "$ref": "#/definitions/pinterest.Category" }, "type": "array" - }, - "price": { - "type": "number" - }, - "product_type": { + } + }, + "type": "object" + }, + "pinterest.Category": { + "properties": { + "id": { "type": "string" }, - "pv": { + "name": { "type": "string" }, - "sizes": { - "items": { - "$ref": "#/definitions/prada.ProductSize" - }, - "type": "array" - }, - "stock_quantity": { - "type": "integer" - }, - "url": { + "slug": { "type": "string" } }, "type": "object" }, - "prada.ProductSize": { + "pinterest.IdeaResponse": { "properties": { - "code": { + "description": { "type": "string" }, - "label": { + "follower_count": { + "type": "integer" + }, + "id": { + "type": "string" + }, + "name": { "type": "string" + }, + "pins": { + "items": { + "$ref": "#/definitions/pinterest.PinSummary" + }, + "type": "array" } }, "type": "object" }, - "prada.SearchResponse": { + "pinterest.PinDetail": { "properties": { - "count": { + "board_name": { + "type": "string" + }, + "comment_count": { "type": "integer" }, - "country": { + "created_at": { "type": "string" }, - "fetched_at": { + "description": { "type": "string" }, - "gender": { + "domain": { "type": "string" }, - "limit": { - "type": "integer" + "dominant_color": { + "type": "string" }, - "page": { - "type": "integer" + "id": { + "type": "string" }, - "products": { - "items": { - "$ref": "#/definitions/prada.Product" - }, - "type": "array" + "image_url": { + "type": "string" }, - "query": { + "link": { "type": "string" }, - "sort": { + "pinner_username": { "type": "string" }, - "total_pages": { + "repin_count": { "type": "integer" }, - "total_results": { - "type": "integer" + "title": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "prada.Store": { + "pinterest.PinSummary": { "properties": { - "categories": { - "items": { - "type": "string" - }, - "type": "array" - }, - "city": { + "board_name": { "type": "string" }, - "country": { + "description": { "type": "string" }, - "distance_km": { - "type": "number" - }, - "hours": { - "items": { - "$ref": "#/definitions/prada.StoreDay" - }, - "type": "array" - }, - "id": { + "domain": { "type": "string" }, - "latitude": { - "type": "number" - }, - "line1": { + "dominant_color": { "type": "string" }, - "line2": { + "id": { "type": "string" }, - "longitude": { - "type": "number" - }, - "name": { + "image_url": { "type": "string" }, - "permanently_closed": { - "type": "boolean" - }, - "phone": { + "link": { "type": "string" }, - "postal_code": { + "pinner_username": { "type": "string" }, - "region": { + "title": { "type": "string" }, - "services": { - "items": { - "type": "string" - }, - "type": "array" - }, - "timezone": { + "url": { "type": "string" } }, "type": "object" }, - "prada.StoreDay": { + "pinterest.SearchResponse": { "properties": { - "closed": { - "type": "boolean" - }, - "day": { - "type": "string" - }, - "end": { - "type": "string" + "pins": { + "items": { + "$ref": "#/definitions/pinterest.PinSummary" + }, + "type": "array" }, - "start": { + "query": { "type": "string" } }, "type": "object" }, - "prada.StoresResponse": { + "pinterest.User": { "properties": { - "count": { - "type": "integer" - }, - "fetched_at": { + "about": { "type": "string" }, - "lat": { - "type": "number" + "avatar_url": { + "type": "string" }, - "limit": { + "board_count": { "type": "integer" }, - "lng": { - "type": "number" + "follower_count": { + "type": "integer" }, - "offset": { + "following_count": { "type": "integer" }, - "query": { + "full_name": { "type": "string" }, - "radius_km": { - "type": "number" - }, - "stores": { - "items": { - "$ref": "#/definitions/prada.Store" - }, - "type": "array" + "is_verified_merchant": { + "type": "boolean" }, - "total_results": { + "pin_count": { "type": "integer" + }, + "username": { + "type": "string" + }, + "website_url": { + "type": "string" } }, "type": "object" }, - "prada.SuggestResponse": { + "pinterest.UserBoardsResponse": { "properties": { - "count": { - "type": "integer" - }, - "fetched_at": { - "type": "string" - }, - "query": { - "type": "string" - }, - "suggestions": { + "boards": { "items": { - "$ref": "#/definitions/prada.Suggestion" + "$ref": "#/definitions/pinterest.Board" }, "type": "array" + }, + "username": { + "type": "string" } }, "type": "object" }, - "prada.Suggestion": { + "pinterest.UserPinsResponse": { "properties": { - "popularity": { - "type": "integer" + "pins": { + "items": { + "$ref": "#/definitions/pinterest.PinSummary" + }, + "type": "array" }, - "query": { + "username": { "type": "string" - }, - "result_count": { - "type": "integer" } }, "type": "object" }, - "prada.categoriesResponseDoc": { + "pinterest.boardResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/prada.CategoriesResponse" + "$ref": "#/definitions/pinterest.BoardResponse" }, "msg": { "example": "OK", @@ -121408,14 +123565,14 @@ }, "type": "object" }, - "prada.categoryResponseDoc": { + "pinterest.categoriesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/prada.CategoryResponse" + "$ref": "#/definitions/pinterest.CategoriesResponse" }, "msg": { "example": "OK", @@ -121424,14 +123581,14 @@ }, "type": "object" }, - "prada.productResponseDoc": { + "pinterest.ideaResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/prada.ProductResponse" + "$ref": "#/definitions/pinterest.IdeaResponse" }, "msg": { "example": "OK", @@ -121440,14 +123597,14 @@ }, "type": "object" }, - "prada.searchResponseDoc": { + "pinterest.pinResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/prada.SearchResponse" + "$ref": "#/definitions/pinterest.PinDetail" }, "msg": { "example": "OK", @@ -121456,14 +123613,14 @@ }, "type": "object" }, - "prada.storesResponseDoc": { + "pinterest.searchResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/prada.StoresResponse" + "$ref": "#/definitions/pinterest.SearchResponse" }, "msg": { "example": "OK", @@ -121472,14 +123629,14 @@ }, "type": "object" }, - "prada.suggestResponseDoc": { + "pinterest.userBoardsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/prada.SuggestResponse" + "$ref": "#/definitions/pinterest.UserBoardsResponse" }, "msg": { "example": "OK", @@ -121488,245 +123645,196 @@ }, "type": "object" }, - "pristineauction.AuctionStatus": { + "pinterest.userPinsResponseDoc": { "properties": { - "slug": { - "example": "completed", + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/pinterest.UserPinsResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "pristineauction.AuctionType": { + "pinterest.userResponseDoc": { "properties": { - "slug": { - "example": "daily", + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/pinterest.User" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "pristineauction.CategoriesResponse": { + "pitchbook.DataTable": { "properties": { - "auction_types": { + "columns": { "items": { - "$ref": "#/definitions/pristineauction.AuctionType" + "type": "string" }, "type": "array" }, - "categories": { - "items": { - "$ref": "#/definitions/pristineauction.Category" - }, - "type": "array" + "name": { + "example": "Investors", + "type": "string" }, - "sort": { + "row_ids": { "items": { - "$ref": "#/definitions/pristineauction.SortOption" + "items": { + "type": "string" + }, + "type": "array" }, "type": "array" }, - "statuses": { + "rows": { "items": { - "$ref": "#/definitions/pristineauction.AuctionStatus" + "items": { + "type": "string" + }, + "type": "array" }, "type": "array" + }, + "total": { + "example": 23, + "type": "integer" } }, "type": "object" }, - "pristineauction.Category": { + "pitchbook.FAQ": { "properties": { - "count": { - "example": 8608, - "type": "integer" - }, - "label": { - "example": "BASEBALL", - "type": "string" - }, - "slug": { - "example": "baseball", + "answer": { + "example": "Thinking Machines Lab was founded in 2024.", "type": "string" }, - "url": { - "example": "https://www.pristineauction.com/auction/category/baseball", + "question": { + "example": "When was Thinking Machines Lab founded?", "type": "string" } }, "type": "object" }, - "pristineauction.LotDetailResponse": { + "pitchbook.ProfileResponse": { "properties": { - "auction_type": { - "example": "CARD AUCTION", - "type": "string" + "contact": { + "additionalProperties": { + "type": "string" + }, + "type": "object" }, - "auction_type_url": { + "description": { "type": "string" }, - "availability": { - "example": "InStock", + "faqs": { + "items": { + "$ref": "#/definitions/pitchbook.FAQ" + }, + "type": "array" + }, + "fetched_at": { + "example": "2026-07-08T20:00:00Z", "type": "string" }, - "category": { - "example": "trading-cards", + "id": { + "example": "752821-12", "type": "string" }, - "currency": { - "example": "USD", + "kind": { + "example": "company", "type": "string" }, - "description": { + "name": { + "example": "Thinking Machines Lab", "type": "string" }, - "ends_at": { - "example": "2026-09-21T03:00:00-07:00", + "overview": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "source_url": { + "example": "https://pitchbook.com/profiles/company/752821-12", "type": "string" }, - "images": { + "tables": { "items": { - "type": "string" + "$ref": "#/definitions/pitchbook.DataTable" }, "type": "array" - }, - "lot_number": { - "example": 13154611, + } + }, + "type": "object" + }, + "pitchbook.advisorResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "no_reserve": { - "type": "boolean" - }, - "price": { - "example": 256.66, - "type": "number" - }, - "sku": { - "example": "LOT-13154611", - "type": "string" + "data": { + "$ref": "#/definitions/pitchbook.ProfileResponse" }, - "title": { - "example": "Mickey Mantle 1969 Topps #500 (PSA 8) (MC)", + "msg": { + "example": "OK", "type": "string" - }, - "total_bids": { - "type": "integer" - }, - "total_views": { + } + }, + "type": "object" + }, + "pitchbook.companyResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "total_watching": { - "type": "integer" + "data": { + "$ref": "#/definitions/pitchbook.ProfileResponse" }, - "url": { - "example": "https://www.pristineauction.com/a13154611", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "pristineauction.LotSummary": { + "pitchbook.fundResponseDoc": { "properties": { - "auction_type": { - "example": "CARD AUCTION", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "auction_type_url": { - "type": "string" + "data": { + "$ref": "#/definitions/pitchbook.ProfileResponse" }, - "currency": { - "example": "USD", - "type": "string" - }, - "ends_at": { - "example": "2026-09-21T03:00:00Z", - "type": "string" - }, - "high_bid": { - "example": 256.66, - "type": "number" - }, - "image_url": { - "type": "string" - }, - "lot_number": { - "example": 13154611, - "type": "integer" - }, - "no_reserve": { - "type": "boolean" - }, - "subtitle": { - "example": "Rookie Card", - "type": "string" - }, - "title": { - "example": "Mickey Mantle 1969 Topps #500 (PSA 8) (MC)", - "type": "string" - }, - "url": { - "example": "https://www.pristineauction.com/a13154611", - "type": "string" - } - }, - "type": "object" - }, - "pristineauction.SearchResponse": { - "properties": { - "page": { - "type": "integer" - }, - "per_page": { - "type": "integer" - }, - "results": { - "items": { - "$ref": "#/definitions/pristineauction.LotSummary" - }, - "type": "array" - }, - "total": { - "type": "integer" - }, - "total_pages": { - "type": "integer" - } - }, - "type": "object" - }, - "pristineauction.SortOption": { - "properties": { - "slug": { - "example": "ending-soonest", - "type": "string" - } - }, - "type": "object" - }, - "pristineauction.categoriesResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/pristineauction.CategoriesResponse" - }, - "msg": { - "example": "OK", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "pristineauction.lotDetailResponseDoc": { + "pitchbook.investorResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pristineauction.LotDetailResponse" + "$ref": "#/definitions/pitchbook.ProfileResponse" }, "msg": { "example": "OK", @@ -121735,14 +123843,14 @@ }, "type": "object" }, - "pristineauction.searchResponseDoc": { + "pitchbook.limitedPartnerResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/pristineauction.SearchResponse" + "$ref": "#/definitions/pitchbook.ProfileResponse" }, "msg": { "example": "OK", @@ -121751,1887 +123859,2008 @@ }, "type": "object" }, - "producthunt.LeaderboardAdItem": { + "pizzahut.Address": { "properties": { - "channel_kind": { - "type": "string" - }, - "id": { + "address1": { + "example": "932 8th Ave", "type": "string" }, - "large_asset_uuid": { + "address2": { "type": "string" }, - "name": { + "city": { + "example": "New York", "type": "string" }, - "post": { - "$ref": "#/definitions/producthunt.LeaderboardAdPost" - }, - "small_asset_uuid": { + "country_code": { + "example": "US", "type": "string" }, - "subject": { - "type": "string" + "latitude": { + "example": 40.7655, + "type": "number" }, - "tagline": { - "type": "string" + "longitude": { + "example": -73.9835, + "type": "number" }, - "thumbnail_uuid": { + "phone": { + "example": "+19296452154", "type": "string" }, - "url": { + "postal_code": { + "example": "10019", "type": "string" }, - "variation_id": { + "state": { + "example": "NY", "type": "string" } }, "type": "object" }, - "producthunt.LeaderboardAdPost": { + "pizzahut.BundleChoice": { "properties": { - "comments_count": { - "type": "integer" - }, - "created_at": { - "type": "string" - }, - "disabled_when_scheduled": { - "type": "boolean" - }, - "embargo_preview_at": { - "type": "string" - }, - "featured_at": { - "type": "string" - }, - "featured_comment": { - "$ref": "#/definitions/producthunt.ProductCategoryAdComment" - }, - "has_voted": { - "type": "boolean" - }, - "hide_votes_count": { - "type": "boolean" - }, - "id": { + "choice_code": { + "example": "748", "type": "string" }, - "latest_score": { + "max_allowed_selections": { + "example": 1, "type": "integer" }, - "launch_day_score": { + "min_allowed_selections": { + "example": 1, "type": "integer" }, "name": { + "example": "1st Pizza", "type": "string" }, - "product": { - "$ref": "#/definitions/producthunt.LeaderboardProductRef" - }, - "randomization_status": { - "$ref": "#/definitions/producthunt.LeaderboardRandomizationStatus" - }, - "slug": { - "type": "string" - }, - "topics": { + "variants": { "items": { - "$ref": "#/definitions/producthunt.LeaderboardTopic" + "$ref": "#/definitions/pizzahut.BundleChoiceVariant" }, "type": "array" - }, - "updated_at": { - "type": "string" } }, "type": "object" }, - "producthunt.LeaderboardGhostItem": { + "pizzahut.BundleChoiceVariant": { "properties": { - "id": { - "type": "string" - }, - "subject": { + "name": { + "example": "Medium Hand-Tossed Create Your Own 1-Top Pizza", "type": "string" - } - }, - "type": "object" - }, - "producthunt.LeaderboardItem": { - "properties": { - "ad": { - "$ref": "#/definitions/producthunt.LeaderboardAdItem" - }, - "ghost_ad": { - "$ref": "#/definitions/producthunt.LeaderboardGhostItem" }, - "post": { - "$ref": "#/definitions/producthunt.LeaderboardPostItem" + "upcharge": { + "$ref": "#/definitions/pizzahut.Money" }, - "type": { + "variant_code": { + "example": "variant_CLSS001_010BCYO1T_SIZE050M_BASE020H", "type": "string" } }, "type": "object" }, - "producthunt.LeaderboardPage": { + "pizzahut.BundleChoicesResponse": { "properties": { - "connection": { + "bundle_code": { + "example": "MEAL501BD", "type": "string" }, - "day": { - "example": 29, - "type": "integer" - }, - "end_cursor": { + "channel": { + "example": "WEB", "type": "string" }, - "featured": { - "type": "boolean" - }, - "golden_kitty_years": { - "items": { - "type": "integer" - }, - "type": "array" - }, - "has_next_page": { - "type": "boolean" + "choice_count": { + "example": 4, + "type": "integer" }, - "items": { + "choices": { "items": { - "$ref": "#/definitions/producthunt.LeaderboardItem" + "$ref": "#/definitions/pizzahut.BundleChoice" }, "type": "array" }, - "month": { - "example": 1, - "type": "integer" - }, - "order": { - "example": "DAILY_RANK", + "description": { + "example": "All your faves - 2 medium 1-topping pizzas, 8 boneless wings, and 5 breadsticks!", "type": "string" }, - "raw_page_info": { - "additionalProperties": {}, - "type": "object" + "fetched_at": { + "type": "string" }, - "scope": { - "example": "daily", + "name": { + "example": "Big Dinner Box", "type": "string" }, - "total_count": { - "type": "integer" + "price": { + "$ref": "#/definitions/pizzahut.Money" }, - "week": { - "example": 5, - "type": "integer" + "source_url": { + "type": "string" }, - "year": { - "example": 2026, - "type": "integer" + "store_number": { + "example": "040937", + "type": "string" } }, "type": "object" }, - "producthunt.LeaderboardPostItem": { + "pizzahut.DeliveryEstimateResponse": { "properties": { - "comments_count": { - "type": "integer" + "delivery_provider": { + "example": "INTERNAL", + "type": "string" }, - "created_at": { + "dropoff_at": { "type": "string" }, - "daily_rank": { - "type": "integer" + "fee": { + "allOf": [ + { + "$ref": "#/definitions/pizzahut.Money" + } + ], + "description": "Fee is the total delivery fee; Fees breaks it down by line item." }, - "disabled_when_scheduled": { - "type": "boolean" + "fees": { + "items": { + "$ref": "#/definitions/pizzahut.DeliveryFeeLine" + }, + "type": "array" }, - "embargo_preview_at": { + "fetched_at": { "type": "string" }, - "featured_at": { + "pickup_at": { "type": "string" }, - "friend_voters_count": { - "type": "integer" + "reason": { + "example": "The requested StoreDeliveryProvider has not be enabled at this store", + "type": "string" }, - "has_voted": { + "serviceable": { + "description": "Serviceable is true only when the upstream returned a real estimate.\nA false value with Reason populated covers every other case this\nfamily has seen live: the provider not enabled at this store\n(confirmed live for DOORDASH against a real INTERNAL-only store) or\nthe upstream delivery marketplace itself reporting an error --\nPizza Hut's schema represents these as distinct typed results, not\none boolean. See this type's own doc comment for a caveat about\nwhat Serviceable:true does and does not confirm for INTERNAL.", + "example": true, "type": "boolean" }, - "hide_votes_count": { - "type": "boolean" + "source_url": { + "type": "string" }, - "id": { + "store_number": { + "example": "040937", "type": "string" + } + }, + "type": "object" + }, + "pizzahut.DeliveryFeeLine": { + "properties": { + "amount": { + "$ref": "#/definitions/pizzahut.Money" }, - "is_subscribed": { + "name": { + "example": "Delivery fee", + "type": "string" + }, + "type": { + "example": "DELIVERY_FEE", + "type": "string" + } + }, + "type": "object" + }, + "pizzahut.DeliveryProvider": { + "properties": { + "enabled": { + "example": true, "type": "boolean" }, - "latest_score": { - "type": "integer" + "provider": { + "example": "INTERNAL", + "type": "string" + } + }, + "type": "object" + }, + "pizzahut.MenuCategory": { + "properties": { + "category_code": { + "example": "pizza", + "type": "string" }, - "launch_day_score": { - "type": "integer" + "description": { + "type": "string" }, - "monthly_rank": { - "type": "integer" + "items": { + "items": { + "$ref": "#/definitions/pizzahut.MenuItem" + }, + "type": "array" }, "name": { + "example": "Pizza", "type": "string" + } + }, + "type": "object" + }, + "pizzahut.MenuItem": { + "properties": { + "available": { + "description": "Available is false when this item (or, for a product, every one of\nits variants at once) is currently blacked out -- a real,\nlive-confirmed \"temporarily unavailable\"/\"sold out\" signal (a\ndessert item was found blacked out at a real store, 2026-09-06),\ndistinct from an item genuinely being removed from the menu (which\nsimply would not appear here at all). Check a product's own\nVariants[].Available too -- a product itself can be orderable while\none specific size/style variant is blacked out, and vice versa.", + "example": true, + "type": "boolean" }, - "product": { - "$ref": "#/definitions/producthunt.LeaderboardProductRef" - }, - "product_state": { + "code": { + "example": "CLSS001P|PROD220P", "type": "string" }, - "randomization_status": { - "$ref": "#/definitions/producthunt.LeaderboardRandomizationStatus" - }, - "scheduled_at": { + "description": { "type": "string" }, - "shortened_url": { + "image_url": { "type": "string" }, - "slug": { + "name": { + "example": "Pepperoni Pizza", "type": "string" }, - "tagline": { + "price": { + "$ref": "#/definitions/pizzahut.Money" + }, + "type": { + "example": "product", "type": "string" }, - "thumbnail_image_uuid": { + "variant_code": { + "description": "VariantCode is the specific priced variant this item's Price\nreflects (present for type=product, whose price comes from its\ndefault variant).", + "example": "variant_CLSS001_220P_SIZE060L_BASE020H", "type": "string" }, - "topics": { + "variants": { + "description": "Variants lists every other priced size/crust/style variant this\nproduct item offers beyond its default (type=product only). Empty\nwhen the product has no additional variants beyond the default, or\nfor bundle/variant items.", "items": { - "$ref": "#/definitions/producthunt.LeaderboardTopic" + "$ref": "#/definitions/pizzahut.MenuVariant" }, "type": "array" - }, - "updated_at": { - "type": "string" - }, - "weekly_rank": { - "type": "integer" } }, "type": "object" }, - "producthunt.LeaderboardProductRef": { + "pizzahut.MenuResponse": { "properties": { - "id": { + "categories": { + "items": { + "$ref": "#/definitions/pizzahut.MenuCategory" + }, + "type": "array" + }, + "channel": { + "example": "WEB", "type": "string" }, - "is_no_longer_online": { - "type": "boolean" + "currency": { + "example": "USD", + "type": "string" }, - "is_subscribed": { - "type": "boolean" + "fetched_at": { + "type": "string" }, - "is_top_product": { - "type": "boolean" + "item_count": { + "description": "ItemCount counts only items reachable through Categories, matching\nthis field's original meaning -- it does not include\nUncategorizedItems.", + "example": 120, + "type": "integer" }, - "logo_uuid": { + "menu_id": { + "example": "22590d80-9482-4f7b-9594-d7ba2885b928", "type": "string" }, - "name": { + "source_url": { "type": "string" }, - "slug": { + "store_number": { + "example": "040937", "type": "string" + }, + "uncategorized_items": { + "description": "UncategorizedItems lists real, separately-priced products and bundles\nthis restaurant's menu carries that are not linked to any category --\nconfirmed live 2026-09-06 (coverage-expansion round 2): Pizza Hut's\n`Menu.products`/`Menu.bundles` support a `categorized: false` filter,\nand at least one store sampled had 9 such products (e.g. a $0.99\n\"Ranch Dip Cup\", \"Garlic Dip Cup\") that Categories' own category walk\nnever surfaces at all -- a real gap in the prior category-walk-only\napproach, not a parser omission. A platform-wide placeholder product\nnamed \"Reserved\" (price $0.00) appears in this list at every store\nsampled; it is included as upstream returns it rather than filtered,\nsince this repo does not invent filtering heuristics without a\nconfirmed upstream signal to key on. Empty when every product/bundle\nis reachable through Categories (no uncategorized bundle has been\nobserved on any store sampled).", + "items": { + "$ref": "#/definitions/pizzahut.MenuItem" + }, + "type": "array" } }, "type": "object" }, - "producthunt.LeaderboardRandomizationStatus": { + "pizzahut.MenuVariant": { "properties": { - "active": { + "available": { + "description": "Available is false when this specific variant is currently blacked\nout (temporarily unavailable) -- confirmed live 2026-09-06 that this\ngenuinely varies independently per variant, not just per product.", + "example": true, "type": "boolean" }, - "next_transition_at": { + "name": { + "example": "Large Original Stuffed Crust® Pepperoni Pizza", "type": "string" }, - "random_day": { - "type": "boolean" + "price": { + "$ref": "#/definitions/pizzahut.Money" }, - "randomize_order": { - "type": "boolean" + "variant_code": { + "example": "variant_CLSS001_220P_SIZE060L_BASE431S", + "type": "string" } }, "type": "object" }, - "producthunt.LeaderboardTopic": { + "pizzahut.Modifier": { "properties": { - "id": { + "modifier_code": { + "example": "CLSS001P|TOPP012P", "type": "string" }, "name": { + "example": "Pepperoni", "type": "string" }, - "slug": { - "type": "string" + "weights": { + "items": { + "$ref": "#/definitions/pizzahut.ModifierWeight" + }, + "type": "array" } }, "type": "object" }, - "producthunt.Product": { + "pizzahut.ModifierSlot": { "properties": { - "categories": { - "example": [ - "[\"Design\"", - "\"Productivity\"]" - ], + "max_allowed_selections": { + "example": 5, + "type": "integer" + }, + "min_allowed_selections": { + "example": 0, + "type": "integer" + }, + "modifiers": { "items": { - "type": "string" + "$ref": "#/definitions/pizzahut.Modifier" }, "type": "array" }, - "daily_rank": { - "example": 1, - "type": "integer" - }, - "date_published": { - "example": "2024-07-21T12:34:56Z", + "name": { + "example": "Pizza Toppings", "type": "string" }, - "description": { - "example": "Chronicle lets designers and developers review every iteration in one place.", + "slot_code": { + "example": "slot_pizza_toppings", + "type": "string" + } + }, + "type": "object" + }, + "pizzahut.ModifierWeight": { + "properties": { + "modifier_weight_code": { + "example": "CLSS001P|TOPP200XC", "type": "string" }, - "followers_count": { - "example": 2000, - "type": "integer" + "name": { + "example": "Extra Cheese", + "type": "string" }, - "id": { - "example": "chronicle-design", + "price": { + "$ref": "#/definitions/pizzahut.Money" + } + }, + "type": "object" + }, + "pizzahut.ModifiersResponse": { + "properties": { + "channel": { + "example": "WEB", "type": "string" }, - "monthly_rank": { - "example": 1, - "type": "integer" + "fetched_at": { + "type": "string" }, "name": { - "example": "Chronicle", + "example": "Large Hand-Tossed Create Your Own 1-Top Pizza", "type": "string" }, - "rating": { - "example": 4.8, - "type": "number" + "price": { + "$ref": "#/definitions/pizzahut.Money" }, - "review_count": { - "example": 152, + "slot_count": { + "example": 6, "type": "integer" }, - "similar_products": { + "slots": { "items": { - "$ref": "#/definitions/producthunt.SimilarProduct" + "$ref": "#/definitions/pizzahut.ModifierSlot" }, "type": "array" }, - "social_links": { - "example": [ - "[\"https://twitter.com/chronicle\"", - "\"https://github.com/chronicle\"]" - ], - "items": { - "type": "string" - }, - "type": "array" + "source_url": { + "type": "string" }, - "tagline": { - "example": "Visual version control for teams", + "store_number": { + "example": "040937", "type": "string" }, - "website": { - "example": "https://chronicle.design", + "variant_code": { + "example": "variant_CLSS001_010BCYO1T_SIZE060L_BASE020H", "type": "string" + } + }, + "type": "object" + }, + "pizzahut.Money": { + "properties": { + "amount": { + "example": 20.99, + "type": "number" }, - "weekly_rank": { - "example": 1, + "amount_cents": { + "example": 2099, "type": "integer" + }, + "currency_code": { + "example": "USD", + "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutAd": { + "pizzahut.OccasionHours": { "properties": { - "channel_kind": { - "type": "string" + "allow_tip": { + "example": true, + "type": "boolean" }, - "id": { - "type": "string" + "enabled": { + "example": true, + "type": "boolean" }, - "large_asset_uuid": { + "max_order_amount": { + "$ref": "#/definitions/pizzahut.Money" + }, + "min_order_amount": { + "$ref": "#/definitions/pizzahut.Money" + }, + "occasion": { + "example": "CARRYOUT", "type": "string" }, + "payment_types": { + "items": { + "$ref": "#/definitions/pizzahut.PaymentType" + }, + "type": "array" + }, + "windows": { + "items": { + "$ref": "#/definitions/pizzahut.TimeWindow" + }, + "type": "array" + } + }, + "type": "object" + }, + "pizzahut.PaymentType": { + "properties": { "name": { + "example": "APPLEPAY", "type": "string" }, - "small_asset_uuid": { + "type": { + "example": "CARD", "type": "string" + } + }, + "type": "object" + }, + "pizzahut.Store": { + "properties": { + "accepting_online_orders": { + "example": true, + "type": "boolean" }, - "subject": { - "type": "string" + "address": { + "$ref": "#/definitions/pizzahut.Address" }, - "tagline": { - "type": "string" + "archived": { + "example": false, + "type": "boolean" }, - "thumbnail_uuid": { + "delivery_providers": { + "items": { + "$ref": "#/definitions/pizzahut.DeliveryProvider" + }, + "type": "array" + }, + "name": { + "example": "040937", "type": "string" }, - "url": { + "store_number": { + "example": "040937", "type": "string" }, - "variation_id": { + "timezone": { + "example": "America/New_York", "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutDiscussionForum": { + "pizzahut.StoreResponse": { "properties": { - "id": { - "type": "string" + "accepting_online_orders": { + "example": true, + "type": "boolean" }, - "path": { + "address": { + "$ref": "#/definitions/pizzahut.Address" + }, + "archived": { + "example": false, + "type": "boolean" + }, + "delivery_providers": { + "items": { + "$ref": "#/definitions/pizzahut.DeliveryProvider" + }, + "type": "array" + }, + "fetched_at": { "type": "string" }, - "threads": { + "hours": { + "description": "Hours is this restaurant's recurring open windows per order channel\n(occasion) -- CARRYOUT, DELIVERY, DINE_IN, DRIVE_THRU,\nCATERING_CARRYOUT -- plus each occasion's ordering constraints\n(minimum/maximum order amount, whether tipping is offered, accepted\npayment methods; see OccasionHours). A restaurant that does not offer\na given occasion at all omits it from this list. Every real store\nsampled during this family's builds only offers CARRYOUT and\nDELIVERY; DINE_IN/DRIVE_THRU/CATERING_CARRYOUT are schema-valid but\nhave not been observed live.", "items": { - "$ref": "#/definitions/producthunt.ProductAboutDiscussionThread" + "$ref": "#/definitions/pizzahut.OccasionHours" }, "type": "array" }, - "total_count": { - "type": "integer" + "name": { + "example": "040937", + "type": "string" + }, + "source_url": { + "type": "string" + }, + "store_number": { + "example": "040937", + "type": "string" + }, + "timezone": { + "example": "America/New_York", + "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutDiscussionThread": { + "pizzahut.StoresResponse": { "properties": { - "commentable_id": { - "type": "string" - }, - "comments_count": { + "count": { + "example": 5, "type": "integer" }, - "created_at": { - "type": "string" - }, - "description_preview": { + "fetched_at": { "type": "string" }, - "forum": { - "$ref": "#/definitions/producthunt.ProductAboutForumRef" - }, - "has_voted": { + "has_more": { + "example": false, "type": "boolean" }, - "id": { + "source_url": { "type": "string" }, - "is_featured": { - "type": "boolean" + "stores": { + "items": { + "$ref": "#/definitions/pizzahut.Store" + }, + "type": "array" }, - "is_pinned": { + "total_count": { + "description": "TotalCount is how many restaurants matched upstream; it can exceed\nCount when more results exist than max_results asked for.", + "example": 9, + "type": "integer" + } + }, + "type": "object" + }, + "pizzahut.TimeWindow": { + "properties": { + "blackout": { + "example": false, "type": "boolean" }, - "path": { - "type": "string" + "days": { + "example": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "items": { + "type": "integer" + }, + "type": "array" }, - "slug": { + "duration": { + "example": "16:00:00", "type": "string" }, - "title": { + "start_time": { + "example": "11:00:00", "type": "string" + } + }, + "type": "object" + }, + "pizzahut.bundleChoicesResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "user": { - "$ref": "#/definitions/producthunt.ProductCategoryUser" + "data": { + "$ref": "#/definitions/pizzahut.BundleChoicesResponse" }, - "votes_count": { - "type": "integer" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "producthunt.ProductAboutForumRef": { + "pizzahut.deliveryEstimateResponseDoc": { "properties": { - "id": { - "type": "string" - }, - "path": { - "type": "string" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "slug": { - "type": "string" + "data": { + "$ref": "#/definitions/pizzahut.DeliveryEstimateResponse" }, - "subject": { - "$ref": "#/definitions/producthunt.ProductAboutForumSubject" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "producthunt.ProductAboutForumSubject": { + "pizzahut.menuResponseDoc": { "properties": { - "id": { - "type": "string" - }, - "is_no_longer_online": { - "type": "boolean" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "logo_uuid": { - "type": "string" + "data": { + "$ref": "#/definitions/pizzahut.MenuResponse" }, - "name": { - "type": "string" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "producthunt.ProductAboutGhostAd": { + "pizzahut.modifiersResponseDoc": { "properties": { - "id": { - "type": "string" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "subject": { - "type": "string" + "data": { + "$ref": "#/definitions/pizzahut.ModifiersResponse" + }, + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "producthunt.ProductAboutLatestLaunch": { + "pizzahut.storeResponseDoc": { "properties": { - "id": { - "type": "string" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "is_maker": { - "type": "boolean" + "data": { + "$ref": "#/definitions/pizzahut.StoreResponse" }, - "launch_number": { + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "pizzahut.storesResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, - "launched_this_week": { - "type": "boolean" + "data": { + "$ref": "#/definitions/pizzahut.StoresResponse" }, - "launching_today": { - "type": "boolean" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "playstation.AddOn": { + "properties": { + "classification": { + "type": "string" }, "name": { "type": "string" }, - "product_state": { - "type": "string" + "price": { + "$ref": "#/definitions/playstation.DetailPrice" }, - "scheduled_at": { + "product_id": { "type": "string" - }, - "slug": { + } + }, + "type": "object" + }, + "playstation.CollectionLink": { + "properties": { + "category_id": { "type": "string" }, - "tagline": { + "link_type": { "type": "string" }, - "thumbnail_image_uuid": { + "name": { "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutLaunch": { + "playstation.ConceptDetail": { "properties": { - "ad1": { - "$ref": "#/definitions/producthunt.ProductAboutGhostAd" + "add_ons": { + "items": { + "$ref": "#/definitions/playstation.AddOn" + }, + "type": "array" }, - "ad2": { - "$ref": "#/definitions/producthunt.ProductAboutGhostAd" + "content_rating": { + "$ref": "#/definitions/playstation.ContentRating" }, - "badges": { + "default_product_id": { + "type": "string" + }, + "description": { + "type": "string" + }, + "editions": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryListBadge" + "$ref": "#/definitions/playstation.Edition" }, "type": "array" }, - "can_deputy_manage": { - "type": "boolean" - }, - "can_manage": { - "type": "boolean" + "genres": { + "items": { + "type": "string" + }, + "type": "array" }, - "comments_count": { - "type": "integer" + "id": { + "type": "string" }, - "created_at": { + "invariant_name": { "type": "string" }, - "daily_rank": { - "type": "integer" + "media": { + "items": { + "$ref": "#/definitions/playstation.Media" + }, + "type": "array" }, - "description": { + "name": { "type": "string" }, - "detailed_reviews": { + "platforms": { "items": { - "$ref": "#/definitions/producthunt.ProductAboutShoutout" + "type": "string" }, "type": "array" }, - "disabled_when_scheduled": { - "type": "boolean" + "price": { + "$ref": "#/definitions/playstation.DetailPrice" }, - "embargo_preview_at": { + "publisher": { "type": "string" }, - "featured": { - "type": "boolean" + "release_date": { + "type": "string" }, - "featured_at": { + "source_url": { "type": "string" }, - "has_voted": { - "type": "boolean" + "star_rating": { + "$ref": "#/definitions/playstation.StarRating" + } + }, + "type": "object" + }, + "playstation.ConceptReview": { + "properties": { + "author": { + "$ref": "#/definitions/playstation.ReviewAuthor" }, - "hide_votes_count": { - "type": "boolean" + "comment": { + "type": "string" + }, + "edition_name": { + "type": "string" + }, + "helpful_count": { + "type": "integer" }, "id": { "type": "string" }, - "is_archived": { + "is_spoiler": { "type": "boolean" }, - "is_available": { - "type": "boolean" + "last_updated": { + "type": "string" }, - "is_hunter": { - "type": "boolean" + "product_name": { + "type": "string" }, - "is_maker": { - "type": "boolean" + "rating": { + "type": "integer" }, - "is_top_launch": { + "title": { + "type": "string" + } + }, + "type": "object" + }, + "playstation.ConceptReviewsResponse": { + "properties": { + "concept_id": { + "type": "string" + }, + "has_next_page": { "type": "boolean" }, - "latest_score": { - "type": "integer" + "name": { + "type": "string" }, - "launch_day_score": { + "page": { "type": "integer" }, - "launch_number": { + "page_size": { "type": "integer" }, - "launch_state": { - "type": "string" + "rating": { + "type": "integer" }, - "launched_this_week": { - "type": "boolean" + "returned": { + "type": "integer" }, - "launching_today": { - "type": "boolean" - }, - "links": { - "items": { - "$ref": "#/definitions/producthunt.ProductAboutLink" - }, - "type": "array" - }, - "makers": { - "items": { - "$ref": "#/definitions/producthunt.ProductAboutUser" - }, - "type": "array" - }, - "media": { + "reviews": { "items": { - "$ref": "#/definitions/producthunt.ProductAboutMedia" + "$ref": "#/definitions/playstation.ConceptReview" }, "type": "array" }, - "meta": { - "$ref": "#/definitions/producthunt.ProductAboutMeta" - }, - "moderation_reason": { - "type": "string" - }, - "name": { - "type": "string" - }, - "pricing_type": { - "type": "string" - }, - "primary_link": { - "$ref": "#/definitions/producthunt.ProductAboutPrimaryLink" - }, - "product": { - "$ref": "#/definitions/producthunt.ProductAboutLaunchProduct" - }, - "product_state": { + "sort": { "type": "string" }, - "promo": { - "additionalProperties": {}, - "type": "object" - }, - "redirect_to_product": { - "$ref": "#/definitions/producthunt.LeaderboardProductRef" - }, - "scheduled_at": { + "source_url": { "type": "string" }, - "slug": { - "type": "string" + "star_rating": { + "$ref": "#/definitions/playstation.StarRating" }, - "tagline": { + "total_count": { + "type": "integer" + } + }, + "type": "object" + }, + "playstation.ContentRating": { + "properties": { + "authority": { "type": "string" }, - "thumbnail_image_uuid": { + "description": { "type": "string" }, - "topics": { + "descriptors": { + "description": "Descriptors are the human-readable content/interactivity disclosures the\nrating carries (e.g. \"Blood\", \"Violence\", \"In-Game Purchases\", \"Users\nInteract\"), merged from the store's descriptors + interactiveElements lists.", "items": { - "$ref": "#/definitions/producthunt.ProductCategoryRef" + "type": "string" }, "type": "array" }, - "trashed_at": { - "type": "string" - }, - "updated_at": { + "name": { "type": "string" }, "url": { "type": "string" - }, - "user": { - "$ref": "#/definitions/producthunt.ProductAboutUser" - }, - "weekly_rank": { - "type": "integer" } }, "type": "object" }, - "producthunt.ProductAboutLaunchFlags": { + "playstation.DetailPrice": { "properties": { - "id": { + "applicability": { "type": "string" }, - "launched_this_week": { - "type": "boolean" + "base_price": { + "type": "string" }, - "launching_today": { - "type": "boolean" - } - }, - "type": "object" - }, - "producthunt.ProductAboutLaunchProduct": { - "properties": { - "can_claim": { - "type": "boolean" + "base_price_value": { + "type": "integer" }, - "can_edit": { - "type": "boolean" + "currency_code": { + "type": "string" }, - "clean_url": { + "discount_text": { "type": "string" }, - "detailed_review": { - "additionalProperties": {}, - "type": "object" + "discounted_price": { + "type": "string" }, - "first_launch": { - "type": "boolean" + "discounted_value": { + "type": "integer" }, - "id": { + "end_time": { "type": "string" }, - "is_claimed": { - "type": "boolean" - }, - "is_no_longer_online": { + "is_exclusive": { "type": "boolean" }, - "is_subscribed": { + "is_free": { "type": "boolean" }, - "is_top_product": { + "is_tied_to_subscription": { "type": "boolean" }, - "is_viewer_team_member": { - "additionalProperties": {}, - "type": "object" - }, - "latest_launch": { - "$ref": "#/definitions/producthunt.ProductAboutLaunchFlags" + "service_branding": { + "items": { + "type": "string" + }, + "type": "array" }, - "logo_uuid": { + "upsell_text": { + "type": "string" + } + }, + "type": "object" + }, + "playstation.Edition": { + "properties": { + "classification": { "type": "string" }, "name": { "type": "string" }, - "posts_count": { - "type": "integer" - }, - "pro_con_tags": { - "items": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewTag" - }, - "type": "array" - }, - "review_questions": { + "platforms": { "items": { - "$ref": "#/definitions/producthunt.ProductAboutReviewQuestion" + "type": "string" }, "type": "array" }, - "reviews_rating": { - "type": "number" + "price": { + "$ref": "#/definitions/playstation.DetailPrice" }, - "slug": { + "product_id": { "type": "string" - }, - "tagline": { + } + }, + "type": "object" + }, + "playstation.Facet": { + "properties": { + "display_name": { "type": "string" }, - "twitter_url": { + "name": { "type": "string" }, - "viewer_pending_team_request": { - "additionalProperties": {}, - "type": "object" + "values": { + "items": { + "$ref": "#/definitions/playstation.FacetValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "playstation.FacetValue": { + "properties": { + "count": { + "type": "integer" }, - "website_domain": { + "display_name": { "type": "string" }, - "website_url": { + "key": { "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutLink": { + "playstation.GridResponse": { "properties": { - "devices": { + "count": { + "type": "integer" + }, + "facets": { "items": { - "type": "string" + "$ref": "#/definitions/playstation.Facet" }, "type": "array" }, "id": { "type": "string" }, - "redirect_path": { - "type": "string" + "items": { + "items": { + "$ref": "#/definitions/playstation.StoreItem" + }, + "type": "array" }, - "store_name": { + "name": { "type": "string" }, - "website_name": { + "next_page": { + "type": "integer" + }, + "page_info": { + "$ref": "#/definitions/playstation.PageInfo" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutMedia": { + "playstation.ListPrice": { "properties": { - "id": { - "type": "string" - }, - "image_uuid": { - "type": "string" - }, - "interactive_demo_id": { + "base_price": { "type": "string" }, - "interactive_demo_type": { + "discount_text": { "type": "string" }, - "media_type": { + "discounted_price": { "type": "string" }, - "original_height": { - "type": "integer" - }, - "original_width": { - "type": "integer" + "is_exclusive": { + "type": "boolean" }, - "platform": { - "type": "string" + "is_free": { + "type": "boolean" }, - "thumbnail_height": { - "type": "integer" + "is_tied_to_subscription": { + "type": "boolean" }, - "thumbnail_width": { - "type": "integer" + "service_branding": { + "items": { + "type": "string" + }, + "type": "array" }, - "url": { - "type": "string" + "upsell_service_branding": { + "items": { + "type": "string" + }, + "type": "array" }, - "video_id": { + "upsell_text": { "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutMentionedProduct": { + "playstation.Media": { "properties": { - "id": { - "type": "string" - }, - "is_no_longer_online": { - "type": "boolean" - }, - "logo_uuid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "path": { + "role": { "type": "string" }, - "slug": { + "type": { "type": "string" }, - "tagline": { + "url": { "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutMeta": { + "playstation.MerchResponse": { "properties": { - "title": { + "collections": { + "items": { + "$ref": "#/definitions/playstation.CollectionLink" + }, + "type": "array" + }, + "count": { + "type": "integer" + }, + "items": { + "items": { + "$ref": "#/definitions/playstation.StoreItem" + }, + "type": "array" + }, + "sections": { + "items": { + "$ref": "#/definitions/playstation.Section" + }, + "type": "array" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutPage": { + "playstation.PageInfo": { "properties": { - "ad": { - "$ref": "#/definitions/producthunt.ProductAboutAd" - }, - "launch": { - "$ref": "#/definitions/producthunt.ProductAboutLaunch" - }, - "page_variant_typename": { - "type": "string" + "is_last": { + "type": "boolean" }, - "product": { - "$ref": "#/definitions/producthunt.ProductAboutProduct" + "offset": { + "type": "integer" }, - "product_id": { - "type": "string" + "size": { + "type": "integer" }, - "viewer": { - "$ref": "#/definitions/producthunt.ProductAboutViewer" + "total_count": { + "type": "integer" } }, "type": "object" }, - "producthunt.ProductAboutPageVariant": { + "playstation.ProductDetail": { "properties": { - "launch_id": { + "classification": { "type": "string" }, - "typename": { + "concept_id": { "type": "string" - } - }, - "type": "object" - }, - "producthunt.ProductAboutPost": { - "properties": { - "badges": { + }, + "content_rating": { + "$ref": "#/definitions/playstation.ContentRating" + }, + "edition_name": { + "type": "string" + }, + "genres": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryListBadge" + "type": "string" }, "type": "array" }, - "comments_count": { - "type": "integer" - }, - "created_at": { + "id": { "type": "string" }, - "daily_rank": { - "type": "integer" - }, - "disabled_when_scheduled": { - "type": "boolean" + "media": { + "items": { + "$ref": "#/definitions/playstation.Media" + }, + "type": "array" }, - "embargo_preview_at": { + "name": { "type": "string" }, - "featured_at": { + "np_title_id": { "type": "string" }, - "has_voted": { - "type": "boolean" + "platforms": { + "items": { + "type": "string" + }, + "type": "array" }, - "hide_votes_count": { - "type": "boolean" + "price": { + "$ref": "#/definitions/playstation.DetailPrice" }, - "id": { + "publisher": { "type": "string" }, - "latest_score": { - "type": "integer" - }, - "launch_day_score": { - "type": "integer" + "release_date": { + "type": "string" }, - "monthly_rank": { - "type": "integer" + "screen_languages": { + "items": { + "type": "string" + }, + "type": "array" }, - "name": { + "source_url": { "type": "string" }, - "product": { - "$ref": "#/definitions/producthunt.LeaderboardProductRef" + "spoken_languages": { + "items": { + "type": "string" + }, + "type": "array" }, - "product_state": { + "star_rating": { + "$ref": "#/definitions/playstation.StarRating" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "playstation.ReviewAuthor": { + "properties": { + "avatar_url": { "type": "string" }, - "randomization_status": { - "$ref": "#/definitions/producthunt.LeaderboardRandomizationStatus" + "is_officially_verified": { + "type": "boolean" }, - "redirect_to_product": { - "$ref": "#/definitions/producthunt.LeaderboardProductRef" + "is_ps_plus_subscriber": { + "type": "boolean" }, - "shortened_url": { + "online_id": { "type": "string" + } + }, + "type": "object" + }, + "playstation.SearchResponse": { + "properties": { + "count": { + "type": "integer" }, - "slug": { - "type": "string" + "items": { + "items": { + "$ref": "#/definitions/playstation.StoreItem" + }, + "type": "array" }, - "tagline": { - "type": "string" + "next_page": { + "type": "integer" }, - "thumbnail_image_uuid": { - "type": "string" + "page_info": { + "$ref": "#/definitions/playstation.PageInfo" }, - "updated_at": { + "source_url": { "type": "string" }, - "weekly_rank": { - "type": "integer" + "term": { + "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutPrimaryLink": { + "playstation.Section": { "properties": { + "count": { + "type": "integer" + }, "id": { "type": "string" }, - "url": { + "items": { + "items": { + "$ref": "#/definitions/playstation.StoreItem" + }, + "type": "array" + }, + "name": { "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutProduct": { + "playstation.StarRating": { "properties": { - "badges": { + "average": { + "type": "number" + }, + "count": { + "type": "integer" + }, + "distribution": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryListBadge" + "$ref": "#/definitions/playstation.StarRatingCount" }, "type": "array" + } + }, + "type": "object" + }, + "playstation.StarRatingCount": { + "properties": { + "percent": { + "type": "integer" }, - "detailed_review": { - "additionalProperties": {}, - "type": "object" - }, - "discussion_forum": { - "$ref": "#/definitions/producthunt.ProductAboutDiscussionForum" - }, - "followers_count": { + "stars": { "type": "integer" + } + }, + "type": "object" + }, + "playstation.StoreItem": { + "properties": { + "classification": { + "type": "string" }, "id": { "type": "string" }, - "is_no_longer_online": { - "type": "boolean" - }, - "is_subscribed": { - "type": "boolean" - }, - "latest_launch": { - "$ref": "#/definitions/producthunt.ProductAboutLatestLaunch" - }, - "logo_uuid": { + "kind": { "type": "string" }, "media": { "items": { - "$ref": "#/definitions/producthunt.ProductAboutMedia" + "$ref": "#/definitions/playstation.Media" }, "type": "array" }, "name": { "type": "string" }, - "page_variant": { - "$ref": "#/definitions/producthunt.ProductAboutPageVariant" + "np_title_id": { + "type": "string" }, - "posts": { + "platforms": { "items": { - "$ref": "#/definitions/producthunt.ProductAboutPost" + "type": "string" }, "type": "array" }, - "posts_count": { - "type": "integer" + "price": { + "$ref": "#/definitions/playstation.ListPrice" + } + }, + "type": "object" + }, + "playstation.SuggestItem": { + "properties": { + "classification": { + "type": "string" }, - "pro_con_tags": { - "items": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewTag" - }, - "type": "array" + "id": { + "type": "string" }, - "review_questions": { - "items": { - "$ref": "#/definitions/producthunt.ProductAboutReviewQuestion" - }, - "type": "array" + "image": { + "$ref": "#/definitions/playstation.Media" }, - "reviews_rating": { - "type": "number" + "name": { + "type": "string" }, - "screenshots": { + "platforms": { "items": { - "$ref": "#/definitions/producthunt.ProductAboutScreenshot" + "type": "string" }, "type": "array" }, - "slug": { - "type": "string" + "price": { + "$ref": "#/definitions/playstation.SuggestPrice" }, - "tagline": { + "publisher": { "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "producthunt.ProductAboutReviewQuestion": { - "properties": { - "category": { + "release_date": { "type": "string" }, - "id": { + "short_name": { "type": "string" }, - "question": { + "store_url": { "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutScreenshot": { + "playstation.SuggestPrice": { "properties": { - "id": { - "type": "string" - }, - "image_uuid": { - "type": "string" - }, - "media_type": { + "display": { "type": "string" }, - "original_height": { - "type": "integer" - }, - "original_width": { + "value": { "type": "integer" } }, "type": "object" }, - "producthunt.ProductAboutShoutout": { + "playstation.SuggestResponse": { "properties": { - "alternative_products": { + "cc": { + "type": "string" + }, + "items": { "items": { - "$ref": "#/definitions/producthunt.ProductAboutMentionedProduct" + "$ref": "#/definitions/playstation.SuggestItem" }, "type": "array" }, - "id": { + "l": { "type": "string" }, - "product": { - "$ref": "#/definitions/producthunt.ProductAboutMentionedProduct" + "source_url": { + "type": "string" }, - "shoutout_note": { + "term": { "type": "string" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "producthunt.ProductAboutUser": { + "playstation.conceptResponseDoc": { "properties": { - "avatar_url": { - "type": "string" - }, - "headline": { - "type": "string" - }, - "id": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "name": { - "type": "string" + "data": { + "$ref": "#/definitions/playstation.ConceptDetail" }, - "username": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "producthunt.ProductAboutViewer": { + "playstation.conceptReviewsResponseDoc": { "properties": { - "is_featured_post_maker": { - "type": "boolean" + "code": { + "example": 200, + "type": "integer" }, - "recent_launch": { - "additionalProperties": {}, - "type": "object" + "data": { + "$ref": "#/definitions/playstation.ConceptReviewsResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "producthunt.ProductAlternativeBadge": { + "playstation.gridResponseDoc": { "properties": { - "date": { - "type": "string" - }, - "id": { - "type": "string" - }, - "period": { - "type": "string" - }, - "position": { + "code": { + "example": 200, "type": "integer" }, - "post_name": { - "type": "string" + "data": { + "$ref": "#/definitions/playstation.GridResponse" }, - "post_slug": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "producthunt.ProductAlternativeDiscussion": { + "playstation.merchResponseDoc": { "properties": { - "comments_count": { + "code": { + "example": 200, "type": "integer" }, - "created_at": { - "type": "string" - }, - "description_preview": { - "type": "string" - }, - "has_voted": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "path": { - "type": "string" - }, - "pinned": { - "type": "boolean" - }, - "primary_forum": { - "$ref": "#/definitions/producthunt.ProductAlternativeDiscussionForum" - }, - "slug": { - "type": "string" + "data": { + "$ref": "#/definitions/playstation.MerchResponse" }, - "title": { + "msg": { + "example": "OK", "type": "string" - }, - "user": { - "$ref": "#/definitions/producthunt.ProductAlternativeDiscussionUser" - }, - "votes_count": { - "type": "integer" } }, "type": "object" }, - "producthunt.ProductAlternativeDiscussionForum": { + "playstation.productResponseDoc": { "properties": { - "id": { - "type": "string" - }, - "slug": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "subject_id": { - "type": "string" + "data": { + "$ref": "#/definitions/playstation.ProductDetail" }, - "subject_name": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "producthunt.ProductAlternativeDiscussionUser": { + "playstation.searchResponseDoc": { "properties": { - "avatar_url": { - "type": "string" - }, - "id": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "name": { - "type": "string" + "data": { + "$ref": "#/definitions/playstation.SearchResponse" }, - "username": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "producthunt.ProductAlternativeItem": { + "playstation.suggestResponseDoc": { "properties": { - "category_score": { - "type": "number" - }, - "category_weight": { - "type": "number" - }, - "combined_score": { - "type": "number" - }, - "embedding_score": { - "type": "number" + "code": { + "example": 200, + "type": "integer" }, - "embedding_weight": { - "type": "number" + "data": { + "$ref": "#/definitions/playstation.SuggestResponse" }, - "id": { + "msg": { + "example": "OK", "type": "string" - }, - "product": { - "$ref": "#/definitions/producthunt.ProductAlternativeProduct" - }, - "rating_score": { - "type": "number" - }, - "rating_weight": { - "type": "number" } }, "type": "object" }, - "producthunt.ProductAlternativeProduct": { + "politico.ArticleResponse": { "properties": { - "badges": { - "items": { - "$ref": "#/definitions/producthunt.ProductAlternativeBadge" - }, - "type": "array" - }, - "categories": { + "authors": { "items": { "type": "string" }, "type": "array" }, - "followers_count": { - "type": "integer" - }, - "id": { + "description": { "type": "string" }, - "is_subscribed": { - "type": "boolean" + "image_url": { + "type": "string" }, - "is_top_product": { - "type": "boolean" + "paragraphs": { + "items": { + "type": "string" + }, + "type": "array" }, - "logo_uuid": { + "published_at": { "type": "string" }, - "name": { + "title": { "type": "string" }, - "reviews_count": { - "type": "integer" - }, - "reviews_rating": { - "type": "number" - }, - "slug": { + "updated_at": { "type": "string" }, - "structured_data": { - "$ref": "#/definitions/producthunt.ProductAlternativeStructuredData" - }, - "tagline": { + "url": { "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array" } }, "type": "object" }, - "producthunt.ProductAlternativeStructuredData": { + "politico.AuthorArticle": { "properties": { - "application_category": { - "type": "string" - }, - "context": { + "published_at": { "type": "string" }, - "date_modified": { + "title": { "type": "string" }, - "date_published": { + "url": { "type": "string" + } + }, + "type": "object" + }, + "politico.AuthorResponse": { + "properties": { + "articles": { + "items": { + "$ref": "#/definitions/politico.AuthorArticle" + }, + "type": "array" }, - "description": { + "bio": { "type": "string" }, - "id": { + "image_url": { "type": "string" }, - "image": { + "job_title": { "type": "string" }, "name": { "type": "string" }, - "operating_system": { + "slug": { "type": "string" }, - "screenshot": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "politico.CategoriesResponse": { + "properties": { + "groups": { "items": { - "type": "string" + "$ref": "#/definitions/politico.CategoryGroup" }, "type": "array" - }, - "url": { - "type": "string" } }, "type": "object" }, - "producthunt.ProductAlternativeTag": { + "politico.Category": { "properties": { - "count": { - "type": "integer" - }, "name": { "type": "string" + }, + "slug": { + "type": "string" } }, "type": "object" }, - "producthunt.ProductAlternativesPage": { + "politico.CategoryGroup": { "properties": { - "alternative_tags": { - "items": { - "$ref": "#/definitions/producthunt.ProductAlternativeTag" - }, - "type": "array" - }, - "alternatives_markdown_description": { - "type": "string" - }, - "categories": { - "items": { - "type": "string" - }, - "type": "array" - }, - "discussions": { - "items": { - "$ref": "#/definitions/producthunt.ProductAlternativeDiscussion" - }, - "type": "array" - }, - "discussions_has_next_page": { - "type": "boolean" - }, - "end_cursor": { - "example": "MTA", + "name": { "type": "string" }, - "followers_count": { - "example": 577, - "type": "integer" - }, - "has_next_page": { - "example": true, - "type": "boolean" - }, - "items": { + "sections": { "items": { - "$ref": "#/definitions/producthunt.ProductAlternativeItem" + "$ref": "#/definitions/politico.Category" }, "type": "array" - }, - "name": { - "example": "Clico", - "type": "string" - }, - "product_id": { - "example": "1191613", - "type": "string" - }, - "slug": { - "example": "clico", - "type": "string" - }, - "total_count": { - "example": 50, - "type": "integer" } }, "type": "object" }, - "producthunt.ProductCategoryAd": { + "politico.HeadlineItem": { "properties": { - "channel_kind": { - "type": "string" - }, - "id": { + "author": { "type": "string" }, - "large_asset_uuid": { + "published_at": { "type": "string" }, - "name": { + "summary": { "type": "string" }, - "post": { - "$ref": "#/definitions/producthunt.ProductCategoryAdPost" - }, - "small_asset_uuid": { + "title": { "type": "string" }, - "subject": { + "url": { "type": "string" + } + }, + "type": "object" + }, + "politico.HeadlinesResponse": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/politico.HeadlineItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "politico.TopicItem": { + "properties": { + "authors": { + "items": { + "type": "string" + }, + "type": "array" }, - "tagline": { + "published_at": { "type": "string" }, - "thumbnail_uuid": { + "title": { "type": "string" }, "url": { "type": "string" - }, - "variation_id": { - "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryAdComment": { + "politico.TopicResponse": { "properties": { - "body_text": { - "type": "string" - }, - "id": { - "type": "string" - }, - "is_pinned": { - "type": "boolean" - }, - "path": { - "type": "string" + "items": { + "items": { + "$ref": "#/definitions/politico.TopicItem" + }, + "type": "array" }, - "subject_id": { + "topic": { "type": "string" - }, - "user": { - "$ref": "#/definitions/producthunt.ProductCategoryUser" } }, "type": "object" }, - "producthunt.ProductCategoryAdPost": { + "politico.articleResponseDoc": { "properties": { - "comments_count": { + "code": { + "example": 200, "type": "integer" }, - "created_at": { - "type": "string" - }, - "disabled_when_scheduled": { - "type": "boolean" - }, - "embargo_preview_at": { - "type": "string" - }, - "featured_at": { - "type": "string" - }, - "featured_comment": { - "$ref": "#/definitions/producthunt.ProductCategoryAdComment" - }, - "has_voted": { - "type": "boolean" - }, - "hide_votes_count": { - "type": "boolean" + "data": { + "$ref": "#/definitions/politico.ArticleResponse" }, - "id": { + "msg": { + "example": "OK", "type": "string" - }, - "latest_score": { - "type": "integer" - }, - "launch_day_score": { + } + }, + "type": "object" + }, + "politico.authorResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "name": { - "type": "string" - }, - "product_id": { - "type": "string" - }, - "product_slug": { - "type": "string" - }, - "product_subscribed": { - "type": "boolean" - }, - "randomization_status": { - "$ref": "#/definitions/producthunt.ProductCategoryRandomizationStatus" - }, - "slug": { - "type": "string" - }, - "topics": { - "items": { - "$ref": "#/definitions/producthunt.ProductCategoryTopic" - }, - "type": "array" + "data": { + "$ref": "#/definitions/politico.AuthorResponse" }, - "updated_at": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryAnswer": { + "politico.categoriesResponseDoc": { "properties": { - "body": { - "$ref": "#/definitions/producthunt.ProductCategoryMarkdown" + "code": { + "example": 200, + "type": "integer" }, - "id": { - "type": "string" + "data": { + "$ref": "#/definitions/politico.CategoriesResponse" }, - "sources": { - "items": { - "$ref": "#/definitions/producthunt.ProductCategorySource" - }, - "type": "array" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryFounderPost": { + "politico.headlinesResponseDoc": { "properties": { - "badges": { - "items": { - "$ref": "#/definitions/producthunt.ProductCategoryListBadge" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "product_id": { - "type": "string" - }, - "product_slug": { - "type": "string" - }, - "product_state": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "slug": { - "type": "string" + "data": { + "$ref": "#/definitions/politico.HeadlinesResponse" }, - "thumbnail_image_uuid": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryFounderShoutout": { + "politico.topicResponseDoc": { "properties": { - "from_post": { - "$ref": "#/definitions/producthunt.ProductCategoryFounderPost" + "code": { + "example": 200, + "type": "integer" }, - "id": { - "type": "string" + "data": { + "$ref": "#/definitions/politico.TopicResponse" }, - "product_id": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryHeroProduct": { + "polygon.AuthorResponse": { "properties": { - "id": { - "type": "string" + "articles": { + "items": { + "$ref": "#/definitions/newsplatform.HeadlineItem" + }, + "type": "array" }, - "is_no_longer_online": { - "type": "boolean" + "biography": { + "type": "string" }, - "logo_uuid": { + "image_url": { "type": "string" }, "name": { "type": "string" + }, + "social_links": { + "items": { + "$ref": "#/definitions/polygon.AuthorSocialLink" + }, + "type": "array" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryLatestLaunch": { + "polygon.AuthorSocialLink": { "properties": { - "id": { + "type": { "type": "string" }, - "scheduled_at": { + "url": { "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryListBadge": { + "polymarket.ActivityTradesResponse": { "properties": { - "category": { + "event_id": { + "example": "101772", "type": "string" }, - "date": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "id": { + "filter_amount": { + "example": "1", "type": "string" }, - "period": { + "filter_type": { + "example": "CASH", "type": "string" }, - "position": { + "limit": { + "example": 50, "type": "integer" }, - "post_id": { + "market": { + "example": "0x3f2604d62ac3ee496ffd6d30156f30663fbaf22097f17f09d7364c35db255d2b", "type": "string" }, - "post_name": { + "offset": { + "example": 0, + "type": "integer" + }, + "source_url": { + "example": "https://data-api.polymarket.com/trades?takerOnly=true&limit=50&offset=0&filterType=CASH&filterAmount=1", "type": "string" }, - "post_slug": { + "taker_only": { + "example": "true", "type": "string" }, - "year": { + "trades": { + "items": { + "$ref": "#/definitions/polymarket.TradeSummary" + }, + "type": "array" + } + }, + "type": "object" + }, + "polymarket.BatchTokenMidpoint": { + "properties": { + "midpoint": { + "example": 0.285, + "type": "number" + }, + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryListProduct": { + "polymarket.BatchTokenMidpointsOption": { "properties": { - "badges": { + "token_ids": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryListBadge" + "type": "string" }, "type": "array" + } + }, + "required": [ + "token_ids" + ], + "type": "object" + }, + "polymarket.BatchTokenMidpointsResponse": { + "properties": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" }, - "categories": { + "midpoints": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryRef" + "$ref": "#/definitions/polymarket.BatchTokenMidpoint" }, "type": "array" }, - "detailed_reviews_count": { - "type": "integer" - }, - "followers_count": { - "type": "integer" - }, - "founder_reviews_count": { - "type": "integer" - }, - "founder_shoutouts": { + "missing": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryFounderShoutout" + "type": "string" }, "type": "array" }, - "id": { - "type": "string" - }, - "is_no_longer_online": { - "type": "boolean" - }, - "is_subscribed": { - "type": "boolean" - }, - "is_top_product": { - "type": "boolean" - }, - "latest_launch": { - "$ref": "#/definitions/producthunt.ProductCategoryLatestLaunch" - }, - "logo_uuid": { - "type": "string" - }, - "name": { + "source_url": { + "example": "https://clob.polymarket.com/midpoints", "type": "string" }, - "posts_count": { - "type": "integer" - }, - "reviews_count": { - "type": "integer" - }, - "reviews_rating": { - "type": "number" + "token_ids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "polymarket.BatchTokenOrderBooksOption": { + "properties": { + "token_ids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "token_ids" + ], + "type": "object" + }, + "polymarket.BatchTokenOrderBooksResponse": { + "properties": { + "books": { + "items": { + "$ref": "#/definitions/polymarket.OrderBookSummary" + }, + "type": "array" }, - "slug": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "structured_data": { - "$ref": "#/definitions/producthunt.ProductAlternativeStructuredData" + "missing": { + "items": { + "type": "string" + }, + "type": "array" }, - "tagline": { + "source_url": { + "example": "https://clob.polymarket.com/books", "type": "string" }, - "tags": { + "token_ids": { "items": { "type": "string" }, @@ -123640,1002 +125869,1634 @@ }, "type": "object" }, - "producthunt.ProductCategoryMarkdown": { + "polymarket.BatchTokenPrice": { "properties": { - "markdown": { - "type": "string" + "buy_price": { + "example": 0.03, + "type": "number" }, - "text": { + "sell_price": { + "example": 0.54, + "type": "number" + }, + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryPage": { + "polymarket.BatchTokenPricesOption": { "properties": { - "description": { + "side": { "type": "string" }, - "discussions": { + "token_ids": { "items": { - "$ref": "#/definitions/producthunt.ProductAlternativeDiscussion" + "type": "string" }, "type": "array" - }, - "discussions_has_next_page": { - "type": "boolean" - }, - "expandable_html": { + } + }, + "required": [ + "token_ids" + ], + "type": "object" + }, + "polymarket.BatchTokenPricesResponse": { + "properties": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "hero_products": { + "missing": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryHeroProduct" + "type": "string" }, "type": "array" }, - "hero_products_count": { - "type": "integer" - }, - "id": { - "type": "string" - }, - "last_updated_at": { - "type": "string" + "prices": { + "items": { + "$ref": "#/definitions/polymarket.BatchTokenPrice" + }, + "type": "array" }, - "meta_title": { + "side": { + "example": "buy", "type": "string" }, - "name": { + "source_url": { + "example": "https://clob.polymarket.com/prices", "type": "string" }, - "parent": { - "$ref": "#/definitions/producthunt.ProductCategoryParent" + "token_ids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "polymarket.BatchTokenSpread": { + "properties": { + "spread": { + "example": 0.51, + "type": "number" }, - "path": { - "example": "/categories/vibe-coding", + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", "type": "string" - }, - "questions": { + } + }, + "type": "object" + }, + "polymarket.BatchTokenSpreadsOption": { + "properties": { + "token_ids": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryQuestion" + "type": "string" }, "type": "array" + } + }, + "required": [ + "token_ids" + ], + "type": "object" + }, + "polymarket.BatchTokenSpreadsResponse": { + "properties": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" }, - "raw_relevant_reviews": { + "missing": { "items": { - "additionalProperties": {}, - "type": "object" + "type": "string" }, "type": "array" }, - "recent_launches_count": { - "type": "integer" - }, - "recent_summary": { - "$ref": "#/definitions/producthunt.ProductCategoryRecentSummary" - }, - "reviews_count": { - "type": "integer" - }, - "slug": { - "example": "vibe-coding", + "source_url": { + "example": "https://clob.polymarket.com/spreads", "type": "string" }, - "sub_categories": { + "spreads": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryRef" + "$ref": "#/definitions/polymarket.BatchTokenSpread" }, "type": "array" }, - "targeted_ad": { - "$ref": "#/definitions/producthunt.ProductCategoryAd" + "token_ids": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "producthunt.ProductCategoryParent": { + "polymarket.ClobMarketResponse": { "properties": { - "id": { + "condition_id": { + "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", "type": "string" }, - "name": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "path": { - "type": "string" + "market": { + "$ref": "#/definitions/polymarket.ClobMarketSummary" }, - "sub_categories": { - "items": { - "$ref": "#/definitions/producthunt.ProductCategoryRef" - }, - "type": "array" + "source_url": { + "example": "https://clob.polymarket.com/markets/0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", + "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryProductsPage": { + "polymarket.ClobMarketSummary": { "properties": { - "ai_summary": { + "accepting_order_timestamp": { "type": "string" }, - "category_tags": { - "items": { - "$ref": "#/definitions/producthunt.ProductAlternativeTag" - }, - "type": "array" + "accepting_orders": { + "type": "boolean" }, - "connection": { - "example": "products", - "type": "string" + "active": { + "type": "boolean" }, - "description": { + "archived": { + "type": "boolean" + }, + "closed": { + "type": "boolean" + }, + "condition_id": { + "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", "type": "string" }, - "end_cursor": { + "description": { "type": "string" }, - "featured_only": { + "enable_order_book": { "type": "boolean" }, - "has_next_page": { - "type": "boolean" + "end_date": { + "example": "2026-06-08T00:00:00Z", + "type": "string" }, - "has_previous_page": { - "type": "boolean" + "game_start_time": { + "example": "2026-06-07T20:30:00Z", + "type": "string" }, - "id": { + "icon_url": { "type": "string" }, - "items": { - "items": { - "$ref": "#/definitions/producthunt.ProductCategoryListProduct" - }, - "type": "array" + "image_url": { + "type": "string" }, - "last_updated_at": { + "is_50_50_outcome": { + "type": "boolean" + }, + "maker_base_fee": { + "example": 1000, + "type": "integer" + }, + "market_slug": { + "example": "codmw-par-tex-2026-06-07-game4", "type": "string" }, - "name": { + "market_url": { + "example": "https://polymarket.com/event/codmw-par-tex-2026-06-07/codmw-par-tex-2026-06-07-game4", "type": "string" }, - "order": { - "example": "highest_rated", + "minimum_order_size": { + "example": 5, + "type": "number" + }, + "minimum_tick_size": { + "example": 0.01, + "type": "number" + }, + "neg_risk": { + "type": "boolean" + }, + "neg_risk_market_id": { "type": "string" }, - "page": { - "example": 1, - "type": "integer" + "neg_risk_request_id": { + "type": "string" }, - "page_size": { - "example": 15, - "type": "integer" + "notifications_enabled": { + "type": "boolean" }, - "path": { - "example": "/categories/vibe-coding", + "question": { + "example": "Call of Duty: Paris Gentle Mates vs OpTic Texas - Game 4 Winner", "type": "string" }, - "slug": { - "example": "vibe-coding", + "question_id": { + "example": "0xf693b08c99a00ca87098bc122ccc956434c2ac8720d8ed77e612d008cf33c2c1", "type": "string" }, + "rewards": { + "$ref": "#/definitions/polymarket.ClobRewardsSummary" + }, + "seconds_delay": { + "example": 1, + "type": "integer" + }, "tags": { "items": { "type": "string" }, "type": "array" }, - "total_count": { + "taker_base_fee": { + "example": 1000, "type": "integer" + }, + "tokens": { + "items": { + "$ref": "#/definitions/polymarket.ClobTokenSummary" + }, + "type": "array" } }, "type": "object" }, - "producthunt.ProductCategoryQuestion": { + "polymarket.ClobRewardRate": { "properties": { - "body": { - "$ref": "#/definitions/producthunt.ProductCategoryMarkdown" - }, - "id": { + "asset_address": { + "example": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", "type": "string" }, - "top_answer": { - "$ref": "#/definitions/producthunt.ProductCategoryAnswer" + "rewards_daily_rate": { + "example": 5, + "type": "number" } }, "type": "object" }, - "producthunt.ProductCategoryRandomizationStatus": { + "polymarket.ClobRewardsSummary": { "properties": { - "active": { - "type": "boolean" + "max_spread": { + "example": 2.5, + "type": "number" }, - "next_transition_at": { - "type": "string" + "min_size": { + "example": 500, + "type": "number" }, - "random_day": { - "type": "boolean" - } - }, - "type": "object" - }, - "producthunt.ProductCategoryRecentSummary": { - "properties": { - "products": { + "rates": { "items": { - "$ref": "#/definitions/producthunt.ProductCategorySummaryProduct" + "$ref": "#/definitions/polymarket.ClobRewardRate" }, "type": "array" - }, - "summary": { - "type": "string" } }, "type": "object" }, - "producthunt.ProductCategoryRef": { + "polymarket.ClobTokenSummary": { "properties": { - "id": { + "outcome": { + "example": "Paris Gentle Mates", "type": "string" }, - "name": { - "type": "string" + "price": { + "example": 0.285, + "type": "number" }, - "path": { + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", "type": "string" }, - "slug": { - "type": "string" + "winner": { + "type": "boolean" } }, "type": "object" }, - "producthunt.ProductCategorySource": { + "polymarket.EventDetailResponse": { "properties": { - "badges": { - "items": { - "type": "string" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "path": { - "type": "string" + "event": { + "$ref": "#/definitions/polymarket.EventSummary" }, - "subject_id": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "type": { + "slug": { + "example": "world-cup-winner", "type": "string" }, - "user": { - "$ref": "#/definitions/producthunt.ProductCategoryUser" - }, - "visible_at": { + "source_url": { + "example": "https://gamma-api.polymarket.com/events/slug/world-cup-winner", "type": "string" } }, "type": "object" }, - "producthunt.ProductCategorySummaryProduct": { + "polymarket.EventSummary": { "properties": { - "badges": { - "items": { - "$ref": "#/definitions/producthunt.ProductAlternativeBadge" - }, - "type": "array" + "active": { + "type": "boolean" }, - "categories": { - "items": { - "$ref": "#/definitions/producthunt.ProductCategoryRef" - }, - "type": "array" + "closed": { + "type": "boolean" }, - "followers_count": { + "comment_count": { "type": "integer" }, - "id": { + "description": { "type": "string" }, - "is_no_longer_online": { - "type": "boolean" - }, - "is_subscribed": { - "type": "boolean" + "end_date": { + "type": "string" }, - "is_top_product": { + "featured": { "type": "boolean" }, - "latest_launch": { - "$ref": "#/definitions/producthunt.ProductCategoryLatestLaunch" + "icon_url": { + "type": "string" }, - "logo_uuid": { + "id": { + "example": "545095", "type": "string" }, - "name": { + "image_url": { "type": "string" }, - "reviews_count": { + "liquidity": { + "type": "number" + }, + "markets": { + "items": { + "$ref": "#/definitions/polymarket.MarketSummary" + }, + "type": "array" + }, + "markets_count": { + "example": 15, "type": "integer" }, - "reviews_rating": { + "open_interest": { "type": "number" }, + "restricted": { + "type": "boolean" + }, "slug": { + "example": "bitcoin-above-on-june-7-2026", "type": "string" }, - "tagline": { + "start_date": { "type": "string" }, "tags": { "items": { - "type": "string" + "$ref": "#/definitions/polymarket.TagSummary" }, "type": "array" - } - }, - "type": "object" - }, - "producthunt.ProductCategoryTopic": { - "properties": { - "id": { - "type": "string" }, - "name": { + "title": { + "example": "Bitcoin above ___ on June 7?", "type": "string" }, - "slug": { - "type": "string" - } - }, - "type": "object" - }, - "producthunt.ProductCategoryUser": { - "properties": { - "avatar_url": { + "updated_at": { "type": "string" }, - "id": { + "url": { + "example": "https://polymarket.com/event/bitcoin-above-on-june-7-2026", "type": "string" }, - "name": { - "type": "string" + "volume": { + "type": "number" }, - "username": { - "type": "string" + "volume_24h": { + "type": "number" } }, "type": "object" }, - "producthunt.ProductCustomersPage": { + "polymarket.EventsResponse": { "properties": { - "connection": { - "example": "customers", - "type": "string" - }, - "end_cursor": { - "type": "string" - }, - "has_next_page": { + "ascending": { "type": "boolean" }, - "has_previous_page": { - "type": "boolean" + "closed": { + "example": "false", + "type": "string" }, - "items": { + "events": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryListProduct" + "$ref": "#/definitions/polymarket.EventSummary" }, "type": "array" }, - "name": { - "example": "OpenAI", - "type": "string" - }, - "order": { - "example": "customers", + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "page": { - "example": 1, - "type": "integer" - }, - "page_size": { - "example": 10, + "limit": { + "example": 25, "type": "integer" }, - "pages_count": { - "example": 12, + "offset": { + "example": 0, "type": "integer" }, - "product_id": { - "example": "594550", + "order": { + "example": "volume24hr", "type": "string" }, - "raw_page_info": { - "additionalProperties": {}, - "type": "object" - }, - "slug": { - "example": "openai", + "source_url": { + "example": "https://gamma-api.polymarket.com/events?limit=25", "type": "string" - }, - "total_count": { - "example": 120, - "type": "integer" } }, "type": "object" }, - "producthunt.ProductDetailedReview": { + "polymarket.HomepageFeedResponse": { "properties": { - "alternative_products": { + "cursor": { + "type": "string" + }, + "events": { "items": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewProduct" + "$ref": "#/definitions/polymarket.EventSummary" }, "type": "array" }, - "alternatives_feedback": { + "feed": { + "example": "politics", "type": "string" }, - "can_destroy": { - "type": "boolean" - }, - "can_moderate": { - "type": "boolean" - }, - "can_reply": { - "type": "boolean" - }, - "can_update": { - "type": "boolean" - }, - "comments_count": { - "type": "integer" - }, - "created_at": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "customization_rating": { - "type": "integer" - }, - "ease_of_use_rating": { - "type": "integer" - }, - "follow_product": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewFollowProduct" - }, - "from_post": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewPost" - }, - "has_voted": { + "has_more": { "type": "boolean" }, - "id": { - "type": "string" - }, - "impression_count": { + "limit": { + "example": 20, "type": "integer" }, - "is_hidden": { - "type": "boolean" - }, - "llm_content_quality_grade": { - "type": "string" + "markets": { + "items": { + "$ref": "#/definitions/polymarket.MarketSummary" + }, + "type": "array" }, - "llm_content_quality_reason": { + "next_cursor": { "type": "string" }, - "negative_feedback": { + "source_kind": { + "example": "events_keyset", "type": "string" }, - "overall_experience": { + "source_url": { + "example": "https://gamma-api.polymarket.com/events/keyset?limit=20&tag_slug=politics", "type": "string" - }, - "overall_rating": { - "type": "integer" - }, - "positive_feedback": { + } + }, + "type": "object" + }, + "polymarket.LeaderboardEntry": { + "properties": { + "profile_image_url": { "type": "string" }, - "product": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewProduct" - }, - "question_answers": { - "items": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewQuestionAnswer" - }, - "type": "array" - }, - "reliability_rating": { - "type": "integer" + "profit_loss": { + "example": 322870.79601049656, + "type": "number" }, - "review_type": { + "proxy_wallet": { + "example": "0x4bff30af91642dc7d2b19a8664378fe55c45fc26", "type": "string" }, - "selected_cons": { - "items": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewTag" - }, - "type": "array" - }, - "selected_pros": { - "items": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewTag" - }, - "type": "array" - }, - "status": { + "rank": { + "example": "1", "type": "string" }, - "threads_end_cursor": { + "user_name": { + "example": "Sassy-Bucket", "type": "string" }, - "threads_has_next_page": { + "verified_badge": { "type": "boolean" }, - "threads_total_count": { - "type": "integer" - }, - "user": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewUser" - }, - "value_for_money_rating": { - "type": "integer" + "volume": { + "example": 770358.109102, + "type": "number" }, - "votes_count": { - "type": "integer" + "x_username": { + "example": "polymarket", + "type": "string" } }, "type": "object" }, - "producthunt.ProductDetailedReviewFollowProduct": { + "polymarket.LeaderboardResponse": { "properties": { - "id": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "is_no_longer_online": { - "type": "boolean" + "limit": { + "example": 20, + "type": "integer" }, - "is_subscribed": { - "type": "boolean" + "rows": { + "items": { + "$ref": "#/definitions/polymarket.LeaderboardEntry" + }, + "type": "array" }, - "logo_uuid": { + "sort_by": { + "example": "profit", "type": "string" }, - "name": { + "source_url": { + "example": "https://data-api.polymarket.com/v1/leaderboard?window=30d&sortBy=profit&limit=20", "type": "string" }, - "slug": { + "window": { + "example": "30d", "type": "string" } }, "type": "object" }, - "producthunt.ProductDetailedReviewPost": { + "polymarket.MacroDashboardResponse": { "properties": { - "badges": { + "cursor": { + "type": "string" + }, + "events": { "items": { - "$ref": "#/definitions/producthunt.ProductCategoryListBadge" + "$ref": "#/definitions/polymarket.EventSummary" }, "type": "array" }, - "id": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "is_top_launch": { + "has_more": { "type": "boolean" }, - "latest_score": { + "limit": { + "example": 20, "type": "integer" }, - "name": { + "next_cursor": { "type": "string" }, - "product_id": { + "source_url": { + "example": "https://gamma-api.polymarket.com/events/keyset?tag_slug=macro&limit=20", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.MarketDetailResponse": { + "properties": { + "condition_id": { + "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", "type": "string" }, - "product_is_top_product": { - "type": "boolean" - }, - "product_slug": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "product_state": { + "id": { + "example": "558934", "type": "string" }, + "market": { + "$ref": "#/definitions/polymarket.MarketSummary" + }, "slug": { + "example": "will-spain-win-the-2026-fifa-world-cup-963", "type": "string" }, - "thumbnail_image_uuid": { + "source_url": { + "example": "https://gamma-api.polymarket.com/markets/558934", "type": "string" } }, "type": "object" }, - "producthunt.ProductDetailedReviewProduct": { + "polymarket.MarketLiquidityResponse": { "properties": { - "id": { - "type": "string" + "clob_market": { + "$ref": "#/definitions/polymarket.ClobMarketSummary" }, - "is_no_longer_online": { - "type": "boolean" + "condition_id": { + "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", + "type": "string" }, - "logo_uuid": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "name": { + "id": { + "example": "558934", "type": "string" }, + "market": { + "$ref": "#/definitions/polymarket.MarketSummary" + }, "slug": { + "example": "will-spain-win-the-2026-fifa-world-cup-963", "type": "string" + }, + "source_urls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tokens": { + "items": { + "$ref": "#/definitions/polymarket.MarketLiquidityTokenSummary" + }, + "type": "array" } }, "type": "object" }, - "producthunt.ProductDetailedReviewQuestionAnswer": { + "polymarket.MarketLiquidityTokenSummary": { "properties": { - "answer": { + "ask_depth": { + "example": 654.33, + "type": "number" + }, + "bid_depth": { + "example": 117.57, + "type": "number" + }, + "buy_price": { + "example": 0.16, + "type": "number" + }, + "clob_price": { + "example": 0.161, + "type": "number" + }, + "gamma_price": { + "example": 0.16, + "type": "number" + }, + "last_trade_price": { + "example": 0.162, + "type": "number" + }, + "midpoint": { + "example": 0.165, + "type": "number" + }, + "orderbook_best_ask": { + "example": 0.17, + "type": "number" + }, + "orderbook_best_bid": { + "example": 0.16, + "type": "number" + }, + "orderbook_spread": { + "example": 0.01, + "type": "number" + }, + "outcome": { + "example": "Yes", + "type": "string" + }, + "sell_price": { + "example": 0.17, + "type": "number" + }, + "spread": { + "example": 0.01, + "type": "number" + }, + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.MarketSummary": { + "properties": { + "active": { + "type": "boolean" + }, + "best_ask": { + "type": "number" + }, + "best_bid": { + "type": "number" + }, + "closed": { + "type": "boolean" + }, + "condition_id": { + "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", + "type": "string" + }, + "end_date": { "type": "string" }, "id": { + "example": "558934", "type": "string" }, + "last_trade_price": { + "type": "number" + }, + "liquidity": { + "type": "number" + }, + "outcomes": { + "items": { + "$ref": "#/definitions/polymarket.OutcomePricePoint" + }, + "type": "array" + }, "question": { + "example": "Will Spain win the 2026 FIFA World Cup?", "type": "string" }, - "question_id": { + "slug": { + "example": "will-spain-win-the-2026-fifa-world-cup-963", + "type": "string" + }, + "token_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "example": "https://polymarket.com/event/world-cup-winner/will-spain-win-the-2026-fifa-world-cup-963", "type": "string" + }, + "volume": { + "type": "number" + }, + "volume_24h": { + "type": "number" } }, "type": "object" }, - "producthunt.ProductDetailedReviewTag": { + "polymarket.MarketsResponse": { "properties": { - "count": { + "ascending": { + "type": "boolean" + }, + "closed": { + "example": "false", + "type": "string" + }, + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" + }, + "limit": { + "example": 25, "type": "integer" }, - "id": { + "markets": { + "items": { + "$ref": "#/definitions/polymarket.MarketSummary" + }, + "type": "array" + }, + "offset": { + "example": 0, + "type": "integer" + }, + "order": { + "example": "volume24hr", "type": "string" }, - "name": { + "source_url": { + "example": "https://gamma-api.polymarket.com/markets?limit=25", "type": "string" + } + }, + "type": "object" + }, + "polymarket.OrderBookLevel": { + "properties": { + "price": { + "example": 0.03, + "type": "number" }, - "type": { + "size": { + "example": 5, + "type": "number" + } + }, + "type": "object" + }, + "polymarket.OrderBookSummary": { + "properties": { + "asks": { + "items": { + "$ref": "#/definitions/polymarket.OrderBookLevel" + }, + "type": "array" + }, + "bids": { + "items": { + "$ref": "#/definitions/polymarket.OrderBookLevel" + }, + "type": "array" + }, + "condition_id": { + "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", + "type": "string" + }, + "hash": { + "example": "31facd52b62495bbc142facb81275400d978f6bf", + "type": "string" + }, + "last_trade_price": { + "example": 0.285, + "type": "number" + }, + "min_order_size": { + "example": 5, + "type": "number" + }, + "neg_risk": { + "type": "boolean" + }, + "tick_size": { + "example": 0.01, + "type": "number" + }, + "timestamp": { + "example": "1780837460175", + "type": "string" + }, + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", "type": "string" } }, "type": "object" }, - "producthunt.ProductDetailedReviewUser": { + "polymarket.OutcomePricePoint": { "properties": { - "avatar_url": { + "best_ask": { + "example": 0.162, + "type": "number" + }, + "best_bid": { + "example": 0.161, + "type": "number" + }, + "last_trade_price": { + "example": 0.162, + "type": "number" + }, + "liquidity": { + "example": 1093391.84, + "type": "number" + }, + "market_id": { + "example": "558934", "type": "string" }, - "headline": { + "market_slug": { + "example": "will-spain-win-the-2026-fifa-world-cup-963", "type": "string" }, - "id": { + "outcome": { + "example": "Yes", "type": "string" }, - "is_account_verified": { - "type": "boolean" + "price": { + "example": 0.1615, + "type": "number" }, - "is_ambassador": { - "type": "boolean" + "question": { + "example": "Will Spain win the 2026 FIFA World Cup?", + "type": "string" }, - "is_followed": { + "volume": { + "example": 30983849.24, + "type": "number" + } + }, + "type": "object" + }, + "polymarket.PredictionsResponse": { + "properties": { + "cursor": { + "type": "string" + }, + "events": { + "items": { + "$ref": "#/definitions/polymarket.EventSummary" + }, + "type": "array" + }, + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" + }, + "has_more": { "type": "boolean" }, - "name": { + "limit": { + "example": 20, + "type": "integer" + }, + "next_cursor": { "type": "string" }, - "reviews_count": { + "recurrence": { + "example": "daily", + "type": "string" + }, + "sort": { + "example": "competitive", + "type": "string" + }, + "source_url": { + "example": "https://gamma-api.polymarket.com/events/keyset?limit=20&order=competitive", + "type": "string" + }, + "status": { + "example": "all", + "type": "string" + }, + "tag": { + "example": "politics", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.PriceHistoryPoint": { + "properties": { + "price": { + "example": 0.48, + "type": "number" + }, + "timestamp": { + "example": 1780826405, "type": "integer" + } + }, + "type": "object" + }, + "polymarket.ProfileMatch": { + "properties": { + "id": { + "example": "123", + "type": "string" }, - "selected_byline_product": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewProduct" + "name": { + "example": "Trader", + "type": "string" }, - "top_hunter_badge": { - "additionalProperties": {}, + "username": { + "example": "trader", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.PublicDataResponse": { + "properties": { + "data": { "type": "object" }, - "top_launch_badge": { - "additionalProperties": {}, - "type": "object" + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" }, - "top_product_badge": { - "additionalProperties": {}, - "type": "object" + "route": { + "example": "sports", + "type": "string" }, - "username": { + "source_url": { + "example": "https://gamma-api.polymarket.com/sports", "type": "string" } }, "type": "object" }, - "producthunt.ProductDetailedReviewsPage": { + "polymarket.RewardsConfigSummary": { "properties": { - "connection": { - "example": "detailedReviews", + "asset_address": { + "example": "0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB", "type": "string" }, - "detailed_review": { - "additionalProperties": {}, - "type": "object" + "end_date": { + "example": "2500-12-31", + "type": "string" }, - "detailed_reviews_count": { + "id": { + "example": 0, "type": "integer" }, - "end_cursor": { + "rate_per_day": { + "example": 10.00036, + "type": "number" + }, + "start_date": { + "example": "2026-06-07", "type": "string" }, - "founder_detailed_reviews_count": { + "total_rewards": { + "example": 0, + "type": "number" + } + }, + "type": "object" + }, + "polymarket.RewardsMarketResponse": { + "properties": { + "condition_id": { + "example": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327", + "type": "string" + }, + "count": { + "example": 1, "type": "integer" }, - "has_next_page": { - "example": false, - "type": "boolean" + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" }, - "is_maker": { - "type": "boolean" + "market": { + "$ref": "#/definitions/polymarket.RewardsMarketSummary" }, - "is_trashed": { - "type": "boolean" + "source_url": { + "example": "https://clob.polymarket.com/rewards/markets/0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327?sponsored=true", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.RewardsMarketSummary": { + "properties": { + "condition_id": { + "example": "0x2d293b8d8141edcc3317f6e677a01623dc482e7fe8eb4c4e207c9a0987c37d22", + "type": "string" }, - "items": { + "daily_reward_rate": { + "example": 10.00036, + "type": "number" + }, + "earning_percentage": { + "example": 0, + "type": "number" + }, + "earnings": { "items": { - "$ref": "#/definitions/producthunt.ProductDetailedReview" + "type": "object" }, "type": "array" }, - "name": { + "event_id": { + "example": "568951", "type": "string" }, - "other_detailed_reviews_count": { - "type": "integer" + "event_slug": { + "example": "sc2-hero-cure-2026-06-07", + "type": "string" }, - "product_id": { - "example": "1191613", + "event_url": { + "example": "https://polymarket.com/event/sc2-hero-cure-2026-06-07", "type": "string" }, - "raw_page_info": { - "additionalProperties": {}, - "type": "object" + "image_url": { + "type": "string" }, - "reviews_count": { - "type": "integer" + "maker_address": { + "example": "0x0000000000000000000000000000000000000000", + "type": "string" }, - "reviews_rating": { + "market_competitiveness": { + "example": 2.83, "type": "number" }, - "reviews_recent_rating": { - "type": "number" + "market_id": { + "example": "2461586", + "type": "string" }, - "slug": { - "example": "clico", + "market_slug": { + "example": "sc2-hero-cure-2026-06-07", "type": "string" }, - "total_count": { - "example": 6, - "type": "integer" + "market_url": { + "example": "https://polymarket.com/event/sc2-hero-cure-2026-06-07/sc2-hero-cure-2026-06-07", + "type": "string" + }, + "question": { + "example": "StarCraft II: herO vs Cure (BO7) - Global StarCraft II League Playoffs", + "type": "string" + }, + "rewards_config": { + "items": { + "$ref": "#/definitions/polymarket.RewardsConfigSummary" + }, + "type": "array" + }, + "rewards_max_spread": { + "example": 4.5, + "type": "number" + }, + "rewards_min_size": { + "example": 50, + "type": "number" + }, + "spread": { + "example": 0.01, + "type": "number" + }, + "tokens": { + "items": { + "$ref": "#/definitions/polymarket.RewardsTokenSummary" + }, + "type": "array" + }, + "total_configured_rewards": { + "example": 0, + "type": "number" + }, + "volume_24h": { + "example": 79.9901, + "type": "number" } }, "type": "object" }, - "producthunt.ProductLaunchesPage": { + "polymarket.RewardsMarketsResponse": { "properties": { - "connection": { - "example": "posts", + "count": { + "example": 100, + "type": "integer" + }, + "cursor": { + "example": "MA==", "type": "string" }, - "end_cursor": { + "date": { + "example": "2026-06-07", "type": "string" }, - "has_next_page": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" + }, + "has_more": { "type": "boolean" }, - "items": { + "limit": { + "example": 100, + "type": "integer" + }, + "markets": { "items": { - "$ref": "#/definitions/producthunt.ProductAboutPost" + "$ref": "#/definitions/polymarket.RewardsMarketSummary" }, "type": "array" }, - "name": { - "example": "OpenAI", + "next_cursor": { + "example": "MTAw", "type": "string" }, - "order": { - "example": "DATE", + "order_by": { + "example": "market", "type": "string" }, - "product_id": { - "example": "1191613", + "position": { + "example": "desc", "type": "string" }, - "raw_page_info": { - "additionalProperties": {}, - "type": "object" + "q": { + "example": "bitcoin", + "type": "string" }, - "slug": { - "example": "openai", + "source_url": { + "example": "https://polymarket.com/api/rewards/markets?orderBy=market", + "type": "string" + }, + "tag_slug": { + "example": "all", "type": "string" }, "total_count": { - "example": 12, + "example": 5430, "type": "integer" } }, "type": "object" }, - "producthunt.ProductMaker": { + "polymarket.RewardsTokenSummary": { "properties": { - "avatar_url": { + "outcome": { + "example": "herO", "type": "string" }, - "followers_count": { - "type": "integer" + "price": { + "example": 0.995, + "type": "number" }, - "headline": { + "token_id": { + "example": "49033998602764986470838384384660931821099068366428064235699748485619139146655", "type": "string" + } + }, + "type": "object" + }, + "polymarket.SearchResponse": { + "properties": { + "ascending": { + "type": "boolean" }, - "id": { + "events": { + "items": { + "$ref": "#/definitions/polymarket.EventSummary" + }, + "type": "array" + }, + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "is_followed": { + "has_more": { "type": "boolean" }, - "made_posts": { + "limit": { + "example": 10, + "type": "integer" + }, + "profiles": { "items": { - "$ref": "#/definitions/producthunt.ProductMakerPost" + "$ref": "#/definitions/polymarket.ProfileMatch" }, "type": "array" }, - "name": { + "query": { + "example": "bitcoin", "type": "string" }, - "username": { + "sort": { + "example": "relevance", + "type": "string" + }, + "source_url": { + "example": "https://gamma-api.polymarket.com/public-search?q=bitcoin&limit_per_type=10", + "type": "string" + }, + "status": { + "example": "open", "type": "string" + }, + "tags": { + "items": { + "$ref": "#/definitions/polymarket.TagSummary" + }, + "type": "array" + }, + "total_results": { + "example": 123, + "type": "integer" } }, "type": "object" }, - "producthunt.ProductMakerPost": { + "polymarket.SimilarEventsResponse": { "properties": { - "id": { + "events": { + "items": { + "$ref": "#/definitions/polymarket.EventSummary" + }, + "type": "array" + }, + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "name": { + "limit": { + "example": 10, + "type": "integer" + }, + "source_url": { + "example": "https://gamma-api.polymarket.com/events/similar?event_slug=world-cup-winner", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.TagResponse": { + "properties": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "product_id": { + "source_url": { + "example": "https://gamma-api.polymarket.com/tags/slug/crypto", "type": "string" }, - "product_slug": { + "tag": { + "$ref": "#/definitions/polymarket.TagSummary" + } + }, + "type": "object" + }, + "polymarket.TagSummary": { + "properties": { + "id": { + "example": "21", "type": "string" }, - "product_state": { + "label": { + "example": "Crypto", "type": "string" }, "slug": { + "example": "crypto", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.TagsResponse": { + "properties": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "thumbnail_image_uuid": { + "limit": { + "example": 25, + "type": "integer" + }, + "offset": { + "example": 0, + "type": "integer" + }, + "source_url": { + "example": "https://gamma-api.polymarket.com/tags?limit=25", "type": "string" + }, + "tags": { + "items": { + "$ref": "#/definitions/polymarket.TagSummary" + }, + "type": "array" } }, "type": "object" }, - "producthunt.ProductMakersPage": { + "polymarket.TokenMidpointResponse": { "properties": { - "can_claim": { - "type": "boolean" + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" }, - "connection": { - "example": "makers", + "midpoint": { + "example": 0.285, + "type": "number" + }, + "source_url": { + "example": "https://clob.polymarket.com/midpoint?token_id=81927025054404355287140018940169293739219157042658469116956164881873598220211", "type": "string" }, - "end_cursor": { + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", "type": "string" + } + }, + "type": "object" + }, + "polymarket.TokenOrderBookResponse": { + "properties": { + "book": { + "$ref": "#/definitions/polymarket.OrderBookSummary" }, - "has_next_page": { - "example": false, - "type": "boolean" + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" }, - "is_claimed": { - "type": "boolean" + "source_url": { + "example": "https://clob.polymarket.com/book?token_id=81927025054404355287140018940169293739219157042658469116956164881873598220211", + "type": "string" }, - "is_trashed": { - "type": "boolean" + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.TokenPriceHistoryResponse": { + "properties": { + "end_ts": { + "example": 1780840800, + "type": "integer" }, - "items": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" + }, + "fidelity": { + "example": 60, + "type": "integer" + }, + "interval": { + "example": "1d", + "type": "string" + }, + "points": { "items": { - "$ref": "#/definitions/producthunt.ProductMaker" + "$ref": "#/definitions/polymarket.PriceHistoryPoint" }, "type": "array" }, - "name": { + "source_url": { + "example": "https://clob.polymarket.com/prices-history?fidelity=60&interval=1d&market=81927025054404355287140018940169293739219157042658469116956164881873598220211", "type": "string" }, - "product_id": { - "example": "1191613", + "start_ts": { + "example": 1780754400, + "type": "integer" + }, + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.TokenPriceResponse": { + "properties": { + "fetched_at": { + "example": "2026-06-07T11:00:00Z", "type": "string" }, - "raw_page_info": { - "additionalProperties": {}, - "type": "object" + "price": { + "example": 0.03, + "type": "number" }, - "slug": { - "example": "clico", + "side": { + "example": "buy", "type": "string" }, - "total_count": { - "example": 3, - "type": "integer" + "source_url": { + "example": "https://clob.polymarket.com/price?side=buy&token_id=81927025054404355287140018940169293739219157042658469116956164881873598220211", + "type": "string" }, - "viewer_pending_team_request": { - "additionalProperties": {}, - "type": "object" + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "type": "string" } }, "type": "object" }, - "producthunt.SimilarProduct": { + "polymarket.TokenSpreadResponse": { "properties": { - "categories": { - "example": [ - "[\"Presentation Software\"]" - ], - "items": { - "type": "string" - }, - "type": "array" + "fetched_at": { + "example": "2026-06-07T11:00:00Z", + "type": "string" }, - "id": { - "example": "beautiful-ai", + "source_url": { + "example": "https://clob.polymarket.com/spread?token_id=81927025054404355287140018940169293739219157042658469116956164881873598220211", + "type": "string" + }, + "spread": { + "example": 0.51, + "type": "number" + }, + "token_id": { + "example": "81927025054404355287140018940169293739219157042658469116956164881873598220211", + "type": "string" + } + }, + "type": "object" + }, + "polymarket.TradeSummary": { + "properties": { + "asset": { + "example": "90219780179584544303349592653084019110196125806694819219181473744581426681835", + "type": "string" + }, + "bio": { + "type": "string" + }, + "condition_id": { + "example": "0x3f2604d62ac3ee496ffd6d30156f30663fbaf22097f17f09d7364c35db255d2b", + "type": "string" + }, + "event_slug": { + "example": "btc-updown-15m-1780835400", + "type": "string" + }, + "icon_url": { "type": "string" }, "name": { - "example": "Beautiful.ai", + "example": "trader", "type": "string" }, - "rating": { - "example": 3.3, + "outcome": { + "example": "Up", + "type": "string" + }, + "outcome_index": { + "example": 0, + "type": "integer" + }, + "price": { + "example": 0.52744, "type": "number" }, - "review_count": { - "example": 20, + "profile_image_optimized": { + "type": "string" + }, + "profile_image_url": { + "type": "string" + }, + "proxy_wallet": { + "example": "0x400e9b5e37f7209adb6938d49d63c48f154319d2", + "type": "string" + }, + "pseudonym": { + "example": "Noisy-Dimple", + "type": "string" + }, + "side": { + "example": "BUY", + "type": "string" + }, + "size": { + "example": 25, + "type": "number" + }, + "slug": { + "example": "btc-updown-15m-1780835400", + "type": "string" + }, + "timestamp": { + "example": 1780835568, "type": "integer" + }, + "title": { + "example": "Bitcoin Up or Down - June 7, 8:30AM-8:45AM ET", + "type": "string" + }, + "transaction_hash": { + "example": "0x7ef90efb7e9f921509d8e82ecc76ed3d8384a3740d7ebd81d3bbbfd017899245", + "type": "string" + }, + "url": { + "example": "https://polymarket.com/event/btc-updown-15m-1780835400", + "type": "string" + }, + "value": { + "example": 13.186, + "type": "number" } }, "type": "object" }, - "producthunt.aboutResponseDoc": { + "polymarket.activityTradesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.ProductAboutPage" + "$ref": "#/definitions/polymarket.ActivityTradesResponse" }, "msg": { - "example": "Request successful", + "example": "OK", "type": "string" } }, "type": "object" }, - "producthunt.alternativesResponseDoc": { + "polymarket.batchTokenMidpointsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.ProductAlternativesPage" + "$ref": "#/definitions/polymarket.BatchTokenMidpointsResponse" }, "msg": { "example": "OK", @@ -124644,14 +127505,14 @@ }, "type": "object" }, - "producthunt.categoryProductsResponseDoc": { + "polymarket.batchTokenOrderBooksResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.ProductCategoryProductsPage" + "$ref": "#/definitions/polymarket.BatchTokenOrderBooksResponse" }, "msg": { "example": "OK", @@ -124660,14 +127521,14 @@ }, "type": "object" }, - "producthunt.categoryResponseDoc": { + "polymarket.batchTokenPricesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.ProductCategoryPage" + "$ref": "#/definitions/polymarket.BatchTokenPricesResponse" }, "msg": { "example": "OK", @@ -124676,14 +127537,14 @@ }, "type": "object" }, - "producthunt.customersResponseDoc": { + "polymarket.batchTokenSpreadsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.ProductCustomersPage" + "$ref": "#/definitions/polymarket.BatchTokenSpreadsResponse" }, "msg": { "example": "OK", @@ -124692,14 +127553,14 @@ }, "type": "object" }, - "producthunt.launchesResponseDoc": { + "polymarket.clobMarketResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.ProductLaunchesPage" + "$ref": "#/definitions/polymarket.ClobMarketResponse" }, "msg": { "example": "OK", @@ -124708,30 +127569,30 @@ }, "type": "object" }, - "producthunt.leaderboardResponseDoc": { + "polymarket.eventDetailResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.LeaderboardPage" + "$ref": "#/definitions/polymarket.EventDetailResponse" }, "msg": { - "example": "Request successful", + "example": "OK", "type": "string" } }, "type": "object" }, - "producthunt.makersResponseDoc": { + "polymarket.eventsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.ProductMakersPage" + "$ref": "#/definitions/polymarket.EventsResponse" }, "msg": { "example": "OK", @@ -124740,14 +127601,14 @@ }, "type": "object" }, - "producthunt.productResponseDoc": { + "polymarket.homepageFeedResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.Product" + "$ref": "#/definitions/polymarket.HomepageFeedResponse" }, "msg": { "example": "OK", @@ -124756,14 +127617,14 @@ }, "type": "object" }, - "producthunt.reviewsResponseDoc": { + "polymarket.leaderboardResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.ProductDetailedReviewsPage" + "$ref": "#/definitions/polymarket.LeaderboardResponse" }, "msg": { "example": "OK", @@ -124772,69 +127633,62 @@ }, "type": "object" }, - "producthunt.searchAggregationsDoc": { + "polymarket.macroDashboardResponseDoc": { "properties": { - "topics": { - "items": { - "$ref": "#/definitions/producthunt.searchTopicDoc" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" + }, + "data": { + "$ref": "#/definitions/polymarket.MacroDashboardResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "producthunt.searchDataDoc": { + "polymarket.marketDetailResponseDoc": { "properties": { - "aggregations": { - "$ref": "#/definitions/producthunt.searchAggregationsDoc" - }, - "edges": { - "items": { - "$ref": "#/definitions/producthunt.searchEdgeDoc" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" }, - "pageInfo": { - "$ref": "#/definitions/producthunt.searchPageInfoDoc" + "data": { + "$ref": "#/definitions/polymarket.MarketDetailResponse" }, - "pagesCount": { - "example": 394, - "type": "integer" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "producthunt.searchEdgeDoc": { + "polymarket.marketLiquidityResponseDoc": { "properties": { - "node": { - "type": "object" - } - }, - "type": "object" - }, - "producthunt.searchPageInfoDoc": { - "properties": { - "hasNextPage": { - "type": "boolean" + "code": { + "example": 200, + "type": "integer" }, - "hasPreviousPage": { - "type": "boolean" + "data": { + "$ref": "#/definitions/polymarket.MarketLiquidityResponse" }, - "page": { - "example": 1, - "type": "integer" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "producthunt.searchResponseDoc": { + "polymarket.marketsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/producthunt.searchDataDoc" + "$ref": "#/definitions/polymarket.MarketsResponse" }, "msg": { "example": "OK", @@ -124843,2669 +127697,4399 @@ }, "type": "object" }, - "producthunt.searchTopicDoc": { + "polymarket.predictionsResponseDoc": { "properties": { - "count": { - "example": 11979, + "code": { + "example": 200, "type": "integer" }, - "topic": { - "properties": { - "id": { - "example": "268", - "type": "string" - }, - "name": { - "example": "Artificial Intelligence", - "type": "string" - } - }, - "type": "object" + "data": { + "$ref": "#/definitions/polymarket.PredictionsResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "propublica.AuthorArticle": { + "polymarket.publicDataResponseDoc": { "properties": { - "published_at": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "title": { - "type": "string" + "data": { + "$ref": "#/definitions/polymarket.PublicDataResponse" }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "propublica.AuthorResponse": { + "polymarket.rewardsMarketResponseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/propublica.AuthorArticle" - }, - "type": "array" - }, - "bio": { - "items": { - "type": "string" - }, - "type": "array" - }, - "contact_email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "page": { + "code": { + "example": 200, "type": "integer" }, - "social_links": { - "additionalProperties": { - "type": "string" - }, - "type": "object" + "data": { + "$ref": "#/definitions/polymarket.RewardsMarketResponse" }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "psa.AutographFactsCategoriesResponse": { - "properties": { - "categories": { - "items": { - "$ref": "#/definitions/psa.AutographFactsCategory" - }, - "type": "array" - } - }, - "type": "object" - }, - "psa.AutographFactsCategory": { + "polymarket.rewardsMarketsResponseDoc": { "properties": { - "id": { - "description": "ID is PSA's own numeric category id, confirmed live against every\ncategory this family covers. Distinct from PSA CardFacts'/Price\nGuide's own category id spaces -- do not assume they share values.", + "code": { + "example": 200, "type": "integer" }, - "name": { - "description": "Name is PSA's own display label, e.g. \"Baseball\".", + "data": { + "$ref": "#/definitions/polymarket.RewardsMarketsResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "psa.AutographFactsGalleryImage": { + "polymarket.searchResponseDoc": { "properties": { - "caption": { - "description": "Caption is PSA's own descriptive caption for this exemplar, e.g.\n\"1977 Hank Aaron Signed Letter\".", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "image_url": { - "description": "ImageURL is the full-size image URL.", + "data": { + "$ref": "#/definitions/polymarket.SearchResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "psa.AutographFactsGalleryResult": { + "polymarket.similarEventsResponseDoc": { "properties": { - "images": { - "items": { - "$ref": "#/definitions/psa.AutographFactsGalleryImage" - }, - "type": "array" - }, - "name": { - "description": "Name is the subject's display name, e.g. \"Hank Aaron\".", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "source_url": { - "type": "string" + "data": { + "$ref": "#/definitions/polymarket.SimilarEventsResponse" }, - "subject_id": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "psa.AutographFactsSubject": { + "polymarket.tagResponseDoc": { "properties": { - "name": { - "description": "Name is the subject's display name, e.g. \"Hank Aaron\".", - "type": "string" - }, - "subject_id": { - "description": "SubjectID is PSA's own numeric subject id -- pass as subject_id to\nAutographFactsSubject.", + "code": { + "example": 200, "type": "integer" - } - }, - "type": "object" - }, - "psa.AutographFactsSubjectResult": { - "properties": { - "autograph_profile": { - "description": "AutographProfile is PSA's own free-text authentication notes for\nthis subject's signature -- signing habits, forgery risk,\nsignature evolution.", - "type": "string" - }, - "name": { - "description": "Name is the subject's display name, e.g. \"Hank Aaron\".", - "type": "string" - }, - "prices": { - "additionalProperties": { - "type": "string" - }, - "description": "Prices maps PSA's own item-type labels (e.g. \"3x5/AP\", \"Gum Card\",\n\"Photo\", \"Check\", \"SS Bat\", \"SS Ball\" -- these vary by subject, not\na fixed global list) to PSA's own formatted price text for this\nsubject's autograph on that item type, e.g. \"$65\". \"IMP\" marks an\nitem type PSA considers impossible/unavailable for this subject\nrather than a real price.", - "type": "object" - }, - "source_url": { - "type": "string" }, - "subject_id": { - "type": "string" + "data": { + "$ref": "#/definitions/polymarket.TagResponse" }, - "subject_profile": { - "description": "SubjectProfile is PSA's own free-text biography for this subject.", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "psa.AutographFactsSubjectsResponse": { + "polymarket.tagsResponseDoc": { "properties": { - "category_id": { + "code": { + "example": 200, "type": "integer" }, - "category_name": { - "type": "string" + "data": { + "$ref": "#/definitions/polymarket.TagsResponse" }, - "subjects": { - "items": { - "$ref": "#/definitions/psa.AutographFactsSubject" - }, - "type": "array" - } - }, - "type": "object" - }, - "psa.CardFactsCategoriesResponse": { - "properties": { - "categories": { - "items": { - "$ref": "#/definitions/psa.CardFactsCategory" - }, - "type": "array" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "psa.CardFactsCategory": { + "polymarket.tokenMidpointResponseDoc": { "properties": { - "id": { - "description": "ID is PSA's own numeric category id, confirmed live against every\ncategory this family covers. Distinct from Price Guide's/\nAutographFacts'/TicketFacts'/ProBatFacts' own category id spaces --\nids 10 and 16 in particular mean different things in CardFacts than\nin Price Guide, do not assume they share values.", + "code": { + "example": 200, "type": "integer" }, - "name": { - "description": "Name is PSA's own display label, e.g. \"Baseball\".", + "data": { + "$ref": "#/definitions/polymarket.TokenMidpointResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "psa.CardFactsChecklistCard": { + "polymarket.tokenOrderBookResponseDoc": { "properties": { - "name": { - "description": "Name is the card's display name, e.g. \"Wander Franco\". Some rows\ncarry an embedded HTML anchor around the name in PSA's own raw\nresponse (confirmed live, e.g. a golf set's \"Tiger Woods\" row) --\nstripped here so every row is plain text.", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "number": { - "description": "Number is the card's printed number within the set. Some sets (e.g.\nplayer-name-only checklists like autograph card sets) carry no\nnumber at all, confirmed live -- empty in that case, not omitted, so\ncallers can rely on the field always being present.", + "data": { + "$ref": "#/definitions/polymarket.TokenOrderBookResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "psa.CardFactsChecklistResponse": { + "polymarket.tokenPriceHistoryResponseDoc": { "properties": { - "cards": { - "items": { - "$ref": "#/definitions/psa.CardFactsChecklistCard" - }, - "type": "array" + "code": { + "example": 200, + "type": "integer" }, - "has_checklist": { - "type": "boolean" + "data": { + "$ref": "#/definitions/polymarket.TokenPriceHistoryResponse" }, - "set_id": { + "msg": { + "example": "OK", "type": "string" - }, - "total_cards": { - "type": "integer" } }, "type": "object" }, - "psa.CardFactsSet": { + "polymarket.tokenPriceResponseDoc": { "properties": { - "name": { - "description": "Name is the set's display name, e.g. \"2022 Topps\".", - "type": "string" - }, - "set_id": { - "description": "SetID is PSA's own numeric set id -- pass as set_id to\nCardFactsChecklist.", + "code": { + "example": 200, "type": "integer" + }, + "data": { + "$ref": "#/definitions/polymarket.TokenPriceResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "psa.CardFactsSetsResponse": { + "polymarket.tokenSpreadResponseDoc": { "properties": { - "category_id": { + "code": { + "example": 200, "type": "integer" }, - "category_name": { - "type": "string" + "data": { + "$ref": "#/definitions/polymarket.TokenSpreadResponse" }, - "sets": { - "items": { - "$ref": "#/definitions/psa.CardFactsSet" - }, - "type": "array" + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "psa.CertLookupResult": { + "popeyes.Allergens": { "properties": { - "brand_title": { - "description": "BrandTitle is the issuing brand/product line, e.g. \"POKEMON SKYRIDGE\".", - "type": "string" + "celery": { + "type": "number" }, - "card_number": { - "description": "CardNumber is the card's number within its set, e.g. \"146\".", - "type": "string" + "eggs": { + "type": "number" }, - "category": { - "description": "Category is PSA's own item category, e.g. \"TCG CARDS\".", - "type": "string" + "fish": { + "type": "number" }, - "cert_number": { - "description": "CertNumber echoes the requested certification number.", - "type": "string" + "gluten": { + "type": "number" }, - "item_grade": { - "description": "ItemGrade is PSA's graded condition for this item, e.g. \"GEM MT 10\",\nfrom PSA's own published grade scale (Authentic through Gem Mint 10).", - "type": "string" + "lupin": { + "type": "number" }, - "label_type": { - "description": "LabelType is a special label variant PSA applied to this cert, e.g.\n\"W/ FUGITIVE INK TECHNOLOGY\". Empty when the cert carries PSA's\nstandard label.", - "type": "string" + "milk": { + "type": "number" }, - "psa_estimate": { - "description": "PSAEstimate is PSA's own dollar price estimate for this exact\ncert+grade, PSA's own formatted string (e.g. \"$135,624.00\"). Empty\nwhen PSA shows no estimate for this cert.", - "type": "string" + "mustard": { + "type": "number" }, - "psa_pop_higher": { - "description": "PSAPopHigher is the number of items PSA has graded higher than this\ncert's own grade for the same card. Nil when PSA shows no figure.", - "type": "integer" + "peanuts": { + "type": "number" }, - "psa_population": { - "description": "PSAPopulation is the number of items PSA has graded at this exact\ncard+grade combination. Nil when PSA shows no population figure for\nthis cert (e.g. an ungraded/authentic-only cert).", - "type": "integer" + "sesame": { + "type": "number" }, - "psa_population_url": { - "description": "PSAPopulationURL is PSA's own Population Report deep link for this\ncard+grade. Informational only -- following it requires a Collectors\naccount login; see the CertLookupResult doc comment above.", - "type": "string" + "shellfish": { + "type": "number" }, - "reverse_cert_barcode": { - "description": "ReverseCertBarcode reports whether the physical label also carries a\nbarcode on its reverse side.", - "type": "boolean" + "soy": { + "type": "number" }, - "set_registry_note": { - "description": "SetRegistryNote is PSA's own Set Registry membership line for this\ncert, e.g. \"This cert does not appear in any sets.\" when the item is\nnot registered in any PSA Set Registry set.", - "type": "string" + "sulphur_dioxide": { + "type": "number" }, - "source_url": { - "description": "SourceURL is the PSA cert-verification page this result was parsed\nfrom.", - "type": "string" + "tree_nuts": { + "type": "number" }, - "subject": { - "description": "Subject is the card's subject/player name, e.g. \"CHARIZARD-HOLO\".", + "wheat": { + "type": "number" + } + }, + "type": "object" + }, + "popeyes.DayHours": { + "properties": { + "close": { + "example": "23:00:00", "type": "string" }, - "title": { - "description": "Title is PSA's own item title line, e.g.\n\"2003 POKEMON SKYRIDGE #146 CHARIZARD-HOLO\".", + "day": { + "example": "monday", "type": "string" }, - "year": { - "description": "Year is the card/item's issue year, e.g. \"2003\".", + "open": { + "example": "07:00:00", "type": "string" } }, "type": "object" }, - "psa.PriceGuideCardPrice": { + "popeyes.FAQEntry": { "properties": { - "card_number": { - "description": "CardNumber is the card's number within the set. Empty for\ngroup-summary rows.", + "answer": { + "description": "Answer is the FAQ's own answer copy, plain-text extracted from\nPortable Text (links are dropped -- this is a display string, not a\nre-editable document).", "type": "string" }, - "description": { - "description": "Description is the card/row's own name as PSA Price Guide displays\nit, e.g. \"Ken Griffey, Sr. (R)\" or a group-summary row like\n\"Commons 1-660\".", + "id": { + "example": "032999c6-ba27-4f8e-b20e-a4cb28e3c37c", "type": "string" }, - "item_id": { - "description": "ItemID is PSA's own numeric item id for this specific card, usable\nfor cross-referencing a psa-price-guide-search result. Nil for\ngroup-summary rows, which have no single-item id.", - "type": "integer" - }, - "prices": { - "additionalProperties": { - "type": "string" - }, - "description": "Prices maps each of Grades (the set's own grade-column labels, e.g.\n\"NM 7\") to PSA's own formatted price text for this card at that\ngrade, e.g. \"35+\" (a trailing \"+\"/\"-\" is PSA's own monthly-trend\nmarker). A grade with no price for this card is omitted from the map\nrather than present as an empty string.", - "type": "object" + "question": { + "example": "How do I remove items from my cart?", + "type": "string" } }, "type": "object" }, - "psa.PriceGuideCategoriesResponse": { + "popeyes.FAQResponse": { "properties": { - "categories": { + "count": { + "example": 20, + "type": "integer" + }, + "entries": { "items": { - "$ref": "#/definitions/psa.PriceGuideCategory" + "$ref": "#/definitions/popeyes.FAQEntry" }, "type": "array" - } - }, - "type": "object" - }, - "psa.PriceGuideCategory": { - "properties": { - "id": { - "description": "ID is PSA's own numeric category id (SportCategoryID), confirmed live\nagainst every category this family covers.", - "type": "integer" }, - "name": { - "description": "Name is PSA's own display label, e.g. \"Baseball Cards\".", + "fetched_at": { "type": "string" }, - "path": { - "description": "Path is the URL path segment(s) PSA Price Guide uses for this\ncategory, e.g. \"baseball-card-values\" -- most categories are a single\nsegment, but not all (see notes on the shipped enum values).", + "has_more": { + "description": "HasMore is a paging heuristic -- see OffersResponse.HasMore.", + "example": true, + "type": "boolean" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "psa.PriceGuideSearchItem": { + "popeyes.LocationResponse": { "properties": { - "item_id": { - "description": "ItemID is PSA's own numeric item id.", - "type": "integer" + "fetched_at": { + "type": "string" }, - "name": { - "description": "Name is the card/item's own descriptive name, e.g.\n\"Ken Griffey, Sr. (R)\".", + "restaurant": { + "$ref": "#/definitions/popeyes.Restaurant" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "psa.PriceGuideSearchResponse": { + "popeyes.LocationsResponse": { "properties": { - "page": { - "type": "integer" - }, - "page_size": { + "count": { + "example": 20, "type": "integer" }, - "query": { + "fetched_at": { "type": "string" }, - "results": { + "has_more": { + "example": true, + "type": "boolean" + }, + "restaurants": { "items": { - "$ref": "#/definitions/psa.PriceGuideSearchResult" + "$ref": "#/definitions/popeyes.Restaurant" }, "type": "array" }, + "source_url": { + "type": "string" + }, "total_count": { + "description": "TotalCount is how many restaurants matched upstream; it can exceed\nCount when more results exist than max_results asked for.", + "example": 236, "type": "integer" } }, "type": "object" }, - "psa.PriceGuideSearchResult": { + "popeyes.MenuCategory": { "properties": { - "category_name": { - "description": "CategoryName is PSA's own category display name for this set, e.g.\n\"Baseball Card Values\".", - "type": "string" + "featured": { + "type": "boolean" }, - "category_path": { - "description": "CategoryPath is the category's URL path segment -- pass as\ncategory_path to psa-price-guide-set.", + "id": { "type": "string" }, "items": { - "description": "Items are the matching cards/items within this set.", "items": { - "$ref": "#/definitions/psa.PriceGuideSearchItem" + "$ref": "#/definitions/popeyes.MenuItem" }, "type": "array" }, - "set_id": { - "description": "SetID is PSA's own numeric set id -- pass as set_id to\npsa-price-guide-set along with CategoryPath and SetPath.", - "type": "integer" + "name": { + "example": "Chicken Wraps", + "type": "string" + } + }, + "type": "object" + }, + "popeyes.MenuItem": { + "properties": { + "allergens": { + "$ref": "#/definitions/popeyes.Allergens" }, - "set_name": { - "description": "SetName is the set's display name, e.g. \"1974 Topps\".", + "id": { + "example": "item_103182", "type": "string" }, - "set_path": { - "description": "SetPath is the set's own URL path segment -- pass as set_path to\npsa-price-guide-set.", + "image_url": { + "type": "string" + }, + "name": { + "example": "Cheese Bites", + "type": "string" + }, + "nutrition": { + "$ref": "#/definitions/popeyes.Nutrition" + }, + "price": { + "$ref": "#/definitions/popeyes.Price" + }, + "type": { + "example": "ITEM", "type": "string" } }, "type": "object" }, - "psa.PriceGuideSetResponse": { + "popeyes.MenuResponse": { "properties": { - "cards": { - "description": "Cards is every row of the set's price table, in PSA's own display\norder.", + "categories": { "items": { - "$ref": "#/definitions/psa.PriceGuideCardPrice" + "$ref": "#/definitions/popeyes.MenuCategory" }, "type": "array" }, - "grades": { - "description": "Grades are this set's own grade-column labels, in the order PSA\nitself displays them (e.g. [\"NM 7\",\"NM-MT 8\",\"MT 9\",\"GEM-MT 10\"]).\nConfirmed live that this varies by set -- a vintage set may carry\nmore/lower grade columns than a modern one -- so it is returned per\nresponse rather than assumed fixed.", - "items": { - "type": "string" - }, - "type": "array" + "currency": { + "example": "USD", + "type": "string" }, - "set_id": { + "fetched_at": { "type": "string" }, + "item_count": { + "example": 120, + "type": "integer" + }, "source_url": { "type": "string" }, - "title": { - "description": "Title is the set's display name, e.g. \"1974 Topps\".", + "store_id": { + "example": "14156", "type": "string" } }, "type": "object" }, - "psa.ProBatFactsCategoriesResponse": { + "popeyes.Nutrition": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/psa.ProBatFactsCategory" - }, - "type": "array" + "calories": { + "example": 560, + "type": "number" + }, + "carbohydrates_g": { + "example": 23, + "type": "number" + }, + "cholesterol_mg": { + "example": 75, + "type": "number" + }, + "fat_g": { + "example": 44, + "type": "number" + }, + "fiber_g": { + "example": 2, + "type": "number" + }, + "proteins_g": { + "example": 17, + "type": "number" + }, + "saturated_fat_g": { + "type": "number" + }, + "serving_weight_g": { + "type": "number" + }, + "sodium_mg": { + "example": 1470, + "type": "number" + }, + "sugar_g": { + "example": 2, + "type": "number" + }, + "trans_fat_g": { + "example": 1, + "type": "number" } }, "type": "object" }, - "psa.ProBatFactsCategory": { + "popeyes.Offer": { "properties": { + "daypart": { + "description": "Daypart restricts the offer to specific times of day (e.g.\n[\"allDay\"]), when Popeyes publishes a restriction.", + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "Description is the offer's own short copy (e.g. what's included),\nwhen Popeyes publishes one.", + "example": "3 Piece Chicken", + "type": "string" + }, "id": { - "description": "ID is PSA's own numeric category id, confirmed live against every\ncategory this family covers. Distinct from CardFacts'/Price Guide's/\nAutographFacts'/TicketFacts' own category id spaces -- do not assume\nthey share values.", - "type": "integer" + "example": "00a369e5-1b33-4d35-b153-e372e3ebf17f", + "type": "string" + }, + "mobile_order_only": { + "description": "MobileOrderOnly is true when the offer is only redeemable through\nPopeyes' own mobile ordering flow.", + "type": "boolean" }, "name": { - "description": "Name is PSA's own display label, e.g. \"Hall of Fame Players\".", + "example": "3Pc Signature Chicken for $5", "type": "string" - } - }, - "type": "object" - }, - "psa.ProBatFactsGalleryImage": { - "properties": { - "caption": { + }, + "offer_tag": { + "description": "OfferTag is Popeyes' own short badge for the offer's kind (e.g.\nVALUE_DEAL, PERCENTAGE_OFF), when published.", + "example": "VALUE_DEAL", "type": "string" }, - "image_url": { + "price": { + "example": 5, + "type": "number" + }, + "price_cents": { + "description": "PriceCents/Price are the offer's flat price when it has one (e.g. \"3Pc\nSignature Chicken for $5\" prices at 500 cents). A value of 0 does not\nmean free -- it means the offer's discount is not expressed as a flat\nprice (see OfferTag/Name instead, e.g. a percentage-off or BOGO deal).", + "example": 500, + "type": "integer" + }, + "redemption_type": { + "description": "RedemptionType is how the offer is redeemed -- observed live values\ninclude STANDARD (in-app/online) and PAPER_COUPON.", + "example": "STANDARD", + "type": "string" + }, + "requires_authentication": { + "description": "RequiresAuthentication is true when the offer's own published rules\nmark it as needing a signed-in Popeyes Rewards account to redeem --\nderived from the offer's rules, not assumed. This build does not\ncall any account/loyalty-scoped API; it only reports what the\noffer's own public CMS record says about itself.", + "type": "boolean" + }, + "section": { + "description": "Section is the offer catalog's own grouping (e.g. \"For Two\"), when\nPopeyes assigns one -- most offers do not have one.", + "example": "For Two", + "type": "string" + }, + "short_code": { + "description": "ShortCode is the offer's own promo/redemption code, when published.", + "example": "8438", "type": "string" } }, "type": "object" }, - "psa.ProBatFactsGalleryResult": { + "popeyes.OffersResponse": { "properties": { - "images": { + "count": { + "example": 20, + "type": "integer" + }, + "fetched_at": { + "type": "string" + }, + "has_more": { + "description": "HasMore is true when this page returned as many offers as Limit\nasked for, meaning more may exist at the next Offset. Sanity's\nGraphQL API for this dataset does not publish a total count for\nallSystemwideOffers, so this is a paging heuristic, not an exact\ntotal.", + "example": true, + "type": "boolean" + }, + "offers": { "items": { - "$ref": "#/definitions/psa.ProBatFactsGalleryImage" + "$ref": "#/definitions/popeyes.Offer" }, "type": "array" }, - "name": { - "type": "string" - }, "source_url": { "type": "string" - }, - "subject_id": { - "type": "string" } }, "type": "object" }, - "psa.ProBatFactsSubject": { + "popeyes.Price": { "properties": { - "name": { - "description": "Name is the player's display name, e.g. \"Hank Aaron\".", - "type": "string" + "default": { + "example": 3.99, + "type": "number" }, - "subject_id": { - "description": "SubjectID is PSA's own numeric subject id -- pass as subject_id to\nProBatFactsSubject.", + "default_cents": { + "example": 399, + "type": "integer" + }, + "max": { + "type": "number" + }, + "max_cents": { + "type": "integer" + }, + "min": { + "type": "number" + }, + "min_cents": { "type": "integer" } }, "type": "object" }, - "psa.ProBatFactsSubjectResult": { + "popeyes.Promotion": { "properties": { - "bat_profile": { - "description": "BatProfile is PSA's own free-text bat-authentication writeup\n(models used, signature placement, etc.) for this player.", + "bonus_points": { + "description": "BonusPoints is set for a flat bonus-points promotion.", + "example": 300, + "type": "integer" + }, + "end_date": { + "example": "2021-08-16T04:00:00.000Z", "type": "string" }, - "name": { - "description": "Name is the player's display name, e.g. \"Hank Aaron\".", + "id": { + "example": "11d41e3c-75b5-458c-8166-7cdfb20a635a", "type": "string" }, - "player_profile": { - "description": "PlayerProfile is PSA's own free-text player-biography writeup.", + "message": { + "description": "Message is the promotion's own display copy, when Popeyes publishes\none distinct from Name.", + "example": "Get Double Bonus Points on Your Cart, minimum $20", "type": "string" }, - "source_url": { + "name": { + "description": "Name is the promotion's own internal/public label.", + "example": "Get Double Bonus Points on Your Cart, minimum $20", "type": "string" }, - "subject_id": { + "points_multiplier": { + "description": "PointsMultiplier is set for a \"Nx points\" style promotion (e.g. 2 for\ndouble points); mutually exclusive in practice with BonusPoints.", + "example": 2, + "type": "number" + }, + "start_date": { + "description": "StartDate/EndDate bound the promotion's active window, when Popeyes\npublishes one -- both empty means no published window restriction.", + "example": "2021-08-02T04:00:00.000Z", "type": "string" } }, "type": "object" }, - "psa.ProBatFactsSubjectsResponse": { + "popeyes.PromotionsResponse": { "properties": { - "category_id": { + "count": { + "example": 20, "type": "integer" }, - "category_name": { + "fetched_at": { "type": "string" }, - "subjects": { - "items": { - "$ref": "#/definitions/psa.ProBatFactsSubject" - }, - "type": "array" - } - }, - "type": "object" - }, - "psa.TicketFactsCategoriesResponse": { - "properties": { - "categories": { + "has_more": { + "description": "HasMore is a paging heuristic -- see OffersResponse.HasMore.", + "example": true, + "type": "boolean" + }, + "promotions": { "items": { - "$ref": "#/definitions/psa.TicketFactsCategory" + "$ref": "#/definitions/popeyes.Promotion" }, "type": "array" + }, + "source_url": { + "type": "string" } }, "type": "object" }, - "psa.TicketFactsCategory": { + "popeyes.Quest": { "properties": { - "id": { - "description": "ID is PSA's own numeric category id, confirmed live against every\ncategory this family covers. Distinct from CardFacts'/Price Guide's/\nAutographFacts' own category id spaces -- do not assume they share\nvalues.", + "bonus_points": { + "description": "BonusPoints is the loyalty points awarded on completion, when the\nincentive is points-based.", + "example": 550, "type": "integer" }, + "id": { + "example": "38fe1c9c-6c2b-4d1b-ab86-7bf61105fdfb", + "type": "string" + }, + "incentive_type": { + "description": "IncentiveType is the reward mechanic -- observed live value is\nBONUS_POINTS; kept as a raw pass-through string since other values may\nexist that this pass did not observe.", + "example": "BONUS_POINTS", + "type": "string" + }, + "is_sequential": { + "description": "IsSequential is true when the quest's steps must be completed in\norder.", + "type": "boolean" + }, + "must_activate_by": { + "description": "MustActivateBy is the last date a member could opt in to this quest,\nwhen Popeyes publishes one.", + "type": "string" + }, "name": { - "description": "Name is PSA's own display label, e.g. \"Super Bowl\".", + "description": "Name is the quest's own public display copy.", + "example": "July Challenge: Make Two Purchases, Get FREE Chicken Sandwich in the form of 550 Bonus Points", "type": "string" + }, + "on_distinct_purchases": { + "description": "OnDistinctPurchases is true when each qualifying step must be a\nseparate purchase (observed true on every live quest sampled).", + "type": "boolean" + }, + "step_count": { + "description": "StepCount is how many steps make up the quest. This endpoint does not\nexpose each step's own purchase-requirement rules.", + "type": "integer" } }, "type": "object" }, - "psa.TicketFactsGalleryImage": { + "popeyes.QuestsResponse": { "properties": { - "caption": { + "count": { + "example": 10, + "type": "integer" + }, + "fetched_at": { "type": "string" }, - "image_url": { + "has_more": { + "description": "HasMore is a paging heuristic -- see OffersResponse.HasMore.", + "example": false, + "type": "boolean" + }, + "quests": { + "items": { + "$ref": "#/definitions/popeyes.Quest" + }, + "type": "array" + }, + "source_url": { "type": "string" } }, "type": "object" }, - "psa.TicketFactsGalleryResult": { + "popeyes.Restaurant": { "properties": { - "images": { - "items": { - "$ref": "#/definitions/psa.TicketFactsGalleryImage" - }, - "type": "array" + "address": { + "example": "111 Fulton St", + "type": "string" + }, + "address2": { + "type": "string" + }, + "city": { + "example": "New York", + "type": "string" + }, + "country": { + "example": "USA", + "type": "string" + }, + "has_breakfast": { + "example": false, + "type": "boolean" + }, + "has_delivery": { + "example": true, + "type": "boolean" + }, + "has_drive_thru": { + "example": false, + "type": "boolean" + }, + "has_playground": { + "example": false, + "type": "boolean" + }, + "has_takeout": { + "example": true, + "type": "boolean" + }, + "has_wifi": { + "example": false, + "type": "boolean" + }, + "hours": { + "$ref": "#/definitions/popeyes.RestaurantHours" + }, + "id": { + "example": "restaurant_242928", + "type": "string" + }, + "is_dark_kitchen": { + "example": false, + "type": "boolean" + }, + "is_halal": { + "example": false, + "type": "boolean" + }, + "latitude": { + "example": 40.709873, + "type": "number" + }, + "longitude": { + "example": -74.006601, + "type": "number" }, "name": { + "example": "111 Fulton St New York, New York 10038 - USA", "type": "string" }, - "source_url": { + "operator": { + "description": "Operator is the franchise group operating this location, when RBI\npublishes one.", "type": "string" }, - "subject_id": { + "phone": { + "example": "929-579-0553", + "type": "string" + }, + "postal_code": { + "example": "10038", + "type": "string" + }, + "state": { + "example": "NY", + "type": "string" + }, + "store_id": { + "example": "14156", + "type": "string" + }, + "website_url": { + "example": "https://www.popeyes.com/store-locator/store/restaurant_242928", "type": "string" } }, "type": "object" }, - "psa.TicketFactsSubject": { + "popeyes.RestaurantHours": { "properties": { - "name": { - "description": "Name is the event's display name, e.g. \"Super Bowl I\".", - "type": "string" + "curbside": { + "items": { + "$ref": "#/definitions/popeyes.DayHours" + }, + "type": "array" }, - "subject_id": { - "description": "SubjectID is PSA's own numeric subject id -- pass as subject_id to\nTicketFactsSubject.", - "type": "integer" + "delivery": { + "items": { + "$ref": "#/definitions/popeyes.DayHours" + }, + "type": "array" + }, + "dining_room": { + "items": { + "$ref": "#/definitions/popeyes.DayHours" + }, + "type": "array" + }, + "drive_thru": { + "items": { + "$ref": "#/definitions/popeyes.DayHours" + }, + "type": "array" } }, "type": "object" }, - "psa.TicketFactsSubjectResult": { + "popeyes.Reward": { "properties": { - "name": { - "description": "Name is the event's display name, e.g. \"Super Bowl I\".", + "id": { + "example": "09acd09f-2ca5-4259-934c-0345356b2bb0", "type": "string" }, - "source_url": { - "type": "string" + "incentive_not_in_menu": { + "description": "IncentiveNotInMenu is true when Popeyes marks the reward's item as\nnot otherwise purchasable on the regular menu (a rewards-exclusive\nitem or bundle).", + "type": "boolean" }, - "subject_id": { - "type": "string" + "mobile_order_only": { + "description": "MobileOrderOnly is true when the reward is only redeemable through\nPopeyes' own mobile ordering flow, when Popeyes publishes that\nrestriction.", + "type": "boolean" }, - "ticket_profile": { - "description": "TicketProfile is PSA's own free-text historical writeup for this\nevent.", + "name": { + "description": "Name is the reward's own public display copy -- typically the menu\nitem or combo name it redeems.", + "example": "Large Mashed Potatoes", "type": "string" + }, + "points": { + "description": "Points is the loyalty points cost to redeem, from the reward's own\nLoyaltyPoints rule.", + "example": 600, + "type": "integer" } }, "type": "object" }, - "psa.TicketFactsSubjectsResponse": { + "popeyes.RewardsResponse": { "properties": { - "category_id": { + "count": { + "example": 20, "type": "integer" }, - "category_name": { + "fetched_at": { "type": "string" }, - "subjects": { + "has_more": { + "description": "HasMore is a paging heuristic -- see OffersResponse.HasMore.", + "example": true, + "type": "boolean" + }, + "rewards": { "items": { - "$ref": "#/definitions/psa.TicketFactsSubject" + "$ref": "#/definitions/popeyes.Reward" }, "type": "array" + }, + "source_url": { + "type": "string" } }, "type": "object" }, - "psa.autographFactsCategoriesResponseDoc": { + "popeyes.faqResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/psa.AutographFactsCategoriesResponse" + "$ref": "#/definitions/popeyes.FAQResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "psa.autographFactsGalleryResponseDoc": { + "popeyes.locationResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/psa.AutographFactsGalleryResult" + "$ref": "#/definitions/popeyes.LocationResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "psa.autographFactsSubjectResponseDoc": { + "popeyes.locationsResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/psa.AutographFactsSubjectResult" + "$ref": "#/definitions/popeyes.LocationsResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "psa.autographFactsSubjectsResponseDoc": { + "popeyes.menuResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/psa.AutographFactsSubjectsResponse" + "$ref": "#/definitions/popeyes.MenuResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "psa.cardFactsCategoriesResponseDoc": { + "popeyes.offersResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/psa.CardFactsCategoriesResponse" + "$ref": "#/definitions/popeyes.OffersResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "psa.cardFactsChecklistResponseDoc": { + "popeyes.promotionsResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/psa.CardFactsChecklistResponse" + "$ref": "#/definitions/popeyes.PromotionsResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "psa.cardFactsSetsResponseDoc": { + "popeyes.questsResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/psa.CardFactsSetsResponse" + "$ref": "#/definitions/popeyes.QuestsResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "psa.certLookupResponseDoc": { + "popeyes.rewardsResponseDoc": { "properties": { "code": { - "example": 200, + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, "data": { - "$ref": "#/definitions/psa.CertLookupResult" + "$ref": "#/definitions/popeyes.RewardsResponse" }, "msg": { - "example": "OK", - "type": "string" + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "psa.priceGuideCategoriesResponseDoc": { + "popularTrend.CountryIndustryMeta": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/psa.PriceGuideCategoriesResponse" + "country": { + "items": { + "$ref": "#/definitions/popularTrend.CountryIndustryMetaItem" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" + "industry": { + "items": { + "$ref": "#/definitions/popularTrend.CountryIndustryMetaItem" + }, + "type": "array" } }, "type": "object" }, - "psa.priceGuideSearchResponseDoc": { + "popularTrend.CountryIndustryMetaItem": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/psa.PriceGuideSearchResponse" + "id": { + "type": "string" }, - "msg": { - "example": "OK", + "value": { "type": "string" } }, "type": "object" }, - "psa.priceGuideSetResponseDoc": { + "popularTrend.TopAdsAnalysisPoint": { "properties": { - "code": { - "example": 200, + "second": { "type": "integer" }, - "data": { - "$ref": "#/definitions/psa.PriceGuideSetResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "value": { + "type": "number" } }, "type": "object" }, - "psa.probatFactsCategoriesResponseDoc": { + "popularTrend.TopAdsAnalysisResp": { "properties": { "code": { - "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/psa.ProBatFactsCategoriesResponse" + "properties": { + "analysis": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsAnalysisPoint" + }, + "type": "array" + }, + "duration": { + "type": "number" + }, + "highlight": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "metric": { + "type": "string" + }, + "metric_label": { + "type": "string" + }, + "percentile": { + "type": "number" + }, + "percentile_data": { + "additionalProperties": { + "format": "float64", + "type": "number" + }, + "type": "object" + }, + "percentile_metric": { + "type": "string" + }, + "period_type": { + "type": "integer" + } + }, + "type": "object" }, "msg": { - "example": "OK", + "type": "string" + }, + "request_id": { "type": "string" } }, "type": "object" }, - "psa.probatFactsGalleryResponseDoc": { + "popularTrend.TopAdsDetailResp": { "properties": { "code": { - "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/psa.ProBatFactsGalleryResult" + "$ref": "#/definitions/popularTrend.TopAdsMaterial" }, "msg": { - "example": "OK", + "type": "string" + }, + "request_id": { "type": "string" } }, "type": "object" }, - "psa.probatFactsSubjectResponseDoc": { + "popularTrend.TopAdsFilterItem": { "properties": { - "code": { - "example": 200, - "type": "integer" + "has_conversion": { + "type": "boolean" }, - "data": { - "$ref": "#/definitions/psa.ProBatFactsSubjectResult" + "id": { + "type": "object" }, - "msg": { - "example": "OK", + "label": { + "type": "string" + }, + "parent_id": { + "type": "object" + }, + "value": { "type": "string" } }, "type": "object" }, - "psa.probatFactsSubjectsResponseDoc": { + "popularTrend.TopAdsFiltersResp": { "properties": { "code": { - "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/psa.ProBatFactsSubjectsResponse" + "properties": { + "ad_format": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "ad_language": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "analysis_metric": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "country": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "duration": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "industry": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "like": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "objective": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "order_by": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "pattern_label": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "period": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + } + }, + "type": "object" }, "msg": { - "example": "OK", + "type": "string" + }, + "request_id": { "type": "string" } }, "type": "object" }, - "psa.ticketFactsCategoriesResponseDoc": { + "popularTrend.TopAdsListResp": { "properties": { "code": { - "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/psa.TicketFactsCategoriesResponse" + "properties": { + "materials": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsMaterial" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/definitions/popularTrend.TopAdsPagination" + } + }, + "type": "object" }, "msg": { - "example": "OK", + "type": "string" + }, + "request_id": { "type": "string" } }, "type": "object" }, - "psa.ticketFactsGalleryResponseDoc": { + "popularTrend.TopAdsLocationInfoResp": { "properties": { "code": { - "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/psa.TicketFactsGalleryResult" + "properties": { + "first_industry": { + "type": "object" + }, + "initial_country": { + "items": { + "type": "string" + }, + "type": "array" + }, + "l1_industry": { + "type": "integer" + }, + "l2_industry": { + "type": "integer" + }, + "second_industry": { + "type": "object" + } + }, + "type": "object" }, "msg": { - "example": "OK", + "type": "string" + }, + "request_id": { "type": "string" } }, "type": "object" }, - "psa.ticketFactsSubjectResponseDoc": { + "popularTrend.TopAdsLocationsResp": { "properties": { "code": { - "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/psa.TicketFactsSubjectResult" + "properties": { + "country": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + } + }, + "type": "object" }, "msg": { - "example": "OK", + "type": "string" + }, + "request_id": { "type": "string" } }, "type": "object" }, - "psa.ticketFactsSubjectsResponseDoc": { + "popularTrend.TopAdsMaterial": { "properties": { - "code": { - "example": 200, + "ad_title": { + "type": "string" + }, + "brand_name": { + "type": "string" + }, + "comment": { "type": "integer" }, - "data": { - "$ref": "#/definitions/psa.TicketFactsSubjectsResponse" + "cost": { + "type": "integer" }, - "msg": { - "example": "OK", + "country_code": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ctr": { + "type": "number" + }, + "favorite": { + "type": "boolean" + }, + "has_summary": { + "type": "boolean" + }, + "highlight": { "type": "string" + }, + "highlight_text": { + "type": "string" + }, + "id": { + "type": "string" + }, + "industry_key": { + "type": "string" + }, + "is_search": { + "type": "boolean" + }, + "keyword_list": { + "items": { + "type": "string" + }, + "type": "array" + }, + "landing_page": { + "type": "string" + }, + "like": { + "type": "integer" + }, + "objective_key": { + "type": "string" + }, + "objectives": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "pattern_label": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsFilterItem" + }, + "type": "array" + }, + "share": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "source_key": { + "type": "integer" + }, + "video_info": { + "$ref": "#/definitions/popularTrend.TopAdsVideoInfo" + }, + "voice_over": { + "type": "boolean" } }, "type": "object" }, - "publicnews.abcNewsAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/abcnews.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.abcauAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/abcau.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.apNewsAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/apnews.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.arstechnicaAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/arstechnica.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.articleResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/newsplatform.ArticleResponse" - } - }, - "type": "object" - }, - "publicnews.billboardAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/billboard.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.bleacherreportAuthorResponseDoc": { + "popularTrend.TopAdsPagination": { "properties": { - "data": { - "$ref": "#/definitions/bleacherreport.AuthorResponse" + "has_more": { + "type": "boolean" + }, + "page": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "total": { + "type": "integer" + }, + "total_count": { + "type": "integer" } }, "type": "object" }, - "publicnews.breitbartAuthorResponseDoc": { + "popularTrend.TopAdsRecommendResp": { "properties": { + "code": { + "type": "integer" + }, "data": { - "$ref": "#/definitions/breitbart.AuthorResponse" + "properties": { + "materials": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsMaterial" + }, + "type": "array" + } + }, + "type": "object" + }, + "msg": { + "type": "string" + }, + "request_id": { + "type": "string" } }, "type": "object" }, - "publicnews.businessInsiderAuthorResponseDoc": { + "popularTrend.TopAdsSafetyResp": { "properties": { + "code": { + "type": "integer" + }, "data": { - "$ref": "#/definitions/businessinsider.AuthorResponse" + "properties": { + "cc_banner_key": { + "type": "string" + }, + "creator_search": { + "type": "integer" + }, + "hashtag_search": { + "type": "integer" + }, + "keyword_search": { + "type": "integer" + }, + "sound_search": { + "type": "integer" + }, + "top_ads_search": { + "type": "integer" + } + }, + "type": "object" + }, + "msg": { + "type": "string" + }, + "request_id": { + "type": "string" } }, "type": "object" }, - "publicnews.businessstandardAuthorResponseDoc": { + "popularTrend.TopAdsSpotlightResp": { "properties": { + "code": { + "type": "integer" + }, "data": { - "$ref": "#/definitions/businessstandard.AuthorResponse" + "properties": { + "materials": { + "items": { + "$ref": "#/definitions/popularTrend.TopAdsMaterial" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/definitions/popularTrend.TopAdsPagination" + } + }, + "type": "object" + }, + "msg": { + "type": "string" + }, + "request_id": { + "type": "string" } }, "type": "object" }, - "publicnews.cbcAuthorResponseDoc": { + "popularTrend.TopAdsSuggestionsResp": { "properties": { + "code": { + "type": "integer" + }, "data": { - "$ref": "#/definitions/cbc.AuthorResponse" + "properties": { + "query": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "msg": { + "type": "string" + }, + "request_id": { + "type": "string" } }, "type": "object" }, - "publicnews.cbrAuthorResponseDoc": { + "popularTrend.TopAdsVideoInfo": { "properties": { - "data": { - "$ref": "#/definitions/cbr.AuthorResponse" + "cover": { + "type": "string" + }, + "duration": { + "type": "number" + }, + "height": { + "type": "integer" + }, + "vid": { + "type": "string" + }, + "video_url": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "width": { + "type": "integer" } }, "type": "object" }, - "publicnews.cbsNewsAuthorResponseDoc": { + "populartrend.countryIndustryMetaResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/cbsnews.AuthorResponse" + "$ref": "#/definitions/popularTrend.CountryIndustryMeta" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.cbsSportsAuthorResponseDoc": { + "populartrend.topAdsAnalysisResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/cbssports.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsAnalysisResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.chicagoTribuneAuthorResponseDoc": { + "populartrend.topAdsDetailResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/chicagotribune.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsDetailResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.cnaAuthorResponseDoc": { + "populartrend.topAdsFiltersResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/cna.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsFiltersResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.cnetAuthorResponseDoc": { + "populartrend.topAdsListResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/cnet.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsListResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.colliderAuthorResponseDoc": { + "populartrend.topAdsLocationInfoResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/collider.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsLocationInfoResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.ctvnewsAuthorResponseDoc": { + "populartrend.topAdsLocationsResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/ctvnews.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsLocationsResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.dailyBeastAuthorResponseDoc": { + "populartrend.topAdsRecommendResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/thedailybeast.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsRecommendResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.dailyExpressAuthorResponseDoc": { + "populartrend.topAdsSafetyResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/dailyexpress.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsSafetyResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.dailyMailAuthorResponseDoc": { + "populartrend.topAdsSpotlightResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/dailymail.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsSpotlightResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.dailyRecordAuthorResponseDoc": { + "populartrend.topAdsSuggestionsResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/dailyrecord.AuthorResponse" + "$ref": "#/definitions/popularTrend.TopAdsSuggestionsResp" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.dailyWireAuthorResponseDoc": { + "poshmark.BrandDirectoryEntry": { "properties": { - "data": { - "$ref": "#/definitions/dailywire.AuthorResponse" + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "example": "4be6779b4630c50002000039", + "type": "string" + }, + "logo_url": { + "type": "string" + }, + "name": { + "example": "Nike", + "type": "string" + }, + "slug": { + "example": "Nike", + "type": "string" } }, "type": "object" }, - "publicnews.dailycallerAuthorResponseDoc": { + "poshmark.BrandResponse": { "properties": { - "data": { - "$ref": "#/definitions/dailycaller.AuthorResponse" + "has_more": { + "example": true, + "type": "boolean" + }, + "listings": { + "items": { + "$ref": "#/definitions/poshmark.Listing" + }, + "type": "array" + }, + "next_max_id": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "total": { + "example": 210000, + "type": "integer" } }, "type": "object" }, - "publicnews.dawnAuthorResponseDoc": { + "poshmark.BrandsResponse": { "properties": { - "data": { - "$ref": "#/definitions/dawn.AuthorResponse" + "brands": { + "items": { + "$ref": "#/definitions/poshmark.BrandDirectoryEntry" + }, + "type": "array" + }, + "source_url": { + "type": "string" + }, + "total": { + "example": 29887, + "type": "integer" } }, "type": "object" }, - "publicnews.deadlineAuthorResponseDoc": { + "poshmark.CategoriesResponse": { "properties": { - "data": { - "$ref": "#/definitions/deadline.AuthorResponse" + "departments": { + "items": { + "$ref": "#/definitions/poshmark.DepartmentTaxonomy" + }, + "type": "array" } }, "type": "object" }, - "publicnews.dwAuthorResponseDoc": { + "poshmark.CategoryResponse": { "properties": { - "data": { - "$ref": "#/definitions/dw.AuthorResponse" + "has_more": { + "example": true, + "type": "boolean" + }, + "listings": { + "items": { + "$ref": "#/definitions/poshmark.Listing" + }, + "type": "array" + }, + "next_max_id": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "total": { + "example": 84000, + "type": "integer" } }, "type": "object" }, - "publicnews.economicTimesAuthorResponseDoc": { + "poshmark.CategoryTaxonomyEntry": { "properties": { - "data": { - "$ref": "#/definitions/economictimes.AuthorResponse" + "id": { + "example": "00268975d97b4e80ef00a955", + "type": "string" + }, + "name": { + "example": "Shoes", + "type": "string" + }, + "path": { + "description": "Path is the exact value the category endpoint's path parameter\nexpects, e.g. \"Women-Shoes\".", + "example": "Women-Shoes", + "type": "string" } }, "type": "object" }, - "publicnews.engadgetAuthorResponseDoc": { + "poshmark.ClosetResponse": { "properties": { - "data": { - "$ref": "#/definitions/engadget.AuthorResponse" + "has_more": { + "example": true, + "type": "boolean" + }, + "listings": { + "items": { + "$ref": "#/definitions/poshmark.Listing" + }, + "type": "array" + }, + "next_max_id": { + "type": "string" + }, + "seller": { + "$ref": "#/definitions/poshmark.Seller" + }, + "source_url": { + "type": "string" + }, + "total_count": { + "example": 107, + "type": "integer" } }, "type": "object" }, - "publicnews.eonlineAuthorResponseDoc": { + "poshmark.Comment": { "properties": { - "data": { - "$ref": "#/definitions/eonline.AuthorResponse" + "comment": { + "example": "Hi can you tell me the width of the waist?", + "type": "string" + }, + "created_at": { + "example": "2026-07-05T09:28:09-07:00", + "type": "string" + }, + "creator_full_name": { + "example": "Jen Muston", + "type": "string" + }, + "creator_picture_url": { + "type": "string" + }, + "creator_username": { + "example": "muvlax20", + "type": "string" + }, + "id": { + "example": "6a4a86191fea02ce69f41484", + "type": "string" } }, "type": "object" }, - "publicnews.euronewsAuthorResponseDoc": { + "poshmark.DepartmentTaxonomy": { "properties": { - "data": { - "$ref": "#/definitions/euronews.AuthorResponse" + "categories": { + "items": { + "$ref": "#/definitions/poshmark.CategoryTaxonomyEntry" + }, + "type": "array" + }, + "id": { + "example": "000e8975d97b4e80ef00a955", + "type": "string" + }, + "name": { + "example": "Women", + "type": "string" + }, + "path": { + "description": "Path is the exact value the category endpoint's path parameter\nexpects for browsing the department itself, e.g. \"Women\".", + "example": "Women", + "type": "string" } }, "type": "object" }, - "publicnews.ewAuthorResponseDoc": { + "poshmark.Listing": { "properties": { - "data": { - "$ref": "#/definitions/ew.AuthorResponse" + "brand": { + "example": "FARM Rio", + "type": "string" + }, + "category": { + "example": "Shorts", + "type": "string" + }, + "colors": { + "example": [ + "Red", + "Yellow" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "comment_count": { + "example": 4, + "type": "integer" + }, + "condition": { + "example": "nwt", + "type": "string" + }, + "cover_shot": { + "example": "https://di2ponv0v5otw.cloudfront.net/posts/2026/06/27/6a3fed1de9c77df92e2c0cc6/s_6a3fed24bd4ce3ff762126e5.jpg", + "type": "string" + }, + "created_at": { + "example": "2026-06-27T08:32:58-07:00", + "type": "string" + }, + "department": { + "example": "Women", + "type": "string" + }, + "description": { + "type": "string" + }, + "first_available_at": { + "type": "string" + }, + "id": { + "example": "6a3fed1de9c77df92e2c0cc6", + "type": "string" + }, + "inventory_status": { + "example": "available", + "type": "string" + }, + "like_count": { + "example": 111, + "type": "integer" + }, + "original_price": { + "example": 95, + "type": "number" + }, + "pictures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "price": { + "example": 55, + "type": "number" + }, + "quantity_available": { + "example": 1, + "type": "integer" + }, + "seller_display_handle": { + "example": "maltimar", + "type": "string" + }, + "seller_full_name": { + "example": "Mary Altimar", + "type": "string" + }, + "seller_picture_url": { + "type": "string" + }, + "seller_username": { + "example": "maltimar", + "type": "string" + }, + "share_count": { + "example": 13, + "type": "integer" + }, + "size": { + "example": "S", + "type": "string" + }, + "status": { + "example": "published", + "type": "string" + }, + "title": { + "example": "NWT Farm Rio Shorts", + "type": "string" + }, + "url": { + "example": "https://poshmark.com/listing/6a3fed1de9c77df92e2c0cc6", + "type": "string" } }, "type": "object" }, - "publicnews.fastCompanyAuthorResponseDoc": { + "poshmark.ListingResponse": { "properties": { - "data": { - "$ref": "#/definitions/fastcompany.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.fortuneAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/fortune.AuthorResponse" + "brand": { + "example": "FARM Rio", + "type": "string" + }, + "category": { + "example": "Shorts", + "type": "string" + }, + "colors": { + "example": [ + "Red", + "Yellow" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "comment_count": { + "example": 4, + "type": "integer" + }, + "comments": { + "items": { + "$ref": "#/definitions/poshmark.Comment" + }, + "type": "array" + }, + "condition": { + "example": "nwt", + "type": "string" + }, + "cover_shot": { + "example": "https://di2ponv0v5otw.cloudfront.net/posts/2026/06/27/6a3fed1de9c77df92e2c0cc6/s_6a3fed24bd4ce3ff762126e5.jpg", + "type": "string" + }, + "created_at": { + "example": "2026-06-27T08:32:58-07:00", + "type": "string" + }, + "department": { + "example": "Women", + "type": "string" + }, + "description": { + "type": "string" + }, + "first_available_at": { + "type": "string" + }, + "id": { + "example": "6a3fed1de9c77df92e2c0cc6", + "type": "string" + }, + "inventory_status": { + "example": "available", + "type": "string" + }, + "like_count": { + "example": 111, + "type": "integer" + }, + "original_price": { + "example": 95, + "type": "number" + }, + "pictures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "price": { + "example": 55, + "type": "number" + }, + "quantity_available": { + "example": 1, + "type": "integer" + }, + "seller": { + "$ref": "#/definitions/poshmark.Seller" + }, + "seller_display_handle": { + "example": "maltimar", + "type": "string" + }, + "seller_full_name": { + "example": "Mary Altimar", + "type": "string" + }, + "seller_picture_url": { + "type": "string" + }, + "seller_username": { + "example": "maltimar", + "type": "string" + }, + "share_count": { + "example": 13, + "type": "integer" + }, + "similar_listings": { + "items": { + "$ref": "#/definitions/poshmark.Listing" + }, + "type": "array" + }, + "size": { + "example": "S", + "type": "string" + }, + "source_url": { + "type": "string" + }, + "status": { + "example": "published", + "type": "string" + }, + "title": { + "example": "NWT Farm Rio Shorts", + "type": "string" + }, + "url": { + "example": "https://poshmark.com/listing/6a3fed1de9c77df92e2c0cc6", + "type": "string" } }, "type": "object" }, - "publicnews.fortuneCompaniesResponseDoc": { + "poshmark.RatingBreakdown": { "properties": { - "data": { - "$ref": "#/definitions/fortune.CompaniesResponse" + "five_star": { + "example": 355, + "type": "integer" + }, + "four_star": { + "example": 7, + "type": "integer" + }, + "one_star": { + "example": 1, + "type": "integer" + }, + "three_star": { + "example": 2, + "type": "integer" + }, + "two_star": { + "example": 3, + "type": "integer" } }, "type": "object" }, - "publicnews.fortuneCompanyFiltersResponseDoc": { + "poshmark.SearchResponse": { "properties": { - "data": { - "$ref": "#/definitions/fortune.CompanyFiltersResponse" + "has_more": { + "example": true, + "type": "boolean" + }, + "listings": { + "items": { + "$ref": "#/definitions/poshmark.Listing" + }, + "type": "array" + }, + "next_max_id": { + "example": "ENC_eyJtYXhfaWRzIjpbNDksMSwxXSwicGFnZV9udW0iOjIsInBhZ2VfZ3JvdXBfaWQiOiI2YTcyZTE3OTI1MzYyMTUzMDNhMmVmMWEifQ", + "type": "string" + }, + "source_url": { + "type": "string" + }, + "total": { + "example": 120000, + "type": "integer" } }, "type": "object" }, - "publicnews.fortuneCompanyResponseDoc": { + "poshmark.Seller": { "properties": { - "data": { - "$ref": "#/definitions/fortune.CompanyResponse" + "cover_shot_url": { + "type": "string" + }, + "display_handle": { + "example": "maltimar", + "type": "string" + }, + "followers": { + "example": 9096, + "type": "integer" + }, + "following": { + "example": 89, + "type": "integer" + }, + "full_name": { + "example": "Mary Altimar", + "type": "string" + }, + "id": { + "example": "5a4f84cb7d70fb0f0f05a37f", + "type": "string" + }, + "items_sold_display": { + "example": "500+", + "type": "string" + }, + "last_active_at": { + "example": "2026-08-04T19:52:16-07:00", + "type": "string" + }, + "member_since": { + "example": "2018-01-05T05:59:39-08:00", + "type": "string" + }, + "orders_shipped": { + "example": 522, + "type": "integer" + }, + "picture_url": { + "example": "https://di2ponv0v5otw.cloudfront.net/users/2018/04/23/5a4f84cb7d70fb0f0f05a37f/t_5ade0fdbd0492dff500c741a.jpg", + "type": "string" + }, + "posts_count": { + "example": 698, + "type": "integer" + }, + "rating_average": { + "example": 4.93, + "type": "number" + }, + "rating_breakdown": { + "$ref": "#/definitions/poshmark.RatingBreakdown" + }, + "rating_count": { + "example": 368, + "type": "integer" + }, + "url": { + "example": "https://poshmark.com/closet/maltimar", + "type": "string" + }, + "username": { + "example": "maltimar", + "type": "string" } }, "type": "object" }, - "publicnews.fortuneRankingFiltersResponseDoc": { + "poshmark.TrendResponse": { "properties": { - "data": { - "$ref": "#/definitions/fortune.RankingFiltersResponse" + "cover_shot": { + "type": "string" + }, + "description": { + "type": "string" + }, + "has_more": { + "example": true, + "type": "boolean" + }, + "listings": { + "items": { + "$ref": "#/definitions/poshmark.Listing" + }, + "type": "array" + }, + "name": { + "example": "Vintage Celine Handbags", + "type": "string" + }, + "next_max_id": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "total": { + "example": 5000, + "type": "integer" } }, "type": "object" }, - "publicnews.fortuneRankingListsResponseDoc": { + "poshmark.brandsResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/fortune.RankingListsResponse" + "$ref": "#/definitions/poshmark.BrandsResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.fortuneRankingResponseDoc": { + "poshmark.categoriesResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/fortune.RankingResponse" + "$ref": "#/definitions/poshmark.CategoriesResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.fortuneRankingYearsResponseDoc": { + "poshmark.searchResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/fortune.RankingYearsResponse" + "$ref": "#/definitions/poshmark.SearchResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.france24AuthorResponseDoc": { + "prada.CategoriesResponse": { "properties": { - "data": { - "$ref": "#/definitions/france24.AuthorResponse" + "categories": { + "items": { + "$ref": "#/definitions/prada.Category" + }, + "type": "array" + }, + "count": { + "type": "integer" + }, + "fetched_at": { + "type": "string" + }, + "genders": { + "items": { + "$ref": "#/definitions/prada.FacetCount" + }, + "type": "array" } }, "type": "object" }, - "publicnews.gamerantAuthorResponseDoc": { + "prada.Category": { "properties": { - "data": { - "$ref": "#/definitions/gamerant.AuthorResponse" + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "items": { + "type": "string" + }, + "type": "array" + }, + "path_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": "string" } }, "type": "object" }, - "publicnews.gamesradarAuthorResponseDoc": { + "prada.CategoryResponse": { "properties": { - "data": { - "$ref": "#/definitions/gamesradar.AuthorResponse" + "category_id": { + "type": "string" + }, + "count": { + "type": "integer" + }, + "country": { + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "gender": { + "type": "string" + }, + "limit": { + "type": "integer" + }, + "page": { + "type": "integer" + }, + "products": { + "items": { + "$ref": "#/definitions/prada.Product" + }, + "type": "array" + }, + "sort": { + "type": "string" + }, + "total_pages": { + "type": "integer" + }, + "total_results": { + "type": "integer" } }, "type": "object" }, - "publicnews.gbnewsAuthorResponseDoc": { + "prada.FacetCount": { "properties": { - "data": { - "$ref": "#/definitions/gbnews.AuthorResponse" + "count": { + "type": "integer" + }, + "value": { + "type": "string" } }, "type": "object" }, - "publicnews.ghanawebArchiveMonthsResponseDoc": { + "prada.Product": { "properties": { - "data": { - "$ref": "#/definitions/ghanaweb.ArchiveMonthsResponse" + "color": { + "type": "string" + }, + "color_hex": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "gender": { + "items": { + "type": "string" + }, + "type": "array" + }, + "image_url": { + "type": "string" + }, + "in_stock": { + "type": "boolean" + }, + "material": { + "type": "string" + }, + "model": { + "type": "string" + }, + "name": { + "type": "string" + }, + "price": { + "type": "number" + }, + "product_type": { + "type": "string" + }, + "pv": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "publicnews.ghanawebArchiveResponseDoc": { + "prada.ProductColorOption": { "properties": { - "data": { - "$ref": "#/definitions/ghanaweb.ArchiveResponse" + "code": { + "type": "string" + }, + "hex": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "publicnews.ghanawebVideoResponseDoc": { + "prada.ProductResponse": { "properties": { - "data": { - "$ref": "#/definitions/ghanaweb.VideoResponse" + "breadcrumbs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "color": { + "type": "string" + }, + "color_hex": { + "type": "string" + }, + "country": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "description": { + "type": "string" + }, + "discounted_price": { + "type": "number" + }, + "fetched_at": { + "type": "string" + }, + "gender": { + "items": { + "type": "string" + }, + "type": "array" + }, + "images": { + "items": { + "type": "string" + }, + "type": "array" + }, + "in_stock": { + "type": "boolean" + }, + "material": { + "type": "string" + }, + "model": { + "type": "string" + }, + "name": { + "type": "string" + }, + "other_colors": { + "items": { + "$ref": "#/definitions/prada.ProductColorOption" + }, + "type": "array" + }, + "price": { + "type": "number" + }, + "product_type": { + "type": "string" + }, + "pv": { + "type": "string" + }, + "sizes": { + "items": { + "$ref": "#/definitions/prada.ProductSize" + }, + "type": "array" + }, + "stock_quantity": { + "type": "integer" + }, + "url": { + "type": "string" } }, "type": "object" }, - "publicnews.ghanawebVideoSectionsResponseDoc": { + "prada.ProductSize": { "properties": { - "data": { - "$ref": "#/definitions/ghanaweb.VideoSectionsResponse" + "code": { + "type": "string" + }, + "label": { + "type": "string" } }, "type": "object" }, - "publicnews.ghanawebVideosResponseDoc": { + "prada.SearchResponse": { "properties": { - "data": { - "$ref": "#/definitions/ghanaweb.VideosResponse" + "count": { + "type": "integer" + }, + "country": { + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "gender": { + "type": "string" + }, + "limit": { + "type": "integer" + }, + "page": { + "type": "integer" + }, + "products": { + "items": { + "$ref": "#/definitions/prada.Product" + }, + "type": "array" + }, + "query": { + "type": "string" + }, + "sort": { + "type": "string" + }, + "total_pages": { + "type": "integer" + }, + "total_results": { + "type": "integer" } }, "type": "object" }, - "publicnews.gizmodoAuthorResponseDoc": { + "prada.Store": { "properties": { - "data": { - "$ref": "#/definitions/gizmodo.AuthorResponse" + "categories": { + "items": { + "type": "string" + }, + "type": "array" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "distance_km": { + "type": "number" + }, + "hours": { + "items": { + "$ref": "#/definitions/prada.StoreDay" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "latitude": { + "type": "number" + }, + "line1": { + "type": "string" + }, + "line2": { + "type": "string" + }, + "longitude": { + "type": "number" + }, + "name": { + "type": "string" + }, + "permanently_closed": { + "type": "boolean" + }, + "phone": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "region": { + "type": "string" + }, + "services": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timezone": { + "type": "string" } }, "type": "object" }, - "publicnews.globalnewsAuthorResponseDoc": { + "prada.StoreDay": { "properties": { - "data": { - "$ref": "#/definitions/globalnews.AuthorResponse" + "closed": { + "type": "boolean" + }, + "day": { + "type": "string" + }, + "end": { + "type": "string" + }, + "start": { + "type": "string" } }, "type": "object" }, - "publicnews.gqAuthorResponseDoc": { + "prada.StoresResponse": { "properties": { - "data": { - "$ref": "#/definitions/gq.AuthorResponse" + "count": { + "type": "integer" + }, + "fetched_at": { + "type": "string" + }, + "lat": { + "type": "number" + }, + "limit": { + "type": "integer" + }, + "lng": { + "type": "number" + }, + "offset": { + "type": "integer" + }, + "query": { + "type": "string" + }, + "radius_km": { + "type": "number" + }, + "stores": { + "items": { + "$ref": "#/definitions/prada.Store" + }, + "type": "array" + }, + "total_results": { + "type": "integer" } }, "type": "object" }, - "publicnews.gulfNewsAuthorResponseDoc": { + "prada.SuggestResponse": { "properties": { - "data": { - "$ref": "#/definitions/gulfnews.AuthorResponse" + "count": { + "type": "integer" + }, + "fetched_at": { + "type": "string" + }, + "query": { + "type": "string" + }, + "suggestions": { + "items": { + "$ref": "#/definitions/prada.Suggestion" + }, + "type": "array" } }, "type": "object" }, - "publicnews.headlinesResponseDoc": { + "prada.Suggestion": { "properties": { - "data": { - "$ref": "#/definitions/newsplatform.HeadlinesResponse" + "popularity": { + "type": "integer" + }, + "query": { + "type": "string" + }, + "result_count": { + "type": "integer" } }, "type": "object" }, - "publicnews.hindustanTimesAuthorResponseDoc": { + "prada.categoriesResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/hindustantimes.AuthorResponse" + "$ref": "#/definitions/prada.CategoriesResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.hollywoodReporterAuthorResponseDoc": { + "prada.categoryResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/hollywoodreporter.AuthorResponse" + "$ref": "#/definitions/prada.CategoryResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.huffPostAuthorResponseDoc": { + "prada.productResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/huffpost.AuthorResponse" + "$ref": "#/definitions/prada.ProductResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.ignAuthorResponseDoc": { + "prada.searchResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/ign.AuthorResponse" + "$ref": "#/definitions/prada.SearchResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.independentAuthorResponseDoc": { + "prada.storesResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/independent.AuthorResponse" + "$ref": "#/definitions/prada.StoresResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.indiaTodayAuthorResponseDoc": { + "prada.suggestResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/indiatoday.AuthorResponse" + "$ref": "#/definitions/prada.SuggestResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.indianExpressAuthorResponseDoc": { + "pristineauction.AuctionStatus": { "properties": { - "data": { - "$ref": "#/definitions/indianexpress.AuthorResponse" + "slug": { + "example": "completed", + "type": "string" } }, "type": "object" }, - "publicnews.indiewireAuthorResponseDoc": { + "pristineauction.AuctionType": { "properties": { - "data": { - "$ref": "#/definitions/indiewire.AuthorResponse" + "slug": { + "example": "daily", + "type": "string" } }, "type": "object" }, - "publicnews.inewsAuthorResponseDoc": { + "pristineauction.CategoriesResponse": { "properties": { - "data": { - "$ref": "#/definitions/inews.AuthorResponse" + "auction_types": { + "items": { + "$ref": "#/definitions/pristineauction.AuctionType" + }, + "type": "array" + }, + "categories": { + "items": { + "$ref": "#/definitions/pristineauction.Category" + }, + "type": "array" + }, + "sort": { + "items": { + "$ref": "#/definitions/pristineauction.SortOption" + }, + "type": "array" + }, + "statuses": { + "items": { + "$ref": "#/definitions/pristineauction.AuctionStatus" + }, + "type": "array" } }, "type": "object" }, - "publicnews.inquirerAuthorResponseDoc": { + "pristineauction.Category": { "properties": { - "data": { - "$ref": "#/definitions/inquirer.AuthorResponse" + "count": { + "example": 8608, + "type": "integer" + }, + "label": { + "example": "BASEBALL", + "type": "string" + }, + "slug": { + "example": "baseball", + "type": "string" + }, + "url": { + "example": "https://www.pristineauction.com/auction/category/baseball", + "type": "string" } }, "type": "object" }, - "publicnews.investopediaAuthorResponseDoc": { + "pristineauction.LotDetailResponse": { "properties": { - "data": { - "$ref": "#/definitions/investopedia.AuthorResponse" + "auction_type": { + "example": "CARD AUCTION", + "type": "string" + }, + "auction_type_url": { + "type": "string" + }, + "availability": { + "example": "InStock", + "type": "string" + }, + "category": { + "example": "trading-cards", + "type": "string" + }, + "currency": { + "example": "USD", + "type": "string" + }, + "description": { + "type": "string" + }, + "ends_at": { + "example": "2026-09-21T03:00:00-07:00", + "type": "string" + }, + "images": { + "items": { + "type": "string" + }, + "type": "array" + }, + "lot_number": { + "example": 13154611, + "type": "integer" + }, + "no_reserve": { + "type": "boolean" + }, + "price": { + "example": 256.66, + "type": "number" + }, + "sku": { + "example": "LOT-13154611", + "type": "string" + }, + "title": { + "example": "Mickey Mantle 1969 Topps #500 (PSA 8) (MC)", + "type": "string" + }, + "total_bids": { + "type": "integer" + }, + "total_views": { + "type": "integer" + }, + "total_watching": { + "type": "integer" + }, + "url": { + "example": "https://www.pristineauction.com/a13154611", + "type": "string" } }, "type": "object" }, - "publicnews.iolAuthorResponseDoc": { + "pristineauction.LotSummary": { "properties": { - "data": { - "$ref": "#/definitions/iol.AuthorResponse" + "auction_type": { + "example": "CARD AUCTION", + "type": "string" + }, + "auction_type_url": { + "type": "string" + }, + "currency": { + "example": "USD", + "type": "string" + }, + "ends_at": { + "example": "2026-09-21T03:00:00Z", + "type": "string" + }, + "high_bid": { + "example": 256.66, + "type": "number" + }, + "image_url": { + "type": "string" + }, + "lot_number": { + "example": 13154611, + "type": "integer" + }, + "no_reserve": { + "type": "boolean" + }, + "subtitle": { + "example": "Rookie Card", + "type": "string" + }, + "title": { + "example": "Mickey Mantle 1969 Topps #500 (PSA 8) (MC)", + "type": "string" + }, + "url": { + "example": "https://www.pristineauction.com/a13154611", + "type": "string" } }, "type": "object" }, - "publicnews.irishindependentAuthorResponseDoc": { + "pristineauction.SearchResponse": { "properties": { - "data": { - "$ref": "#/definitions/irishindependent.AuthorResponse" + "page": { + "type": "integer" + }, + "per_page": { + "type": "integer" + }, + "results": { + "items": { + "$ref": "#/definitions/pristineauction.LotSummary" + }, + "type": "array" + }, + "total": { + "type": "integer" + }, + "total_pages": { + "type": "integer" } }, "type": "object" }, - "publicnews.irishtimesAuthorResponseDoc": { + "pristineauction.SortOption": { "properties": { - "data": { - "$ref": "#/definitions/irishtimes.AuthorResponse" + "slug": { + "example": "ending-soonest", + "type": "string" } }, "type": "object" }, - "publicnews.jerusalemPostAuthorResponseDoc": { + "pristineauction.categoriesResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/jerusalempost.AuthorResponse" + "$ref": "#/definitions/pristineauction.CategoriesResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.jerusalemPostAuthorsResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/jerusalempost.AuthorsResponse" - } - }, - "type": "object" - }, - "publicnews.khaleejTimesAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/khaleejtimes.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.kotakuAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/kotaku.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.livemintAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/livemint.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.livescienceAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/livescience.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.macRumorsAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/macrumors.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.marketWatchAuthorResponseDoc": { + "pristineauction.lotDetailResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/marketwatch.AuthorResponse" + "$ref": "#/definitions/pristineauction.LotDetailResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.mashableAuthorResponseDoc": { + "pristineauction.searchResponseDoc": { "properties": { + "code": { + "example": 200, + "type": "integer" + }, "data": { - "$ref": "#/definitions/mashable.AuthorResponse" + "$ref": "#/definitions/pristineauction.SearchResponse" + }, + "msg": { + "example": "OK", + "type": "string" } }, "type": "object" }, - "publicnews.mediaiteAuthorResponseDoc": { + "producthunt.LeaderboardAdItem": { "properties": { - "data": { - "$ref": "#/definitions/mediaite.AuthorResponse" + "channel_kind": { + "type": "string" + }, + "id": { + "type": "string" + }, + "large_asset_uuid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "post": { + "$ref": "#/definitions/producthunt.LeaderboardAdPost" + }, + "small_asset_uuid": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "tagline": { + "type": "string" + }, + "thumbnail_uuid": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variation_id": { + "type": "string" } }, "type": "object" }, - "publicnews.menAuthorResponseDoc": { + "producthunt.LeaderboardAdPost": { "properties": { - "data": { - "$ref": "#/definitions/men.AuthorResponse" + "comments_count": { + "type": "integer" + }, + "created_at": { + "type": "string" + }, + "disabled_when_scheduled": { + "type": "boolean" + }, + "embargo_preview_at": { + "type": "string" + }, + "featured_at": { + "type": "string" + }, + "featured_comment": { + "$ref": "#/definitions/producthunt.ProductCategoryAdComment" + }, + "has_voted": { + "type": "boolean" + }, + "hide_votes_count": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "latest_score": { + "type": "integer" + }, + "launch_day_score": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "product": { + "$ref": "#/definitions/producthunt.LeaderboardProductRef" + }, + "randomization_status": { + "$ref": "#/definitions/producthunt.LeaderboardRandomizationStatus" + }, + "slug": { + "type": "string" + }, + "topics": { + "items": { + "$ref": "#/definitions/producthunt.LeaderboardTopic" + }, + "type": "array" + }, + "updated_at": { + "type": "string" } }, "type": "object" }, - "publicnews.metroAuthorResponseDoc": { + "producthunt.LeaderboardGhostItem": { "properties": { - "data": { - "$ref": "#/definitions/metro.AuthorResponse" + "id": { + "type": "string" + }, + "subject": { + "type": "string" } }, "type": "object" }, - "publicnews.mirrorAuthorResponseDoc": { + "producthunt.LeaderboardItem": { "properties": { - "data": { - "$ref": "#/definitions/mirror.AuthorResponse" + "ad": { + "$ref": "#/definitions/producthunt.LeaderboardAdItem" + }, + "ghost_ad": { + "$ref": "#/definitions/producthunt.LeaderboardGhostItem" + }, + "post": { + "$ref": "#/definitions/producthunt.LeaderboardPostItem" + }, + "type": { + "type": "string" } }, "type": "object" }, - "publicnews.moneycontrolAuthorResponseDoc": { + "producthunt.LeaderboardPage": { "properties": { - "data": { - "$ref": "#/definitions/moneycontrol.AuthorResponse" + "connection": { + "type": "string" + }, + "day": { + "example": 29, + "type": "integer" + }, + "end_cursor": { + "type": "string" + }, + "featured": { + "type": "boolean" + }, + "golden_kitty_years": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "has_next_page": { + "type": "boolean" + }, + "items": { + "items": { + "$ref": "#/definitions/producthunt.LeaderboardItem" + }, + "type": "array" + }, + "month": { + "example": 1, + "type": "integer" + }, + "order": { + "example": "DAILY_RANK", + "type": "string" + }, + "raw_page_info": { + "additionalProperties": {}, + "type": "object" + }, + "scope": { + "example": "daily", + "type": "string" + }, + "total_count": { + "type": "integer" + }, + "week": { + "example": 5, + "type": "integer" + }, + "year": { + "example": 2026, + "type": "integer" } }, "type": "object" }, - "publicnews.motleyfoolAuthorResponseDoc": { + "producthunt.LeaderboardPostItem": { "properties": { - "data": { - "$ref": "#/definitions/motleyfool.AuthorResponse" + "comments_count": { + "type": "integer" + }, + "created_at": { + "type": "string" + }, + "daily_rank": { + "type": "integer" + }, + "disabled_when_scheduled": { + "type": "boolean" + }, + "embargo_preview_at": { + "type": "string" + }, + "featured_at": { + "type": "string" + }, + "friend_voters_count": { + "type": "integer" + }, + "has_voted": { + "type": "boolean" + }, + "hide_votes_count": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "is_subscribed": { + "type": "boolean" + }, + "latest_score": { + "type": "integer" + }, + "launch_day_score": { + "type": "integer" + }, + "monthly_rank": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "product": { + "$ref": "#/definitions/producthunt.LeaderboardProductRef" + }, + "product_state": { + "type": "string" + }, + "randomization_status": { + "$ref": "#/definitions/producthunt.LeaderboardRandomizationStatus" + }, + "scheduled_at": { + "type": "string" + }, + "shortened_url": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "tagline": { + "type": "string" + }, + "thumbnail_image_uuid": { + "type": "string" + }, + "topics": { + "items": { + "$ref": "#/definitions/producthunt.LeaderboardTopic" + }, + "type": "array" + }, + "updated_at": { + "type": "string" + }, + "weekly_rank": { + "type": "integer" } }, "type": "object" }, - "publicnews.nationAfricaAuthorResponseDoc": { + "producthunt.LeaderboardProductRef": { "properties": { - "data": { - "$ref": "#/definitions/nationafrica.AuthorResponse" + "id": { + "type": "string" + }, + "is_no_longer_online": { + "type": "boolean" + }, + "is_subscribed": { + "type": "boolean" + }, + "is_top_product": { + "type": "boolean" + }, + "logo_uuid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" } }, "type": "object" }, - "publicnews.nationalPostAuthorResponseDoc": { + "producthunt.LeaderboardRandomizationStatus": { "properties": { - "data": { - "$ref": "#/definitions/nationalpost.AuthorResponse" + "active": { + "type": "boolean" + }, + "next_transition_at": { + "type": "string" + }, + "random_day": { + "type": "boolean" + }, + "randomize_order": { + "type": "boolean" } }, "type": "object" }, - "publicnews.ndtvArticleResponseDoc": { + "producthunt.LeaderboardTopic": { "properties": { - "data": { - "$ref": "#/definitions/ndtv.ArticleResponse" + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" } }, "type": "object" }, - "publicnews.ndtvAuthorResponseDoc": { + "producthunt.Product": { "properties": { - "data": { - "$ref": "#/definitions/ndtv.AuthorResponse" + "categories": { + "example": [ + "[\"Design\"", + "\"Productivity\"]" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "daily_rank": { + "example": 1, + "type": "integer" + }, + "date_published": { + "example": "2024-07-21T12:34:56Z", + "type": "string" + }, + "description": { + "example": "Chronicle lets designers and developers review every iteration in one place.", + "type": "string" + }, + "followers_count": { + "example": 2000, + "type": "integer" + }, + "id": { + "example": "chronicle-design", + "type": "string" + }, + "monthly_rank": { + "example": 1, + "type": "integer" + }, + "name": { + "example": "Chronicle", + "type": "string" + }, + "rating": { + "example": 4.8, + "type": "number" + }, + "review_count": { + "example": 152, + "type": "integer" + }, + "similar_products": { + "items": { + "$ref": "#/definitions/producthunt.SimilarProduct" + }, + "type": "array" + }, + "social_links": { + "example": [ + "[\"https://twitter.com/chronicle\"", + "\"https://github.com/chronicle\"]" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "tagline": { + "example": "Visual version control for teams", + "type": "string" + }, + "website": { + "example": "https://chronicle.design", + "type": "string" + }, + "weekly_rank": { + "example": 1, + "type": "integer" } }, "type": "object" }, - "publicnews.ndtvSearchResponseDoc": { + "producthunt.ProductAboutAd": { "properties": { - "data": { - "$ref": "#/definitions/ndtv.SearchResponse" + "channel_kind": { + "type": "string" + }, + "id": { + "type": "string" + }, + "large_asset_uuid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "small_asset_uuid": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "tagline": { + "type": "string" + }, + "thumbnail_uuid": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variation_id": { + "type": "string" } }, "type": "object" }, - "publicnews.news18AuthorResponseDoc": { + "producthunt.ProductAboutDiscussionForum": { "properties": { - "data": { - "$ref": "#/definitions/news18.AuthorResponse" + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "threads": { + "items": { + "$ref": "#/definitions/producthunt.ProductAboutDiscussionThread" + }, + "type": "array" + }, + "total_count": { + "type": "integer" } }, "type": "object" }, - "publicnews.newsResponseDoc": { + "producthunt.ProductAboutDiscussionThread": { "properties": { - "data": { - "$ref": "#/definitions/newsplatform.NewsResponse" + "commentable_id": { + "type": "string" + }, + "comments_count": { + "type": "integer" + }, + "created_at": { + "type": "string" + }, + "description_preview": { + "type": "string" + }, + "forum": { + "$ref": "#/definitions/producthunt.ProductAboutForumRef" + }, + "has_voted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "is_featured": { + "type": "boolean" + }, + "is_pinned": { + "type": "boolean" + }, + "path": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "title": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/producthunt.ProductCategoryUser" + }, + "votes_count": { + "type": "integer" } }, "type": "object" }, - "publicnews.newscomauAuthorResponseDoc": { + "producthunt.ProductAboutForumRef": { "properties": { - "data": { - "$ref": "#/definitions/newscomau.AuthorResponse" + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "subject": { + "$ref": "#/definitions/producthunt.ProductAboutForumSubject" } }, "type": "object" }, - "publicnews.newsmaxAuthorResponseDoc": { + "producthunt.ProductAboutForumSubject": { "properties": { - "data": { - "$ref": "#/definitions/newsmax.AuthorResponse" + "id": { + "type": "string" + }, + "is_no_longer_online": { + "type": "boolean" + }, + "logo_uuid": { + "type": "string" + }, + "name": { + "type": "string" } }, "type": "object" }, - "publicnews.newsweekAuthorResponseDoc": { + "producthunt.ProductAboutGhostAd": { "properties": { - "data": { - "$ref": "#/definitions/newsweek.AuthorResponse" + "id": { + "type": "string" + }, + "subject": { + "type": "string" } }, "type": "object" }, - "publicnews.newyorkerArticleResponseDoc": { + "producthunt.ProductAboutLatestLaunch": { "properties": { - "data": { - "$ref": "#/definitions/newyorker.ArticleResponse" + "id": { + "type": "string" + }, + "is_maker": { + "type": "boolean" + }, + "launch_number": { + "type": "integer" + }, + "launched_this_week": { + "type": "boolean" + }, + "launching_today": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "product_state": { + "type": "string" + }, + "scheduled_at": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "tagline": { + "type": "string" + }, + "thumbnail_image_uuid": { + "type": "string" } }, "type": "object" }, - "publicnews.newyorkerAuthorResponseDoc": { + "producthunt.ProductAboutLaunch": { "properties": { - "data": { - "$ref": "#/definitions/newyorker.AuthorResponse" + "ad1": { + "$ref": "#/definitions/producthunt.ProductAboutGhostAd" + }, + "ad2": { + "$ref": "#/definitions/producthunt.ProductAboutGhostAd" + }, + "badges": { + "items": { + "$ref": "#/definitions/producthunt.ProductCategoryListBadge" + }, + "type": "array" + }, + "can_deputy_manage": { + "type": "boolean" + }, + "can_manage": { + "type": "boolean" + }, + "comments_count": { + "type": "integer" + }, + "created_at": { + "type": "string" + }, + "daily_rank": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "detailed_reviews": { + "items": { + "$ref": "#/definitions/producthunt.ProductAboutShoutout" + }, + "type": "array" + }, + "disabled_when_scheduled": { + "type": "boolean" + }, + "embargo_preview_at": { + "type": "string" + }, + "featured": { + "type": "boolean" + }, + "featured_at": { + "type": "string" + }, + "has_voted": { + "type": "boolean" + }, + "hide_votes_count": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "is_archived": { + "type": "boolean" + }, + "is_available": { + "type": "boolean" + }, + "is_hunter": { + "type": "boolean" + }, + "is_maker": { + "type": "boolean" + }, + "is_top_launch": { + "type": "boolean" + }, + "latest_score": { + "type": "integer" + }, + "launch_day_score": { + "type": "integer" + }, + "launch_number": { + "type": "integer" + }, + "launch_state": { + "type": "string" + }, + "launched_this_week": { + "type": "boolean" + }, + "launching_today": { + "type": "boolean" + }, + "links": { + "items": { + "$ref": "#/definitions/producthunt.ProductAboutLink" + }, + "type": "array" + }, + "makers": { + "items": { + "$ref": "#/definitions/producthunt.ProductAboutUser" + }, + "type": "array" + }, + "media": { + "items": { + "$ref": "#/definitions/producthunt.ProductAboutMedia" + }, + "type": "array" + }, + "meta": { + "$ref": "#/definitions/producthunt.ProductAboutMeta" + }, + "moderation_reason": { + "type": "string" + }, + "name": { + "type": "string" + }, + "pricing_type": { + "type": "string" + }, + "primary_link": { + "$ref": "#/definitions/producthunt.ProductAboutPrimaryLink" + }, + "product": { + "$ref": "#/definitions/producthunt.ProductAboutLaunchProduct" + }, + "product_state": { + "type": "string" + }, + "promo": { + "additionalProperties": {}, + "type": "object" + }, + "redirect_to_product": { + "$ref": "#/definitions/producthunt.LeaderboardProductRef" + }, + "scheduled_at": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "tagline": { + "type": "string" + }, + "thumbnail_image_uuid": { + "type": "string" + }, + "topics": { + "items": { + "$ref": "#/definitions/producthunt.ProductCategoryRef" + }, + "type": "array" + }, + "trashed_at": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "url": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/producthunt.ProductAboutUser" + }, + "weekly_rank": { + "type": "integer" } }, "type": "object" }, - "publicnews.ninetofivemacAuthorResponseDoc": { + "producthunt.ProductAboutLaunchFlags": { "properties": { - "data": { - "$ref": "#/definitions/ninetofivemac.AuthorResponse" + "id": { + "type": "string" + }, + "launched_this_week": { + "type": "boolean" + }, + "launching_today": { + "type": "boolean" } }, "type": "object" }, - "publicnews.nyDailyNewsAuthorResponseDoc": { + "producthunt.ProductAboutLaunchProduct": { "properties": { - "data": { - "$ref": "#/definitions/nydailynews.AuthorResponse" + "can_claim": { + "type": "boolean" + }, + "can_edit": { + "type": "boolean" + }, + "clean_url": { + "type": "string" + }, + "detailed_review": { + "additionalProperties": {}, + "type": "object" + }, + "first_launch": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "is_claimed": { + "type": "boolean" + }, + "is_no_longer_online": { + "type": "boolean" + }, + "is_subscribed": { + "type": "boolean" + }, + "is_top_product": { + "type": "boolean" + }, + "is_viewer_team_member": { + "additionalProperties": {}, + "type": "object" + }, + "latest_launch": { + "$ref": "#/definitions/producthunt.ProductAboutLaunchFlags" + }, + "logo_uuid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "posts_count": { + "type": "integer" + }, + "pro_con_tags": { + "items": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewTag" + }, + "type": "array" + }, + "review_questions": { + "items": { + "$ref": "#/definitions/producthunt.ProductAboutReviewQuestion" + }, + "type": "array" + }, + "reviews_rating": { + "type": "number" + }, + "slug": { + "type": "string" + }, + "tagline": { + "type": "string" + }, + "twitter_url": { + "type": "string" + }, + "viewer_pending_team_request": { + "additionalProperties": {}, + "type": "object" + }, + "website_domain": { + "type": "string" + }, + "website_url": { + "type": "string" } }, "type": "object" }, - "publicnews.nymagAuthorResponseDoc": { + "producthunt.ProductAboutLink": { "properties": { - "data": { - "$ref": "#/definitions/nymag.AuthorResponse" + "devices": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "redirect_path": { + "type": "string" + }, + "store_name": { + "type": "string" + }, + "website_name": { + "type": "string" } }, "type": "object" }, - "publicnews.nypostAuthorResponseDoc": { + "producthunt.ProductAboutMedia": { "properties": { - "data": { - "$ref": "#/definitions/nypost.AuthorResponse" + "id": { + "type": "string" + }, + "image_uuid": { + "type": "string" + }, + "interactive_demo_id": { + "type": "string" + }, + "interactive_demo_type": { + "type": "string" + }, + "media_type": { + "type": "string" + }, + "original_height": { + "type": "integer" + }, + "original_width": { + "type": "integer" + }, + "platform": { + "type": "string" + }, + "thumbnail_height": { + "type": "integer" + }, + "thumbnail_width": { + "type": "integer" + }, + "url": { + "type": "string" + }, + "video_id": { + "type": "string" } }, "type": "object" }, - "publicnews.nzheraldAuthorResponseDoc": { + "producthunt.ProductAboutMentionedProduct": { "properties": { - "data": { - "$ref": "#/definitions/nzherald.AuthorResponse" + "id": { + "type": "string" + }, + "is_no_longer_online": { + "type": "boolean" + }, + "logo_uuid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "tagline": { + "type": "string" } }, "type": "object" }, - "publicnews.pagesixAuthorResponseDoc": { + "producthunt.ProductAboutMeta": { "properties": { - "data": { - "$ref": "#/definitions/pagesix.AuthorResponse" + "title": { + "type": "string" } }, "type": "object" }, - "publicnews.pcgamerAuthorResponseDoc": { + "producthunt.ProductAboutPage": { "properties": { - "data": { - "$ref": "#/definitions/pcgamer.AuthorResponse" + "ad": { + "$ref": "#/definitions/producthunt.ProductAboutAd" + }, + "launch": { + "$ref": "#/definitions/producthunt.ProductAboutLaunch" + }, + "page_variant_typename": { + "type": "string" + }, + "product": { + "$ref": "#/definitions/producthunt.ProductAboutProduct" + }, + "product_id": { + "type": "string" + }, + "viewer": { + "$ref": "#/definitions/producthunt.ProductAboutViewer" } }, "type": "object" }, - "publicnews.pcmagAuthorResponseDoc": { + "producthunt.ProductAboutPageVariant": { "properties": { - "data": { - "$ref": "#/definitions/pcmag.AuthorResponse" + "launch_id": { + "type": "string" + }, + "typename": { + "type": "string" } }, "type": "object" }, - "publicnews.peopleAuthorResponseDoc": { + "producthunt.ProductAboutPost": { "properties": { - "data": { - "$ref": "#/definitions/people.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.phillyinquirerAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/phillyinquirer.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.philstarAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/philstar.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.phonearenaAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/phonearena.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.polygonAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/polygon.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.propublicaAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/propublica.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.punchAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/punch.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.rapplerAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/rappler.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.rawstoryAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/rawstory.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.reachAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/reachplc.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.rnzAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/rnz.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.rollingStoneAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/rollingstone.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.rteAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/rte.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.salonAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/salon.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.sbsnewsAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sbsnews.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.scienceAlertAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sciencealert.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.screenrantAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/screenrant.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.seattleTimesAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/seattletimes.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.sectionsResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/newsplatform.SectionsResponse" - } - }, - "type": "object" - }, - "publicnews.sevennewsauAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sevennewsau.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.sfgateAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sfgate.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.skyNewsAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/skynews.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.skyNewsVideoResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/skynews.VideoResponse" - } - }, - "type": "object" - }, - "publicnews.skyNewsVideosResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/skynews.VideosResponse" - } - }, - "type": "object" - }, - "publicnews.skySportsAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/skysports.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.smhArticleResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/smh.ArticleResponse" - } - }, - "type": "object" - }, - "publicnews.smhAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/smh.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.spaceAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/space.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.sportingNewsAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportingnews.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaDepthChartResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.DepthChartResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaFeedResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.FeedResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaFootballDataResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.FootballDataResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaFootballOptionsResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.FootballOptionsResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaPageOptionsResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.PageOptionsResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaPlayerStatsResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.PlayerStatsResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaProfileResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.ProfileResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaSectionsResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.SectionsResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaSitemapItemsResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.SitemapItemsResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaSitemapsResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.SitemapsResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaStandingsOptionsResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.StandingsOptionsResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaTablesResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.TablesResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaTaxonomySearchResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.TaxonomySearchResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaTradeValuesResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.TradeValuesResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaVideoResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.VideoResponse" - } - }, - "type": "object" - }, - "publicnews.sportskeedaVideosResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sportskeeda.VideosResponse" - } - }, - "type": "object" - }, - "publicnews.standardAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/standard.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.straitstimesAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/straitstimes.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.stuffAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/stuff.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.sunAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/sun.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.techCrunchAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/techcrunch.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.techradarAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/techradar.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.telegraphAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/telegraph.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.theHillAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/thehill.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.theHinduAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/thehindu.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.theJournalAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/thejournal.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.theageArticleResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/theage.ArticleResponse" - } - }, - "type": "object" - }, - "publicnews.theageAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/theage.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.thestarmyAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/thestarmy.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.thevergeAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/theverge.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.thisIsMoneyAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/thisismoney.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.timeAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/time.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.timesOfIndiaAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/timesofindia.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.timesOfIsraelAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/timesofisrael.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.tmzAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/tmz.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.tomsguideAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/tomsguide.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.tomshardwareAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/tomshardware.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.torontoStarAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/torontostar.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.townhallAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/townhall.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.usmagazineAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/usmagazine.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.vanguardngAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/vanguardng.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.vanityFairAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/vanityfair.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.varietyAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/variety.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.viceAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/vice.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.voxAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/vox.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.xdaAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/xda.AuthorResponse" - } - }, - "type": "object" - }, - "publicnews.zdnetAuthorResponseDoc": { - "properties": { - "data": { - "$ref": "#/definitions/zdnet.AuthorResponse" - } - }, - "type": "object" - }, - "punch.AuthorResponse": { - "properties": { - "articles": { + "badges": { "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" + "$ref": "#/definitions/producthunt.ProductCategoryListBadge" }, "type": "array" }, - "name": { + "comments_count": { + "type": "integer" + }, + "created_at": { "type": "string" }, - "total_pages": { + "daily_rank": { "type": "integer" }, - "url": { + "disabled_when_scheduled": { + "type": "boolean" + }, + "embargo_preview_at": { "type": "string" - } - }, - "type": "object" - }, - "quince.CategoriesResponse": { - "properties": { - "business_departments": { - "items": { - "$ref": "#/definitions/quince.FacetCount" - }, - "type": "array" }, - "categories": { - "items": { - "$ref": "#/definitions/quince.FacetCount" - }, - "type": "array" + "featured_at": { + "type": "string" }, - "colors": { - "items": { - "$ref": "#/definitions/quince.FacetCount" - }, - "type": "array" + "has_voted": { + "type": "boolean" }, - "departments": { - "items": { - "$ref": "#/definitions/quince.FacetCount" - }, - "type": "array" + "hide_votes_count": { + "type": "boolean" }, - "fetched_at": { + "id": { "type": "string" }, - "materials": { - "items": { - "$ref": "#/definitions/quince.FacetCount" - }, - "type": "array" + "latest_score": { + "type": "integer" }, - "sizes": { - "items": { - "$ref": "#/definitions/quince.FacetCount" - }, - "type": "array" - } - }, - "type": "object" - }, - "quince.FacetCount": { - "properties": { - "count": { + "launch_day_score": { "type": "integer" }, - "value": { + "monthly_rank": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "product": { + "$ref": "#/definitions/producthunt.LeaderboardProductRef" + }, + "product_state": { + "type": "string" + }, + "randomization_status": { + "$ref": "#/definitions/producthunt.LeaderboardRandomizationStatus" + }, + "redirect_to_product": { + "$ref": "#/definitions/producthunt.LeaderboardProductRef" + }, + "shortened_url": { "type": "string" - } - }, - "type": "object" - }, - "quince.NavCategory": { - "properties": { - "groups": { - "items": { - "$ref": "#/definitions/quince.NavGroup" - }, - "type": "array" }, "slug": { "type": "string" }, - "title": { + "tagline": { "type": "string" - } - }, - "type": "object" - }, - "quince.NavGroup": { - "properties": { - "links": { - "items": { - "$ref": "#/definitions/quince.NavLink" - }, - "type": "array" }, - "title": { + "thumbnail_image_uuid": { "type": "string" + }, + "updated_at": { + "type": "string" + }, + "weekly_rank": { + "type": "integer" } }, "type": "object" }, - "quince.NavLink": { + "producthunt.ProductAboutPrimaryLink": { "properties": { - "slug": { + "id": { "type": "string" }, - "text": { + "url": { "type": "string" } }, "type": "object" }, - "quince.NavigationResponse": { + "producthunt.ProductAboutProduct": { "properties": { - "categories": { + "badges": { "items": { - "$ref": "#/definitions/quince.NavCategory" + "$ref": "#/definitions/producthunt.ProductCategoryListBadge" }, "type": "array" }, - "fetched_at": { - "type": "string" + "detailed_review": { + "additionalProperties": {}, + "type": "object" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "quince.Product": { - "properties": { - "business_department": { - "type": "string" + "discussion_forum": { + "$ref": "#/definitions/producthunt.ProductAboutDiscussionForum" }, - "category": { - "type": "string" + "followers_count": { + "type": "integer" }, - "color": { + "id": { "type": "string" }, - "currency": { - "type": "string" + "is_no_longer_online": { + "type": "boolean" }, - "department": { - "type": "string" + "is_subscribed": { + "type": "boolean" }, - "description": { - "type": "string" + "latest_launch": { + "$ref": "#/definitions/producthunt.ProductAboutLatestLaunch" }, - "gender": { + "logo_uuid": { "type": "string" }, - "handle": { - "type": "string" + "media": { + "items": { + "$ref": "#/definitions/producthunt.ProductAboutMedia" + }, + "type": "array" }, - "image_url": { + "name": { "type": "string" }, - "in_stock": { - "type": "boolean" + "page_variant": { + "$ref": "#/definitions/producthunt.ProductAboutPageVariant" }, - "material": { + "posts": { "items": { - "type": "string" + "$ref": "#/definitions/producthunt.ProductAboutPost" }, "type": "array" }, - "max_price": { - "type": "number" - }, - "min_price": { - "type": "number" + "posts_count": { + "type": "integer" }, - "primary_colors": { + "pro_con_tags": { "items": { - "type": "string" + "$ref": "#/definitions/producthunt.ProductDetailedReviewTag" }, "type": "array" }, - "product_id": { - "type": "integer" + "review_questions": { + "items": { + "$ref": "#/definitions/producthunt.ProductAboutReviewQuestion" + }, + "type": "array" }, - "product_type": { - "type": "string" + "reviews_rating": { + "type": "number" }, - "sizes": { + "screenshots": { "items": { - "type": "string" + "$ref": "#/definitions/producthunt.ProductAboutScreenshot" }, "type": "array" }, - "title": { + "slug": { + "type": "string" + }, + "tagline": { "type": "string" }, "url": { @@ -127514,9 +132098,12 @@ }, "type": "object" }, - "quince.ProductFAQItem": { + "producthunt.ProductAboutReviewQuestion": { "properties": { - "answer": { + "category": { + "type": "string" + }, + "id": { "type": "string" }, "question": { @@ -127525,1623 +132112,1701 @@ }, "type": "object" }, - "quince.ProductFAQResponse": { + "producthunt.ProductAboutScreenshot": { "properties": { - "fetched_at": { + "id": { "type": "string" }, - "handle": { + "image_uuid": { "type": "string" }, - "questions": { - "items": { - "$ref": "#/definitions/quince.ProductFAQItem" - }, - "type": "array" - }, - "source_url": { + "media_type": { "type": "string" + }, + "original_height": { + "type": "integer" + }, + "original_width": { + "type": "integer" } }, "type": "object" }, - "quince.ProductOptionGroup": { + "producthunt.ProductAboutShoutout": { "properties": { - "name": { - "type": "string" - }, - "values": { + "alternative_products": { "items": { - "$ref": "#/definitions/quince.ProductOptionValue" + "$ref": "#/definitions/producthunt.ProductAboutMentionedProduct" }, "type": "array" - } - }, - "type": "object" - }, - "quince.ProductOptionValue": { - "properties": { - "display_name": { - "type": "string" }, - "display_type": { + "id": { "type": "string" }, - "hex_code": { - "type": "string" + "product": { + "$ref": "#/definitions/producthunt.ProductAboutMentionedProduct" }, - "value": { + "shoutout_note": { "type": "string" } }, "type": "object" }, - "quince.ProductResponse": { + "producthunt.ProductAboutUser": { "properties": { - "average_rating": { - "type": "number" - }, - "country": { - "type": "string" - }, - "description": { - "type": "string" - }, - "fetched_at": { - "type": "string" - }, - "gender": { - "type": "string" - }, - "handle": { + "avatar_url": { "type": "string" }, - "images": { - "items": { - "type": "string" - }, - "type": "array" - }, - "options": { - "items": { - "$ref": "#/definitions/quince.ProductOptionGroup" - }, - "type": "array" - }, - "product_id": { - "type": "integer" - }, - "product_type": { + "headline": { "type": "string" }, - "review_count": { - "type": "integer" - }, - "source_url": { + "id": { "type": "string" }, - "title": { + "name": { "type": "string" }, - "url": { + "username": { "type": "string" + } + }, + "type": "object" + }, + "producthunt.ProductAboutViewer": { + "properties": { + "is_featured_post_maker": { + "type": "boolean" }, - "variants": { - "items": { - "$ref": "#/definitions/quince.ProductVariant" - }, - "type": "array" + "recent_launch": { + "additionalProperties": {}, + "type": "object" } }, "type": "object" }, - "quince.ProductReviewsResponse": { + "producthunt.ProductAlternativeBadge": { "properties": { - "average_rating": { - "type": "number" + "date": { + "type": "string" }, - "fetched_at": { + "id": { "type": "string" }, - "handle": { + "period": { "type": "string" }, - "review_count": { + "position": { "type": "integer" }, - "reviews": { - "items": { - "$ref": "#/definitions/quince.Review" - }, - "type": "array" + "post_name": { + "type": "string" }, - "source_url": { + "post_slug": { "type": "string" } }, "type": "object" }, - "quince.ProductVariant": { + "producthunt.ProductAlternativeDiscussion": { "properties": { - "currency": { - "type": "string" - }, - "id": { + "comments_count": { "type": "integer" }, - "in_stock": { - "type": "boolean" + "created_at": { + "type": "string" }, - "options": { - "additionalProperties": { - "type": "string" - }, - "type": "object" + "description_preview": { + "type": "string" }, - "price": { - "type": "number" + "has_voted": { + "type": "boolean" }, - "savings": { + "id": { "type": "string" }, - "sku": { + "path": { "type": "string" }, - "status": { + "pinned": { + "type": "boolean" + }, + "primary_forum": { + "$ref": "#/definitions/producthunt.ProductAlternativeDiscussionForum" + }, + "slug": { "type": "string" }, "title": { "type": "string" }, - "traditional_retail_price": { - "type": "number" + "user": { + "$ref": "#/definitions/producthunt.ProductAlternativeDiscussionUser" + }, + "votes_count": { + "type": "integer" } }, "type": "object" }, - "quince.Review": { + "producthunt.ProductAlternativeDiscussionForum": { "properties": { - "author": { + "id": { "type": "string" }, - "body": { + "slug": { "type": "string" }, - "date_published": { + "subject_id": { "type": "string" }, - "rating": { - "type": "number" + "subject_name": { + "type": "string" } }, "type": "object" }, - "quince.SearchResponse": { + "producthunt.ProductAlternativeDiscussionUser": { "properties": { - "category": { + "avatar_url": { "type": "string" }, - "color": { + "id": { "type": "string" }, - "count": { - "type": "integer" - }, - "country": { - "type": "string" - }, - "department": { - "type": "string" - }, - "fetched_at": { + "name": { "type": "string" }, - "limit": { - "type": "integer" - }, - "material": { + "username": { "type": "string" - }, - "max_price": { + } + }, + "type": "object" + }, + "producthunt.ProductAlternativeItem": { + "properties": { + "category_score": { "type": "number" }, - "min_price": { + "category_weight": { "type": "number" }, - "page": { - "type": "integer" + "combined_score": { + "type": "number" }, - "products": { - "items": { - "$ref": "#/definitions/quince.Product" - }, - "type": "array" + "embedding_score": { + "type": "number" }, - "query": { - "type": "string" + "embedding_weight": { + "type": "number" }, - "size": { + "id": { "type": "string" }, - "source_url": { - "type": "string" + "product": { + "$ref": "#/definitions/producthunt.ProductAlternativeProduct" }, - "total_pages": { - "type": "integer" + "rating_score": { + "type": "number" }, - "total_results": { - "type": "integer" + "rating_weight": { + "type": "number" } }, "type": "object" }, - "quince.SitemapItem": { + "producthunt.ProductAlternativeProduct": { "properties": { - "loc": { - "type": "string" + "badges": { + "items": { + "$ref": "#/definitions/producthunt.ProductAlternativeBadge" + }, + "type": "array" }, - "type": { - "type": "string" - } - }, - "type": "object" - }, - "quince.SitemapURLItem": { - "properties": { - "handle": { - "type": "string" + "categories": { + "items": { + "type": "string" + }, + "type": "array" }, - "loc": { + "followers_count": { + "type": "integer" + }, + "id": { "type": "string" }, - "type": { + "is_subscribed": { + "type": "boolean" + }, + "is_top_product": { + "type": "boolean" + }, + "logo_uuid": { "type": "string" - } - }, - "type": "object" - }, - "quince.SitemapURLsResponse": { - "properties": { - "fetched_at": { + }, + "name": { "type": "string" }, - "limit": { + "reviews_count": { "type": "integer" }, - "source_url": { + "reviews_rating": { + "type": "number" + }, + "slug": { "type": "string" }, - "type": { + "structured_data": { + "$ref": "#/definitions/producthunt.ProductAlternativeStructuredData" + }, + "tagline": { "type": "string" }, - "urls": { + "tags": { "items": { - "$ref": "#/definitions/quince.SitemapURLItem" + "type": "string" }, "type": "array" } }, "type": "object" }, - "quince.SitemapsResponse": { + "producthunt.ProductAlternativeStructuredData": { "properties": { - "fetched_at": { + "application_category": { "type": "string" }, - "sitemaps": { - "items": { - "$ref": "#/definitions/quince.SitemapItem" - }, - "type": "array" + "context": { + "type": "string" }, - "source_url": { + "date_modified": { "type": "string" - } - }, - "type": "object" - }, - "quince.SuggestResponse": { - "properties": { - "fetched_at": { + }, + "date_published": { "type": "string" }, - "query": { + "description": { "type": "string" }, - "source_url": { + "id": { "type": "string" }, - "suggestions": { + "image": { + "type": "string" + }, + "name": { + "type": "string" + }, + "operating_system": { + "type": "string" + }, + "screenshot": { "items": { "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "quince.categoriesResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/quince.CategoriesResponse" - }, - "msg": { - "example": "OK", + "url": { "type": "string" } }, "type": "object" }, - "quince.navigationResponseDoc": { + "producthunt.ProductAlternativeTag": { "properties": { - "code": { - "example": 200, + "count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/quince.NavigationResponse" - }, - "msg": { - "example": "OK", + "name": { "type": "string" } }, "type": "object" }, - "quince.productFAQResponseDoc": { + "producthunt.ProductAlternativesPage": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/quince.ProductFAQResponse" + "alternative_tags": { + "items": { + "$ref": "#/definitions/producthunt.ProductAlternativeTag" + }, + "type": "array" }, - "msg": { - "example": "OK", + "alternatives_markdown_description": { "type": "string" - } - }, - "type": "object" - }, - "quince.productResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/quince.ProductResponse" + "categories": { + "items": { + "type": "string" + }, + "type": "array" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "quince.productReviewsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "discussions": { + "items": { + "$ref": "#/definitions/producthunt.ProductAlternativeDiscussion" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/quince.ProductReviewsResponse" + "discussions_has_next_page": { + "type": "boolean" }, - "msg": { - "example": "OK", + "end_cursor": { + "example": "MTA", "type": "string" - } - }, - "type": "object" - }, - "quince.searchResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/quince.SearchResponse" }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "quince.sitemapURLsResponseDoc": { - "properties": { - "code": { - "example": 200, + "followers_count": { + "example": 577, "type": "integer" }, - "data": { - "$ref": "#/definitions/quince.SitemapURLsResponse" - }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "quince.sitemapsResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" + "has_next_page": { + "example": true, + "type": "boolean" }, - "data": { - "$ref": "#/definitions/quince.SitemapsResponse" + "items": { + "items": { + "$ref": "#/definitions/producthunt.ProductAlternativeItem" + }, + "type": "array" }, - "msg": { - "example": "OK", + "name": { + "example": "Clico", "type": "string" - } - }, - "type": "object" - }, - "quince.suggestResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/quince.SuggestResponse" + "product_id": { + "example": "1191613", + "type": "string" }, - "msg": { - "example": "OK", + "slug": { + "example": "clico", "type": "string" + }, + "total_count": { + "example": 50, + "type": "integer" } }, "type": "object" }, - "raisingcanes.DirectoryChild": { + "producthunt.ProductCategoryAd": { "properties": { - "is_store": { - "description": "IsStore marks a child that is a store page rather than another\ndirectory level -- call /raisingcanes/store with its path.", - "example": false, - "type": "boolean" - }, - "name": { - "example": "Louisiana", + "channel_kind": { "type": "string" }, - "path": { - "example": "la", + "id": { "type": "string" }, - "store_count": { - "description": "StoreCount is how many stores sit under this branch, as Yext reports\nit. Absent on the deepest level, where children are stores themselves.", - "example": 144, - "type": "integer" + "large_asset_uuid": { + "type": "string" }, - "url": { + "name": { "type": "string" - } - }, - "type": "object" - }, - "raisingcanes.DirectoryResponse": { - "properties": { - "children": { - "items": { - "$ref": "#/definitions/raisingcanes.DirectoryChild" - }, - "type": "array" }, - "count": { - "example": 38, - "type": "integer" + "post": { + "$ref": "#/definitions/producthunt.ProductCategoryAdPost" }, - "fetched_at": { + "small_asset_uuid": { "type": "string" }, - "name": { + "subject": { "type": "string" }, - "path": { - "example": "la", + "tagline": { "type": "string" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "raisingcanes.MenuItem": { - "properties": { - "description": { - "description": "Description is Raising Cane's own published item description,\nexactly as written -- it commonly ends with a calorie count or range\n(e.g. \"... 1290 - 1720 Cal\"), but the wording is not structured\nenough to split into separate fields reliably across every item.", - "example": "4 Chicken Fingers, Crinkle-Cut Fries, One Cane's Sauce®, Texas Toast, Coleslaw, Regular Fountain Drink/Tea (22 oz.) 1290 - 1720 Cal", + "thumbnail_uuid": { "type": "string" }, - "image_url": { + "url": { "type": "string" }, - "name": { - "example": "The Box Combo®", + "variation_id": { "type": "string" } }, "type": "object" }, - "raisingcanes.MenuResponse": { + "producthunt.ProductCategoryAdComment": { "properties": { - "count": { - "example": 23, - "type": "integer" + "body_text": { + "type": "string" }, - "fetched_at": { + "id": { "type": "string" }, - "sections": { - "items": { - "$ref": "#/definitions/raisingcanes.MenuSection" - }, - "type": "array" + "is_pinned": { + "type": "boolean" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "raisingcanes.MenuSection": { - "properties": { - "anchor": { - "description": "Anchor is the section's in-page anchor slug, e.g. \"combos\".", - "example": "combos", + "path": { "type": "string" }, - "headline": { - "example": "Combos", + "subject_id": { "type": "string" }, - "items": { - "items": { - "$ref": "#/definitions/raisingcanes.MenuItem" - }, - "type": "array" + "user": { + "$ref": "#/definitions/producthunt.ProductCategoryUser" } }, "type": "object" }, - "raisingcanes.NearbyResponse": { + "producthunt.ProductCategoryAdPost": { "properties": { - "count": { - "example": 10, + "comments_count": { "type": "integer" }, - "fetched_at": { + "created_at": { "type": "string" }, - "radius": { - "example": 25, - "type": "integer" + "disabled_when_scheduled": { + "type": "boolean" }, - "source_url": { + "embargo_preview_at": { "type": "string" }, - "stores": { - "items": { - "$ref": "#/definitions/raisingcanes.NearbyStore" - }, - "type": "array" + "featured_at": { + "type": "string" }, - "total_in_radius": { - "description": "TotalInRadius is how many stores fall inside the radius overall, which\nis usually far more than one page. Use it with `offset` to page.", - "example": 69, - "type": "integer" - } - }, - "type": "object" - }, - "raisingcanes.NearbyStore": { - "properties": { - "address": { - "$ref": "#/definitions/raisingcanes.StoreAddress" + "featured_comment": { + "$ref": "#/definitions/producthunt.ProductCategoryAdComment" }, - "distance_kilometers": { - "example": 0.42, - "type": "number" + "has_voted": { + "type": "boolean" }, - "distance_miles": { - "description": "DistanceMiles is measured from the requested coordinate.", - "example": 0.26, - "type": "number" + "hide_votes_count": { + "type": "boolean" }, - "fulfillment_services": { - "description": "FulfillmentServices are the pickup/delivery service flags Raising\nCane's publishes for this store, e.g. IN_STORE_PICKUP,\nDELIVERY_NOT_OFFERED.", - "items": { - "type": "string" - }, - "type": "array" + "id": { + "type": "string" }, - "latitude": { - "example": 40.710412, - "type": "number" + "latest_score": { + "type": "integer" }, - "longitude": { - "example": -74.009937, - "type": "number" + "launch_day_score": { + "type": "integer" }, "name": { - "example": "Raising Cane's Chicken Fingers", "type": "string" }, - "path": { - "description": "Path is the /raisingcanes/store path for this store, so a caller can\ngo straight to the detail endpoint.", + "product_id": { "type": "string" }, - "price_range": { - "description": "PriceRange is Raising Cane's own relative price tier, e.g. ONE.", - "example": "ONE", + "product_slug": { "type": "string" }, - "store_id": { - "example": "C986", + "product_subscribed": { + "type": "boolean" + }, + "randomization_status": { + "$ref": "#/definitions/producthunt.ProductCategoryRandomizationStatus" + }, + "slug": { "type": "string" }, - "timezone": { - "example": "America/New_York", + "topics": { + "items": { + "$ref": "#/definitions/producthunt.ProductCategoryTopic" + }, + "type": "array" + }, + "updated_at": { "type": "string" } }, "type": "object" }, - "raisingcanes.PromotionCategory": { + "producthunt.ProductCategoryAnswer": { "properties": { - "heading": { - "example": "Sweepstakes & Giveaways", + "body": { + "$ref": "#/definitions/producthunt.ProductCategoryMarkdown" + }, + "id": { "type": "string" }, - "promotions": { + "sources": { "items": { - "$ref": "#/definitions/raisingcanes.PromotionSummary" + "$ref": "#/definitions/producthunt.ProductCategorySource" }, "type": "array" } }, "type": "object" }, - "raisingcanes.PromotionResponse": { + "producthunt.ProductCategoryFounderPost": { "properties": { - "description": { - "description": "Description is Raising Cane's own official-rules text for this\npromotion, kept as separate paragraphs in publication order rather\nthan joined into one string -- unlike a menu item's short blurb, this\nis often multi-paragraph legal text (eligibility, prize value,\neffective date each their own paragraph) where the paragraph breaks\ncarry real structure.", + "badges": { "items": { - "type": "string" + "$ref": "#/definitions/producthunt.ProductCategoryListBadge" }, "type": "array" }, - "fetched_at": { + "id": { "type": "string" }, - "path": { - "example": "first-50-promotion", + "name": { "type": "string" }, - "source_url": { + "product_id": { "type": "string" }, - "title": { - "example": "First 50 Promotion Details", + "product_slug": { + "type": "string" + }, + "product_state": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "thumbnail_image_uuid": { "type": "string" } }, "type": "object" }, - "raisingcanes.PromotionSummary": { + "producthunt.ProductCategoryFounderShoutout": { "properties": { - "name": { - "example": "First 50 Promotion Details", + "from_post": { + "$ref": "#/definitions/producthunt.ProductCategoryFounderPost" + }, + "id": { "type": "string" }, - "path": { - "description": "Path is the promotion's page slug, usable as the path parameter on\nGET /raisingcanes/promotion. It is empty when Raising Cane's own\nindex links a since-expired promotion back to the homepage instead\nof removing the entry (a real, observed upstream data quality\npattern) -- a caller should treat an empty path as \"no longer\nresolvable\" rather than retry it.", - "example": "first-50-promotion", + "product_id": { "type": "string" } }, "type": "object" }, - "raisingcanes.PromotionsResponse": { + "producthunt.ProductCategoryHeroProduct": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/raisingcanes.PromotionCategory" - }, - "type": "array" + "id": { + "type": "string" }, - "count": { - "example": 53, - "type": "integer" + "is_no_longer_online": { + "type": "boolean" }, - "fetched_at": { + "logo_uuid": { "type": "string" }, - "source_url": { + "name": { "type": "string" } }, "type": "object" }, - "raisingcanes.StoreAddress": { + "producthunt.ProductCategoryLatestLaunch": { "properties": { - "city": { - "example": "Gonzales", + "id": { "type": "string" }, - "country": { - "example": "US", + "scheduled_at": { + "type": "string" + } + }, + "type": "object" + }, + "producthunt.ProductCategoryListBadge": { + "properties": { + "category": { "type": "string" }, - "line1": { - "example": "625 Airline Hwy", + "date": { "type": "string" }, - "line2": { + "id": { "type": "string" }, - "postal_code": { - "example": "70737", + "period": { "type": "string" }, - "region": { - "example": "LA", + "position": { + "type": "integer" + }, + "post_id": { "type": "string" - } - }, - "type": "object" - }, - "raisingcanes.StoreHours": { - "properties": { - "closed": { - "description": "Closed is true when Raising Cane's publishes the day with no open\ninterval.", - "example": false, - "type": "boolean" }, - "closes": { - "example": "00:00", + "post_name": { "type": "string" }, - "day_of_week": { - "example": "Monday", + "post_slug": { "type": "string" }, - "opens": { - "example": "09:00", + "year": { "type": "string" } }, "type": "object" }, - "raisingcanes.StoreResponse": { + "producthunt.ProductCategoryListProduct": { "properties": { - "address": { - "$ref": "#/definitions/raisingcanes.StoreAddress" - }, - "amenities": { - "description": "Amenities are Raising Cane's own per-store amenity labels, e.g.\nDRIVE_THRU, LATE_NIGHT, CURBSIDE_PICKUP.", + "badges": { "items": { - "type": "string" + "$ref": "#/definitions/producthunt.ProductCategoryListBadge" }, "type": "array" }, - "dine_in_hours": { - "description": "DineInHours and DriveThroughHours are Raising Cane's own per-channel\nhours. They commonly match Hours but are published separately and can\ndiffer (e.g. a later drive-thru close).", + "categories": { "items": { - "$ref": "#/definitions/raisingcanes.StoreHours" + "$ref": "#/definitions/producthunt.ProductCategoryRef" }, "type": "array" }, - "drive_through_hours": { - "items": { - "$ref": "#/definitions/raisingcanes.StoreHours" - }, - "type": "array" + "detailed_reviews_count": { + "type": "integer" }, - "fetched_at": { - "type": "string" + "followers_count": { + "type": "integer" }, - "fulfillment_services": { - "description": "FulfillmentServices are the pickup/delivery service flags Raising\nCane's publishes for this store, e.g. IN_STORE_PICKUP,\nCURBSIDE_PICKUP, DELIVERY_NOT_OFFERED.", + "founder_reviews_count": { + "type": "integer" + }, + "founder_shoutouts": { "items": { - "type": "string" + "$ref": "#/definitions/producthunt.ProductCategoryFounderShoutout" }, "type": "array" }, - "google_place_id": { + "id": { "type": "string" }, - "hours": { - "description": "Hours is the store's general published week of hours.", - "items": { - "$ref": "#/definitions/raisingcanes.StoreHours" - }, - "type": "array" + "is_no_longer_online": { + "type": "boolean" }, - "latitude": { - "example": 30.2371547, - "type": "number" + "is_subscribed": { + "type": "boolean" }, - "longitude": { - "example": -90.9132179, - "type": "number" + "is_top_product": { + "type": "boolean" }, - "name": { - "example": "Raising Cane's Chicken Fingers", - "type": "string" + "latest_launch": { + "$ref": "#/definitions/producthunt.ProductCategoryLatestLaunch" }, - "path": { + "logo_uuid": { "type": "string" }, - "phone_number": { - "example": "(225) 407-4134", + "name": { "type": "string" }, - "source_url": { - "type": "string" + "posts_count": { + "type": "integer" }, - "store_id": { - "example": "C10", - "type": "string" - } - }, - "type": "object" - }, - "raisingcanes.directoryResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "reviews_count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/raisingcanes.DirectoryResponse" + "reviews_rating": { + "type": "number" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "raisingcanes.menuResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "slug": { + "type": "string" }, - "data": { - "$ref": "#/definitions/raisingcanes.MenuResponse" + "structured_data": { + "$ref": "#/definitions/producthunt.ProductAlternativeStructuredData" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "tagline": { + "type": "string" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "raisingcanes.nearbyResponseDoc": { + "producthunt.ProductCategoryMarkdown": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" - }, - "data": { - "$ref": "#/definitions/raisingcanes.NearbyResponse" + "markdown": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "text": { + "type": "string" } }, "type": "object" }, - "raisingcanes.promotionResponseDoc": { + "producthunt.ProductCategoryPage": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "description": { + "type": "string" }, - "data": { - "$ref": "#/definitions/raisingcanes.PromotionResponse" + "discussions": { + "items": { + "$ref": "#/definitions/producthunt.ProductAlternativeDiscussion" + }, + "type": "array" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "raisingcanes.promotionsResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "discussions_has_next_page": { + "type": "boolean" }, - "data": { - "$ref": "#/definitions/raisingcanes.PromotionsResponse" + "expandable_html": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "raisingcanes.storeResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "hero_products": { + "items": { + "$ref": "#/definitions/producthunt.ProductCategoryHeroProduct" + }, + "type": "array" + }, + "hero_products_count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/raisingcanes.StoreResponse" + "id": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "rappler.AuthorArticle": { - "properties": { - "published_at": { + "last_updated_at": { "type": "string" }, - "section": { + "meta_title": { "type": "string" }, - "title": { + "name": { "type": "string" }, - "url": { + "parent": { + "$ref": "#/definitions/producthunt.ProductCategoryParent" + }, + "path": { + "example": "/categories/vibe-coding", "type": "string" - } - }, - "type": "object" - }, - "rappler.AuthorResponse": { - "properties": { - "articles": { + }, + "questions": { "items": { - "$ref": "#/definitions/rappler.AuthorArticle" + "$ref": "#/definitions/producthunt.ProductCategoryQuestion" }, "type": "array" }, - "bio": { - "type": "string" + "raw_relevant_reviews": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" }, - "name": { - "type": "string" + "recent_launches_count": { + "type": "integer" + }, + "recent_summary": { + "$ref": "#/definitions/producthunt.ProductCategoryRecentSummary" + }, + "reviews_count": { + "type": "integer" }, "slug": { + "example": "vibe-coding", "type": "string" }, - "social_links": { + "sub_categories": { "items": { - "type": "string" + "$ref": "#/definitions/producthunt.ProductCategoryRef" }, "type": "array" }, - "url": { - "type": "string" + "targeted_ad": { + "$ref": "#/definitions/producthunt.ProductCategoryAd" } }, "type": "object" }, - "rawstory.AuthorArticle": { + "producthunt.ProductCategoryParent": { "properties": { - "published_at": { - "description": "PublishedAt is the story's publication date (YYYY-MM-DD); the author\nlisting carries the date but not the time of day.", + "id": { "type": "string" }, - "title": { + "name": { "type": "string" }, - "url": { + "path": { "type": "string" + }, + "sub_categories": { + "items": { + "$ref": "#/definitions/producthunt.ProductCategoryRef" + }, + "type": "array" } }, "type": "object" }, - "rawstory.AuthorResponse": { + "producthunt.ProductCategoryProductsPage": { "properties": { - "articles": { + "ai_summary": { + "type": "string" + }, + "category_tags": { "items": { - "$ref": "#/definitions/rawstory.AuthorArticle" + "$ref": "#/definitions/producthunt.ProductAlternativeTag" }, "type": "array" }, - "bio": { + "connection": { + "example": "products", "type": "string" }, - "image_url": { + "description": { + "type": "string" + }, + "end_cursor": { + "type": "string" + }, + "featured_only": { + "type": "boolean" + }, + "has_next_page": { + "type": "boolean" + }, + "has_previous_page": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "items": { + "items": { + "$ref": "#/definitions/producthunt.ProductCategoryListProduct" + }, + "type": "array" + }, + "last_updated_at": { "type": "string" }, "name": { "type": "string" }, + "order": { + "example": "highest_rated", + "type": "string" + }, + "page": { + "example": 1, + "type": "integer" + }, + "page_size": { + "example": 15, + "type": "integer" + }, + "path": { + "example": "/categories/vibe-coding", + "type": "string" + }, "slug": { + "example": "vibe-coding", "type": "string" }, - "social_links": { + "tags": { "items": { "type": "string" }, "type": "array" }, - "url": { - "type": "string" + "total_count": { + "type": "integer" } }, "type": "object" }, - "reachplc.AuthorArticle": { + "producthunt.ProductCategoryQuestion": { "properties": { - "label": { - "type": "string" + "body": { + "$ref": "#/definitions/producthunt.ProductCategoryMarkdown" }, - "label_url": { + "id": { "type": "string" }, - "title": { - "type": "string" + "top_answer": { + "$ref": "#/definitions/producthunt.ProductCategoryAnswer" + } + }, + "type": "object" + }, + "producthunt.ProductCategoryRandomizationStatus": { + "properties": { + "active": { + "type": "boolean" }, - "url": { + "next_transition_at": { "type": "string" + }, + "random_day": { + "type": "boolean" } }, "type": "object" }, - "reachplc.AuthorResponse": { + "producthunt.ProductCategoryRecentSummary": { "properties": { - "articles": { + "products": { "items": { - "$ref": "#/definitions/reachplc.AuthorArticle" + "$ref": "#/definitions/producthunt.ProductCategorySummaryProduct" }, "type": "array" }, - "bio": { - "type": "string" - }, - "email": { + "summary": { "type": "string" - }, - "has_next_page": { - "type": "boolean" - }, - "job_title": { + } + }, + "type": "object" + }, + "producthunt.ProductCategoryRef": { + "properties": { + "id": { "type": "string" }, "name": { "type": "string" }, - "page": { - "type": "integer" - }, - "slug": { - "type": "string" - }, - "twitter": { + "path": { "type": "string" }, - "url": { + "slug": { "type": "string" } }, "type": "object" }, - "reddit.Author": { + "producthunt.ProductCategorySource": { "properties": { - "name": { - "example": "reddit_user", + "badges": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { "type": "string" }, - "profile_url": { - "example": "https://www.reddit.com/user/reddit_user/", + "path": { + "type": "string" + }, + "subject_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/producthunt.ProductCategoryUser" + }, + "visible_at": { "type": "string" } }, "type": "object" }, - "reddit.Comment": { + "producthunt.ProductCategorySummaryProduct": { "properties": { - "author": { - "$ref": "#/definitions/reddit.Author" + "badges": { + "items": { + "$ref": "#/definitions/producthunt.ProductAlternativeBadge" + }, + "type": "array" }, - "award_count": { + "categories": { + "items": { + "$ref": "#/definitions/producthunt.ProductCategoryRef" + }, + "type": "array" + }, + "followers_count": { "type": "integer" }, - "body": { - "example": "I agree with this post.", + "id": { "type": "string" }, - "created": { - "example": "2024-04-19T00:00:00Z", - "type": "string" + "is_no_longer_online": { + "type": "boolean" }, - "created_utc": { - "example": 1713484800, - "type": "integer" + "is_subscribed": { + "type": "boolean" }, - "depth": { - "example": 1, - "type": "integer" + "is_top_product": { + "type": "boolean" }, - "id": { - "example": "kabc123", + "latest_launch": { + "$ref": "#/definitions/producthunt.ProductCategoryLatestLaunch" + }, + "logo_uuid": { "type": "string" }, "name": { - "example": "t1_kabc123", "type": "string" }, - "parent_id": { - "example": "t3_1abcxyz", + "reviews_count": { + "type": "integer" + }, + "reviews_rating": { + "type": "number" + }, + "slug": { "type": "string" }, - "permalink": { - "example": "https://www.reddit.com/r/OpenAI/comments/1abcxyz/openai_discussion_thread/kabc123/", + "tagline": { "type": "string" }, - "replies": { + "tags": { "items": { - "$ref": "#/definitions/reddit.Comment" + "type": "string" }, "type": "array" - }, - "score": { - "type": "integer" } }, "type": "object" }, - "reddit.CommentsResponse": { + "producthunt.ProductCategoryTopic": { "properties": { - "comments": { - "items": { - "$ref": "#/definitions/reddit.Comment" - }, - "type": "array" - }, - "metrics_source": { - "$ref": "#/definitions/reddit.SourceDetail" + "id": { + "type": "string" }, - "post": { - "$ref": "#/definitions/reddit.Post" + "name": { + "type": "string" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "slug": { + "type": "string" } }, "type": "object" }, - "reddit.DomainPostsResponse": { + "producthunt.ProductCategoryUser": { "properties": { - "domain": { - "example": "openai.com", + "avatar_url": { "type": "string" }, - "pagination": { - "$ref": "#/definitions/reddit.Pagination" - }, - "posts": { - "items": { - "$ref": "#/definitions/reddit.Post" - }, - "type": "array" - }, - "sort": { - "example": "hot", + "id": { "type": "string" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "name": { + "type": "string" }, - "time": { - "example": "week", + "username": { "type": "string" } }, "type": "object" }, - "reddit.MultiSubredditPostsResponse": { + "producthunt.ProductCustomersPage": { "properties": { - "pagination": { - "$ref": "#/definitions/reddit.Pagination" + "connection": { + "example": "customers", + "type": "string" }, - "posts": { + "end_cursor": { + "type": "string" + }, + "has_next_page": { + "type": "boolean" + }, + "has_previous_page": { + "type": "boolean" + }, + "items": { "items": { - "$ref": "#/definitions/reddit.Post" + "$ref": "#/definitions/producthunt.ProductCategoryListProduct" }, "type": "array" }, - "sort": { - "example": "hot", + "name": { + "example": "OpenAI", "type": "string" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "order": { + "example": "customers", + "type": "string" }, - "subreddits": { - "example": [ - "OpenAI", - "MachineLearning" - ], - "items": { - "type": "string" - }, - "type": "array" + "page": { + "example": 1, + "type": "integer" }, - "time": { - "example": "week", + "page_size": { + "example": 10, + "type": "integer" + }, + "pages_count": { + "example": 12, + "type": "integer" + }, + "product_id": { + "example": "594550", "type": "string" - } - }, - "type": "object" - }, - "reddit.Pagination": { - "properties": { - "after": { - "example": "t3_1abcxyz", + }, + "raw_page_info": { + "additionalProperties": {}, + "type": "object" + }, + "slug": { + "example": "openai", "type": "string" }, - "limit": { - "example": 25, + "total_count": { + "example": 120, "type": "integer" } }, "type": "object" }, - "reddit.Post": { + "producthunt.ProductDetailedReview": { "properties": { - "author": { - "$ref": "#/definitions/reddit.Author" + "alternative_products": { + "items": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewProduct" + }, + "type": "array" }, - "award_count": { + "alternatives_feedback": { + "type": "string" + }, + "can_destroy": { + "type": "boolean" + }, + "can_moderate": { + "type": "boolean" + }, + "can_reply": { + "type": "boolean" + }, + "can_update": { + "type": "boolean" + }, + "comments_count": { "type": "integer" }, - "comment_count": { + "created_at": { + "type": "string" + }, + "customization_rating": { "type": "integer" }, - "created": { - "example": "2024-04-19T00:00:00Z", + "ease_of_use_rating": { + "type": "integer" + }, + "follow_product": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewFollowProduct" + }, + "from_post": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewPost" + }, + "has_voted": { + "type": "boolean" + }, + "id": { "type": "string" }, - "created_utc": { - "example": 1713484800, + "impression_count": { "type": "integer" }, - "domain": { - "example": "self.OpenAI", + "is_hidden": { + "type": "boolean" + }, + "llm_content_quality_grade": { "type": "string" }, - "estimated_downvotes": { + "llm_content_quality_reason": { + "type": "string" + }, + "negative_feedback": { + "type": "string" + }, + "overall_experience": { + "type": "string" + }, + "overall_rating": { "type": "integer" }, - "estimated_upvotes": { + "positive_feedback": { + "type": "string" + }, + "product": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewProduct" + }, + "question_answers": { + "items": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewQuestionAnswer" + }, + "type": "array" + }, + "reliability_rating": { "type": "integer" }, - "flair": { - "example": "Discussion", + "review_type": { "type": "string" }, - "id": { - "example": "1abcxyz", + "selected_cons": { + "items": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewTag" + }, + "type": "array" + }, + "selected_pros": { + "items": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewTag" + }, + "type": "array" + }, + "status": { "type": "string" }, - "is_self": { + "threads_end_cursor": { + "type": "string" + }, + "threads_has_next_page": { "type": "boolean" }, - "is_video": { + "threads_total_count": { + "type": "integer" + }, + "user": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewUser" + }, + "value_for_money_rating": { + "type": "integer" + }, + "votes_count": { + "type": "integer" + } + }, + "type": "object" + }, + "producthunt.ProductDetailedReviewFollowProduct": { + "properties": { + "id": { + "type": "string" + }, + "is_no_longer_online": { "type": "boolean" }, - "locked": { + "is_subscribed": { "type": "boolean" }, + "logo_uuid": { + "type": "string" + }, "name": { - "example": "t3_1abcxyz", "type": "string" }, - "over_18": { - "type": "boolean" + "slug": { + "type": "string" + } + }, + "type": "object" + }, + "producthunt.ProductDetailedReviewPost": { + "properties": { + "badges": { + "items": { + "$ref": "#/definitions/producthunt.ProductCategoryListBadge" + }, + "type": "array" }, - "permalink": { - "example": "https://www.reddit.com/r/OpenAI/comments/1abcxyz/openai_discussion_thread/", + "id": { "type": "string" }, - "score": { + "is_top_launch": { + "type": "boolean" + }, + "latest_score": { "type": "integer" }, - "selftext": { - "example": "Discussion body", + "name": { "type": "string" }, - "source_feed_url": { - "example": "https://www.reddit.com/r/OpenAI/.rss", + "product_id": { "type": "string" }, - "stickied": { + "product_is_top_product": { "type": "boolean" }, - "subreddit": { - "example": "OpenAI", + "product_slug": { "type": "string" }, - "thumbnail": { - "example": "https://b.thumbs.redditmedia.com/example.jpg", + "product_state": { "type": "string" }, - "title": { - "example": "OpenAI discussion thread", + "slug": { "type": "string" }, - "upvote_ratio": { - "type": "number" - }, - "url": { - "example": "https://www.reddit.com/r/OpenAI/comments/1abcxyz/openai_discussion_thread/", + "thumbnail_image_uuid": { "type": "string" - }, - "vote_counts_estimated": { - "type": "boolean" } }, "type": "object" }, - "reddit.PostResponse": { + "producthunt.ProductDetailedReviewProduct": { "properties": { - "metrics_source": { - "$ref": "#/definitions/reddit.SourceDetail" + "id": { + "type": "string" }, - "post": { - "$ref": "#/definitions/reddit.Post" + "is_no_longer_online": { + "type": "boolean" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "logo_uuid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" } }, "type": "object" }, - "reddit.SearchResponse": { + "producthunt.ProductDetailedReviewQuestionAnswer": { "properties": { - "pagination": { - "$ref": "#/definitions/reddit.Pagination" - }, - "posts": { - "items": { - "$ref": "#/definitions/reddit.Post" - }, - "type": "array" - }, - "query": { - "example": "openai", + "answer": { "type": "string" }, - "sort": { - "example": "relevance", + "id": { "type": "string" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" - }, - "subreddit": { - "example": "OpenAI", + "question": { "type": "string" }, - "time": { - "example": "week", + "question_id": { "type": "string" } }, "type": "object" }, - "reddit.SourceDetail": { + "producthunt.ProductDetailedReviewTag": { "properties": { - "type": { - "example": "rss", + "count": { + "type": "integer" + }, + "id": { "type": "string" }, - "url": { - "example": "https://www.reddit.com/r/OpenAI/.rss", + "name": { + "type": "string" + }, + "type": { "type": "string" } }, "type": "object" }, - "reddit.SubredditAboutResponse": { + "producthunt.ProductDetailedReviewUser": { "properties": { - "display_name": { - "example": "r/OpenAI", + "avatar_url": { "type": "string" }, - "feed_url": { - "example": "https://www.reddit.com/r/OpenAI.rss?limit=10", + "headline": { "type": "string" }, - "latest_post_created": { - "example": "2024-04-19T00:00:00Z", + "id": { "type": "string" }, - "latest_post_created_utc": { - "example": 1713484800, - "type": "integer" + "is_account_verified": { + "type": "boolean" }, - "public_url": { - "example": "https://www.reddit.com/r/OpenAI/", + "is_ambassador": { + "type": "boolean" + }, + "is_followed": { + "type": "boolean" + }, + "name": { "type": "string" }, - "recent_post_count": { - "example": 10, + "reviews_count": { "type": "integer" }, - "sample_posts": { - "items": { - "$ref": "#/definitions/reddit.Post" - }, - "type": "array" + "selected_byline_product": { + "$ref": "#/definitions/producthunt.ProductDetailedReviewProduct" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "top_hunter_badge": { + "additionalProperties": {}, + "type": "object" }, - "subreddit": { - "example": "OpenAI", - "type": "string" + "top_launch_badge": { + "additionalProperties": {}, + "type": "object" }, - "title": { - "example": "OpenAI", + "top_product_badge": { + "additionalProperties": {}, + "type": "object" + }, + "username": { "type": "string" } }, "type": "object" }, - "reddit.SubredditCommentsResponse": { + "producthunt.ProductDetailedReviewsPage": { "properties": { - "comments": { + "connection": { + "example": "detailedReviews", + "type": "string" + }, + "detailed_review": { + "additionalProperties": {}, + "type": "object" + }, + "detailed_reviews_count": { + "type": "integer" + }, + "end_cursor": { + "type": "string" + }, + "founder_detailed_reviews_count": { + "type": "integer" + }, + "has_next_page": { + "example": false, + "type": "boolean" + }, + "is_maker": { + "type": "boolean" + }, + "is_trashed": { + "type": "boolean" + }, + "items": { "items": { - "$ref": "#/definitions/reddit.Comment" + "$ref": "#/definitions/producthunt.ProductDetailedReview" }, "type": "array" }, - "pagination": { - "$ref": "#/definitions/reddit.Pagination" + "name": { + "type": "string" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "other_detailed_reviews_count": { + "type": "integer" }, - "subreddit": { - "example": "OpenAI", + "product_id": { + "example": "1191613", + "type": "string" + }, + "raw_page_info": { + "additionalProperties": {}, + "type": "object" + }, + "reviews_count": { + "type": "integer" + }, + "reviews_rating": { + "type": "number" + }, + "reviews_recent_rating": { + "type": "number" + }, + "slug": { + "example": "clico", "type": "string" + }, + "total_count": { + "example": 6, + "type": "integer" } }, "type": "object" }, - "reddit.SubredditPostsResponse": { + "producthunt.ProductLaunchesPage": { "properties": { - "pagination": { - "$ref": "#/definitions/reddit.Pagination" + "connection": { + "example": "posts", + "type": "string" }, - "posts": { + "end_cursor": { + "type": "string" + }, + "has_next_page": { + "type": "boolean" + }, + "items": { "items": { - "$ref": "#/definitions/reddit.Post" + "$ref": "#/definitions/producthunt.ProductAboutPost" }, "type": "array" }, - "sort": { - "example": "hot", + "name": { + "example": "OpenAI", "type": "string" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "order": { + "example": "DATE", + "type": "string" }, - "subreddit": { - "example": "OpenAI", + "product_id": { + "example": "1191613", "type": "string" }, - "time": { - "example": "week", + "raw_page_info": { + "additionalProperties": {}, + "type": "object" + }, + "slug": { + "example": "openai", "type": "string" + }, + "total_count": { + "example": 12, + "type": "integer" } }, "type": "object" }, - "reddit.TrendsResponse": { + "producthunt.ProductMaker": { "properties": { - "pagination": { - "$ref": "#/definitions/reddit.Pagination" + "avatar_url": { + "type": "string" }, - "posts": { + "followers_count": { + "type": "integer" + }, + "headline": { + "type": "string" + }, + "id": { + "type": "string" + }, + "is_followed": { + "type": "boolean" + }, + "made_posts": { "items": { - "$ref": "#/definitions/reddit.Post" + "$ref": "#/definitions/producthunt.ProductMakerPost" }, "type": "array" }, - "sort": { - "example": "hot", + "name": { "type": "string" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "username": { + "type": "string" + } + }, + "type": "object" + }, + "producthunt.ProductMakerPost": { + "properties": { + "id": { + "type": "string" }, - "time": { - "example": "day", + "name": { + "type": "string" + }, + "product_id": { + "type": "string" + }, + "product_slug": { + "type": "string" + }, + "product_state": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "thumbnail_image_uuid": { "type": "string" } }, "type": "object" }, - "reddit.UserCommentsResponse": { + "producthunt.ProductMakersPage": { "properties": { - "comments": { + "can_claim": { + "type": "boolean" + }, + "connection": { + "example": "makers", + "type": "string" + }, + "end_cursor": { + "type": "string" + }, + "has_next_page": { + "example": false, + "type": "boolean" + }, + "is_claimed": { + "type": "boolean" + }, + "is_trashed": { + "type": "boolean" + }, + "items": { "items": { - "$ref": "#/definitions/reddit.Comment" + "$ref": "#/definitions/producthunt.ProductMaker" }, "type": "array" }, - "pagination": { - "$ref": "#/definitions/reddit.Pagination" + "name": { + "type": "string" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "product_id": { + "example": "1191613", + "type": "string" }, - "username": { - "example": "reddit", + "raw_page_info": { + "additionalProperties": {}, + "type": "object" + }, + "slug": { + "example": "clico", "type": "string" + }, + "total_count": { + "example": 3, + "type": "integer" + }, + "viewer_pending_team_request": { + "additionalProperties": {}, + "type": "object" } }, "type": "object" }, - "reddit.UserPostsResponse": { + "producthunt.SimilarProduct": { "properties": { - "pagination": { - "$ref": "#/definitions/reddit.Pagination" - }, - "posts": { + "categories": { + "example": [ + "[\"Presentation Software\"]" + ], "items": { - "$ref": "#/definitions/reddit.Post" + "type": "string" }, "type": "array" }, - "source": { - "$ref": "#/definitions/reddit.SourceDetail" + "id": { + "example": "beautiful-ai", + "type": "string" }, - "username": { - "example": "reddit", + "name": { + "example": "Beautiful.ai", "type": "string" + }, + "rating": { + "example": 3.3, + "type": "number" + }, + "review_count": { + "example": 20, + "type": "integer" } }, "type": "object" }, - "reddit.commentsResponseDoc": { + "producthunt.aboutResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.CommentsResponse" + "$ref": "#/definitions/producthunt.ProductAboutPage" }, "msg": { - "example": "OK", + "example": "Request successful", "type": "string" } }, "type": "object" }, - "reddit.domainPostsResponseDoc": { + "producthunt.alternativesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.DomainPostsResponse" + "$ref": "#/definitions/producthunt.ProductAlternativesPage" }, "msg": { "example": "OK", @@ -129150,14 +133815,14 @@ }, "type": "object" }, - "reddit.leadsResponseDoc": { + "producthunt.categoryProductsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/redditleads.Response" + "$ref": "#/definitions/producthunt.ProductCategoryProductsPage" }, "msg": { "example": "OK", @@ -129166,14 +133831,14 @@ }, "type": "object" }, - "reddit.multiSubredditPostsResponseDoc": { + "producthunt.categoryResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.MultiSubredditPostsResponse" + "$ref": "#/definitions/producthunt.ProductCategoryPage" }, "msg": { "example": "OK", @@ -129182,14 +133847,14 @@ }, "type": "object" }, - "reddit.postResponseDoc": { + "producthunt.customersResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.PostResponse" + "$ref": "#/definitions/producthunt.ProductCustomersPage" }, "msg": { "example": "OK", @@ -129198,14 +133863,14 @@ }, "type": "object" }, - "reddit.searchResponseDoc": { + "producthunt.launchesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.SearchResponse" + "$ref": "#/definitions/producthunt.ProductLaunchesPage" }, "msg": { "example": "OK", @@ -129214,30 +133879,30 @@ }, "type": "object" }, - "reddit.subredditAboutResponseDoc": { + "producthunt.leaderboardResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.SubredditAboutResponse" + "$ref": "#/definitions/producthunt.LeaderboardPage" }, "msg": { - "example": "OK", + "example": "Request successful", "type": "string" } }, "type": "object" }, - "reddit.subredditCommentsResponseDoc": { + "producthunt.makersResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.SubredditCommentsResponse" + "$ref": "#/definitions/producthunt.ProductMakersPage" }, "msg": { "example": "OK", @@ -129246,14 +133911,14 @@ }, "type": "object" }, - "reddit.subredditPostsResponseDoc": { + "producthunt.productResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.SubredditPostsResponse" + "$ref": "#/definitions/producthunt.Product" }, "msg": { "example": "OK", @@ -129262,14 +133927,14 @@ }, "type": "object" }, - "reddit.trendsResponseDoc": { + "producthunt.reviewsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.TrendsResponse" + "$ref": "#/definitions/producthunt.ProductDetailedReviewsPage" }, "msg": { "example": "OK", @@ -129278,30 +133943,69 @@ }, "type": "object" }, - "reddit.userCommentsResponseDoc": { + "producthunt.searchAggregationsDoc": { "properties": { - "code": { - "example": 200, + "topics": { + "items": { + "$ref": "#/definitions/producthunt.searchTopicDoc" + }, + "type": "array" + } + }, + "type": "object" + }, + "producthunt.searchDataDoc": { + "properties": { + "aggregations": { + "$ref": "#/definitions/producthunt.searchAggregationsDoc" + }, + "edges": { + "items": { + "$ref": "#/definitions/producthunt.searchEdgeDoc" + }, + "type": "array" + }, + "pageInfo": { + "$ref": "#/definitions/producthunt.searchPageInfoDoc" + }, + "pagesCount": { + "example": 394, "type": "integer" + } + }, + "type": "object" + }, + "producthunt.searchEdgeDoc": { + "properties": { + "node": { + "type": "object" + } + }, + "type": "object" + }, + "producthunt.searchPageInfoDoc": { + "properties": { + "hasNextPage": { + "type": "boolean" }, - "data": { - "$ref": "#/definitions/reddit.UserCommentsResponse" + "hasPreviousPage": { + "type": "boolean" }, - "msg": { - "example": "OK", - "type": "string" + "page": { + "example": 1, + "type": "integer" } }, "type": "object" }, - "reddit.userPostsResponseDoc": { + "producthunt.searchResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reddit.UserPostsResponse" + "$ref": "#/definitions/producthunt.searchDataDoc" }, "msg": { "example": "OK", @@ -129310,1163 +134014,736 @@ }, "type": "object" }, - "redditleads.Lead": { + "producthunt.searchTopicDoc": { "properties": { - "author": { - "example": "someuser", - "type": "string" - }, - "comment_count": { - "example": 12, + "count": { + "example": 11979, "type": "integer" }, - "created": { - "example": "2026-08-01T00:00:00Z", + "topic": { + "properties": { + "id": { + "example": "268", + "type": "string" + }, + "name": { + "example": "Artificial Intelligence", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "propublica.AuthorArticle": { + "properties": { + "published_at": { "type": "string" }, - "permalink": { - "example": "https://www.reddit.com/r/smallbusiness/comments/1abcxyz/", + "title": { "type": "string" }, - "post_score": { - "example": 20, - "type": "integer" + "url": { + "type": "string" + } + }, + "type": "object" + }, + "propublica.AuthorResponse": { + "properties": { + "articles": { + "items": { + "$ref": "#/definitions/propublica.AuthorArticle" + }, + "type": "array" }, - "reason": { - "example": "Asking for a CRM and states a monthly budget.", + "bio": { + "items": { + "type": "string" + }, + "type": "array" + }, + "contact_email": { "type": "string" }, - "score": { - "example": 9, + "name": { + "type": "string" + }, + "page": { "type": "integer" }, - "signals": { - "items": { - "$ref": "#/definitions/redditleads.Signal" + "social_links": { + "additionalProperties": { + "type": "string" }, - "type": "array" + "type": "object" }, - "subreddit": { - "example": "smallbusiness", + "url": { "type": "string" + } + }, + "type": "object" + }, + "psa.AutographFactsCategoriesResponse": { + "properties": { + "categories": { + "items": { + "$ref": "#/definitions/psa.AutographFactsCategory" + }, + "type": "array" + } + }, + "type": "object" + }, + "psa.AutographFactsCategory": { + "properties": { + "id": { + "description": "ID is PSA's own numeric category id, confirmed live against every\ncategory this family covers. Distinct from PSA CardFacts'/Price\nGuide's own category id spaces -- do not assume they share values.", + "type": "integer" }, - "title": { - "example": "Looking for a CRM for a 3-person team, budget ~$50/mo", + "name": { + "description": "Name is PSA's own display label, e.g. \"Baseball\".", "type": "string" } }, "type": "object" }, - "redditleads.Response": { + "psa.AutographFactsGalleryImage": { "properties": { - "classifier": { - "example": "llm", + "caption": { + "description": "Caption is PSA's own descriptive caption for this exemplar, e.g.\n\"1977 Hank Aaron Signed Letter\".", "type": "string" }, - "degraded": { - "example": false, - "type": "boolean" - }, - "leads": { + "image_url": { + "description": "ImageURL is the full-size image URL.", + "type": "string" + } + }, + "type": "object" + }, + "psa.AutographFactsGalleryResult": { + "properties": { + "images": { "items": { - "$ref": "#/definitions/redditleads.Lead" + "$ref": "#/definitions/psa.AutographFactsGalleryImage" }, "type": "array" }, - "min_score": { - "example": 4, - "type": "integer" - }, - "model": { - "example": "gpt-5.4", + "name": { + "description": "Name is the subject's display name, e.g. \"Hank Aaron\".", "type": "string" }, - "query": { - "example": "crm for small teams", + "source_url": { "type": "string" }, - "stats": { - "$ref": "#/definitions/redditleads.Stats" - }, - "subreddit": { - "example": "smallbusiness", + "subject_id": { "type": "string" } }, "type": "object" }, - "redditleads.Signal": { + "psa.AutographFactsSubject": { "properties": { - "id": { - "example": "explicit-ask", + "name": { + "description": "Name is the subject's display name, e.g. \"Hank Aaron\".", "type": "string" }, - "label": { - "example": "asking for a tool", - "type": "string" + "subject_id": { + "description": "SubjectID is PSA's own numeric subject id -- pass as subject_id to\nAutographFactsSubject.", + "type": "integer" } }, "type": "object" }, - "redditleads.Stats": { + "psa.AutographFactsSubjectResult": { "properties": { - "classified": { - "example": 12, - "type": "integer" + "autograph_profile": { + "description": "AutographProfile is PSA's own free-text authentication notes for\nthis subject's signature -- signing habits, forgery risk,\nsignature evolution.", + "type": "string" }, - "prefiltered": { - "example": 88, - "type": "integer" + "name": { + "description": "Name is the subject's display name, e.g. \"Hank Aaron\".", + "type": "string" }, - "returned": { - "example": 9, - "type": "integer" + "prices": { + "additionalProperties": { + "type": "string" + }, + "description": "Prices maps PSA's own item-type labels (e.g. \"3x5/AP\", \"Gum Card\",\n\"Photo\", \"Check\", \"SS Bat\", \"SS Ball\" -- these vary by subject, not\na fixed global list) to PSA's own formatted price text for this\nsubject's autograph on that item type, e.g. \"$65\". \"IMP\" marks an\nitem type PSA considers impossible/unavailable for this subject\nrather than a real price.", + "type": "object" }, - "scanned": { - "example": 100, - "type": "integer" + "source_url": { + "type": "string" + }, + "subject_id": { + "type": "string" + }, + "subject_profile": { + "description": "SubjectProfile is PSA's own free-text biography for this subject.", + "type": "string" } }, "type": "object" }, - "redfin.EstimateResponse": { + "psa.AutographFactsSubjectsResponse": { "properties": { - "address": { - "type": "string" - }, - "baths": { - "type": "number" + "category_id": { + "type": "integer" }, - "beds": { - "type": "number" + "category_name": { + "type": "string" }, - "city_time_series": { + "subjects": { "items": { - "type": "number" + "$ref": "#/definitions/psa.AutographFactsSubject" }, "type": "array" - }, - "county_time_series": { + } + }, + "type": "object" + }, + "psa.CardFactsCategoriesResponse": { + "properties": { + "categories": { "items": { - "type": "number" + "$ref": "#/definitions/psa.CardFactsCategory" }, "type": "array" + } + }, + "type": "object" + }, + "psa.CardFactsCategory": { + "properties": { + "id": { + "description": "ID is PSA's own numeric category id, confirmed live against every\ncategory this family covers. Distinct from Price Guide's/\nAutographFacts'/TicketFacts'/ProBatFacts' own category id spaces --\nids 10 and 16 in particular mean different things in CardFacts than\nin Price Guide, do not assume they share values.", + "type": "integer" }, - "estimate": { - "type": "number" - }, - "estimate_text": { + "name": { + "description": "Name is PSA's own display label, e.g. \"Baseball\".", "type": "string" - }, - "latitude": { - "type": "number" - }, - "listing_price": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "postal_code_time_series": { - "items": { - "type": "number" - }, - "type": "array" - }, - "property_id": { - "example": "1715020", + } + }, + "type": "object" + }, + "psa.CardFactsChecklistCard": { + "properties": { + "name": { + "description": "Name is the card's display name, e.g. \"Wander Franco\". Some rows\ncarry an embedded HTML anchor around the name in PSA's own raw\nresponse (confirmed live, e.g. a golf set's \"Tiger Woods\" row) --\nstripped here so every row is plain text.", "type": "string" }, - "property_time_series": { + "number": { + "description": "Number is the card's printed number within the set. Some sets (e.g.\nplayer-name-only checklists like autograph card sets) carry no\nnumber at all, confirmed live -- empty in that case, not omitted, so\ncallers can rely on the field always being present.", + "type": "string" + } + }, + "type": "object" + }, + "psa.CardFactsChecklistResponse": { + "properties": { + "cards": { "items": { - "type": "number" + "$ref": "#/definitions/psa.CardFactsChecklistCard" }, "type": "array" }, - "sqft": { - "type": "number" + "has_checklist": { + "type": "boolean" }, - "updated_at": { - "type": "integer" + "set_id": { + "type": "string" }, - "year_built": { + "total_cards": { "type": "integer" } }, "type": "object" }, - "redfin.PropertyItem": { + "psa.CardFactsSet": { "properties": { - "address": { - "type": "string" - }, - "baths": { - "type": "number" - }, - "beds": { - "type": "number" - }, - "city": { - "type": "string" - }, - "days_on_market": { - "type": "integer" - }, - "hoa_monthly": { - "type": "number" - }, - "image": { - "type": "string" - }, - "latitude": { - "type": "number" - }, - "listing_id": { - "type": "string" - }, - "longitude": { - "type": "number" - }, - "lot_size": { - "type": "number" - }, - "mls_number": { - "type": "string" - }, - "price": { - "type": "number" - }, - "price_per_sqft": { - "type": "number" - }, - "property_id": { - "example": "1715020", - "type": "string" - }, - "property_type": { - "type": "string" - }, - "sqft": { - "type": "number" - }, - "state": { - "type": "string" - }, - "status": { - "type": "string" - }, - "url": { + "name": { + "description": "Name is the set's display name, e.g. \"2022 Topps\".", "type": "string" }, - "year_built": { + "set_id": { + "description": "SetID is PSA's own numeric set id -- pass as set_id to\nCardFactsChecklist.", "type": "integer" - }, - "zip": { - "type": "string" } }, "type": "object" }, - "redfin.PropertyResponse": { + "psa.CardFactsSetsResponse": { "properties": { - "address": { - "type": "string" - }, - "baths": { - "type": "number" - }, - "beds": { - "type": "number" - }, - "city": { - "type": "string" - }, - "days_on_market": { + "category_id": { "type": "integer" }, - "description": { + "category_name": { "type": "string" }, - "facts": { + "sets": { "items": { - "type": "string" + "$ref": "#/definitions/psa.CardFactsSet" }, "type": "array" - }, - "hoa_monthly": { - "type": "number" - }, - "image": { - "type": "string" - }, - "latitude": { - "type": "number" - }, - "listing_id": { - "type": "string" - }, - "longitude": { - "type": "number" - }, - "lot_size": { - "type": "number" - }, - "mls_number": { - "type": "string" - }, - "price": { - "type": "number" - }, - "price_per_sqft": { - "type": "number" - }, - "property_id": { - "example": "1715020", - "type": "string" - }, - "property_type": { - "type": "string" - }, - "sqft": { - "type": "number" - }, - "state": { - "type": "string" - }, - "status": { - "type": "string" - }, - "url": { - "type": "string" - }, - "year_built": { - "type": "integer" - }, - "zip": { - "type": "string" } }, "type": "object" }, - "redfin.RegionTrendsResponse": { + "psa.CertLookupResult": { "properties": { - "avg_days_on_market": { + "brand_title": { + "description": "BrandTitle is the issuing brand/product line, e.g. \"POKEMON SKYRIDGE\".", "type": "string" }, - "avg_down_payment": { + "card_number": { + "description": "CardNumber is the card's number within its set, e.g. \"146\".", "type": "string" }, - "avg_num_offers": { + "category": { + "description": "Category is PSA's own item category, e.g. \"TCG CARDS\".", "type": "string" }, - "median_list_per_sqft": { + "cert_number": { + "description": "CertNumber echoes the requested certification number.", "type": "string" }, - "median_list_price": { - "example": "$1.29M", + "item_grade": { + "description": "ItemGrade is PSA's graded condition for this item, e.g. \"GEM MT 10\",\nfrom PSA's own published grade scale (Authentic through Gem Mint 10).", "type": "string" }, - "median_sale_per_list": { + "label_type": { + "description": "LabelType is a special label variant PSA applied to this cert, e.g.\n\"W/ FUGITIVE INK TECHNOLOGY\". Empty when the cert carries PSA's\nstandard label.", "type": "string" }, - "median_sale_per_sqft": { + "psa_estimate": { + "description": "PSAEstimate is PSA's own dollar price estimate for this exact\ncert+grade, PSA's own formatted string (e.g. \"$135,624.00\"). Empty\nwhen PSA shows no estimate for this cert.", "type": "string" }, - "median_sale_price": { - "example": "$1.76M", - "type": "string" + "psa_pop_higher": { + "description": "PSAPopHigher is the number of items PSA has graded higher than this\ncert's own grade for the same card. Nil when PSA shows no figure.", + "type": "integer" }, - "num_homes_on_market": { + "psa_population": { + "description": "PSAPopulation is the number of items PSA has graded at this exact\ncard+grade combination. Nil when PSA shows no population figure for\nthis cert (e.g. an ungraded/authentic-only cert).", + "type": "integer" + }, + "psa_population_url": { + "description": "PSAPopulationURL is PSA's own Population Report deep link for this\ncard+grade. Informational only -- following it requires a Collectors\naccount login; see the CertLookupResult doc comment above.", "type": "string" }, - "num_homes_sold": { + "reverse_cert_barcode": { + "description": "ReverseCertBarcode reports whether the physical label also carries a\nbarcode on its reverse side.", + "type": "boolean" + }, + "set_registry_note": { + "description": "SetRegistryNote is PSA's own Set Registry membership line for this\ncert, e.g. \"This cert does not appear in any sets.\" when the item is\nnot registered in any PSA Set Registry set.", "type": "string" }, - "region_id": { - "example": 17151, - "type": "integer" + "source_url": { + "description": "SourceURL is the PSA cert-verification page this result was parsed\nfrom.", + "type": "string" }, - "region_type": { - "example": 6, - "type": "integer" + "subject": { + "description": "Subject is the card's subject/player name, e.g. \"CHARIZARD-HOLO\".", + "type": "string" }, - "yoy_sale_per_sqft": { + "title": { + "description": "Title is PSA's own item title line, e.g.\n\"2003 POKEMON SKYRIDGE #146 CHARIZARD-HOLO\".", "type": "string" }, - "yoy_sale_price": { + "year": { + "description": "Year is the card/item's issue year, e.g. \"2003\".", "type": "string" } }, "type": "object" }, - "redfin.SearchResponse": { + "psa.PriceGuideCardPrice": { "properties": { - "location": { - "example": "San Francisco, CA", + "card_number": { + "description": "CardNumber is the card's number within the set. Empty for\ngroup-summary rows.", "type": "string" }, - "page": { - "example": 1, - "type": "integer" - }, - "region_id": { - "example": 17151, - "type": "integer" + "description": { + "description": "Description is the card/row's own name as PSA Price Guide displays\nit, e.g. \"Ken Griffey, Sr. (R)\" or a group-summary row like\n\"Commons 1-660\".", + "type": "string" }, - "region_type": { - "example": 6, + "item_id": { + "description": "ItemID is PSA's own numeric item id for this specific card, usable\nfor cross-referencing a psa-price-guide-search result. Nil for\ngroup-summary rows, which have no single-item id.", "type": "integer" }, - "results": { - "items": { - "$ref": "#/definitions/redfin.PropertyItem" + "prices": { + "additionalProperties": { + "type": "string" }, - "type": "array" + "description": "Prices maps each of Grades (the set's own grade-column labels, e.g.\n\"NM 7\") to PSA's own formatted price text for this card at that\ngrade, e.g. \"35+\" (a trailing \"+\"/\"-\" is PSA's own monthly-trend\nmarker). A grade with no price for this card is omitted from the map\nrather than present as an empty string.", + "type": "object" } }, "type": "object" }, - "redfin.SimilarResponse": { + "psa.PriceGuideCategoriesResponse": { "properties": { - "property_id": { - "example": "1715020", - "type": "string" - }, - "results": { + "categories": { "items": { - "$ref": "#/definitions/redfin.PropertyItem" + "$ref": "#/definitions/psa.PriceGuideCategory" }, "type": "array" } }, "type": "object" }, - "referrals.referralAttributionDoc": { + "psa.PriceGuideCategory": { "properties": { - "campaign": { - "example": "spring-launch", - "type": "string" - }, - "code": { - "example": "A1B2C3D4E5F6", - "type": "string" - }, - "created_at": { - "type": "string" - }, - "expires_at": { - "type": "string" - }, "id": { - "example": "abc123", - "type": "string" - }, - "qualified_at": { - "type": "string" - }, - "reward_credits": { - "example": 10000, + "description": "ID is PSA's own numeric category id (SportCategoryID), confirmed live\nagainst every category this family covers.", "type": "integer" }, - "rewarded_at": { - "type": "string" - }, - "role": { - "enum": [ - "referrer", - "referred" - ], - "example": "referrer", + "name": { + "description": "Name is PSA's own display label, e.g. \"Baseball Cards\".", "type": "string" }, - "status": { - "enum": [ - "attributed", - "qualified", - "review_required", - "rewarded", - "expired", - "capped", - "failed", - "rejected" - ], - "example": "rewarded", + "path": { + "description": "Path is the URL path segment(s) PSA Price Guide uses for this\ncategory, e.g. \"baseball-card-values\" -- most categories are a single\nsegment, but not all (see notes on the shipped enum values).", "type": "string" } }, "type": "object" }, - "referrals.referralClickRequestDoc": { + "psa.PriceGuideSearchItem": { "properties": { - "click_id": { - "example": "refclk_abc123", - "type": "string" - }, - "code": { - "example": "A1B2C3D4E5F6", - "type": "string" - }, - "landing_path": { - "example": "/pricing", - "type": "string" - }, - "utm_campaign": { - "example": "spring-launch", - "type": "string" - }, - "utm_medium": { - "example": "email", - "type": "string" + "item_id": { + "description": "ItemID is PSA's own numeric item id.", + "type": "integer" }, - "utm_source": { - "example": "newsletter", + "name": { + "description": "Name is the card/item's own descriptive name, e.g.\n\"Ken Griffey, Sr. (R)\".", "type": "string" } }, "type": "object" }, - "referrals.referralClickResponseDoc": { + "psa.PriceGuideSearchResponse": { "properties": { - "click_id": { - "example": "refclk_abc123", - "type": "string" + "page": { + "type": "integer" }, - "code": { - "example": "A1B2C3D4E5F6", + "page_size": { + "type": "integer" + }, + "query": { "type": "string" - } - }, - "type": "object" - }, - "referrals.referralsEventsResponseDoc": { - "properties": { - "items": { + }, + "results": { "items": { - "$ref": "#/definitions/referrals.referralAttributionDoc" + "$ref": "#/definitions/psa.PriceGuideSearchResult" }, "type": "array" + }, + "total_count": { + "type": "integer" } }, "type": "object" }, - "referrals.referralsMeResponseDoc": { + "psa.PriceGuideSearchResult": { "properties": { - "attribution_window_days": { - "example": 30, - "type": "integer" + "category_name": { + "description": "CategoryName is PSA's own category display name for this set, e.g.\n\"Baseball Card Values\".", + "type": "string" }, - "code": { - "example": "A1B2C3D4E5F6", + "category_path": { + "description": "CategoryPath is the category's URL path segment -- pass as\ncategory_path to psa-price-guide-set.", "type": "string" }, "items": { + "description": "Items are the matching cards/items within this set.", "items": { - "$ref": "#/definitions/referrals.referralAttributionDoc" + "$ref": "#/definitions/psa.PriceGuideSearchItem" }, "type": "array" }, - "monthly_referrer_reward_cap": { - "example": 10, - "type": "integer" - }, - "referred_reward_credits": { - "example": 10000, - "type": "integer" - }, - "reward_credits": { - "example": 10000, + "set_id": { + "description": "SetID is PSA's own numeric set id -- pass as set_id to\npsa-price-guide-set along with CategoryPath and SetPath.", "type": "integer" }, - "share_path": { - "example": "/r/A1B2C3D4E5F6", + "set_name": { + "description": "SetName is the set's display name, e.g. \"1974 Topps\".", "type": "string" }, - "stats": { - "$ref": "#/definitions/referrals.referralsStatsDoc" + "set_path": { + "description": "SetPath is the set's own URL path segment -- pass as set_path to\npsa-price-guide-set.", + "type": "string" } }, "type": "object" }, - "referrals.referralsStatsDoc": { + "psa.PriceGuideSetResponse": { "properties": { - "attributed": { - "example": 3, - "type": "integer" - }, - "capped": { - "example": 0, - "type": "integer" - }, - "expired": { - "example": 0, - "type": "integer" + "cards": { + "description": "Cards is every row of the set's price table, in PSA's own display\norder.", + "items": { + "$ref": "#/definitions/psa.PriceGuideCardPrice" + }, + "type": "array" }, - "qualified": { - "example": 1, - "type": "integer" + "grades": { + "description": "Grades are this set's own grade-column labels, in the order PSA\nitself displays them (e.g. [\"NM 7\",\"NM-MT 8\",\"MT 9\",\"GEM-MT 10\"]).\nConfirmed live that this varies by set -- a vintage set may carry\nmore/lower grade columns than a modern one -- so it is returned per\nresponse rather than assumed fixed.", + "items": { + "type": "string" + }, + "type": "array" }, - "rejected": { - "example": 0, - "type": "integer" + "set_id": { + "type": "string" }, - "review_required": { - "example": 0, - "type": "integer" + "source_url": { + "type": "string" }, - "rewarded": { - "example": 1, - "type": "integer" + "title": { + "description": "Title is the set's display name, e.g. \"1974 Topps\".", + "type": "string" } }, "type": "object" }, - "resy.AvailabilityResponse": { + "psa.ProBatFactsCategoriesResponse": { "properties": { - "date": { - "type": "string" - }, - "party_size": { - "type": "integer" - }, - "restaurant_id": { - "type": "string" - }, - "timeslots": { + "categories": { "items": { - "$ref": "#/definitions/resy.Timeslot" + "$ref": "#/definitions/psa.ProBatFactsCategory" }, "type": "array" } }, "type": "object" }, - "resy.CuisinesResponse": { + "psa.ProBatFactsCategory": { "properties": { - "cuisines": { - "items": { - "type": "string" - }, - "type": "array" + "id": { + "description": "ID is PSA's own numeric category id, confirmed live against every\ncategory this family covers. Distinct from CardFacts'/Price Guide's/\nAutographFacts'/TicketFacts' own category id spaces -- do not assume\nthey share values.", + "type": "integer" }, - "location": { + "name": { + "description": "Name is PSA's own display label, e.g. \"Hall of Fame Players\".", "type": "string" } }, "type": "object" }, - "resy.Event": { + "psa.ProBatFactsGalleryImage": { "properties": { - "city": { - "type": "string" - }, - "currency": { - "example": "USD", - "type": "string" - }, - "date": { - "example": "2026-09-20", - "type": "string" - }, - "description": { - "type": "string" - }, - "end_time": { - "example": "17:00:00", + "caption": { "type": "string" }, - "general_sale_date": { + "image_url": { "type": "string" - }, + } + }, + "type": "object" + }, + "psa.ProBatFactsGalleryResult": { + "properties": { "images": { "items": { - "type": "string" + "$ref": "#/definitions/psa.ProBatFactsGalleryImage" }, "type": "array" }, - "is_presale": { - "type": "boolean" - }, - "max_party_size": { - "example": 8, - "type": "integer" - }, - "min_party_size": { - "example": 1, - "type": "integer" - }, "name": { - "example": "Breakfast & Citi Field Trip", - "type": "string" - }, - "neighborhood": { "type": "string" }, - "price_max": { - "example": 85, - "type": "number" - }, - "price_min": { - "example": 85, - "type": "number" - }, - "restaurant_id": { + "source_url": { "type": "string" }, - "restaurant_name": { + "subject_id": { "type": "string" - }, - "restaurant_url_slug": { - "description": "RestaurantURLSlug, together with URLSlug and the search/events\nLocation value, is what resy-event-detail needs to fetch this\nevent's full description and ticket packages.", + } + }, + "type": "object" + }, + "psa.ProBatFactsSubject": { + "properties": { + "name": { + "description": "Name is the player's display name, e.g. \"Hank Aaron\".", "type": "string" }, - "shift_id": { + "subject_id": { + "description": "SubjectID is PSA's own numeric subject id -- pass as subject_id to\nProBatFactsSubject.", "type": "integer" - }, - "time": { - "example": "09:30:00", - "type": "string" - }, - "url_slug": { - "type": "string" - }, - "why_we_like_it": { - "type": "string" } }, "type": "object" }, - "resy.EventDetailResponse": { + "psa.ProBatFactsSubjectResult": { "properties": { - "currency": { - "type": "string" - }, - "date": { - "type": "string" - }, - "description": { - "type": "string" - }, - "end_time": { - "type": "string" - }, - "enhanced_description": { - "type": "string" - }, - "enhanced_need_to_know": { - "type": "string" - }, - "general_sale_date": { + "bat_profile": { + "description": "BatProfile is PSA's own free-text bat-authentication writeup\n(models used, signature placement, etc.) for this player.", "type": "string" }, - "images": { - "items": { - "type": "string" - }, - "type": "array" - }, - "is_presale": { - "type": "boolean" - }, - "max_party_size": { - "type": "integer" - }, - "min_party_size": { - "type": "integer" - }, "name": { + "description": "Name is the player's display name, e.g. \"Hank Aaron\".", "type": "string" }, - "need_to_know": { + "player_profile": { + "description": "PlayerProfile is PSA's own free-text player-biography writeup.", "type": "string" }, - "packages": { - "items": { - "$ref": "#/definitions/resy.EventPackage" - }, - "type": "array" - }, - "price_max": { - "type": "number" - }, - "price_min": { - "type": "number" - }, - "shift_id": { - "type": "integer" - }, - "time": { + "source_url": { "type": "string" }, - "url_slug": { + "subject_id": { "type": "string" } }, "type": "object" }, - "resy.EventPackage": { + "psa.ProBatFactsSubjectsResponse": { "properties": { - "max_party_size": { - "example": 8, - "type": "integer" - }, - "min_party_size": { - "example": 1, + "category_id": { "type": "integer" }, - "name": { - "example": "One Ticket for Breakfast & Citi Field Trip", - "type": "string" - }, - "price_total": { - "example": 85, - "type": "number" - }, - "price_total_str": { - "example": "$85.00", + "category_name": { "type": "string" }, - "quantity_remaining": { - "example": 22, - "type": "integer" - }, - "quantity_total": { - "example": 40, - "type": "integer" - }, - "sold_out": { - "type": "boolean" - }, - "timeslots": { - "items": { - "$ref": "#/definitions/resy.Timeslot" - }, - "type": "array" - }, - "whats_included": { + "subjects": { "items": { - "type": "string" + "$ref": "#/definitions/psa.ProBatFactsSubject" }, "type": "array" } }, "type": "object" }, - "resy.EventsResponse": { + "psa.TicketFactsCategoriesResponse": { "properties": { - "events": { + "categories": { "items": { - "$ref": "#/definitions/resy.Event" + "$ref": "#/definitions/psa.TicketFactsCategory" }, "type": "array" - }, - "location": { - "type": "string" - }, - "total": { - "type": "integer" } }, "type": "object" }, - "resy.Location": { + "psa.TicketFactsCategory": { "properties": { - "code": { - "example": "ny", - "type": "string" - }, - "country": { - "example": "United States", - "type": "string" - }, - "country_code": { - "example": "US", - "type": "string" - }, "id": { - "example": "1", - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" + "description": "ID is PSA's own numeric category id, confirmed live against every\ncategory this family covers. Distinct from CardFacts'/Price Guide's/\nAutographFacts' own category id spaces -- do not assume they share\nvalues.", + "type": "integer" }, "name": { - "example": "New York", - "type": "string" - }, - "time_zone": { - "example": "America/New_York", - "type": "string" - }, - "url_slug": { - "example": "new-york-ny", + "description": "Name is PSA's own display label, e.g. \"Super Bowl\".", "type": "string" } }, "type": "object" }, - "resy.LocationsResponse": { + "psa.TicketFactsGalleryImage": { "properties": { - "locations": { - "items": { - "$ref": "#/definitions/resy.Location" - }, - "type": "array" + "caption": { + "type": "string" }, - "total": { - "type": "integer" + "image_url": { + "type": "string" } }, "type": "object" }, - "resy.RestaurantResponse": { + "psa.TicketFactsGalleryResult": { "properties": { - "about": { - "type": "string" - }, - "address": { - "example": "181 Thompson Street", - "type": "string" - }, - "average_cost_per_person": { - "example": "$150", - "type": "string" - }, - "city": { - "example": "New York", - "type": "string" - }, - "country": { - "type": "string" - }, - "cross_street": { - "type": "string" - }, - "cuisine": { - "example": "Italian", - "type": "string" - }, - "currency_symbol": { - "example": "$", - "type": "string" - }, - "description": { - "type": "string" - }, - "id": { - "type": "string" - }, "images": { "items": { - "type": "string" + "$ref": "#/definitions/psa.TicketFactsGalleryImage" }, "type": "array" }, - "latitude": { - "type": "number" - }, - "location_code": { - "description": "LocationCode is Resy's short city code (e.g. \"ny\") -- pass it as\nresy-cuisines' or resy-events' location param to discover more about\nthis same city.", - "example": "ny", - "type": "string" - }, - "longitude": { - "type": "number" - }, - "max_party_size": { - "example": 14, - "type": "integer" - }, - "menu_url": { - "type": "string" - }, - "min_party_size": { - "example": 1, - "type": "integer" - }, "name": { "type": "string" }, - "need_to_know": { - "type": "string" - }, - "neighborhood": { - "example": "Greenwich Village", - "type": "string" - }, - "phone_number": { - "type": "string" - }, - "postal_code": { - "type": "string" - }, - "price_range": { - "example": 4, - "type": "integer" - }, - "rating": { - "example": 4.75, - "type": "number" - }, - "region": { - "example": "NY", - "type": "string" - }, - "review_count": { - "example": 33837, - "type": "integer" - }, - "url_slug": { - "example": "carbone", - "type": "string" - }, - "website": { + "source_url": { "type": "string" }, - "why_we_like_it": { + "subject_id": { "type": "string" } }, "type": "object" }, - "resy.SearchResponse": { + "psa.TicketFactsSubject": { "properties": { - "available_cuisines": { - "description": "AvailableCuisines lists the cuisines present among restaurants near this\nsearch location (Resy's own search facet) -- use it to discover cuisine\nvalues worth passing back in Term, since the upstream search index has\nno separate structured cuisine filter (confirmed live: a top-level\n\"cuisine\" search field is rejected as an unknown field).", - "items": { - "type": "string" - }, - "type": "array" - }, - "results": { - "items": { - "$ref": "#/definitions/resy.SearchResult" - }, - "type": "array" - }, - "term": { + "name": { + "description": "Name is the event's display name, e.g. \"Super Bowl I\".", "type": "string" }, - "total": { + "subject_id": { + "description": "SubjectID is PSA's own numeric subject id -- pass as subject_id to\nTicketFactsSubject.", "type": "integer" } }, "type": "object" }, - "resy.SearchResult": { + "psa.TicketFactsSubjectResult": { "properties": { - "city": { - "example": "New York", - "type": "string" - }, - "cuisines": { - "example": [ - "Italian" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "id": { - "example": "6194", - "type": "string" - }, - "latitude": { - "type": "number" - }, - "location_code": { - "description": "LocationCode is Resy's short city code (e.g. \"ny\") -- pass it as\nresy-cuisines' or resy-events' location param to discover more about\nthis same city.", - "example": "ny", - "type": "string" - }, - "location_url_slug": { - "example": "new-york-ny", - "type": "string" - }, - "longitude": { - "type": "number" - }, "name": { - "example": "Carbone", + "description": "Name is the event's display name, e.g. \"Super Bowl I\".", "type": "string" }, - "neighborhood": { - "example": "Greenwich Village", + "source_url": { "type": "string" }, - "phone_number": { + "subject_id": { "type": "string" }, - "price_range": { - "example": 4, + "ticket_profile": { + "description": "TicketProfile is PSA's own free-text historical writeup for this\nevent.", + "type": "string" + } + }, + "type": "object" + }, + "psa.TicketFactsSubjectsResponse": { + "properties": { + "category_id": { "type": "integer" }, - "rating": { - "example": 4.75, - "type": "number" - }, - "region": { - "example": "NY", + "category_name": { "type": "string" }, - "review_count": { - "example": 33837, - "type": "integer" - }, - "timeslots": { + "subjects": { "items": { - "$ref": "#/definitions/resy.Timeslot" + "$ref": "#/definitions/psa.TicketFactsSubject" }, "type": "array" - }, - "url_slug": { - "example": "carbone", - "type": "string" } }, "type": "object" }, - "resy.Timeslot": { + "psa.autographFactsCategoriesResponseDoc": { "properties": { - "end": { - "example": "2026-09-20 20:30:00", - "type": "string" - }, - "max_party_size": { - "example": 4, - "type": "integer" - }, - "min_party_size": { - "example": 1, + "code": { + "example": 200, "type": "integer" }, - "seating_type": { - "example": "Dining Room", - "type": "string" - }, - "start": { - "description": "Start/End are Resy's own local \"YYYY-MM-DD HH:MM:SS\" strings (not RFC3339\n-- kept as upstream returns them since seating-area shifts don't carry a\nUTC offset in the response).", - "example": "2026-09-20 19:00:00", - "type": "string" + "data": { + "$ref": "#/definitions/psa.AutographFactsCategoriesResponse" }, - "token": { - "description": "Token is Resy's opaque reservation-config identifier for this slot\n(an \"rgs://...\" string). It is only meaningful back to Resy's own\nbooking flow -- this service does not implement booking, only\ndiscovery.", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "resy.availabilityResponseDoc": { + "psa.autographFactsGalleryResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/resy.AvailabilityResponse" + "$ref": "#/definitions/psa.AutographFactsGalleryResult" }, "msg": { "example": "OK", @@ -130475,14 +134752,14 @@ }, "type": "object" }, - "resy.cuisinesResponseDoc": { + "psa.autographFactsSubjectResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/resy.CuisinesResponse" + "$ref": "#/definitions/psa.AutographFactsSubjectResult" }, "msg": { "example": "OK", @@ -130491,14 +134768,14 @@ }, "type": "object" }, - "resy.eventDetailResponseDoc": { + "psa.autographFactsSubjectsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/resy.EventDetailResponse" + "$ref": "#/definitions/psa.AutographFactsSubjectsResponse" }, "msg": { "example": "OK", @@ -130507,14 +134784,14 @@ }, "type": "object" }, - "resy.eventsResponseDoc": { + "psa.cardFactsCategoriesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/resy.EventsResponse" + "$ref": "#/definitions/psa.CardFactsCategoriesResponse" }, "msg": { "example": "OK", @@ -130523,14 +134800,14 @@ }, "type": "object" }, - "resy.locationsResponseDoc": { + "psa.cardFactsChecklistResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/resy.LocationsResponse" + "$ref": "#/definitions/psa.CardFactsChecklistResponse" }, "msg": { "example": "OK", @@ -130539,14 +134816,14 @@ }, "type": "object" }, - "resy.restaurantResponseDoc": { + "psa.cardFactsSetsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/resy.RestaurantResponse" + "$ref": "#/definitions/psa.CardFactsSetsResponse" }, "msg": { "example": "OK", @@ -130555,14 +134832,14 @@ }, "type": "object" }, - "resy.searchResponseDoc": { + "psa.certLookupResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/resy.SearchResponse" + "$ref": "#/definitions/psa.CertLookupResult" }, "msg": { "example": "OK", @@ -130571,245 +134848,94 @@ }, "type": "object" }, - "reuters.ArticleItem": { + "psa.priceGuideCategoriesResponseDoc": { "properties": { - "image_url": { - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "title": { - "type": "string" + "data": { + "$ref": "#/definitions/psa.PriceGuideCategoriesResponse" }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "reuters.ArticleResponse": { - "properties": { - "authors": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": { - "type": "string" - }, - "image_caption": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "paragraphs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "published_at": { - "type": "string" - }, - "title": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "reuters.ArticlesResponse": { + "psa.priceGuideSearchResponseDoc": { "properties": { - "items": { - "items": { - "$ref": "#/definitions/reuters.ArticleItem" - }, - "type": "array" - }, - "page": { + "code": { + "example": 200, "type": "integer" - } - }, - "type": "object" - }, - "reuters.AuthorArticle": { - "properties": { - "image_url": { - "type": "string" - }, - "published_at": { - "type": "string" - }, - "summary": { - "type": "string" }, - "title": { - "type": "string" + "data": { + "$ref": "#/definitions/psa.PriceGuideSearchResponse" }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "reuters.AuthorResponse": { + "psa.priceGuideSetResponseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/reuters.AuthorArticle" - }, - "type": "array" - }, - "company": { - "type": "string" - }, - "email": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "social_accounts": { - "items": { - "$ref": "#/definitions/reuters.AuthorSocialAccount" - }, - "type": "array" - }, - "total_articles": { + "code": { + "example": 200, "type": "integer" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "reuters.AuthorSocialAccount": { - "properties": { - "platform": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "reuters.NewsItem": { - "properties": { - "image_caption": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "published_at": { - "type": "string" - }, - "title": { - "type": "string" - }, - "updated_at": { - "type": "string" + "data": { + "$ref": "#/definitions/psa.PriceGuideSetResponse" }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "reuters.NewsResponse": { + "psa.probatFactsCategoriesResponseDoc": { "properties": { - "items": { - "items": { - "$ref": "#/definitions/reuters.NewsItem" - }, - "type": "array" - }, - "page": { + "code": { + "example": 200, "type": "integer" - } - }, - "type": "object" - }, - "reuters.Section": { - "properties": { - "name": { - "type": "string" - }, - "slug": { - "type": "string" }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "reuters.SectionItem": { - "properties": { - "image_caption": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "updated_at": { - "type": "string" + "data": { + "$ref": "#/definitions/psa.ProBatFactsCategoriesResponse" }, - "url": { + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "reuters.SectionResponse": { + "psa.probatFactsGalleryResponseDoc": { "properties": { - "items": { - "items": { - "$ref": "#/definitions/reuters.SectionItem" - }, - "type": "array" - }, - "page": { + "code": { + "example": 200, "type": "integer" }, - "section": { + "data": { + "$ref": "#/definitions/psa.ProBatFactsGalleryResult" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "reuters.SectionsResponse": { - "properties": { - "items": { - "items": { - "$ref": "#/definitions/reuters.Section" - }, - "type": "array" - } - }, - "type": "object" - }, - "reuters.articleResponseDoc": { + "psa.probatFactsSubjectResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reuters.ArticleResponse" + "$ref": "#/definitions/psa.ProBatFactsSubjectResult" }, "msg": { "example": "OK", @@ -130818,14 +134944,14 @@ }, "type": "object" }, - "reuters.articlesResponseDoc": { + "psa.probatFactsSubjectsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reuters.ArticlesResponse" + "$ref": "#/definitions/psa.ProBatFactsSubjectsResponse" }, "msg": { "example": "OK", @@ -130834,14 +134960,14 @@ }, "type": "object" }, - "reuters.authorResponseDoc": { + "psa.ticketFactsCategoriesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reuters.AuthorResponse" + "$ref": "#/definitions/psa.TicketFactsCategoriesResponse" }, "msg": { "example": "OK", @@ -130850,14 +134976,14 @@ }, "type": "object" }, - "reuters.newsResponseDoc": { + "psa.ticketFactsGalleryResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reuters.NewsResponse" + "$ref": "#/definitions/psa.TicketFactsGalleryResult" }, "msg": { "example": "OK", @@ -130866,14 +134992,14 @@ }, "type": "object" }, - "reuters.sectionResponseDoc": { + "psa.ticketFactsSubjectResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reuters.SectionResponse" + "$ref": "#/definitions/psa.TicketFactsSubjectResult" }, "msg": { "example": "OK", @@ -130882,14 +135008,14 @@ }, "type": "object" }, - "reuters.sectionsResponseDoc": { + "psa.ticketFactsSubjectsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/reuters.SectionsResponse" + "$ref": "#/definitions/psa.TicketFactsSubjectsResponse" }, "msg": { "example": "OK", @@ -130898,5467 +135024,1896 @@ }, "type": "object" }, - "rightmove.AgentAffiliation": { + "publicnews.abcNewsAuthorResponseDoc": { "properties": { - "id": { - "example": 19, - "type": "integer" - }, - "image_url": { - "type": "string" - }, - "name": { - "example": "Property Redress Scheme", - "type": "string" + "data": { + "$ref": "#/definitions/abcnews.AuthorResponse" } }, "type": "object" }, - "rightmove.AgentBranchResponse": { + "publicnews.abcauAuthorResponseDoc": { "properties": { - "address": { - "example": "18 Pilgrimage Street,\nLondon Bridge,\nLondon,\nSE1 4LL", - "type": "string" - }, - "branch_name": { - "example": "London", - "type": "string" - }, - "brand_name": { - "example": "1 Ability Estate Agents", - "type": "string" - }, - "build_to_rent": { - "type": "boolean" - }, - "commercial": { - "type": "boolean" - }, - "company_id": { - "example": "4294", - "type": "string" - }, - "company_name": { - "example": "1st Avenue", - "type": "string" - }, - "description": { - "type": "string" - }, - "development": { - "type": "boolean" - }, - "display_name": { - "example": "1 Ability Estate Agents, London", - "type": "string" - }, - "id": { - "example": "181787", - "type": "string" - }, - "industry_affiliations": { - "items": { - "$ref": "#/definitions/rightmove.AgentAffiliation" - }, - "type": "array" - }, - "latitude": { - "type": "number" - }, - "lettings": { - "type": "boolean" - }, - "lettings_properties": { - "$ref": "#/definitions/rightmove.AgentPropertyList" - }, - "lettings_telephone": { - "example": "020 3910 6304", - "type": "string" - }, - "logo_url": { - "type": "string" - }, - "longitude": { - "type": "number" - }, - "main_telephone": { - "example": "020 8293 8600", - "type": "string" - }, - "overseas": { - "type": "boolean" - }, - "postcode": { - "example": "SE1 4LL", - "type": "string" - }, - "sales": { - "type": "boolean" - }, - "sales_properties": { - "$ref": "#/definitions/rightmove.AgentPropertyList" - }, - "sales_telephone": { - "example": "020 3909 6734", - "type": "string" + "data": { + "$ref": "#/definitions/abcau.AuthorResponse" } }, "type": "object" }, - "rightmove.AgentItem": { + "publicnews.androidpoliceAuthorResponseDoc": { "properties": { - "address": { - "example": "18 Pilgrimage Street,\nLondon Bridge,\nLondon,\nSE1 4LL", - "type": "string" - }, - "brand_name": { - "example": "1 Ability Estate Agents", - "type": "string" - }, - "description": { - "type": "string" - }, - "display_name": { - "example": "1 Ability Estate Agents, London", - "type": "string" - }, - "id": { - "example": "181787", - "type": "string" - }, - "lettings": { - "type": "boolean" - }, - "logo_url": { - "example": "https://media.rightmove.co.uk/partner-logo/19103090-LOGO-1765975389.png", - "type": "string" - }, - "sales": { - "type": "boolean" - }, - "telephones": { - "items": { - "$ref": "#/definitions/rightmove.AgentTelephone" - }, - "type": "array" - }, - "url": { - "example": "https://www.rightmove.co.uk/estate-agents/agent/1-Ability-Estate-Agents/London-181787.html", - "type": "string" + "data": { + "$ref": "#/definitions/androidpolice.AuthorResponse" } }, "type": "object" }, - "rightmove.AgentPropertyItem": { + "publicnews.apNewsAuthorResponseDoc": { "properties": { - "address": { - "example": "West Parkside, London, SE10", - "type": "string" - }, - "bathrooms": { - "example": 2, - "type": "integer" - }, - "bedrooms": { - "example": 2, - "type": "integer" - }, - "channel": { - "example": "RES_LET", - "type": "string" - }, - "id": { - "example": "92527095", - "type": "string" - }, - "image": { - "type": "string" - }, - "price": { - "example": 634, - "type": "integer" - }, - "price_frequency": { - "example": "weekly", - "type": "string" - }, - "price_text": { - "example": "£634 pw", - "type": "string" - }, - "property_type": { - "example": "Flat", - "type": "string" - }, - "status": { - "example": "available", - "type": "string" - }, - "url": { - "example": "https://www.rightmove.co.uk/properties/92537946#/?channel=RES_LET", - "type": "string" + "data": { + "$ref": "#/definitions/apnews.AuthorResponse" } }, "type": "object" }, - "rightmove.AgentPropertyList": { + "publicnews.arstechnicaAuthorResponseDoc": { "properties": { - "properties": { - "items": { - "$ref": "#/definitions/rightmove.AgentPropertyItem" - }, - "type": "array" - }, - "total": { - "example": 37, - "type": "integer" + "data": { + "$ref": "#/definitions/arstechnica.AuthorResponse" } }, "type": "object" }, - "rightmove.AgentTelephone": { + "publicnews.articleResponseDoc": { "properties": { - "direct_number": { - "example": "020 3903 2323", - "type": "string" - }, - "number": { - "example": "020 3910 6304", - "type": "string" - }, - "type": { - "example": "LETTING", - "type": "string" + "data": { + "$ref": "#/definitions/newsplatform.ArticleResponse" } }, "type": "object" }, - "rightmove.AgentsResponse": { + "publicnews.benzingaSearchResponseDoc": { "properties": { - "location": { - "example": "REGION^87490", - "type": "string" - }, - "page": { - "example": 1, - "type": "integer" - }, - "results": { - "items": { - "$ref": "#/definitions/rightmove.AgentItem" + "data": { + "properties": { + "items": { + "items": { + "properties": { + "author": { + "type": "string" + }, + "image_url": { + "type": "string" + }, + "published_at": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "tickers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "query": { + "type": "string" + } }, - "type": "array" - }, - "total": { - "example": 3614, - "type": "integer" + "type": "object" } }, "type": "object" }, - "rightmove.AutocompleteItem": { + "publicnews.billboardAuthorResponseDoc": { "properties": { - "entity_type": { - "example": "REGION", - "type": "string" - }, - "full_name": { - "example": "London, Greater London, England", - "type": "string" - }, - "id": { - "example": "REGION^12345", - "type": "string" - }, - "name": { - "example": "London, Greater London", - "type": "string" + "data": { + "$ref": "#/definitions/billboard.AuthorResponse" } }, "type": "object" }, - "rightmove.AutocompleteResponse": { + "publicnews.bleacherreportAuthorResponseDoc": { "properties": { - "query": { - "example": "London", - "type": "string" - }, - "results": { - "items": { - "$ref": "#/definitions/rightmove.AutocompleteItem" - }, - "type": "array" + "data": { + "$ref": "#/definitions/bleacherreport.AuthorResponse" } }, "type": "object" }, - "rightmove.PropertyCustomerReviews": { + "publicnews.breitbartAuthorResponseDoc": { "properties": { - "average_score": { - "example": 4.5, - "type": "number" - }, - "count": { - "example": 5, - "type": "integer" - }, - "latest_review": { - "example": "Great property and excellent service from the agent.", - "type": "string" + "data": { + "$ref": "#/definitions/breitbart.AuthorResponse" } }, "type": "object" }, - "rightmove.PropertyItem": { + "publicnews.brisbanetimesArticleResponseDoc": { "properties": { - "added_or_reduced": { - "example": "Price reduced", - "type": "string" - }, - "address": { - "example": "123 Example Street, London", - "type": "string" - }, - "bathrooms": { - "example": 2, - "type": "integer" - }, - "bedrooms": { - "example": 3, - "type": "integer" - }, - "currency": { - "example": "GBP", - "type": "string" - }, - "days_on_market": { - "example": 14, - "type": "integer" - }, - "development": { - "example": true, - "type": "boolean" - }, - "id": { - "example": "12345678", - "type": "string" - }, - "image": { - "example": "https://media.rightmove.co.uk/property-photo/.../12345678.jpg", - "type": "string" - }, - "price": { - "example": 500000, - "type": "integer" - }, - "price_frequency": { - "example": "monthly", - "type": "string" - }, - "price_text": { - "example": "£500,000", - "type": "string" - }, - "property_type": { - "example": "Semi-detached", - "type": "string" - }, - "receptions": { - "example": 2, - "type": "integer" - }, - "size": { - "example": "538 sq. ft.", - "type": "string" - }, - "status": { - "example": "For Sale", - "type": "string" - }, - "tenure": { - "example": "LEASEHOLD", - "type": "string" - }, - "title": { - "example": "3 bedroom semi-detached house for sale", - "type": "string" - }, - "url": { - "example": "https://www.rightmove.co.uk/properties/12345678", - "type": "string" + "data": { + "$ref": "#/definitions/brisbanetimes.ArticleResponse" } }, "type": "object" }, - "rightmove.PropertyResponse": { + "publicnews.brisbanetimesAuthorResponseDoc": { "properties": { - "added_or_reduced": { - "example": "Price reduced", - "type": "string" - }, - "address": { - "example": "123 Example Street, London", - "type": "string" - }, - "available_from": { - "type": "string" - }, - "bathrooms": { - "example": 2, - "type": "integer" - }, - "bedrooms": { - "example": 3, - "type": "integer" - }, - "council_tax_band": { - "type": "string" - }, - "currency": { - "example": "GBP", - "type": "string" - }, - "customer_reviews": { - "$ref": "#/definitions/rightmove.PropertyCustomerReviews" - }, - "days_on_market": { - "example": 14, - "type": "integer" - }, - "description": { - "type": "string" - }, - "development": { - "example": true, - "type": "boolean" - }, - "epc_rating": { - "type": "string" - }, - "features": { - "items": { - "type": "string" - }, - "type": "array" - }, - "floor_plan": { - "type": "string" - }, - "id": { - "example": "12345678", - "type": "string" - }, - "image": { - "example": "https://media.rightmove.co.uk/property-photo/.../12345678.jpg", - "type": "string" - }, - "nearby_schools": { - "items": { - "$ref": "#/definitions/rightmove.PropertySchool" - }, - "type": "array" - }, - "price": { - "example": 500000, - "type": "integer" - }, - "price_frequency": { - "example": "monthly", - "type": "string" - }, - "price_text": { - "example": "£500,000", - "type": "string" - }, - "property_type": { - "example": "Semi-detached", - "type": "string" - }, - "receptions": { - "example": 2, - "type": "integer" - }, - "size": { - "example": "538 sq. ft.", - "type": "string" - }, - "status": { - "example": "For Sale", - "type": "string" - }, - "tenure": { - "type": "string" - }, - "title": { - "example": "3 bedroom semi-detached house for sale", - "type": "string" - }, - "url": { - "example": "https://www.rightmove.co.uk/properties/12345678", - "type": "string" + "data": { + "$ref": "#/definitions/brisbanetimes.AuthorResponse" } }, "type": "object" }, - "rightmove.PropertySchool": { + "publicnews.businessInsiderAuthorResponseDoc": { "properties": { - "distance": { - "example": "0.2 miles", - "type": "string" - }, - "name": { - "example": "St. Mary's Primary School", - "type": "string" - }, - "rating": { - "example": "Outstanding", - "type": "string" - }, - "type": { - "example": "Primary", - "type": "string" + "data": { + "$ref": "#/definitions/businessinsider.AuthorResponse" } }, "type": "object" }, - "rightmove.SearchResponse": { + "publicnews.businessstandardAuthorResponseDoc": { "properties": { - "location": { - "example": "REGION^87490", - "type": "string" - }, - "page": { - "example": 1, - "type": "integer" - }, - "results": { - "items": { - "$ref": "#/definitions/rightmove.PropertyItem" - }, - "type": "array" - }, - "total": { - "example": 1245, - "type": "integer" + "data": { + "$ref": "#/definitions/businessstandard.AuthorResponse" } }, "type": "object" }, - "rnz.AuthorArticle": { + "publicnews.cbcAuthorResponseDoc": { "properties": { - "image_url": { - "type": "string" - }, - "published_label": { - "description": "PublishedLabel is the card's own date label as RNZ prints it\n(\"8:58 am today\", \"23 Sep 2026\"); the listing carries no machine\ntimestamp.", - "type": "string" - }, - "summary": { - "type": "string" - }, - "title": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/cbc.AuthorResponse" } }, "type": "object" }, - "rnz.AuthorResponse": { + "publicnews.cbrAuthorResponseDoc": { "properties": { - "article_count": { - "description": "ArticleCount is the total number of news stories RNZ lists for the\nauthor (\"Displaying items 1 - 25 of N\"); Articles holds only the first\npage.", - "type": "integer" - }, - "articles": { - "items": { - "$ref": "#/definitions/rnz.AuthorArticle" - }, - "type": "array" - }, - "bio": { - "type": "string" - }, - "email": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "job_title": { - "type": "string" - }, - "name": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "twitter": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/cbr.AuthorResponse" } }, "type": "object" }, - "roblox.Badge": { + "publicnews.cbsNewsAuthorResponseDoc": { "properties": { - "awarding_root_place_id": { - "type": "integer" - }, - "awarding_universe": { - "type": "string" - }, - "awarding_universe_id": { - "type": "integer" - }, - "awards_all_time": { - "type": "integer" - }, - "awards_past_day": { - "type": "integer" - }, - "created_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "icon_url": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "updated_at": { - "type": "string" + "data": { + "$ref": "#/definitions/cbsnews.AuthorResponse" } }, "type": "object" }, - "roblox.BadgesResponse": { + "publicnews.cbsSportsAuthorResponseDoc": { "properties": { - "badges": { - "items": { - "$ref": "#/definitions/roblox.Badge" - }, - "type": "array" - }, - "next_cursor": { - "type": "string" - }, - "previous_cursor": { - "type": "string" - }, - "universe_id": { - "type": "integer" + "data": { + "$ref": "#/definitions/cbssports.AuthorResponse" } }, "type": "object" }, - "roblox.Creator": { + "publicnews.chicagoTribuneAuthorResponseDoc": { "properties": { - "id": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "verified": { - "type": "boolean" + "data": { + "$ref": "#/definitions/chicagotribune.AuthorResponse" } }, "type": "object" }, - "roblox.Experience": { + "publicnews.cnaAuthorResponseDoc": { "properties": { - "creator_id": { - "type": "integer" - }, - "creator_name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "down_votes": { - "type": "integer" - }, - "genre": { - "type": "string" - }, - "is_sponsored": { - "type": "boolean" - }, - "maturity": { - "type": "string" - }, - "maturity_label": { - "type": "string" - }, - "minimum_age": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "player_count": { - "type": "integer" - }, - "root_place_id": { - "type": "integer" - }, - "universe_id": { - "type": "integer" - }, - "up_votes": { - "type": "integer" - }, - "url": { - "type": "string" - }, - "verified_creator": { - "type": "boolean" + "data": { + "$ref": "#/definitions/cna.AuthorResponse" } }, "type": "object" }, - "roblox.Game": { + "publicnews.cnetAuthorResponseDoc": { "properties": { - "access_price": { - "type": "integer" - }, - "avatar_type": { - "type": "string" - }, - "content_restricted": { - "type": "boolean" - }, - "created_at": { - "type": "string" - }, - "creator": { - "$ref": "#/definitions/roblox.Creator" - }, - "description": { - "type": "string" - }, - "down_votes": { - "type": "integer" - }, - "favorites": { - "type": "integer" - }, - "genre": { - "type": "string" - }, - "genre_l1": { - "type": "string" - }, - "genre_l2": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "max_players": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "playing": { - "type": "integer" - }, - "root_place_id": { - "type": "integer" - }, - "universe_id": { - "type": "integer" - }, - "up_votes": { - "type": "integer" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" - }, - "visits": { - "type": "integer" + "data": { + "$ref": "#/definitions/cnet.AuthorResponse" } }, "type": "object" }, - "roblox.GameResponse": { + "publicnews.colliderAuthorResponseDoc": { "properties": { - "game": { - "$ref": "#/definitions/roblox.Game" + "data": { + "$ref": "#/definitions/collider.AuthorResponse" } }, "type": "object" }, - "roblox.RankingsResponse": { + "publicnews.ctvnewsAuthorResponseDoc": { "properties": { - "display_name": { - "type": "string" - }, - "experiences": { - "items": { - "$ref": "#/definitions/roblox.Experience" - }, - "type": "array" - }, - "sort_id": { - "type": "string" + "data": { + "$ref": "#/definitions/ctvnews.AuthorResponse" } }, "type": "object" }, - "roblox.SearchResponse": { + "publicnews.dailyBeastAuthorResponseDoc": { "properties": { - "experiences": { - "items": { - "$ref": "#/definitions/roblox.Experience" - }, - "type": "array" - }, - "next_page": { - "type": "string" - }, - "query": { - "type": "string" + "data": { + "$ref": "#/definitions/thedailybeast.AuthorResponse" } }, "type": "object" }, - "roblox.badgesResponseDoc": { + "publicnews.dailyExpressAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/roblox.BadgesResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/dailyexpress.AuthorResponse" } }, "type": "object" }, - "roblox.gameResponseDoc": { + "publicnews.dailyMailAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/roblox.GameResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/dailymail.AuthorResponse" } }, "type": "object" }, - "roblox.rankingsResponseDoc": { + "publicnews.dailyRecordAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/roblox.RankingsResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/dailyrecord.AuthorResponse" } }, "type": "object" }, - "roblox.searchResponseDoc": { + "publicnews.dailyWireAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/roblox.SearchResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/dailywire.AuthorResponse" } }, "type": "object" }, - "rollingstone.AuthorResponse": { + "publicnews.dailycallerAuthorResponseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/rollingstone.HeadlineItem" - }, - "type": "array" - }, - "bio": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "job_title": { - "type": "string" - }, - "name": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/dailycaller.AuthorResponse" } }, "type": "object" }, - "rollingstone.HeadlineItem": { + "publicnews.dawnAuthorResponseDoc": { "properties": { - "author": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "published_at": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/dawn.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.BrowseFilter": { + "publicnews.deadlineAuthorResponseDoc": { "properties": { - "key": { - "example": "genres", - "type": "string" - }, - "label": { - "example": "Genre", - "type": "string" - }, - "values": { - "items": { - "$ref": "#/definitions/rottentomatoes.BrowseFilterValue" - }, - "type": "array" + "data": { + "$ref": "#/definitions/deadline.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.BrowseFilterValue": { + "publicnews.denverPostAuthorResponseDoc": { "properties": { - "label": { - "example": "Action", - "type": "string" - }, - "value": { - "example": "action", - "type": "string" + "data": { + "$ref": "#/definitions/denverpost.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.BrowseFiltersResponse": { + "publicnews.dwAuthorResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-09-26T10:00:00Z", - "type": "string" - }, - "filters": { - "items": { - "$ref": "#/definitions/rottentomatoes.BrowseFilter" - }, - "type": "array" - }, - "list": { - "example": "movies_in_theaters", - "type": "string" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/browse/movies_in_theaters/sort:popular", - "type": "string" + "data": { + "$ref": "#/definitions/dw.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.BrowseItem": { + "publicnews.economicTimesAuthorResponseDoc": { "properties": { - "critics_review_count": { - "example": 136, - "type": "integer" - }, - "date_created": { - "example": "2026", - "type": "string" - }, - "image_url": { - "type": "string" - }, - "media_type": { - "example": "Movie", - "type": "string" - }, - "path": { - "example": "/m/wildwood_nj", - "type": "string" - }, - "position": { - "example": 1, - "type": "integer" - }, - "title": { - "example": "Wildwood, NJ", - "type": "string" - }, - "tomatometer_score": { - "example": 87, - "type": "integer" - }, - "url": { - "example": "https://www.rottentomatoes.com/m/wildwood_nj", - "type": "string" - }, - "video": { - "$ref": "#/definitions/rottentomatoes.EpisodeVideo" + "data": { + "$ref": "#/definitions/economictimes.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.BrowseResponse": { + "publicnews.engadgetAuthorResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-06-07T14:46:16Z", - "type": "string" - }, - "items": { - "items": { - "$ref": "#/definitions/rottentomatoes.BrowseItem" - }, - "type": "array" - }, - "limit": { - "example": 10, - "type": "integer" - }, - "list": { - "example": "movies_in_theaters", - "type": "string" - }, - "page_info": { - "$ref": "#/definitions/rottentomatoes.ReviewPageInfo" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "sort": { - "example": "popular", - "type": "string" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/browse/movies_in_theaters/sort:popular", - "type": "string" - }, - "title": { - "example": "Movies in Theaters (2026)", - "type": "string" + "data": { + "$ref": "#/definitions/engadget.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.CriticAuthor": { + "publicnews.eonlineAuthorResponseDoc": { "properties": { - "badges": { - "example": [ - "Individually approved" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "example": "Mae Abdulbaki", - "type": "string" - }, - "path": { - "example": "/critics/mae-abdulbaki", - "type": "string" - }, - "publication_label": { - "example": "when published by", - "type": "string" - }, - "publications": { - "items": { - "$ref": "#/definitions/rottentomatoes.CriticAuthorPublication" - }, - "type": "array" + "data": { + "$ref": "#/definitions/eonline.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.CriticAuthorPublication": { + "publicnews.euronewsAuthorResponseDoc": { "properties": { - "editorial_url": { - "example": "https://example.com/reviews", - "type": "string" - }, - "id": { - "example": "2784", - "type": "string" - }, - "name": { - "example": "Firstpost", - "type": "string" - }, - "path": { - "example": "/critics/source/2784", - "type": "string" + "data": { + "$ref": "#/definitions/euronews.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.CriticsAuthorsResponse": { + "publicnews.ewAuthorResponseDoc": { "properties": { - "after": { - "example": "", - "type": "string" - }, - "authors": { - "items": { - "$ref": "#/definitions/rottentomatoes.CriticAuthor" - }, - "type": "array" - }, - "before": { - "example": "", - "type": "string" - }, - "fetched_at": { - "example": "2026-09-26T10:00:00Z", - "type": "string" - }, - "has_next_page": { - "example": true, - "type": "boolean" - }, - "has_previous_page": { - "example": false, - "type": "boolean" - }, - "inactive": { - "example": false, - "type": "boolean" - }, - "letter": { - "example": "a", - "type": "string" - }, - "limit": { - "example": 100, - "type": "integer" - }, - "next_cursor": { - "example": "MQ==", - "type": "string" - }, - "previous_cursor": { - "example": "MA==", - "type": "string" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "search": { - "example": "", - "type": "string" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/napi/critics/authors?isInactiveCriticsList=false&letter=a&pageCount=100&userToken=null", - "type": "string" + "data": { + "$ref": "#/definitions/ew.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.EditorialContentItem": { + "publicnews.expresstribuneAuthorResponseDoc": { "properties": { - "author_id": { - "example": 944, - "type": "integer" - }, - "excerpt": { - "example": "A ranked guide to essential 21st century biopics.", - "type": "string" - }, - "featured_media_id": { - "example": 297622, - "type": "integer" - }, - "id": { - "example": 297618, - "type": "integer" - }, - "modified_at": { - "example": "2026-09-25T09:04:07", - "type": "string" - }, - "published_at": { - "example": "2026-09-25T09:04:07", - "type": "string" - }, - "term_ids": { - "example": [ - 121877, - 121876 - ], - "items": { - "type": "integer" - }, - "type": "array" - }, - "title": { - "example": "Essential 21st Century Biopics Ranked", - "type": "string" - }, - "type": { - "enum": [ - "article", - "guide", - "gallery", - "hub-subpage", - "non-rt-publication", - "rt-hub", - "how-to", - "otg-article", - "prev", - "rt_poll", - "page" - ], - "example": "guide", - "type": "string" - }, - "url": { - "example": "https://editorial.rottentomatoes.com/guide/essential-21st-century-biopic-movies/", - "type": "string" + "data": { + "$ref": "#/definitions/expresstribune.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.EditorialContentResponse": { + "publicnews.fastCompanyAuthorResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-09-26T10:00:00Z", - "type": "string" - }, - "has_next_page": { - "example": true, - "type": "boolean" - }, - "limit": { - "example": 20, - "type": "integer" - }, - "operator": { - "enum": [ - "AND", - "OR" - ], - "example": "OR", - "type": "string" - }, - "page": { - "example": 1, - "type": "integer" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "query": { - "example": "horror", - "type": "string" - }, - "results": { - "items": { - "$ref": "#/definitions/rottentomatoes.EditorialContentItem" - }, - "type": "array" - }, - "source_url": { - "example": "https://editorial.rottentomatoes.com/wp-json/wp/v2/guide?page=1&per_page=20", - "type": "string" - }, - "taxonomy": { - "enum": [ - "categories", - "tags", - "related-movie-id", - "related-tv-season-id", - "related-tv-series-id", - "related-tv-episode-id", - "related-celebrity-id", - "publication", - "franchise", - "coauthors" - ], - "example": "related-movie-id", - "type": "string" - }, - "term_ids": { - "example": [ - 121877, - 121876 - ], - "items": { - "type": "integer" - }, - "type": "array" - }, - "total": { - "example": 1194, - "type": "integer" - }, - "total_pages": { - "example": 60, - "type": "integer" - }, - "type": { - "enum": [ - "article", - "guide", - "gallery", - "hub-subpage", - "non-rt-publication", - "rt-hub", - "how-to", - "otg-article", - "prev", - "rt_poll", - "pages" - ], - "example": "guide", - "type": "string" + "data": { + "$ref": "#/definitions/fastcompany.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.EditorialContentType": { + "publicnews.fortuneAuthorResponseDoc": { "properties": { - "label": { - "example": "Guides", - "type": "string" - }, - "value": { - "enum": [ - "article", - "guide", - "gallery", - "hub-subpage", - "non-rt-publication", - "rt-hub", - "how-to", - "otg-article", - "prev", - "rt_poll", - "pages" - ], - "example": "guide", - "type": "string" + "data": { + "$ref": "#/definitions/fortune.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.EditorialContentTypesResponse": { + "publicnews.fortuneCompaniesResponseDoc": { "properties": { - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "source_url": { - "example": "https://editorial.rottentomatoes.com/wp-json/wp/v2/types", - "type": "string" - }, - "types": { - "items": { - "$ref": "#/definitions/rottentomatoes.EditorialContentType" - }, - "type": "array" - }, - "verified_at": { - "example": "2026-09-26", - "type": "string" + "data": { + "$ref": "#/definitions/fortune.CompaniesResponse" } }, "type": "object" }, - "rottentomatoes.EditorialDetailLink": { + "publicnews.fortuneCompanyFiltersResponseDoc": { "properties": { - "text": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/fortune.CompanyFiltersResponse" } }, "type": "object" }, - "rottentomatoes.EditorialDetailResponse": { + "publicnews.fortuneCompanyResponseDoc": { "properties": { - "body_html": { - "type": "string" - }, - "fetched_at": { - "type": "string" - }, - "headings": { - "items": { - "type": "string" - }, - "type": "array" - }, - "image_url": { - "type": "string" - }, - "images": { - "items": { - "type": "string" - }, - "type": "array" - }, - "links": { - "items": { - "$ref": "#/definitions/rottentomatoes.EditorialDetailLink" - }, - "type": "array" - }, - "modified_at": { - "type": "string" - }, - "paragraphs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "path": { - "example": "/guide/all-brad-pitt-movies-ranked-by-tomatometer/", - "type": "string" - }, - "public_page_derived": { - "type": "boolean" - }, - "published_at": { - "type": "string" - }, - "source_url": { - "type": "string" - }, - "subtitle": { - "type": "string" - }, - "title": { - "example": "Brad Pitt Movies Ranked by Tomatometer", - "type": "string" - }, - "type": { - "enum": [ - "article", - "gallery", - "guide", - "otg-article", - "prev" - ], - "example": "guide", - "type": "string" - }, - "video_urls": { - "items": { - "type": "string" - }, - "type": "array" + "data": { + "$ref": "#/definitions/fortune.CompanyResponse" } }, "type": "object" }, - "rottentomatoes.EditorialSearchResponse": { + "publicnews.fortuneRankingFiltersResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-09-26T10:00:00Z", - "type": "string" - }, - "has_next_page": { - "example": true, - "type": "boolean" - }, - "limit": { - "example": 10, - "type": "integer" - }, - "page": { - "example": 1, - "type": "integer" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "query": { - "example": "horror", - "type": "string" - }, - "results": { - "items": { - "$ref": "#/definitions/rottentomatoes.EditorialSearchResult" - }, - "type": "array" - }, - "source_url": { - "example": "https://editorial.rottentomatoes.com/wp-json/wp/v2/search?page=1&per_page=10&search=horror", - "type": "string" - }, - "total": { - "example": 5110, - "type": "integer" - }, - "total_pages": { - "example": 511, - "type": "integer" + "data": { + "$ref": "#/definitions/fortune.RankingFiltersResponse" } }, "type": "object" }, - "rottentomatoes.EditorialSearchResult": { + "publicnews.fortuneRankingListsResponseDoc": { "properties": { - "id": { - "example": 282182, - "type": "integer" - }, - "subtype": { - "example": "guide", - "type": "string" - }, - "title": { - "example": "Best New Horror Movies of 2026", - "type": "string" - }, - "type": { - "example": "post", - "type": "string" - }, - "url": { - "example": "https://editorial.rottentomatoes.com/guide/best-new-horror-movies-2026/", - "type": "string" + "data": { + "$ref": "#/definitions/fortune.RankingListsResponse" } }, "type": "object" }, - "rottentomatoes.EditorialSectionItem": { + "publicnews.fortuneRankingResponseDoc": { "properties": { - "image_url": { - "example": "https://editorial.rottentomatoes.com/wp-content/uploads/2026/04/poster.png?w=300", - "type": "string" - }, - "published_at": { - "example": "September 25, 2026", - "type": "string" - }, - "title": { - "example": "Robert Pattinson Movies Ranked by Tomatometer", - "type": "string" - }, - "url": { - "example": "https://editorial.rottentomatoes.com/guide/robert-pattinson/", - "type": "string" + "data": { + "$ref": "#/definitions/fortune.RankingResponse" } }, "type": "object" }, - "rottentomatoes.EditorialSectionResponse": { + "publicnews.fortuneRankingYearsResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-09-26T10:00:00Z", - "type": "string" - }, - "has_next_page": { - "example": true, - "type": "boolean" - }, - "page": { - "example": 1, - "type": "integer" - }, - "path": { - "example": "/countdown/", - "type": "string" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "results": { - "items": { - "$ref": "#/definitions/rottentomatoes.EditorialSectionItem" - }, - "type": "array" - }, - "source_url": { - "example": "https://editorial.rottentomatoes.com/countdown/", - "type": "string" - }, - "title": { - "example": "Countdown", - "type": "string" - }, - "total_pages": { - "example": 40, - "type": "integer" + "data": { + "$ref": "#/definitions/fortune.RankingYearsResponse" } }, "type": "object" }, - "rottentomatoes.EditorialTaxonomiesResponse": { + "publicnews.france24AuthorResponseDoc": { "properties": { - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "source_url": { - "example": "https://editorial.rottentomatoes.com/wp-json/wp/v2/taxonomies", - "type": "string" - }, - "taxonomies": { - "items": { - "$ref": "#/definitions/rottentomatoes.EditorialTaxonomy" - }, - "type": "array" - }, - "verified_at": { - "example": "2026-09-26", - "type": "string" + "data": { + "$ref": "#/definitions/france24.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.EditorialTaxonomy": { + "publicnews.gamerantAuthorResponseDoc": { "properties": { - "hierarchical": { - "example": false, - "type": "boolean" - }, - "label": { - "example": "Related Movie Ids", - "type": "string" - }, - "types": { - "example": [ - "article", - "guide", - "gallery" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "value": { - "enum": [ - "categories", - "tags", - "related-movie-id", - "related-tv-season-id", - "related-tv-series-id", - "related-tv-episode-id", - "related-celebrity-id", - "publication", - "franchise", - "coauthors" - ], - "example": "related-movie-id", - "type": "string" + "data": { + "$ref": "#/definitions/gamerant.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.EditorialTerm": { + "publicnews.gamesradarAuthorResponseDoc": { "properties": { - "count": { - "example": 3072, - "type": "integer" - }, - "description": { - "type": "string" - }, - "id": { - "example": 10732, - "type": "integer" - }, - "link": { - "example": "https://editorial.rottentomatoes.com/author/cap-rt-staff/", - "type": "string" - }, - "name": { - "example": "RT Staff", - "type": "string" - }, - "parent": { - "example": 0, - "type": "integer" - }, - "slug": { - "example": "cap-rt-staff", - "type": "string" + "data": { + "$ref": "#/definitions/gamesradar.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.EditorialTermsResponse": { + "publicnews.gbnewsAuthorResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-09-26T10:00:00Z", - "type": "string" - }, - "has_next_page": { - "example": true, - "type": "boolean" - }, - "limit": { - "example": 20, - "type": "integer" - }, - "page": { - "example": 1, - "type": "integer" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "results": { - "items": { - "$ref": "#/definitions/rottentomatoes.EditorialTerm" - }, - "type": "array" - }, - "search": { - "example": "RT Staff", - "type": "string" - }, - "source_url": { - "example": "https://editorial.rottentomatoes.com/wp-json/wp/v2/coauthors?page=1&per_page=20", - "type": "string" - }, - "taxonomy": { - "enum": [ - "categories", - "tags", - "related-movie-id", - "related-tv-season-id", - "related-tv-series-id", - "related-tv-episode-id", - "related-celebrity-id", - "publication", - "franchise", - "coauthors" - ], - "example": "coauthors", - "type": "string" - }, - "total": { - "example": 927, - "type": "integer" - }, - "total_pages": { - "example": 47, - "type": "integer" + "data": { + "$ref": "#/definitions/gbnews.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.EpisodeResponse": { + "publicnews.ghanawebArchiveMonthsResponseDoc": { "properties": { - "air_date": { - "example": "2008-01-20", - "type": "string" - }, - "audience_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "cast": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "critics_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "description": { - "type": "string" - }, - "directors": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "ems_id": { - "example": "ccda9549-4dcb-3147-9a2b-1106dcf852f7", - "type": "string" - }, - "episode_number": { - "example": 1, - "type": "integer" - }, - "fetched_at": { - "example": "2026-06-07T14:46:16Z", - "type": "string" - }, - "genres": { - "example": [ - "Crime" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "image_url": { - "type": "string" - }, - "lifecycle": { - "example": "NOT_AIRING", - "type": "string" - }, - "media_type": { - "example": "TvEpisode", - "type": "string" - }, - "parent_season": { - "$ref": "#/definitions/rottentomatoes.SeasonSummary" - }, - "parent_series": { - "$ref": "#/definitions/rottentomatoes.SeriesSummary" - }, - "path": { - "example": "/tv/breaking_bad/s01/e01", - "type": "string" - }, - "producers": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "season_number": { - "example": 1, - "type": "integer" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad/s01/e01", - "type": "string" - }, - "title": { - "example": "Pilot", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad/s01/e01", - "type": "string" - }, - "video": { - "$ref": "#/definitions/rottentomatoes.EpisodeVideo" + "data": { + "$ref": "#/definitions/ghanaweb.ArchiveMonthsResponse" } }, "type": "object" }, - "rottentomatoes.EpisodeVideo": { + "publicnews.ghanawebArchiveResponseDoc": { "properties": { - "description": { - "type": "string" - }, - "duration": { - "example": "2:32", - "type": "string" - }, - "thumbnail": { - "type": "string" - }, - "title": { - "example": "Breaking Bad: Official Clip - Walter Wants to Cook", - "type": "string" - }, - "upload_date": { - "example": "2024-07-11T19:23:03", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad/s01/e01/videos/JR3ymbH1dpLb", - "type": "string" + "data": { + "$ref": "#/definitions/ghanaweb.ArchiveResponse" } }, "type": "object" }, - "rottentomatoes.MovieResponse": { + "publicnews.ghanawebVideoResponseDoc": { "properties": { - "audience_reviews": { - "items": { - "$ref": "#/definitions/rottentomatoes.Review" - }, - "type": "array" - }, - "audience_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "cast": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "content_rating": { - "example": "PG-13", - "type": "string" - }, - "critics_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "description": { - "type": "string" - }, - "directors": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "ems_id": { - "example": "afbf1c81-1bfe-3996-9cbc-2e1be23d1f61", - "type": "string" - }, - "fetched_at": { - "example": "2026-06-07T14:46:16Z", - "type": "string" - }, - "genres": { - "example": [ - "Sci-Fi" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "image_url": { - "type": "string" - }, - "media_type": { - "example": "Movie", - "type": "string" - }, - "path": { - "example": "/m/inception", - "type": "string" - }, - "producers": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "release_date": { - "example": "2010-07-16", - "type": "string" - }, - "reviews_url": { - "example": "https://www.rottentomatoes.com/m/inception/reviews/all-audience", - "type": "string" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/m/inception", - "type": "string" - }, - "title": { - "example": "Inception", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/m/inception", - "type": "string" + "data": { + "$ref": "#/definitions/ghanaweb.VideoResponse" } }, "type": "object" }, - "rottentomatoes.MovieReview": { + "publicnews.ghanawebVideoSectionsResponseDoc": { "properties": { - "created_at": { - "example": "2024-04-11T23:40:16.000Z", - "type": "string" - }, - "critic_url": { - "example": "https://www.rottentomatoes.com/critic/danilo-castro", - "type": "string" - }, - "display_name": { - "example": "Danilo Castro", - "type": "string" - }, - "has_profanity": { - "example": false, - "type": "boolean" - }, - "has_spoilers": { - "example": false, - "type": "boolean" - }, - "id": { - "example": "102903742", - "type": "string" - }, - "original_score": { - "example": "9/10", - "type": "string" - }, - "publication": { - "example": "Next Best Picture", - "type": "string" - }, - "publication_approved": { - "example": true, - "type": "boolean" - }, - "publication_review_url": { - "example": "https://nextbestpicture.com/inception/", - "type": "string" - }, - "rating": { - "example": 4.5, - "type": "number" - }, - "rating_label": { - "example": "STAR_4_5", - "type": "string" - }, - "review": { - "type": "string" - }, - "score_sentiment": { - "example": "POSITIVE", - "type": "string" - }, - "super_reviewer": { - "example": false, - "type": "boolean" - }, - "tomatometer_approved": { - "example": true, - "type": "boolean" - }, - "top_critic": { - "example": false, - "type": "boolean" - }, - "top_publication": { - "example": false, - "type": "boolean" - }, - "top_review": { - "example": false, - "type": "boolean" - }, - "type": { - "example": "critic", - "type": "string" - }, - "verified": { - "example": false, - "type": "boolean" + "data": { + "$ref": "#/definitions/ghanaweb.VideoSectionsResponse" } }, "type": "object" }, - "rottentomatoes.Person": { + "publicnews.ghanawebVideosResponseDoc": { "properties": { - "image_url": { - "type": "string" - }, - "name": { - "example": "Christopher Nolan", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/celebrity/christopher_nolan", - "type": "string" + "data": { + "$ref": "#/definitions/ghanaweb.VideosResponse" } }, "type": "object" }, - "rottentomatoes.PersonCredit": { + "publicnews.gizmodoAuthorResponseDoc": { "properties": { - "audience_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "credits": { - "example": "Director, Screenwriter, Producer", - "type": "string" - }, - "critics_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "path": { - "example": "/m/oppenheimer_2023", - "type": "string" - }, - "position": { - "example": 1, - "type": "integer" - }, - "poster_url": { - "type": "string" - }, - "title": { - "example": "Oppenheimer", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/m/oppenheimer_2023", - "type": "string" - }, - "years_featured": { - "example": "2023", - "type": "string" + "data": { + "$ref": "#/definitions/gizmodo.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.PersonRatedTitle": { + "publicnews.globalnewsAuthorResponseDoc": { "properties": { - "path": { - "example": "/m/the_dark_knight", - "type": "string" - }, - "score": { - "example": 94, - "type": "integer" - }, - "title": { - "example": "The Dark Knight", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/m/the_dark_knight", - "type": "string" - }, - "year": { - "example": "2008", - "type": "string" + "data": { + "$ref": "#/definitions/globalnews.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.PersonResponse": { + "publicnews.gqAuthorResponseDoc": { "properties": { - "birth_date": { - "example": "1970-07-30", - "type": "string" - }, - "birthplace": { - "example": "London, England, UK", - "type": "string" - }, - "description": { - "type": "string" - }, - "ems_id": { - "example": "a015d515-713e-38e3-abbe-cf0cdaa519b0", - "type": "string" - }, - "fetched_at": { - "example": "2026-06-07T14:46:16Z", - "type": "string" - }, - "filmography": { - "items": { - "$ref": "#/definitions/rottentomatoes.PersonCredit" - }, - "type": "array" - }, - "filmography_api_url": { - "example": "https://www.rottentomatoes.com/cnapi/modules/filmography/a015d515-713e-38e3-abbe-cf0cdaa519b0/movie/newest", - "type": "string" - }, - "highest_rated": { - "$ref": "#/definitions/rottentomatoes.PersonRatedTitle" - }, - "image_url": { - "type": "string" - }, - "lowest_rated": { - "$ref": "#/definitions/rottentomatoes.PersonRatedTitle" - }, - "name": { - "example": "Christopher Nolan", - "type": "string" - }, - "page_info": { - "$ref": "#/definitions/rottentomatoes.ReviewPageInfo" - }, - "path": { - "example": "/celebrity/christopher_nolan", - "type": "string" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/celebrity/christopher_nolan", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/celebrity/christopher_nolan", - "type": "string" + "data": { + "$ref": "#/definitions/gq.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.Review": { + "publicnews.gulfNewsAuthorResponseDoc": { "properties": { - "display_date": { - "example": "Mar 19", - "type": "string" - }, - "display_name": { - "example": "Rylee", - "type": "string" - }, - "fandango_review": { - "example": true, - "type": "boolean" - }, - "rating": { - "example": 5, - "type": "number" - }, - "rating_id": { - "example": "e0812d98-c1d5-467d-ae35-c19cdd575f90", - "type": "string" - }, - "rating_range": { - "example": "Rated 5/5 Stars", - "type": "string" - }, - "review": { - "type": "string" - }, - "verified": { - "example": true, - "type": "boolean" + "data": { + "$ref": "#/definitions/gulfnews.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.ReviewMovieSummary": { + "publicnews.headlinesResponseDoc": { "properties": { - "ems_id": { - "example": "afbf1c81-1bfe-3996-9cbc-2e1be23d1f61", - "type": "string" - }, - "media_type": { - "example": "Movie", - "type": "string" - }, - "path": { - "example": "/m/inception", - "type": "string" - }, - "title": { - "example": "Inception", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/m/inception", - "type": "string" + "data": { + "$ref": "#/definitions/newsplatform.HeadlinesResponse" } }, "type": "object" }, - "rottentomatoes.ReviewPageInfo": { + "publicnews.hindustanTimesAuthorResponseDoc": { "properties": { - "end_cursor": { - "example": "Mjk=", - "type": "string" - }, - "has_next_page": { - "example": true, - "type": "boolean" - }, - "has_previous_page": { - "example": true, - "type": "boolean" - }, - "start_cursor": { - "example": "MA==", - "type": "string" + "data": { + "$ref": "#/definitions/hindustantimes.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.ReviewsResponse": { + "publicnews.hollywoodReporterAuthorResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-06-07T14:46:16Z", - "type": "string" - }, - "limit": { - "example": 10, - "type": "integer" - }, - "movie": { - "$ref": "#/definitions/rottentomatoes.ReviewMovieSummary" - }, - "page_info": { - "$ref": "#/definitions/rottentomatoes.ReviewPageInfo" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "reviews": { - "items": { - "$ref": "#/definitions/rottentomatoes.MovieReview" - }, - "type": "array" - }, - "reviews_api_url": { - "example": "https://www.rottentomatoes.com/napi/rtcf/v1/movies/afbf1c81-1bfe-3996-9cbc-2e1be23d1f61/reviews?type=critic&pageCount=10", - "type": "string" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/m/inception/reviews", - "type": "string" - }, - "type": { - "example": "critics", - "type": "string" + "data": { + "$ref": "#/definitions/hollywoodreporter.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.Score": { + "publicnews.houstonChronicleAuthorResponseDoc": { "properties": { - "average_rating": { - "example": "8.40", - "type": "string" - }, - "banded_rating_count": { - "example": "250,000+ Ratings", - "type": "string" - }, - "certified": { - "example": true, - "type": "boolean" - }, - "liked_count": { - "example": 314, - "type": "integer" - }, - "not_liked_count": { - "example": 49, - "type": "integer" - }, - "rating_count": { - "example": 363, - "type": "integer" - }, - "review_count": { - "example": 363, - "type": "integer" - }, - "reviews_page_url": { - "example": "https://www.rottentomatoes.com/m/inception/reviews", - "type": "string" - }, - "score": { - "example": 87, - "type": "integer" - }, - "score_percent": { - "example": "87%", - "type": "string" - }, - "score_type": { - "example": "ALL", - "type": "string" - }, - "sentiment": { - "example": "POSITIVE", - "type": "string" - }, - "title": { - "example": "Tomatometer", - "type": "string" + "data": { + "$ref": "#/definitions/houstonchronicle.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SearchMovie": { + "publicnews.huffPostAuthorResponseDoc": { "properties": { - "cast": { - "example": "Leonardo DiCaprio,Joseph Gordon-Levitt,Elliot Page", - "type": "string" - }, - "certified_fresh": { - "example": true, - "type": "boolean" - }, - "end_year": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "path": { - "example": "/m/inception", - "type": "string" - }, - "release_year": { - "example": "2010", - "type": "string" - }, - "start_year": { - "type": "string" - }, - "title": { - "example": "Inception", - "type": "string" - }, - "tomatometer_score": { - "example": 87, - "type": "integer" - }, - "tomatometer_sentiment": { - "example": "POSITIVE", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/m/inception", - "type": "string" + "data": { + "$ref": "#/definitions/huffpost.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SearchResponse": { + "publicnews.ignAuthorResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-06-07T14:46:16Z", - "type": "string" - }, - "limit": { - "example": 10, - "type": "integer" - }, - "query": { - "example": "inception", - "type": "string" - }, - "results": { - "items": { - "$ref": "#/definitions/rottentomatoes.SearchMovie" - }, - "type": "array" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/search?search=inception", - "type": "string" + "data": { + "$ref": "#/definitions/ign.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SeasonEpisode": { + "publicnews.independentAuthorResponseDoc": { "properties": { - "air_date": { - "example": "2008-01-20", - "type": "string" - }, - "description": { - "type": "string" - }, - "episode_number": { - "example": "1", - "type": "string" - }, - "path": { - "example": "/tv/breaking_bad/s01/e01", - "type": "string" - }, - "title": { - "example": "Pilot", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad/s01/e01", - "type": "string" + "data": { + "$ref": "#/definitions/independent.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SeasonResponse": { + "publicnews.indiaTodayAuthorResponseDoc": { "properties": { - "audience_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "cast": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "critics_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "description": { - "type": "string" - }, - "directors": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "ems_id": { - "example": "71374db9-1350-30fa-b30a-d3f623bbdfc4", - "type": "string" - }, - "episode_count": { - "example": 7, - "type": "integer" - }, - "episodes": { - "items": { - "$ref": "#/definitions/rottentomatoes.SeasonEpisode" - }, - "type": "array" - }, - "fetched_at": { - "example": "2026-06-07T14:46:16Z", - "type": "string" - }, - "genres": { - "example": [ - "Crime" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "image_url": { - "type": "string" - }, - "lifecycle": { - "example": "NOT_AIRING", - "type": "string" - }, - "media_type": { - "example": "TvSeason", - "type": "string" - }, - "parent_series": { - "$ref": "#/definitions/rottentomatoes.SeriesSummary" - }, - "path": { - "example": "/tv/breaking_bad/s01", - "type": "string" - }, - "producers": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "release_date": { - "example": "2008-01-20", - "type": "string" - }, - "season_number": { - "example": 1, - "type": "integer" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad/s01", - "type": "string" - }, - "title": { - "example": "Season 1", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad/s01", - "type": "string" + "data": { + "$ref": "#/definitions/indiatoday.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SeasonSummary": { + "publicnews.indianExpressAuthorResponseDoc": { "properties": { - "ems_id": { - "example": "71374db9-1350-30fa-b30a-d3f623bbdfc4", - "type": "string" - }, - "path": { - "example": "/tv/breaking_bad/s01", - "type": "string" - }, - "season_number": { - "example": 1, - "type": "integer" - }, - "title": { - "example": "Season 1", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad/s01", - "type": "string" + "data": { + "$ref": "#/definitions/indianexpress.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SeriesResponse": { + "publicnews.indiewireAuthorResponseDoc": { "properties": { - "audience_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "cast": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "content_rating": { - "example": "TV-14", - "type": "string" - }, - "critics_score": { - "$ref": "#/definitions/rottentomatoes.Score" - }, - "description": { - "type": "string" - }, - "directors": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "ems_id": { - "example": "6a74def4-dc62-319e-ae3d-360dcf360244", - "type": "string" - }, - "end_date": { - "example": "2013-09-29", - "type": "string" - }, - "fetched_at": { - "example": "2026-06-07T14:46:16Z", - "type": "string" - }, - "genres": { - "example": [ - "Crime" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "image_url": { - "type": "string" - }, - "lifecycle": { - "example": "NOT_AIRING", - "type": "string" - }, - "media_type": { - "example": "TvSeries", - "type": "string" - }, - "number_of_seasons": { - "example": 5, - "type": "integer" - }, - "path": { - "example": "/tv/breaking_bad", - "type": "string" - }, - "producers": { - "items": { - "$ref": "#/definitions/rottentomatoes.Person" - }, - "type": "array" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "seasons": { - "items": { - "$ref": "#/definitions/rottentomatoes.TVSeason" - }, - "type": "array" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad", - "type": "string" - }, - "start_date": { - "example": "2008-01-20", - "type": "string" - }, - "title": { - "example": "Breaking Bad", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad", - "type": "string" + "data": { + "$ref": "#/definitions/indiewire.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SeriesSummary": { + "publicnews.inewsAuthorResponseDoc": { "properties": { - "ems_id": { - "example": "6a74def4-dc62-319e-ae3d-360dcf360244", - "type": "string" - }, - "path": { - "example": "/tv/breaking_bad", - "type": "string" - }, - "title": { - "example": "Breaking Bad", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad", - "type": "string" + "data": { + "$ref": "#/definitions/inews.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.Sitemap": { + "publicnews.inquirerAuthorResponseDoc": { "properties": { - "family": { - "example": "movie", - "type": "string" - }, - "index": { - "example": 0, - "type": "integer" - }, - "last_modified": { - "example": "2025-11-12", - "type": "string" - }, - "name": { - "example": "movie_0", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/sitemaps/movie_0.xml", - "type": "string" + "data": { + "$ref": "#/definitions/inquirer.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SitemapIndexResponse": { + "publicnews.investopediaAuthorResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-09-26T10:00:00Z", - "type": "string" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "sitemaps": { - "items": { - "$ref": "#/definitions/rottentomatoes.Sitemap" - }, - "type": "array" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/sitemaps/sitemap.xml", - "type": "string" + "data": { + "$ref": "#/definitions/investopedia.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SitemapURL": { + "publicnews.iolAuthorResponseDoc": { "properties": { - "last_modified": { - "example": "2025-11-12", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/m/inception", - "type": "string" + "data": { + "$ref": "#/definitions/iol.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.SitemapURLResponse": { + "publicnews.irishindependentAuthorResponseDoc": { "properties": { - "fetched_at": { - "example": "2026-09-26T10:00:00Z", - "type": "string" - }, - "has_more": { - "example": true, - "type": "boolean" - }, - "limit": { - "example": 100, - "type": "integer" - }, - "name": { - "example": "movie_0", - "type": "string" - }, - "offset": { - "example": 0, - "type": "integer" - }, - "public_page_derived": { - "example": true, - "type": "boolean" - }, - "source_url": { - "example": "https://www.rottentomatoes.com/sitemaps/movie_0.xml", - "type": "string" - }, - "total": { - "example": 16750, - "type": "integer" - }, - "urls": { - "items": { - "$ref": "#/definitions/rottentomatoes.SitemapURL" - }, - "type": "array" + "data": { + "$ref": "#/definitions/irishindependent.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.TVSeason": { + "publicnews.irishtimesAuthorResponseDoc": { "properties": { - "name": { - "example": "Season 1", - "type": "string" - }, - "path": { - "example": "/tv/breaking_bad/s01", - "type": "string" - }, - "url": { - "example": "https://www.rottentomatoes.com/tv/breaking_bad/s01", - "type": "string" + "data": { + "$ref": "#/definitions/irishtimes.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.browseFiltersResponseDoc": { + "publicnews.japantimesAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.BrowseFiltersResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/japantimes.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.browseResponseDoc": { + "publicnews.jerusalemPostAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.BrowseResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/jerusalempost.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.criticsAuthorsResponseDoc": { + "publicnews.jerusalemPostAuthorsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.CriticsAuthorsResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/jerusalempost.AuthorsResponse" } }, "type": "object" }, - "rottentomatoes.editorialContentResponseDoc": { + "publicnews.khaleejTimesAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.EditorialContentResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/khaleejtimes.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.editorialContentTypesResponseDoc": { + "publicnews.kotakuAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.EditorialContentTypesResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/kotaku.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.editorialDetailResponseDoc": { + "publicnews.livemintAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.EditorialDetailResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/livemint.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.editorialSearchResponseDoc": { + "publicnews.livescienceAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.EditorialSearchResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/livescience.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.editorialSectionResponseDoc": { + "publicnews.macRumorsAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.EditorialSectionResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/macrumors.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.editorialTaxonomiesResponseDoc": { + "publicnews.makeuseofAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.EditorialTaxonomiesResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/makeuseof.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.editorialTermsResponseDoc": { + "publicnews.marketWatchAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.EditorialTermsResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/marketwatch.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.episodeResponseDoc": { + "publicnews.mashableAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.EpisodeResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/mashable.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.movieResponseDoc": { + "publicnews.mediaiteAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.MovieResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/mediaite.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.personResponseDoc": { + "publicnews.menAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.PersonResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/men.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.reviewsResponseDoc": { + "publicnews.metroAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.ReviewsResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/metro.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.searchResponseDoc": { + "publicnews.mirrorAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.SearchResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/mirror.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.seasonResponseDoc": { + "publicnews.moneycontrolAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.SeasonResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/moneycontrol.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.seriesResponseDoc": { + "publicnews.motleyfoolAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.SeriesResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/motleyfool.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.sitemapIndexResponseDoc": { + "publicnews.nationAfricaAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.SitemapIndexResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/nationafrica.AuthorResponse" } }, "type": "object" }, - "rottentomatoes.sitemapURLResponseDoc": { + "publicnews.nationalAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rottentomatoes.SitemapURLResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/national.AuthorResponse" } }, "type": "object" }, - "rover.ProfileResponse": { + "publicnews.nationalPostAuthorResponseDoc": { "properties": { - "bio": { - "type": "string" - }, - "city": { - "type": "string" - }, - "is_star_sitter": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "neighborhood": { - "type": "string" - }, - "price_unit": { - "type": "string" - }, - "profile_image": { - "type": "string" - }, - "rating": { - "type": "number" - }, - "repeat_client_count": { - "type": "integer" - }, - "review_count": { - "type": "integer" - }, - "reviews": { - "items": { - "$ref": "#/definitions/rover.ReviewExcerpt" - }, - "type": "array" - }, - "services": { - "items": { - "$ref": "#/definitions/rover.ServiceOffering" - }, - "type": "array" - }, - "slug": { - "type": "string" - }, - "starting_price": { - "type": "number" - }, - "state": { - "type": "string" - }, - "url": { - "type": "string" - }, - "years_experience": { - "type": "integer" + "data": { + "$ref": "#/definitions/nationalpost.AuthorResponse" } }, "type": "object" }, - "rover.ReviewExcerpt": { + "publicnews.ndtvArticleResponseDoc": { "properties": { - "date": { - "type": "string" - }, - "rating": { - "type": "number" - }, - "reviewer": { - "type": "string" - }, - "service_type": { - "type": "string" - }, - "text": { - "type": "string" + "data": { + "$ref": "#/definitions/ndtv.ArticleResponse" } }, "type": "object" }, - "rover.SearchResponse": { + "publicnews.ndtvAuthorResponseDoc": { "properties": { - "location": { - "type": "string" - }, - "page": { - "type": "integer" - }, - "page_count": { - "type": "integer" - }, - "per_page": { - "type": "integer" - }, - "service_type": { - "type": "string" - }, - "sitters": { - "items": { - "$ref": "#/definitions/rover.SitterSummary" - }, - "type": "array" - }, - "total_count": { - "type": "integer" + "data": { + "$ref": "#/definitions/ndtv.AuthorResponse" } }, "type": "object" }, - "rover.ServiceOffering": { + "publicnews.ndtvLatestVideosResponseDoc": { "properties": { - "name": { - "type": "string" - }, - "price": { - "type": "number" - }, - "unit": { - "type": "string" + "data": { + "$ref": "#/definitions/ndtv.LatestVideosResponse" } }, "type": "object" }, - "rover.SitterSummary": { + "publicnews.ndtvLiveBlogResponseDoc": { "properties": { - "city": { - "type": "string" - }, - "description": { - "type": "string" - }, - "is_star_sitter": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "neighborhood": { - "type": "string" - }, - "price_unit": { - "type": "string" - }, - "profile_image": { - "type": "string" - }, - "profile_url": { - "type": "string" - }, - "rating": { - "type": "number" - }, - "repeat_client_count": { - "type": "integer" - }, - "review_count": { - "type": "integer" - }, - "service_type": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "starting_price": { - "type": "number" - }, - "state": { - "type": "string" - }, - "years_experience": { - "type": "integer" - }, - "zip": { - "type": "string" + "data": { + "$ref": "#/definitions/ndtv.LiveBlogResponse" } }, "type": "object" }, - "rover.TrainerEducation": { + "publicnews.ndtvLiveBlogsResponseDoc": { "properties": { - "organization": { - "type": "string" - }, - "text": { - "type": "string" + "data": { + "$ref": "#/definitions/ndtv.LiveBlogsResponse" } }, "type": "object" }, - "rover.TrainerProfileResponse": { + "publicnews.ndtvSearchResponseDoc": { "properties": { - "availability_details": { - "type": "string" - }, - "behaviors": { - "items": { - "type": "string" - }, - "type": "array" - }, - "education": { - "items": { - "$ref": "#/definitions/rover.TrainerEducation" - }, - "type": "array" - }, - "experience_details": { - "type": "string" - }, - "headline": { - "type": "string" - }, - "methodology": { - "type": "string" - }, - "methodology_details": { - "type": "string" - }, - "name": { - "type": "string" - }, - "profile_image": { - "type": "string" - }, - "rating": { - "type": "number" - }, - "repeat_client_count": { - "type": "integer" - }, - "review_count": { - "type": "integer" - }, - "skills": { - "items": { - "type": "string" - }, - "type": "array" - }, - "slug": { - "type": "string" - }, - "url": { - "type": "string" - }, - "years_of_training": { - "type": "integer" + "data": { + "$ref": "#/definitions/ndtv.SearchResponse" } }, "type": "object" }, - "rover.TrainerSearchResponse": { + "publicnews.ndtvVideoCategoriesResponseDoc": { "properties": { - "location": { - "type": "string" - }, - "trainers": { - "items": { - "$ref": "#/definitions/rover.TrainerSummary" - }, - "type": "array" + "data": { + "$ref": "#/definitions/ndtv.VideoCategoriesResponse" } }, "type": "object" }, - "rover.TrainerSummary": { + "publicnews.ndtvVideoResponseDoc": { "properties": { - "behaviors": { - "items": { - "type": "string" - }, - "type": "array" - }, - "city": { - "type": "string" - }, - "experience_details": { - "type": "string" - }, - "headline": { - "type": "string" - }, - "methodology": { - "type": "string" - }, - "name": { - "type": "string" - }, - "price_unit": { - "type": "string" - }, - "profile_image": { - "type": "string" - }, - "profile_url": { - "type": "string" - }, - "rating": { - "type": "number" - }, - "repeat_client_count": { - "type": "integer" - }, - "review_count": { - "type": "integer" - }, - "skills": { - "items": { - "type": "string" - }, - "type": "array" - }, - "slug": { - "type": "string" - }, - "starting_price": { - "type": "number" - }, - "state": { - "type": "string" - }, - "years_experience": { - "type": "integer" - }, - "zip": { - "type": "string" + "data": { + "$ref": "#/definitions/ndtv.VideoResponse" } }, "type": "object" }, - "rover.profileResponseDoc": { + "publicnews.ndtvVideosResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rover.ProfileResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/ndtv.VideosResponse" } }, "type": "object" }, - "rover.searchResponseDoc": { + "publicnews.news18AuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rover.SearchResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/news18.AuthorResponse" } }, "type": "object" }, - "rover.trainerProfileResponseDoc": { + "publicnews.newsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rover.TrainerProfileResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/newsplatform.NewsResponse" } }, "type": "object" }, - "rover.trainerSearchResponseDoc": { + "publicnews.newscomauAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/rover.TrainerSearchResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/newscomau.AuthorResponse" } }, "type": "object" }, - "rte.AuthorResponse": { + "publicnews.newsmaxAuthorResponseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" - }, - "image_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/newsmax.AuthorResponse" } }, "type": "object" }, - "salon.AuthorArticle": { + "publicnews.newsweekAuthorResponseDoc": { "properties": { - "title": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/newsweek.AuthorResponse" } }, "type": "object" }, - "salon.AuthorResponse": { + "publicnews.newyorkerArticleResponseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/salon.AuthorArticle" - }, - "type": "array" - }, - "bio": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "job_title": { - "type": "string" - }, - "name": { - "type": "string" - }, - "same_as": { - "items": { - "type": "string" - }, - "type": "array" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/newyorker.ArticleResponse" } }, "type": "object" }, - "samsclub.CategoryBreadcrumbEntry": { + "publicnews.newyorkerAuthorResponseDoc": { "properties": { - "id": { - "example": "100001", - "type": "string" - }, - "name": { - "example": "All Departments", - "type": "string" - }, - "url": { - "example": "https://www.samsclub.com/all-departments", - "type": "string" + "data": { + "$ref": "#/definitions/newyorker.AuthorResponse" } }, "type": "object" }, - "samsclub.CategoryProduct": { + "publicnews.ninetofivegoogleAuthorResponseDoc": { "properties": { - "availability": { - "example": "IN_STOCK", - "type": "string" - }, - "brand": { - "example": "Tide", - "type": "string" - }, - "currency_code": { - "example": "USD", - "type": "string" - }, - "current_price": { - "example": 19.98, - "type": "number" - }, - "image_url": { - "type": "string" - }, - "item_id": { - "example": "13610014888", - "type": "string" - }, - "name": { - "example": "Tide Power PODS + Ultra OXI Laundry Detergent Pacs, 72 ct.", - "type": "string" - }, - "on_sale": { - "example": true, - "type": "boolean" - }, - "rating": { - "example": 4.8, - "type": "number" - }, - "regular_price": { - "example": 24.98, - "type": "number" - }, - "review_count": { - "example": 4122, - "type": "integer" - }, - "savings_amount": { - "example": 5, - "type": "number" - }, - "type": { - "example": "Laundry Detergents", - "type": "string" - }, - "unit_price_text": { - "example": "$0.28/ea", - "type": "string" - }, - "url": { - "example": "https://www.samsclub.com/ip/Tide-Power-PODS-Ultra-OXI-Laundry-Detergent-Pacs-72-ct/13610014888", - "type": "string" + "data": { + "$ref": "#/definitions/ninetofivegoogle.AuthorResponse" } }, "type": "object" }, - "samsclub.CategoryResponse": { + "publicnews.ninetofivemacAuthorResponseDoc": { "properties": { - "breadcrumb": { - "items": { - "$ref": "#/definitions/samsclub.CategoryBreadcrumbEntry" - }, - "type": "array" - }, - "category_id": { - "example": "15660127", - "type": "string" - }, - "count": { - "example": 47, - "type": "integer" - }, - "fetched_at": { - "type": "string" - }, - "has_more": { - "example": true, - "type": "boolean" - }, - "max_page": { - "example": 16, - "type": "integer" - }, - "page": { - "example": 1, - "type": "integer" - }, - "products": { - "items": { - "$ref": "#/definitions/samsclub.CategoryProduct" - }, - "type": "array" - }, - "source_url": { - "type": "string" - }, - "title": { - "example": "Results for \"Savings\"", - "type": "string" - }, - "total_count": { - "example": 687, - "type": "integer" + "data": { + "$ref": "#/definitions/ninetofivemac.AuthorResponse" } }, "type": "object" }, - "samsclub.ContentResponse": { + "publicnews.nyDailyNewsAuthorResponseDoc": { "properties": { - "breadcrumb": { - "items": { - "$ref": "#/definitions/samsclub.CategoryBreadcrumbEntry" - }, - "type": "array" - }, - "category_links": { - "items": { - "$ref": "#/definitions/samsclub.DepartmentLink" - }, - "type": "array" - }, - "fetched_at": { - "type": "string" - }, - "id": { - "example": "16050279", - "type": "string" - }, - "shelves": { - "items": { - "$ref": "#/definitions/samsclub.RelatedShelf" - }, - "type": "array" - }, - "source_url": { - "type": "string" - }, - "title": { - "example": "Savings Center", - "type": "string" + "data": { + "$ref": "#/definitions/nydailynews.AuthorResponse" } }, "type": "object" }, - "samsclub.Department": { + "publicnews.nymagAuthorResponseDoc": { "properties": { - "id": { - "example": "1444", - "type": "string" - }, - "image_url": { - "type": "string" - }, - "name": { - "example": "Grocery", - "type": "string" - }, - "subcategories": { - "items": { - "$ref": "#/definitions/samsclub.DepartmentLink" - }, - "type": "array" - }, - "type": { - "example": "browse", - "type": "string" - }, - "url": { - "example": "https://www.samsclub.com/browse/1444", - "type": "string" + "data": { + "$ref": "#/definitions/nymag.AuthorResponse" } }, "type": "object" }, - "samsclub.DepartmentLink": { + "publicnews.nypostAuthorResponseDoc": { "properties": { - "id": { - "example": "1444", - "type": "string" - }, - "name": { - "example": "Grocery", - "type": "string" - }, - "type": { - "example": "browse", - "type": "string" - }, - "url": { - "example": "https://www.samsclub.com/browse/1444", - "type": "string" + "data": { + "$ref": "#/definitions/nypost.AuthorResponse" } }, "type": "object" }, - "samsclub.DepartmentsResponse": { + "publicnews.nzheraldAuthorResponseDoc": { "properties": { - "departments": { - "items": { - "$ref": "#/definitions/samsclub.Department" - }, - "type": "array" - }, - "fetched_at": { - "type": "string" - }, - "source_url": { - "type": "string" + "data": { + "$ref": "#/definitions/nzherald.AuthorResponse" } }, "type": "object" }, - "samsclub.Product": { + "publicnews.pagesixAuthorResponseDoc": { "properties": { - "availability": { - "example": "IN_STOCK", - "type": "string" - }, - "brand": { - "example": "Tide", - "type": "string" - }, - "category": { - "example": [ - "All Departments", - "Household Essentials", - "Laundry Supplies", - "Laundry Detergent" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "currency_code": { - "example": "USD", - "type": "string" - }, - "current_price": { - "example": 19.98, - "type": "number" - }, - "description": { - "type": "string" - }, - "highlights": { - "items": { - "type": "string" - }, - "type": "array" - }, - "images": { - "items": { - "type": "string" - }, - "type": "array" - }, - "item_id": { - "example": "13610014888", - "type": "string" - }, - "item_number": { - "example": "990471947", - "type": "string" - }, - "name": { - "example": "Tide Power PODS + Ultra OXI Laundry Detergent Pacs, 72 ct.", - "type": "string" - }, - "on_sale": { - "example": true, - "type": "boolean" - }, - "rating": { - "example": 4.8, - "type": "number" - }, - "regular_price": { - "example": 24.98, - "type": "number" - }, - "review_count": { - "example": 4122, - "type": "integer" - }, - "savings_amount": { - "example": 5, - "type": "number" - }, - "unit_price": { - "example": 0.28, - "type": "number" - }, - "unit_price_text": { - "example": "$0.28/ea", - "type": "string" - }, - "upc": { - "example": "030772073438", - "type": "string" - }, - "url": { - "example": "https://www.samsclub.com/ip/13610014888", - "type": "string" + "data": { + "$ref": "#/definitions/pagesix.AuthorResponse" } }, "type": "object" }, - "samsclub.RelatedItem": { + "publicnews.pcgamerAuthorResponseDoc": { "properties": { - "availability": { - "example": "IN_STOCK", - "type": "string" - }, - "currency_code": { - "example": "USD", - "type": "string" - }, - "image_url": { - "type": "string" - }, - "item_id": { - "example": "13576901230", - "type": "string" - }, - "name": { - "example": "Tide PODS Laundry Detergent Pacs, Spring Meadow, 156 ct.", - "type": "string" - }, - "price": { - "example": 29.98, - "type": "number" - }, - "rating": { - "example": 4.8184, - "type": "number" - }, - "review_count": { - "example": 13701, - "type": "integer" - }, - "url": { - "example": "https://www.samsclub.com/ip/Tide-PODS-Laundry-Detergent-Pacs-Spring-Meadow-156-ct/13576901230", - "type": "string" + "data": { + "$ref": "#/definitions/pcgamer.AuthorResponse" } }, "type": "object" }, - "samsclub.RelatedItemsResponse": { + "publicnews.pcmagAuthorResponseDoc": { "properties": { - "fetched_at": { - "type": "string" - }, - "item_id": { - "example": "13610014888", - "type": "string" - }, - "shelves": { - "items": { - "$ref": "#/definitions/samsclub.RelatedShelf" - }, - "type": "array" - }, - "source_url": { - "type": "string" + "data": { + "$ref": "#/definitions/pcmag.AuthorResponse" } }, "type": "object" }, - "samsclub.RelatedShelf": { + "publicnews.peopleAuthorResponseDoc": { "properties": { - "items": { - "items": { - "$ref": "#/definitions/samsclub.RelatedItem" - }, - "type": "array" - }, - "title": { - "example": "Members also considered", - "type": "string" + "data": { + "$ref": "#/definitions/people.AuthorResponse" } }, "type": "object" }, - "samsclub.categoryResponseDoc": { + "publicnews.phillyinquirerAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/samsclub.CategoryResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/phillyinquirer.AuthorResponse" } }, "type": "object" }, - "samsclub.contentResponseDoc": { + "publicnews.philstarAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/samsclub.ContentResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/philstar.AuthorResponse" } }, "type": "object" }, - "samsclub.departmentsResponseDoc": { + "publicnews.phonearenaAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/samsclub.DepartmentsResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/phonearena.AuthorResponse" } }, "type": "object" }, - "samsclub.productResponseDoc": { + "publicnews.polygonAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/samsclub.Product" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/polygon.AuthorResponse" } }, "type": "object" }, - "samsclub.relatedItemsResponseDoc": { + "publicnews.propublicaAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/samsclub.RelatedItemsResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/propublica.AuthorResponse" } }, "type": "object" }, - "sbsnews.AuthorArticle": { + "publicnews.punchAuthorResponseDoc": { "properties": { - "published_at": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "title": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/punch.AuthorResponse" } }, "type": "object" }, - "sbsnews.AuthorResponse": { + "publicnews.rapplerAuthorResponseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/sbsnews.AuthorArticle" - }, - "type": "array" - }, - "biography": { - "type": "string" - }, - "has_next_page": { - "type": "boolean" - }, - "headshot_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "page": { - "type": "integer" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/rappler.AuthorResponse" } }, "type": "object" }, - "sciencealert.AuthorResponse": { + "publicnews.rawstoryAuthorResponseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" - }, - "biography": { - "items": { - "type": "string" - }, - "type": "array" - }, - "has_next_page": { - "type": "boolean" - }, - "image_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "page": { - "type": "integer" - }, - "slug": { - "type": "string" - }, - "social_links": { - "items": { - "$ref": "#/definitions/sciencealert.AuthorSocialLink" - }, - "type": "array" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/rawstory.AuthorResponse" } }, "type": "object" }, - "sciencealert.AuthorSocialLink": { + "publicnews.reachAuthorResponseDoc": { "properties": { - "platform": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/reachplc.AuthorResponse" } }, "type": "object" }, - "scmp.ArticleResponse": { + "publicnews.rnzAuthorResponseDoc": { "properties": { - "authors": { - "items": { - "type": "string" - }, - "type": "array" - }, - "content_locked": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "paragraphs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "paywall_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "published_at": { - "type": "string" - }, - "section": { - "type": "string" - }, - "title": { - "type": "string" - }, - "topics": { - "items": { - "type": "string" - }, - "type": "array" - }, - "updated_at": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/rnz.AuthorResponse" } }, "type": "object" }, - "scmp.AuthorResponse": { + "publicnews.rollingStoneAuthorResponseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/scmp.HeadlineItem" - }, - "type": "array" - }, - "bio": { - "type": "string" - }, - "expertise": { - "items": { - "type": "string" - }, - "type": "array" - }, - "headshot_url": { - "type": "string" - }, - "languages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "location": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { - "type": "string" - }, - "social_links": { - "items": { - "$ref": "#/definitions/scmp.AuthorSocialLink" - }, - "type": "array" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/rollingstone.AuthorResponse" } }, "type": "object" }, - "scmp.AuthorSocialLink": { + "publicnews.rteAuthorResponseDoc": { "properties": { - "type": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/rte.AuthorResponse" } }, "type": "object" }, - "scmp.HeadlineItem": { + "publicnews.salonAuthorResponseDoc": { "properties": { - "author": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "published_at": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "title": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/salon.AuthorResponse" } }, "type": "object" }, - "scmp.HeadlinesResponse": { + "publicnews.sbsnewsAuthorResponseDoc": { "properties": { - "items": { - "items": { - "$ref": "#/definitions/scmp.HeadlineItem" - }, - "type": "array" - }, - "section": { - "type": "string" + "data": { + "$ref": "#/definitions/sbsnews.AuthorResponse" } }, "type": "object" }, - "scmp.Section": { + "publicnews.scienceAlertAuthorResponseDoc": { "properties": { - "name": { - "type": "string" - }, - "parent_name": { - "type": "string" - }, - "parent_slug": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/sciencealert.AuthorResponse" } }, "type": "object" }, - "scmp.SectionsResponse": { + "publicnews.screenrantAuthorResponseDoc": { "properties": { - "sections": { - "items": { - "$ref": "#/definitions/scmp.Section" - }, - "type": "array" + "data": { + "$ref": "#/definitions/screenrant.AuthorResponse" } }, "type": "object" }, - "scmp.articleResponseDoc": { + "publicnews.seattleTimesAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/scmp.ArticleResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/seattletimes.AuthorResponse" } }, "type": "object" }, - "scmp.authorResponseDoc": { + "publicnews.sectionsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/scmp.AuthorResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/newsplatform.SectionsResponse" } }, "type": "object" }, - "scmp.headlinesResponseDoc": { + "publicnews.sevennewsauAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/scmp.HeadlinesResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sevennewsau.AuthorResponse" } }, "type": "object" }, - "scmp.sectionsResponseDoc": { + "publicnews.sfgateAuthorResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/scmp.SectionsResponse" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sfgate.AuthorResponse" } }, "type": "object" }, - "screenrant.AuthorResponse": { + "publicnews.skyNewsAuthorResponseDoc": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" - }, - "biography": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "social_links": { - "items": { - "$ref": "#/definitions/screenrant.AuthorSocialLink" - }, - "type": "array" - }, - "title": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/skynews.AuthorResponse" } }, "type": "object" }, - "screenrant.AuthorSocialLink": { + "publicnews.skyNewsVideoResponseDoc": { "properties": { - "type": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/skynews.VideoResponse" } }, "type": "object" }, - "seatgeek.CategoriesResult": { + "publicnews.skyNewsVideosResponseDoc": { "properties": { - "categories": { - "items": { - "$ref": "#/definitions/seatgeek.Category" - }, - "type": "array" - }, - "total": { - "type": "integer" + "data": { + "$ref": "#/definitions/skynews.VideosResponse" } }, "type": "object" }, - "seatgeek.Category": { + "publicnews.skySportsAuthorResponseDoc": { "properties": { - "event_count": { - "type": "integer" - }, - "id": { - "example": 1010100, - "type": "integer" - }, - "image": { - "type": "string" - }, - "is_visible": { - "type": "boolean" - }, - "name": { - "example": "MLB", - "type": "string" - }, - "next_event_datetime_utc": { - "type": "string" - }, - "parent_id": { - "example": 1010000, - "type": "integer" - }, - "performer_count": { - "type": "integer" - }, - "rank": { - "type": "integer" - }, - "seo_event_type": { - "type": "string" - }, - "short_name": { - "type": "string" - }, - "slug": { - "example": "mlb", - "type": "string" + "data": { + "$ref": "#/definitions/skysports.AuthorResponse" } }, "type": "object" }, - "seatgeek.CitiesResult": { + "publicnews.smhArticleResponseDoc": { "properties": { - "cities": { - "items": { - "$ref": "#/definitions/seatgeek.City" - }, - "type": "array" - }, - "total": { - "type": "integer" + "data": { + "$ref": "#/definitions/smh.ArticleResponse" } }, "type": "object" }, - "seatgeek.City": { + "publicnews.smhAuthorResponseDoc": { "properties": { - "country": { - "example": "United States", - "type": "string" - }, - "id": { - "example": 72, - "type": "integer" - }, - "lat": { - "type": "number" - }, - "lon": { - "type": "number" - }, - "name": { - "example": "Albuquerque", - "type": "string" - }, - "radius": { - "example": "20mi", - "type": "string" - }, - "show_concerts": { - "type": "boolean" - }, - "show_sports": { - "type": "boolean" - }, - "show_theater": { - "type": "boolean" - }, - "slug": { - "example": "albuquerque", - "type": "string" - }, - "state": { - "example": "New Mexico", - "type": "string" + "data": { + "$ref": "#/definitions/smh.AuthorResponse" } }, "type": "object" }, - "seatgeek.Event": { + "publicnews.spaceAuthorResponseDoc": { "properties": { - "date_tbd": { - "type": "boolean" - }, - "datetime_local": { - "type": "string" - }, - "datetime_utc": { - "type": "string" - }, - "description": { - "type": "string" - }, - "id": { - "example": 17695775, - "type": "integer" - }, - "is_open": { - "type": "boolean" - }, - "performers": { - "items": { - "$ref": "#/definitions/seatgeek.EventPerformer" - }, - "type": "array" - }, - "popularity": { - "type": "number" - }, - "score": { - "type": "number" - }, - "season_stage": { - "type": "string" - }, - "short_title": { - "type": "string" - }, - "stats": { - "$ref": "#/definitions/seatgeek.EventStats" - }, - "status": { - "type": "string" - }, - "taxonomies": { - "items": { - "$ref": "#/definitions/seatgeek.Taxonomy" - }, - "type": "array" - }, - "time_tbd": { - "type": "boolean" - }, - "title": { - "type": "string" - }, - "type": { - "example": "mlb", - "type": "string" - }, - "url": { - "type": "string" - }, - "venue": { - "$ref": "#/definitions/seatgeek.Venue" + "data": { + "$ref": "#/definitions/space.AuthorResponse" } }, "type": "object" }, - "seatgeek.EventPerformer": { + "publicnews.sportingNewsAuthorResponseDoc": { "properties": { - "home_team": { - "type": "boolean" - }, - "id": { - "type": "integer" - }, - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "primary": { - "type": "boolean" - }, - "type": { - "example": "mlb", - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/sportingnews.AuthorResponse" } }, "type": "object" }, - "seatgeek.EventStats": { + "publicnews.sportskeedaAuthorResponseDoc": { "properties": { - "average_price": { - "type": "number" - }, - "highest_price": { - "type": "number" - }, - "listing_count": { - "type": "integer" - }, - "lowest_price": { - "type": "number" - }, - "lowest_sg_base_price": { - "type": "number" - }, - "median_price": { - "type": "number" - }, - "ticket_count": { - "type": "integer" + "data": { + "$ref": "#/definitions/sportskeeda.AuthorResponse" } }, "type": "object" }, - "seatgeek.EventsByCategoryResult": { + "publicnews.sportskeedaCollegeBasketballScheduleOptionsResponseDoc": { "properties": { - "events": { - "items": { - "$ref": "#/definitions/seatgeek.Event" - }, - "type": "array" - }, - "page": { - "type": "integer" - }, - "per_page": { - "type": "integer" - }, - "taxonomy_id": { - "type": "integer" - }, - "total": { - "type": "integer" + "data": { + "$ref": "#/definitions/sportskeeda.CollegeBasketballScheduleOptionsResponse" } }, "type": "object" }, - "seatgeek.EventsNearResult": { + "publicnews.sportskeedaCollegeBasketballScheduleResponseDoc": { "properties": { - "events": { - "items": { - "$ref": "#/definitions/seatgeek.Event" - }, - "type": "array" - }, - "geolocation": { - "$ref": "#/definitions/seatgeek.GeoResolved" - }, - "page": { - "type": "integer" - }, - "per_page": { - "type": "integer" - }, - "total": { - "type": "integer" + "data": { + "$ref": "#/definitions/sportskeeda.CollegeBasketballScheduleResponse" } }, "type": "object" }, - "seatgeek.GeoLocation": { + "publicnews.sportskeedaCricketCommentaryResponseDoc": { "properties": { - "lat": { - "type": "number" - }, - "lon": { - "type": "number" + "data": { + "$ref": "#/definitions/sportskeeda.CricketCommentaryResponse" } }, "type": "object" }, - "seatgeek.GeoResolved": { + "publicnews.sportskeedaCricketMatchResponseDoc": { "properties": { - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "display_name": { - "example": "Albuquerque, NM", - "type": "string" - }, - "range": { - "example": "50mi", - "type": "string" - }, - "state": { - "type": "string" + "data": { + "$ref": "#/definitions/sportskeeda.CricketMatchResponse" } }, "type": "object" }, - "seatgeek.Performer": { + "publicnews.sportskeedaDepthChartResponseDoc": { "properties": { - "event_count": { - "type": "integer" - }, - "has_upcoming_events": { - "type": "boolean" - }, - "home_venue_id": { - "type": "integer" - }, - "id": { - "example": 1, - "type": "integer" - }, - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "num_upcoming_events": { - "type": "integer" - }, - "popularity": { - "type": "number" - }, - "score": { - "type": "number" - }, - "short_name": { - "type": "string" - }, - "taxonomies": { - "items": { - "$ref": "#/definitions/seatgeek.Taxonomy" - }, - "type": "array" - }, - "type": { - "example": "mlb", - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/sportskeeda.DepthChartResponse" } }, "type": "object" }, - "seatgeek.PerformerEventsResult": { + "publicnews.sportskeedaDraftPicksOptionsResponseDoc": { "properties": { - "events": { - "items": { - "$ref": "#/definitions/seatgeek.Event" - }, - "type": "array" - }, - "page": { - "type": "integer" - }, - "per_page": { - "type": "integer" - }, - "performer_id": { - "type": "integer" - }, - "total": { - "type": "integer" + "data": { + "$ref": "#/definitions/sportskeeda.DraftPicksOptionsResponse" } }, "type": "object" }, - "seatgeek.SearchEvent": { + "publicnews.sportskeedaDraftPicksResponseDoc": { "properties": { - "date_tbd": { - "type": "boolean" - }, - "datetime_local": { - "type": "string" - }, - "datetime_utc": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "lowest_price": { - "type": "number" - }, - "short_title": { - "type": "string" - }, - "time_tbd": { - "type": "boolean" - }, - "title": { - "type": "string" - }, - "type": { - "example": "mlb", - "type": "string" - }, - "url": { - "type": "string" - }, - "venue_location": { - "example": "Los Angeles, CA", - "type": "string" - }, - "venue_name": { - "type": "string" + "data": { + "$ref": "#/definitions/sportskeeda.DraftPicksResponse" } }, "type": "object" }, - "seatgeek.SearchPerformer": { + "publicnews.sportskeedaEventCalendarOptionsResponseDoc": { "properties": { - "event_count": { - "type": "integer" - }, - "id": { - "type": "integer" - }, - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "short_name": { - "type": "string" - }, - "type": { - "example": "mlb", - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/sportskeeda.EventCalendarOptionsResponse" } }, "type": "object" }, - "seatgeek.SearchResult": { + "publicnews.sportskeedaEventCalendarResponseDoc": { "properties": { - "events": { - "items": { - "$ref": "#/definitions/seatgeek.SearchEvent" - }, - "type": "array" - }, - "performers": { - "items": { - "$ref": "#/definitions/seatgeek.SearchPerformer" - }, - "type": "array" - }, - "query": { - "type": "string" - }, - "venues": { - "items": { - "$ref": "#/definitions/seatgeek.SearchVenue" - }, - "type": "array" + "data": { + "$ref": "#/definitions/sportskeeda.EventCalendarResponse" } }, "type": "object" }, - "seatgeek.SearchVenue": { + "publicnews.sportskeedaFeedResponseDoc": { "properties": { - "capacity": { - "type": "integer" - }, - "display_location": { - "example": "Los Angeles, CA", - "type": "string" - }, - "event_count": { - "type": "integer" - }, - "id": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/sportskeeda.FeedResponse" } }, "type": "object" }, - "seatgeek.Taxonomy": { + "publicnews.sportskeedaFootballDataResponseDoc": { "properties": { - "id": { - "example": 1010100, - "type": "integer" - }, - "name": { - "example": "mlb", - "type": "string" - }, - "parent_id": { - "example": 1010000, - "type": "integer" - }, - "seo_event_type": { - "type": "string" + "data": { + "$ref": "#/definitions/sportskeeda.FootballDataResponse" } }, "type": "object" }, - "seatgeek.TrendingItem": { + "publicnews.sportskeedaFootballOptionsResponseDoc": { "properties": { - "entity_id": { - "type": "integer" - }, - "entity_image_url": { - "type": "string" - }, - "entity_name": { - "type": "string" - }, - "entity_type": { - "example": "event", - "type": "string" - }, - "entity_url": { - "type": "string" - }, - "event_datetime_local": { - "type": "string" - }, - "event_datetime_utc": { - "type": "string" - }, - "lowest_price": { - "type": "number" - }, - "rank": { - "type": "integer" - }, - "rank_change": { - "type": "integer" + "data": { + "$ref": "#/definitions/sportskeeda.FootballOptionsResponse" } }, "type": "object" }, - "seatgeek.TrendingResult": { + "publicnews.sportskeedaGuessingGameEntitiesResponseDoc": { "properties": { - "items": { - "items": { - "$ref": "#/definitions/seatgeek.TrendingItem" - }, - "type": "array" - }, - "list_display_name": { - "type": "string" - }, - "list_id": { - "type": "string" - }, - "list_type": { - "type": "string" + "data": { + "$ref": "#/definitions/sportskeeda.GuessingGameEntitiesResponse" } }, "type": "object" }, - "seatgeek.Venue": { + "publicnews.sportskeedaGuessingGameResponseDoc": { "properties": { - "capacity": { - "type": "integer" - }, - "city": { - "type": "string" - }, - "country": { - "example": "US", - "type": "string" - }, - "display_location": { - "example": "Los Angeles, CA", - "type": "string" - }, - "has_upcoming_events": { - "type": "boolean" - }, - "id": { - "type": "integer" - }, - "location": { - "$ref": "#/definitions/seatgeek.GeoLocation" - }, - "name": { - "type": "string" - }, - "num_upcoming_events": { - "type": "integer" - }, - "popularity": { - "type": "number" - }, - "postal_code": { - "type": "string" - }, - "score": { - "type": "number" - }, - "slug": { - "type": "string" - }, - "state": { - "type": "string" - }, - "stats": { - "$ref": "#/definitions/seatgeek.VenueStats" - }, - "timezone": { - "example": "America/New_York", - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/sportskeeda.GuessingGameDataResponse" } }, "type": "object" }, - "seatgeek.VenueEventsResult": { + "publicnews.sportskeedaGuessingGamesResponseDoc": { "properties": { - "events": { - "items": { - "$ref": "#/definitions/seatgeek.Event" - }, - "type": "array" - }, - "page": { - "type": "integer" - }, - "per_page": { - "type": "integer" - }, - "total": { - "type": "integer" - }, - "venue_id": { - "type": "integer" + "data": { + "$ref": "#/definitions/sportskeeda.GuessingGamesResponse" } }, "type": "object" }, - "seatgeek.VenueStats": { + "publicnews.sportskeedaNBAQueriesResponseDoc": { "properties": { - "event_count": { - "type": "integer" + "data": { + "$ref": "#/definitions/sportskeeda.NBAQueriesResponse" } }, "type": "object" }, - "seatgeek.categoriesResponseDoc": { + "publicnews.sportskeedaPageOptionsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.CategoriesResult" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.PageOptionsResponse" } }, "type": "object" }, - "seatgeek.citiesResponseDoc": { + "publicnews.sportskeedaPlayerStatsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.CitiesResult" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.PlayerStatsResponse" } }, "type": "object" }, - "seatgeek.eventResponseDoc": { + "publicnews.sportskeedaProfileResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.Event" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.ProfileResponse" } }, "type": "object" }, - "seatgeek.eventsByCategoryResponseDoc": { + "publicnews.sportskeedaQuizCategoriesResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.EventsByCategoryResult" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.QuizCategoriesResponse" } }, "type": "object" }, - "seatgeek.eventsNearResponseDoc": { + "publicnews.sportskeedaQuizResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.EventsNearResult" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.QuizResponse" } }, "type": "object" }, - "seatgeek.performerEventsResponseDoc": { + "publicnews.sportskeedaQuizzesResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.PerformerEventsResult" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.QuizzesResponse" } }, "type": "object" }, - "seatgeek.performerResponseDoc": { + "publicnews.sportskeedaSalaryCapResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.Performer" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.SalaryCapResponse" } }, "type": "object" }, - "seatgeek.searchResponseDoc": { + "publicnews.sportskeedaSectionsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.SearchResult" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.SectionsResponse" } }, "type": "object" }, - "seatgeek.trendingResponseDoc": { + "publicnews.sportskeedaSitemapItemsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.TrendingResult" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.SitemapItemsResponse" } }, "type": "object" }, - "seatgeek.venueEventsResponseDoc": { + "publicnews.sportskeedaSitemapsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.VenueEventsResult" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.SitemapsResponse" } }, "type": "object" }, - "seatgeek.venueResponseDoc": { + "publicnews.sportskeedaStandingsOptionsResponseDoc": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, "data": { - "$ref": "#/definitions/seatgeek.Venue" - }, - "msg": { - "example": "OK", - "type": "string" + "$ref": "#/definitions/sportskeeda.StandingsOptionsResponse" } }, "type": "object" }, - "seattletimes.AuthorArticle": { + "publicnews.sportskeedaTablesResponseDoc": { "properties": { - "category": { - "type": "string" - }, - "image_url": { - "type": "string" - }, - "published_at": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "title": { - "type": "string" - }, - "url": { - "type": "string" + "data": { + "$ref": "#/definitions/sportskeeda.TablesResponse" } }, "type": "object" }, - "seattletimes.AuthorResponse": { + "publicnews.sportskeedaTaxonomySearchResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.TaxonomySearchResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaTopicResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.TopicResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaTradeValuesResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.TradeValuesResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaTransactionsOptionsResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.TransactionsOptionsResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaTransactionsResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.TransactionsResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaVideoResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.VideoResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaVideosResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.VideosResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaWikiActivityResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.WikiActivityResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaWikiArticleResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.WikiArticleResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaWikiCategoriesResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.WikiCategoriesResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaWikiContributorsResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.WikiContributorsResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaWikiIssuesResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.WikiIssuesResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaWikiOptionsResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.WikiOptionsResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaWikiPagesResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.WikiPagesResponse" + } + }, + "type": "object" + }, + "publicnews.sportskeedaWikiSummaryResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sportskeeda.WikiSummaryResponse" + } + }, + "type": "object" + }, + "publicnews.standardAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/standard.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.straitstimesAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/straitstimes.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.stuffAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/stuff.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.sunAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/sun.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.techCrunchAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/techcrunch.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.techradarAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/techradar.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.telegraphAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/telegraph.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.theBlazeAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/theblaze.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.theHillAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/thehill.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.theHinduAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/thehindu.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.theJournalAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/thejournal.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.theageArticleResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/theage.ArticleResponse" + } + }, + "type": "object" + }, + "publicnews.theageAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/theage.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.thenextwebAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/thenextweb.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.thestarmyAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/thestarmy.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.thevergeAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/theverge.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.thisIsMoneyAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/thisismoney.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.timeAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/time.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.timesOfIndiaAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/timesofindia.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.timesOfIsraelAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/timesofisrael.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.tmzAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/tmz.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.tomsguideAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/tomsguide.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.tomshardwareAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/tomshardware.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.torontoStarAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/torontostar.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.townhallAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/townhall.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.usmagazineAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/usmagazine.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.vanguardngAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/vanguardng.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.vanityFairAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/vanityfair.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.varietyAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/variety.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.viceAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/vice.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.voxAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/vox.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.wccftechAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/wccftech.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.xdaAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/xda.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.yardbarkerAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/yardbarker.AuthorResponse" + } + }, + "type": "object" + }, + "publicnews.zdnetAuthorResponseDoc": { + "properties": { + "data": { + "$ref": "#/definitions/zdnet.AuthorResponse" + } + }, + "type": "object" + }, + "punch.AuthorResponse": { "properties": { "articles": { "items": { - "$ref": "#/definitions/seattletimes.AuthorArticle" + "$ref": "#/definitions/newsplatform.HeadlineItem" }, "type": "array" }, - "bio": { - "type": "string" - }, - "email": { - "type": "string" - }, "name": { "type": "string" }, - "slug": { - "type": "string" - }, - "twitter": { - "type": "string" + "total_pages": { + "type": "integer" }, "url": { "type": "string" @@ -136366,132 +136921,112 @@ }, "type": "object" }, - "sec.CompanyIntelligenceResponse": { + "quince.CategoriesResponse": { "properties": { - "degraded": { + "business_departments": { "items": { - "type": "string" + "$ref": "#/definitions/quince.FacetCount" }, "type": "array" }, - "financial_snapshot": { - "additionalProperties": { - "format": "float64", - "type": "number" + "categories": { + "items": { + "$ref": "#/definitions/quince.FacetCount" }, - "type": "object" - }, - "hiring": { - "$ref": "#/definitions/sec.HiringBlock" - }, - "latest_8k": { - "$ref": "#/definitions/sec.Filing" - }, - "latest_annual_10k": { - "$ref": "#/definitions/sec.Filing" - }, - "latest_quarterly_10q": { - "$ref": "#/definitions/sec.Filing" - }, - "market": { - "allOf": [ - { - "$ref": "#/definitions/sec.MarketBlock" - } - ], - "description": "Optional cross-source enrichment (present only when requested via ?enrich=\nand the source succeeded). Degraded lists sources that were requested but\nunavailable (missing key/provider, upstream failure, or timeout)." + "type": "array" }, - "news": { + "colors": { "items": { - "$ref": "#/definitions/sec.NewsItem" + "$ref": "#/definitions/quince.FacetCount" }, "type": "array" }, - "profile": { - "$ref": "#/definitions/sec.CompanyProfile" - }, - "recent_events": { + "departments": { "items": { - "$ref": "#/definitions/sec.EventFiling" + "$ref": "#/definitions/quince.FacetCount" }, "type": "array" }, - "snapshot_fiscal_year": { - "type": "integer" - }, - "snapshot_period_end": { + "fetched_at": { "type": "string" }, - "source_urls": { + "materials": { "items": { - "type": "string" + "$ref": "#/definitions/quince.FacetCount" + }, + "type": "array" + }, + "sizes": { + "items": { + "$ref": "#/definitions/quince.FacetCount" }, "type": "array" } }, "type": "object" }, - "sec.CompanyMatch": { + "quince.FacetCount": { "properties": { - "cik": { - "example": 320193, + "count": { "type": "integer" }, - "cik_padded": { - "example": "CIK0000320193", + "value": { "type": "string" + } + }, + "type": "object" + }, + "quince.NavCategory": { + "properties": { + "groups": { + "items": { + "$ref": "#/definitions/quince.NavGroup" + }, + "type": "array" }, - "name": { - "example": "Apple Inc.", + "slug": { "type": "string" }, - "ticker": { - "example": "AAPL", + "title": { "type": "string" } }, "type": "object" }, - "sec.CompanyProfile": { + "quince.NavGroup": { "properties": { - "cik": { - "type": "integer" - }, - "name": { - "type": "string" + "links": { + "items": { + "$ref": "#/definitions/quince.NavLink" + }, + "type": "array" }, - "sic": { + "title": { "type": "string" - }, - "sic_description": { + } + }, + "type": "object" + }, + "quince.NavLink": { + "properties": { + "slug": { "type": "string" }, - "ticker": { + "text": { "type": "string" - }, - "tickers": { - "items": { - "type": "string" - }, - "type": "array" } }, "type": "object" }, - "sec.CompanySearchResponse": { + "quince.NavigationResponse": { "properties": { - "count": { - "example": 1, - "type": "integer" - }, - "matches": { + "categories": { "items": { - "$ref": "#/definitions/sec.CompanyMatch" + "$ref": "#/definitions/quince.NavCategory" }, "type": "array" }, - "query": { - "example": "apple", + "fetched_at": { "type": "string" }, "source_url": { @@ -136500,178 +137035,215 @@ }, "type": "object" }, - "sec.EventFiling": { + "quince.Product": { "properties": { - "accession_number": { + "business_department": { "type": "string" }, - "filing_date": { + "category": { "type": "string" }, - "items": { + "color": { "type": "string" }, - "url": { + "currency": { "type": "string" - } - }, - "type": "object" - }, - "sec.Filing": { - "properties": { - "accession_number": { - "example": "0000320193-25-000081", + }, + "department": { "type": "string" }, "description": { "type": "string" }, - "filing_date": { - "example": "2025-10-31", + "gender": { "type": "string" }, - "filing_index_url": { + "handle": { "type": "string" }, - "form": { - "example": "10-K", + "image_url": { "type": "string" }, - "is_xbrl": { + "in_stock": { "type": "boolean" }, - "items": { - "type": "string" + "material": { + "items": { + "type": "string" + }, + "type": "array" }, - "primary_doc_url": { - "type": "string" + "max_price": { + "type": "number" }, - "primary_document": { + "min_price": { + "type": "number" + }, + "primary_colors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "product_id": { + "type": "integer" + }, + "product_type": { "type": "string" }, - "report_date": { - "example": "2025-09-27", + "sizes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { "type": "string" }, - "size": { - "type": "integer" + "url": { + "type": "string" } }, "type": "object" }, - "sec.FilingDocument": { + "quince.ProductFAQItem": { "properties": { - "name": { + "answer": { "type": "string" }, - "url": { + "question": { "type": "string" } }, "type": "object" }, - "sec.FilingResponse": { + "quince.ProductFAQResponse": { "properties": { - "accession_number": { - "example": "0000320193-25-000081", + "fetched_at": { "type": "string" }, - "cik": { - "type": "integer" - }, - "cik_padded": { + "handle": { "type": "string" }, - "description": { + "questions": { + "items": { + "$ref": "#/definitions/quince.ProductFAQItem" + }, + "type": "array" + }, + "source_url": { + "type": "string" + } + }, + "type": "object" + }, + "quince.ProductOptionGroup": { + "properties": { + "name": { "type": "string" }, - "documents": { + "values": { "items": { - "$ref": "#/definitions/sec.FilingDocument" + "$ref": "#/definitions/quince.ProductOptionValue" }, "type": "array" - }, - "filing_date": { - "example": "2025-10-31", + } + }, + "type": "object" + }, + "quince.ProductOptionValue": { + "properties": { + "display_name": { "type": "string" }, - "filing_index_url": { + "display_type": { "type": "string" }, - "form": { - "example": "10-K", + "hex_code": { "type": "string" }, - "is_xbrl": { - "type": "boolean" + "value": { + "type": "string" + } + }, + "type": "object" + }, + "quince.ProductResponse": { + "properties": { + "average_rating": { + "type": "number" }, - "items": { + "country": { "type": "string" }, - "name": { + "description": { "type": "string" }, - "primary_doc_url": { + "fetched_at": { "type": "string" }, - "primary_document": { + "gender": { "type": "string" }, - "report_date": { - "example": "2025-09-27", + "handle": { "type": "string" }, - "size": { + "images": { + "items": { + "type": "string" + }, + "type": "array" + }, + "options": { + "items": { + "$ref": "#/definitions/quince.ProductOptionGroup" + }, + "type": "array" + }, + "product_id": { "type": "integer" }, - "source_url": { + "product_type": { "type": "string" - } - }, - "type": "object" - }, - "sec.FilingSection": { - "properties": { - "char_count": { + }, + "review_count": { "type": "integer" }, - "item": { - "example": "1A", + "source_url": { "type": "string" }, - "text": { + "title": { "type": "string" }, - "title": { - "example": "Risk Factors", + "url": { "type": "string" }, - "truncated": { - "type": "boolean" + "variants": { + "items": { + "$ref": "#/definitions/quince.ProductVariant" + }, + "type": "array" } }, "type": "object" }, - "sec.FilingSectionsResponse": { + "quince.ProductReviewsResponse": { "properties": { - "accession_number": { - "type": "string" - }, - "cik": { - "type": "integer" - }, - "count": { - "type": "integer" + "average_rating": { + "type": "number" }, - "document_url": { + "fetched_at": { "type": "string" }, - "form": { + "handle": { "type": "string" }, - "sections": { + "review_count": { + "type": "integer" + }, + "reviews": { "items": { - "$ref": "#/definitions/sec.FilingSection" + "$ref": "#/definitions/quince.Review" }, "type": "array" }, @@ -136681,487 +137253,197 @@ }, "type": "object" }, - "sec.FinancialPeriod": { + "quince.ProductVariant": { "properties": { "currency": { - "example": "USD", "type": "string" }, - "end_date": { - "type": "string" - }, - "fiscal_period": { - "example": "FY", - "type": "string" - }, - "fiscal_year": { + "id": { "type": "integer" }, - "form": { - "type": "string" - }, - "lines": { - "additionalProperties": { - "format": "float64", - "type": "number" - }, - "type": "object" + "in_stock": { + "type": "boolean" }, - "ratios": { + "options": { "additionalProperties": { - "format": "float64", - "type": "number" + "type": "string" }, - "description": "Ratios are computed, normalized metrics derived from the lines (margins,\ncurrent ratio, debt-to-equity, free cash flow, YoY revenue growth) — a\nvalue-add over the raw statement figures.", "type": "object" - } - }, - "type": "object" - }, - "sec.FinancialsResponse": { - "properties": { - "cik": { - "type": "integer" }, - "line_order": { - "items": { - "type": "string" - }, - "type": "array" + "price": { + "type": "number" }, - "name": { + "savings": { "type": "string" }, - "period": { - "example": "annual", + "sku": { "type": "string" }, - "periods": { - "items": { - "$ref": "#/definitions/sec.FinancialPeriod" - }, - "type": "array" - }, - "source_url": { + "status": { "type": "string" }, - "statement": { - "example": "income", + "title": { "type": "string" }, - "ticker": { - "type": "string" + "traditional_retail_price": { + "type": "number" } }, "type": "object" }, - "sec.FrameFact": { + "quince.Review": { "properties": { - "accession_number": { - "type": "string" - }, - "cik": { - "type": "integer" - }, - "end": { - "type": "string" - }, - "entity_name": { + "author": { "type": "string" }, - "form": { + "body": { "type": "string" }, - "start": { + "date_published": { "type": "string" }, - "value": { + "rating": { "type": "number" } }, "type": "object" }, - "sec.FramesResponse": { + "quince.SearchResponse": { "properties": { - "concept": { - "example": "Assets", + "category": { + "type": "string" + }, + "color": { "type": "string" }, "count": { "type": "integer" }, - "facts": { - "items": { - "$ref": "#/definitions/sec.FrameFact" - }, - "type": "array" - }, - "period": { - "example": "CY2024Q4I", + "country": { "type": "string" }, - "source_url": { + "department": { "type": "string" }, - "taxonomy": { - "example": "us-gaap", + "fetched_at": { "type": "string" }, - "total": { + "limit": { "type": "integer" }, - "unit": { - "example": "USD", - "type": "string" - } - }, - "type": "object" - }, - "sec.FullTextHit": { - "properties": { - "accession_number": { + "material": { "type": "string" }, - "cik": { + "max_price": { + "type": "number" + }, + "min_price": { + "type": "number" + }, + "page": { "type": "integer" }, - "company_names": { + "products": { "items": { - "type": "string" + "$ref": "#/definitions/quince.Product" }, "type": "array" }, - "document_url": { + "query": { "type": "string" }, - "filed_at": { + "size": { "type": "string" }, - "form": { + "source_url": { "type": "string" + }, + "total_pages": { + "type": "integer" + }, + "total_results": { + "type": "integer" } }, "type": "object" }, - "sec.FullTextSearchResponse": { + "quince.SitemapItem": { "properties": { - "count": { - "type": "integer" - }, - "hits": { - "items": { - "$ref": "#/definitions/sec.FullTextHit" - }, - "type": "array" - }, - "page": { - "type": "integer" - }, - "query": { + "loc": { "type": "string" }, - "source_url": { + "type": { "type": "string" - }, - "total": { - "type": "integer" } }, "type": "object" }, - "sec.HiringBlock": { + "quince.SitemapURLItem": { "properties": { - "new_last_30d": { - "type": "integer" - }, - "provider": { + "handle": { "type": "string" }, - "remote_pct": { - "type": "number" - }, - "source_url": { + "loc": { "type": "string" }, - "top_departments": { - "items": { - "$ref": "#/definitions/sec.NameCount" - }, - "type": "array" - }, - "total_open_roles": { - "type": "integer" + "type": { + "type": "string" } }, "type": "object" }, - "sec.Holding": { + "quince.SitemapURLsResponse": { "properties": { - "cusip": { - "type": "string" - }, - "investment_discretion": { - "type": "string" - }, - "issuer": { + "fetched_at": { "type": "string" }, - "put_call": { - "type": "string" + "limit": { + "type": "integer" }, - "share_type": { + "source_url": { "type": "string" }, - "shares": { - "type": "number" - }, - "title_of_class": { + "type": { "type": "string" }, - "value": { - "type": "number" + "urls": { + "items": { + "$ref": "#/definitions/quince.SitemapURLItem" + }, + "type": "array" } }, "type": "object" }, - "sec.HoldingsResponse": { + "quince.SitemapsResponse": { "properties": { - "accession_number": { - "type": "string" - }, - "cik": { - "type": "integer" - }, - "count": { - "type": "integer" - }, - "filing_date": { + "fetched_at": { "type": "string" }, - "holdings": { + "sitemaps": { "items": { - "$ref": "#/definitions/sec.Holding" + "$ref": "#/definitions/quince.SitemapItem" }, "type": "array" }, - "manager_name": { + "source_url": { + "type": "string" + } + }, + "type": "object" + }, + "quince.SuggestResponse": { + "properties": { + "fetched_at": { "type": "string" }, - "report_date": { + "query": { "type": "string" }, "source_url": { "type": "string" }, - "total_holdings": { - "type": "integer" - }, - "total_value": { - "type": "number" - } - }, - "type": "object" - }, - "sec.InsiderResponse": { - "properties": { - "cik": { - "type": "integer" - }, - "count": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "source_url": { - "type": "string" - }, - "ticker": { - "type": "string" - }, - "transactions": { - "items": { - "$ref": "#/definitions/sec.InsiderTransaction" - }, - "type": "array" - } - }, - "type": "object" - }, - "sec.InsiderTransaction": { - "properties": { - "accession_number": { - "type": "string" - }, - "acquired_or_disposed": { - "type": "string" - }, - "code": { - "type": "string" - }, - "filing_date": { - "type": "string" - }, - "filing_url": { - "type": "string" - }, - "form": { - "type": "string" - }, - "is_director": { - "type": "boolean" - }, - "is_officer": { - "type": "boolean" - }, - "is_ten_percent_owner": { - "type": "boolean" - }, - "owner_name": { - "type": "string" - }, - "owner_title": { - "type": "string" - }, - "price_per_share": { - "type": "number" - }, - "security_title": { - "type": "string" - }, - "shares": { - "type": "number" - }, - "shares_owned_after": { - "type": "number" - }, - "transaction_date": { - "type": "string" - } - }, - "type": "object" - }, - "sec.MarketBlock": { - "properties": { - "change_percent": { - "type": "number" - }, - "currency": { - "type": "string" - }, - "day_high": { - "type": "number" - }, - "day_low": { - "type": "number" - }, - "market_cap": { - "type": "number" - }, - "name": { - "type": "string" - }, - "price": { - "type": "number" - }, - "symbol": { - "type": "string" - } - }, - "type": "object" - }, - "sec.NameCount": { - "properties": { - "count": { - "type": "integer" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - "sec.NewsItem": { - "properties": { - "published_at": { - "type": "string" - }, - "publisher": { - "type": "string" - }, - "title": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "type": "object" - }, - "sec.SubmissionsResponse": { - "properties": { - "category": { - "example": "Large accelerated filer", - "type": "string" - }, - "cik": { - "example": 320193, - "type": "integer" - }, - "cik_padded": { - "example": "CIK0000320193", - "type": "string" - }, - "count": { - "type": "integer" - }, - "entity_type": { - "example": "operating", - "type": "string" - }, - "exchanges": { - "example": [ - "Nasdaq" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "filings": { - "items": { - "$ref": "#/definitions/sec.Filing" - }, - "type": "array" - }, - "fiscal_year_end": { - "example": "0930", - "type": "string" - }, - "former_names": { - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "example": "Apple Inc.", - "type": "string" - }, - "sic": { - "type": "string" - }, - "sic_description": { - "type": "string" - }, - "source_url": { - "type": "string" - }, - "state_of_incorporation": { - "example": "CA", - "type": "string" - }, - "tickers": { + "suggestions": { "items": { "type": "string" }, @@ -137170,30 +137452,14 @@ }, "type": "object" }, - "sec.companySearchResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/sec.CompanySearchResponse" - }, - "msg": { - "example": "OK", - "type": "string" - } - }, - "type": "object" - }, - "sec.filingResponseDoc": { + "quince.categoriesResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sec.FilingResponse" + "$ref": "#/definitions/quince.CategoriesResponse" }, "msg": { "example": "OK", @@ -137202,14 +137468,14 @@ }, "type": "object" }, - "sec.filingSectionsResponseDoc": { + "quince.navigationResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sec.FilingSectionsResponse" + "$ref": "#/definitions/quince.NavigationResponse" }, "msg": { "example": "OK", @@ -137218,14 +137484,14 @@ }, "type": "object" }, - "sec.financialsResponseDoc": { + "quince.productFAQResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sec.FinancialsResponse" + "$ref": "#/definitions/quince.ProductFAQResponse" }, "msg": { "example": "OK", @@ -137234,14 +137500,14 @@ }, "type": "object" }, - "sec.framesResponseDoc": { + "quince.productResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sec.FramesResponse" + "$ref": "#/definitions/quince.ProductResponse" }, "msg": { "example": "OK", @@ -137250,14 +137516,14 @@ }, "type": "object" }, - "sec.fullTextResponseDoc": { + "quince.productReviewsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sec.FullTextSearchResponse" + "$ref": "#/definitions/quince.ProductReviewsResponse" }, "msg": { "example": "OK", @@ -137266,14 +137532,14 @@ }, "type": "object" }, - "sec.holdingsResponseDoc": { + "quince.searchResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sec.HoldingsResponse" + "$ref": "#/definitions/quince.SearchResponse" }, "msg": { "example": "OK", @@ -137282,14 +137548,14 @@ }, "type": "object" }, - "sec.insiderResponseDoc": { + "quince.sitemapURLsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sec.InsiderResponse" + "$ref": "#/definitions/quince.SitemapURLsResponse" }, "msg": { "example": "OK", @@ -137298,14 +137564,14 @@ }, "type": "object" }, - "sec.intelligenceResponseDoc": { + "quince.sitemapsResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sec.CompanyIntelligenceResponse" + "$ref": "#/definitions/quince.SitemapsResponse" }, "msg": { "example": "OK", @@ -137314,14 +137580,14 @@ }, "type": "object" }, - "sec.submissionsResponseDoc": { + "quince.suggestResponseDoc": { "properties": { "code": { "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sec.SubmissionsResponse" + "$ref": "#/definitions/quince.SuggestResponse" }, "msg": { "example": "OK", @@ -137330,82 +137596,52 @@ }, "type": "object" }, - "sephora.Answer": { + "raisingcanes.DirectoryChild": { "properties": { - "author": { - "type": "string" - }, - "helpful_votes": { - "type": "integer" - }, - "id": { - "type": "string" - }, - "is_brand_answer": { + "is_store": { + "description": "IsStore marks a child that is a store page rather than another\ndirectory level -- call /raisingcanes/store with its path.", + "example": false, "type": "boolean" }, - "not_helpful_votes": { - "type": "integer" - }, - "submitted_at": { + "name": { + "example": "Louisiana", "type": "string" }, - "text": { - "type": "string" - } - }, - "type": "object" - }, - "sephora.Brand": { - "properties": { - "brand_id": { - "example": "5644", + "path": { + "example": "la", "type": "string" }, - "is_new": { - "type": "boolean" - }, - "name": { - "example": "Lancôme", - "type": "string" + "store_count": { + "description": "StoreCount is how many stores sit under this branch, as Yext reports\nit. Absent on the deepest level, where children are stores themselves.", + "example": 144, + "type": "integer" }, - "slug": { - "example": "lancome", + "url": { "type": "string" } }, "type": "object" }, - "sephora.BrandsResponse": { + "raisingcanes.DirectoryResponse": { "properties": { - "brands": { + "children": { "items": { - "$ref": "#/definitions/sephora.Brand" + "$ref": "#/definitions/raisingcanes.DirectoryChild" }, "type": "array" }, + "count": { + "example": 38, + "type": "integer" + }, "fetched_at": { "type": "string" }, - "source_url": { + "name": { "type": "string" }, - "total_count": { - "example": 373, - "type": "integer" - } - }, - "type": "object" - }, - "sephora.CategoriesResponse": { - "properties": { - "categories": { - "items": { - "$ref": "#/definitions/sephora.CategoryEntry" - }, - "type": "array" - }, - "fetched_at": { + "path": { + "example": "la", "type": "string" }, "source_url": { @@ -137414,2524 +137650,2553 @@ }, "type": "object" }, - "sephora.CategoryEntry": { + "raisingcanes.MenuItem": { "properties": { - "department": { - "example": "makeup", + "description": { + "description": "Description is Raising Cane's own published item description,\nexactly as written -- it commonly ends with a calorie count or range\n(e.g. \"... 1290 - 1720 Cal\"), but the wording is not structured\nenough to split into separate fields reliably across every item.", + "example": "4 Chicken Fingers, Crinkle-Cut Fries, One Cane's Sauce®, Texas Toast, Coleslaw, Regular Fountain Drink/Tea (22 oz.) 1290 - 1720 Cal", "type": "string" }, - "group": { - "example": "Eye", + "image_url": { "type": "string" }, "name": { - "example": "Mascara", - "type": "string" - }, - "slug": { - "example": "mascara", + "example": "The Box Combo®", "type": "string" } }, "type": "object" }, - "sephora.CategoryResponse": { + "raisingcanes.MenuResponse": { "properties": { - "brand": { - "items": { - "type": "string" - }, - "type": "array" - }, - "category_id": { - "type": "string" - }, "count": { + "example": 23, "type": "integer" }, - "display_name": { - "example": "Makeup", - "type": "string" - }, "fetched_at": { "type": "string" }, - "filter": { - "items": { - "type": "string" - }, - "type": "array" - }, - "is_new": { - "type": "boolean" - }, - "page": { - "example": 1, - "type": "integer" - }, - "page_size": { - "example": 60, - "type": "integer" - }, - "price_max": { - "type": "integer" - }, - "price_min": { - "type": "integer" - }, - "products": { - "items": { - "$ref": "#/definitions/sephora.SearchProduct" - }, - "type": "array" - }, - "rating_min": { - "type": "integer" - }, - "related_categories": { + "sections": { "items": { - "type": "string" + "$ref": "#/definitions/raisingcanes.MenuSection" }, "type": "array" }, - "slug": { - "example": "makeup-cosmetics", - "type": "string" - }, - "sort_by": { - "example": "featured", - "type": "string" - }, "source_url": { "type": "string" - }, - "total_products": { - "example": 2492, - "type": "integer" } }, "type": "object" }, - "sephora.FullReview": { + "raisingcanes.MenuSection": { "properties": { - "author": { - "type": "string" - }, - "body": { - "type": "string" - }, - "helpful_votes": { - "type": "integer" - }, - "id": { + "anchor": { + "description": "Anchor is the section's in-page anchor slug, e.g. \"combos\".", + "example": "combos", "type": "string" }, - "location": { + "headline": { + "example": "Combos", "type": "string" }, - "not_helpful_votes": { - "type": "integer" - }, - "photo_urls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "rating": { - "type": "integer" - }, - "ratings_only": { - "description": "RatingsOnly marks a review that carries only a star rating with no\nwritten title/body -- Bazaarvoice allows these and this endpoint still\nsurfaces them.", - "type": "boolean" - }, - "recommended": { - "type": "boolean" - }, - "secondary_ratings": { + "items": { "items": { - "$ref": "#/definitions/sephora.ReviewSecondaryRating" + "$ref": "#/definitions/raisingcanes.MenuItem" }, "type": "array" - }, - "submitted_at": { - "type": "string" - }, - "title": { - "type": "string" } }, "type": "object" }, - "sephora.ProductQuestionsResponse": { + "raisingcanes.NearbyResponse": { "properties": { "count": { + "example": 10, "type": "integer" }, "fetched_at": { "type": "string" }, - "page": { - "type": "integer" - }, - "page_size": { + "radius": { + "example": 25, "type": "integer" }, - "product_id": { + "source_url": { "type": "string" }, - "questions": { + "stores": { "items": { - "$ref": "#/definitions/sephora.Question" + "$ref": "#/definitions/raisingcanes.NearbyStore" }, "type": "array" }, - "source_url": { - "type": "string" - }, - "total_pages": { - "type": "integer" - }, - "total_questions": { + "total_in_radius": { + "description": "TotalInRadius is how many stores fall inside the radius overall, which\nis usually far more than one page. Use it with `offset` to page.", + "example": 69, "type": "integer" } }, "type": "object" }, - "sephora.ProductResponse": { + "raisingcanes.NearbyStore": { "properties": { - "brand": { - "example": "LANEIGE", - "type": "string" + "address": { + "$ref": "#/definitions/raisingcanes.StoreAddress" }, - "category": { - "type": "string" + "distance_kilometers": { + "example": 0.42, + "type": "number" }, - "description": { - "type": "string" + "distance_miles": { + "description": "DistanceMiles is measured from the requested coordinate.", + "example": 0.26, + "type": "number" }, - "fetched_at": { - "type": "string" + "fulfillment_services": { + "description": "FulfillmentServices are the pickup/delivery service flags Raising\nCane's publishes for this store, e.g. IN_STORE_PICKUP,\nDELIVERY_NOT_OFFERED.", + "items": { + "type": "string" + }, + "type": "array" }, - "image": { - "type": "string" + "latitude": { + "example": 40.710412, + "type": "number" + }, + "longitude": { + "example": -74.009937, + "type": "number" }, "name": { + "example": "Raising Cane's Chicken Fingers", "type": "string" }, - "product_group_id": { - "example": "P420652", + "path": { + "description": "Path is the /raisingcanes/store path for this store, so a caller can\ngo straight to the detail endpoint.", "type": "string" }, - "rating": { - "example": 4.3, - "type": "number" - }, - "review_count": { - "type": "integer" - }, - "review_sample": { - "items": { - "$ref": "#/definitions/sephora.ReviewSample" - }, - "type": "array" - }, - "source_url": { + "price_range": { + "description": "PriceRange is Raising Cane's own relative price tier, e.g. ONE.", + "example": "ONE", "type": "string" }, - "url": { + "store_id": { + "example": "C986", "type": "string" }, - "variants": { - "items": { - "$ref": "#/definitions/sephora.Variant" - }, - "type": "array" + "timezone": { + "example": "America/New_York", + "type": "string" } }, "type": "object" }, - "sephora.ProductReviewsResponse": { + "raisingcanes.PromotionCategory": { "properties": { - "average_rating": { - "type": "number" - }, - "count": { - "type": "integer" - }, - "fetched_at": { - "type": "string" - }, - "page": { - "type": "integer" - }, - "page_size": { - "type": "integer" - }, - "product_id": { + "heading": { + "example": "Sweepstakes & Giveaways", "type": "string" }, - "rating_count": { - "description": "RatingCount, AverageRating, RecommendedRatio, and RatingHistogram are\nthe product's site-wide aggregate rating summary, not just this page --\nabsent (zero-valued) for a product with no reviews yet.", - "type": "integer" - }, - "rating_histogram": { - "description": "RatingHistogram is the count of ratings per star, ascending: index 0 is\n1-star, index 4 is 5-star.", - "items": { - "type": "integer" - }, - "type": "array" - }, - "recommended_ratio": { - "type": "number" - }, - "reviews": { + "promotions": { "items": { - "$ref": "#/definitions/sephora.FullReview" + "$ref": "#/definitions/raisingcanes.PromotionSummary" }, "type": "array" - }, - "source_url": { - "type": "string" - }, - "total_pages": { - "type": "integer" - }, - "total_reviews": { - "type": "integer" } }, "type": "object" }, - "sephora.Question": { + "raisingcanes.PromotionResponse": { "properties": { - "answer_count": { - "type": "integer" - }, - "answers": { + "description": { + "description": "Description is Raising Cane's own official-rules text for this\npromotion, kept as separate paragraphs in publication order rather\nthan joined into one string -- unlike a menu item's short blurb, this\nis often multi-paragraph legal text (eligibility, prize value,\neffective date each their own paragraph) where the paragraph breaks\ncarry real structure.", "items": { - "$ref": "#/definitions/sephora.Answer" + "type": "string" }, "type": "array" }, - "author": { + "fetched_at": { "type": "string" }, - "has_best_answer": { - "type": "boolean" - }, - "id": { + "path": { + "example": "first-50-promotion", "type": "string" }, - "submitted_at": { + "source_url": { "type": "string" }, - "text": { + "title": { + "example": "First 50 Promotion Details", "type": "string" } }, "type": "object" }, - "sephora.ReviewSample": { + "raisingcanes.PromotionSummary": { "properties": { - "author": { - "type": "string" - }, - "body": { - "type": "string" - }, - "date_published": { - "type": "string" - }, - "id": { + "name": { + "example": "First 50 Promotion Details", "type": "string" }, - "rating": { - "type": "number" - }, - "title": { + "path": { + "description": "Path is the promotion's page slug, usable as the path parameter on\nGET /raisingcanes/promotion. It is empty when Raising Cane's own\nindex links a since-expired promotion back to the homepage instead\nof removing the entry (a real, observed upstream data quality\npattern) -- a caller should treat an empty path as \"no longer\nresolvable\" rather than retry it.", + "example": "first-50-promotion", "type": "string" } }, "type": "object" }, - "sephora.ReviewSecondaryRating": { + "raisingcanes.PromotionsResponse": { "properties": { - "max_value": { - "example": 5, + "categories": { + "items": { + "$ref": "#/definitions/raisingcanes.PromotionCategory" + }, + "type": "array" + }, + "count": { + "example": 53, "type": "integer" }, - "name": { - "example": "Value", + "fetched_at": { "type": "string" }, - "value": { - "example": 4, - "type": "integer" + "source_url": { + "type": "string" } }, "type": "object" }, - "sephora.SearchProduct": { + "raisingcanes.StoreAddress": { "properties": { - "brand_name": { - "example": "tarte", + "city": { + "example": "Gonzales", "type": "string" }, - "image_url": { + "country": { + "example": "US", "type": "string" }, - "list_price": { - "example": "$25.00", + "line1": { + "example": "625 Airline Hwy", "type": "string" }, - "more_colors": { - "type": "integer" - }, - "product_id": { - "example": "P520769", + "line2": { "type": "string" }, - "product_name": { + "postal_code": { + "example": "70737", "type": "string" }, - "rating": { - "example": 4.5, - "type": "number" - }, - "review_count": { - "type": "integer" - }, - "sku_id": { + "region": { + "example": "LA", "type": "string" - }, - "sponsored": { + } + }, + "type": "object" + }, + "raisingcanes.StoreHours": { + "properties": { + "closed": { + "description": "Closed is true when Raising Cane's publishes the day with no open\ninterval.", + "example": false, "type": "boolean" }, - "url": { + "closes": { + "example": "00:00", "type": "string" }, - "value_price": { + "day_of_week": { + "example": "Monday", + "type": "string" + }, + "opens": { + "example": "09:00", "type": "string" } }, "type": "object" }, - "sephora.SearchResponse": { + "raisingcanes.StoreResponse": { "properties": { - "brand": { + "address": { + "$ref": "#/definitions/raisingcanes.StoreAddress" + }, + "amenities": { + "description": "Amenities are Raising Cane's own per-store amenity labels, e.g.\nDRIVE_THRU, LATE_NIGHT, CURBSIDE_PICKUP.", "items": { "type": "string" }, "type": "array" }, - "count": { - "type": "integer" - }, - "fetched_at": { - "type": "string" - }, - "filter": { + "dine_in_hours": { + "description": "DineInHours and DriveThroughHours are Raising Cane's own per-channel\nhours. They commonly match Hours but are published separately and can\ndiffer (e.g. a later drive-thru close).", "items": { - "type": "string" + "$ref": "#/definitions/raisingcanes.StoreHours" }, "type": "array" }, - "is_new": { - "type": "boolean" - }, - "page": { - "example": 1, - "type": "integer" - }, - "page_size": { - "example": 60, - "type": "integer" - }, - "price_max": { - "example": 30, - "type": "integer" - }, - "price_min": { - "example": 15, - "type": "integer" - }, - "products": { + "drive_through_hours": { "items": { - "$ref": "#/definitions/sephora.SearchProduct" + "$ref": "#/definitions/raisingcanes.StoreHours" }, "type": "array" }, - "query": { - "example": "mascara", + "fetched_at": { "type": "string" }, - "rating_min": { - "example": 4, - "type": "integer" - }, - "related_searches": { + "fulfillment_services": { + "description": "FulfillmentServices are the pickup/delivery service flags Raising\nCane's publishes for this store, e.g. IN_STORE_PICKUP,\nCURBSIDE_PICKUP, DELIVERY_NOT_OFFERED.", "items": { "type": "string" }, "type": "array" }, - "sort_by": { - "example": "featured", - "type": "string" - }, - "source_url": { - "type": "string" - }, - "total_products": { - "example": 180, - "type": "integer" - } - }, - "type": "object" - }, - "sephora.Store": { - "properties": { - "address": { - "$ref": "#/definitions/sephora.StoreAddress" - }, - "display_name": { - "example": "STATE STREET", + "google_place_id": { "type": "string" }, - "distance_miles": { - "example": 0.2, - "type": "number" - }, "hours": { - "$ref": "#/definitions/sephora.StoreHours" - }, - "is_bopisable": { - "type": "boolean" - }, - "is_curbside_enabled": { - "type": "boolean" - }, - "is_online_reservation_enabled": { - "type": "boolean" + "description": "Hours is the store's general published week of hours.", + "items": { + "$ref": "#/definitions/raisingcanes.StoreHours" + }, + "type": "array" }, "latitude": { + "example": 30.2371547, "type": "number" }, "longitude": { + "example": -90.9132179, "type": "number" }, - "same_day_delivery_enabled": { - "type": "boolean" + "name": { + "example": "Raising Cane's Chicken Fingers", + "type": "string" }, - "store_id": { - "example": "0662", + "path": { "type": "string" }, - "store_type": { - "example": "SEPHORA", + "phone_number": { + "example": "(225) 407-4134", "type": "string" }, - "url": { + "source_url": { + "type": "string" + }, + "store_id": { + "example": "C10", "type": "string" } }, "type": "object" }, - "sephora.StoreAddress": { + "raisingcanes.directoryResponseDoc": { "properties": { - "address1": { - "type": "string" - }, - "address2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "mall_name": { - "type": "string" - }, - "phone": { - "type": "string" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "postal_code": { - "type": "string" + "data": { + "$ref": "#/definitions/raisingcanes.DirectoryResponse" }, - "state": { - "type": "string" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "sephora.StoreHours": { + "raisingcanes.menuResponseDoc": { "properties": { - "friday": { - "type": "string" - }, - "monday": { - "type": "string" - }, - "saturday": { - "type": "string" - }, - "sunday": { - "type": "string" - }, - "thursday": { - "type": "string" - }, - "time_zone": { - "example": "America/Chicago", - "type": "string" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "tuesday": { - "type": "string" + "data": { + "$ref": "#/definitions/raisingcanes.MenuResponse" }, - "wednesday": { - "type": "string" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "sephora.StoresResponse": { + "raisingcanes.nearbyResponseDoc": { "properties": { - "count": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, - "fetched_at": { - "type": "string" + "data": { + "$ref": "#/definitions/raisingcanes.NearbyResponse" }, - "latitude": { - "example": 41.88325, - "type": "number" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "raisingcanes.promotionResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "longitude": { - "example": -87.6323879, - "type": "number" + "data": { + "$ref": "#/definitions/raisingcanes.PromotionResponse" }, - "radius": { - "example": 50, + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + } + }, + "type": "object" + }, + "raisingcanes.promotionsResponseDoc": { + "properties": { + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", "type": "integer" }, - "source_url": { - "type": "string" + "data": { + "$ref": "#/definitions/raisingcanes.PromotionsResponse" }, - "stores": { - "items": { - "$ref": "#/definitions/sephora.Store" - }, - "type": "array" + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "sephora.SuggestCategory": { + "raisingcanes.storeResponseDoc": { "properties": { - "name": { - "example": "Mascara", - "type": "string" + "code": { + "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "type": "integer" }, - "url": { - "example": "https://www.sephora.com/shop/mascara", - "type": "string" + "data": { + "$ref": "#/definitions/raisingcanes.StoreResponse" + }, + "msg": { + "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" } }, "type": "object" }, - "sephora.SuggestProduct": { + "rappler.AuthorArticle": { "properties": { - "brand_name": { - "example": "ILIA", - "type": "string" - }, - "image_url": { + "published_at": { "type": "string" }, - "product_id": { - "example": "P431750", + "section": { "type": "string" }, - "product_name": { + "title": { "type": "string" }, - "rating": { - "example": 4.1361, - "type": "number" - }, - "review_count": { - "type": "integer" - }, - "sku_id": { + "url": { "type": "string" } }, "type": "object" }, - "sephora.SuggestResponse": { + "rappler.AuthorResponse": { "properties": { - "categories": { + "articles": { "items": { - "$ref": "#/definitions/sephora.SuggestCategory" + "$ref": "#/definitions/rappler.AuthorArticle" }, "type": "array" }, - "fetched_at": { + "bio": { "type": "string" }, - "products": { - "items": { - "$ref": "#/definitions/sephora.SuggestProduct" - }, - "type": "array" - }, - "query": { - "example": "masc", + "name": { "type": "string" }, - "source_url": { + "slug": { "type": "string" }, - "terms": { + "social_links": { "items": { - "$ref": "#/definitions/sephora.SuggestTerm" + "type": "string" }, "type": "array" + }, + "url": { + "type": "string" } }, "type": "object" }, - "sephora.SuggestTerm": { + "rawstory.AuthorArticle": { "properties": { - "term": { - "example": "mascara", + "published_at": { + "description": "PublishedAt is the story's publication date (YYYY-MM-DD); the author\nlisting carries the date but not the time of day.", + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "sephora.Variant": { + "rawstory.AuthorResponse": { "properties": { - "availability": { - "example": "InStock", - "type": "string" - }, - "color": { - "example": "Acai Mango Smoothie", - "type": "string" + "articles": { + "items": { + "$ref": "#/definitions/rawstory.AuthorArticle" + }, + "type": "array" }, - "currency_code": { - "example": "USD", + "bio": { "type": "string" }, - "image": { + "image_url": { "type": "string" }, "name": { "type": "string" }, - "price": { - "example": "25.00", + "slug": { "type": "string" }, - "sku": { + "social_links": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { "type": "string" } }, "type": "object" }, - "sephora.brandsResponseDoc": { + "reachplc.AuthorArticle": { "properties": { - "code": { - "example": 200, - "type": "integer" + "label": { + "type": "string" }, - "data": { - "$ref": "#/definitions/sephora.BrandsResponse" + "label_url": { + "type": "string" }, - "msg": { - "example": "OK", + "title": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "sephora.categoriesResponseDoc": { + "reachplc.AuthorResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" + "articles": { + "items": { + "$ref": "#/definitions/reachplc.AuthorArticle" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/sephora.CategoriesResponse" + "bio": { + "type": "string" }, - "msg": { - "example": "OK", + "email": { "type": "string" - } - }, - "type": "object" - }, - "sephora.categoryResponseDoc": { - "properties": { - "code": { - "example": 200, - "type": "integer" }, - "data": { - "$ref": "#/definitions/sephora.CategoryResponse" + "has_next_page": { + "type": "boolean" }, - "msg": { - "example": "OK", + "job_title": { "type": "string" - } - }, - "type": "object" - }, - "sephora.productQuestionsResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "name": { + "type": "string" + }, + "page": { "type": "integer" }, - "data": { - "$ref": "#/definitions/sephora.ProductQuestionsResponse" + "slug": { + "type": "string" }, - "msg": { - "example": "OK", + "twitter": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "sephora.productResponseDoc": { + "reddit.Author": { "properties": { - "code": { - "example": 200, - "type": "integer" - }, - "data": { - "$ref": "#/definitions/sephora.ProductResponse" + "name": { + "example": "reddit_user", + "type": "string" }, - "msg": { - "example": "OK", + "profile_url": { + "example": "https://www.reddit.com/user/reddit_user/", "type": "string" } }, "type": "object" }, - "sephora.productReviewsResponseDoc": { + "reddit.Comment": { "properties": { - "code": { - "example": 200, + "author": { + "$ref": "#/definitions/reddit.Author" + }, + "award_count": { "type": "integer" }, - "data": { - "$ref": "#/definitions/sephora.ProductReviewsResponse" + "body": { + "example": "I agree with this post.", + "type": "string" }, - "msg": { - "example": "OK", + "created": { + "example": "2024-04-19T00:00:00Z", "type": "string" - } - }, - "type": "object" - }, - "sephora.searchResponseDoc": { - "properties": { - "code": { - "example": 200, + }, + "created_utc": { + "example": 1713484800, "type": "integer" }, - "data": { - "$ref": "#/definitions/sephora.SearchResponse" + "depth": { + "example": 1, + "type": "integer" }, - "msg": { - "example": "OK", + "id": { + "example": "kabc123", + "type": "string" + }, + "name": { + "example": "t1_kabc123", + "type": "string" + }, + "parent_id": { + "example": "t3_1abcxyz", + "type": "string" + }, + "permalink": { + "example": "https://www.reddit.com/r/OpenAI/comments/1abcxyz/openai_discussion_thread/kabc123/", "type": "string" + }, + "replies": { + "items": { + "$ref": "#/definitions/reddit.Comment" + }, + "type": "array" + }, + "score": { + "type": "integer" } }, "type": "object" }, - "sephora.storesResponseDoc": { + "reddit.CommentsResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" + "comments": { + "items": { + "$ref": "#/definitions/reddit.Comment" + }, + "type": "array" }, - "data": { - "$ref": "#/definitions/sephora.StoresResponse" + "metrics_source": { + "$ref": "#/definitions/reddit.SourceDetail" }, - "msg": { - "example": "OK", - "type": "string" + "post": { + "$ref": "#/definitions/reddit.Post" + }, + "source": { + "$ref": "#/definitions/reddit.SourceDetail" } }, "type": "object" }, - "sephora.suggestResponseDoc": { + "reddit.DomainPostsResponse": { "properties": { - "code": { - "example": 200, - "type": "integer" + "domain": { + "example": "openai.com", + "type": "string" }, - "data": { - "$ref": "#/definitions/sephora.SuggestResponse" + "pagination": { + "$ref": "#/definitions/reddit.Pagination" }, - "msg": { - "example": "OK", + "posts": { + "items": { + "$ref": "#/definitions/reddit.Post" + }, + "type": "array" + }, + "sort": { + "example": "hot", + "type": "string" + }, + "source": { + "$ref": "#/definitions/reddit.SourceDetail" + }, + "time": { + "example": "week", "type": "string" } }, "type": "object" }, - "sevennewsau.AuthorResponse": { + "reddit.MultiSubredditPostsResponse": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/newsplatform.HeadlineItem" - }, - "type": "array" + "pagination": { + "$ref": "#/definitions/reddit.Pagination" }, - "biography": { + "posts": { "items": { - "type": "string" + "$ref": "#/definitions/reddit.Post" }, "type": "array" }, - "image_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "role": { + "sort": { + "example": "hot", "type": "string" }, - "slug": { - "type": "string" + "source": { + "$ref": "#/definitions/reddit.SourceDetail" }, - "social_links": { + "subreddits": { + "example": [ + "OpenAI", + "MachineLearning" + ], "items": { "type": "string" }, "type": "array" }, - "url": { + "time": { + "example": "week", "type": "string" } }, "type": "object" }, - "sevennow.CatalogCategory": { + "reddit.Pagination": { "properties": { - "id": { - "example": "48423", + "after": { + "example": "t3_1abcxyz", "type": "string" }, - "name": { - "example": "Fresh Food", - "type": "string" + "limit": { + "example": 25, + "type": "integer" } }, "type": "object" }, - "sevennow.CatalogItem": { + "reddit.Post": { "properties": { - "age_restricted": { - "example": false, - "type": "boolean" + "author": { + "$ref": "#/definitions/reddit.Author" }, - "brand": { - "example": "Hot Food Pizza", - "type": "string" + "award_count": { + "type": "integer" }, - "calories": { - "example": "360", - "type": "string" + "comment_count": { + "type": "integer" }, - "category": { - "example": "Fresh Food", + "created": { + "example": "2024-04-19T00:00:00Z", "type": "string" }, - "flavor_name": { - "example": "Pepperoni Pizza", - "type": "string" + "created_utc": { + "example": 1713484800, + "type": "integer" }, - "image_url": { + "domain": { + "example": "self.OpenAI", "type": "string" }, - "name": { - "example": "Large Pizza - Ultimate Pepperoni", - "type": "string" + "estimated_downvotes": { + "type": "integer" }, - "original_price_cents": { - "example": 1099, + "estimated_upvotes": { "type": "integer" }, - "product_id": { - "example": "178322-2-6-2", + "flair": { + "example": "Discussion", "type": "string" }, - "promo_description": { - "example": "On Sale $6.99", + "id": { + "example": "1abcxyz", "type": "string" }, - "promo_price_cents": { - "example": 699, - "type": "integer" + "is_self": { + "type": "boolean" }, - "subcategory": { - "example": "Pizza", - "type": "string" + "is_video": { + "type": "boolean" }, - "upc": { - "example": "00072180687340", + "locked": { + "type": "boolean" + }, + "name": { + "example": "t3_1abcxyz", "type": "string" - } - }, - "type": "object" - }, - "sevennow.CatalogResponse": { - "properties": { - "active_items": { - "example": 2664, - "type": "integer" }, - "categories": { - "items": { - "$ref": "#/definitions/sevennow.CatalogCategory" - }, - "type": "array" + "over_18": { + "type": "boolean" }, - "fetched_at": { + "permalink": { + "example": "https://www.reddit.com/r/OpenAI/comments/1abcxyz/openai_discussion_thread/", "type": "string" }, - "limit": { - "example": 20, + "score": { "type": "integer" }, - "out_of_stock_items": { - "example": 435, - "type": "integer" + "selftext": { + "example": "Discussion body", + "type": "string" }, - "sections": { - "items": { - "$ref": "#/definitions/sevennow.CatalogSection" - }, - "type": "array" + "source_feed_url": { + "example": "https://www.reddit.com/r/OpenAI/.rss", + "type": "string" }, - "skip": { - "example": 0, - "type": "integer" + "stickied": { + "type": "boolean" }, - "source_url": { + "subreddit": { + "example": "OpenAI", "type": "string" }, - "store_id": { - "example": "39226", + "thumbnail": { + "example": "https://b.thumbs.redditmedia.com/example.jpg", + "type": "string" + }, + "title": { + "example": "OpenAI discussion thread", + "type": "string" + }, + "upvote_ratio": { + "type": "number" + }, + "url": { + "example": "https://www.reddit.com/r/OpenAI/comments/1abcxyz/openai_discussion_thread/", "type": "string" + }, + "vote_counts_estimated": { + "type": "boolean" } }, "type": "object" }, - "sevennow.CatalogSection": { + "reddit.PostResponse": { "properties": { - "count": { - "example": 20, - "type": "integer" - }, - "display_order": { - "example": 3, - "type": "integer" - }, - "items": { - "items": { - "$ref": "#/definitions/sevennow.CatalogItem" - }, - "type": "array" - }, - "name": { - "description": "Name is the shelf's own display title, e.g. \"Best Sellers\",\n\"$2 Deals\", \"What's New\". Upstream sends it on every section; it is\nthe only human-readable identifier a numeric section id has.", - "example": "$2 Deals", - "type": "string" + "metrics_source": { + "$ref": "#/definitions/reddit.SourceDetail" }, - "section_id": { - "example": "48423", - "type": "string" + "post": { + "$ref": "#/definitions/reddit.Post" }, - "total": { - "example": 200, - "type": "integer" + "source": { + "$ref": "#/definitions/reddit.SourceDetail" } }, "type": "object" }, - "sevennow.CategoriesResponse": { + "reddit.SearchResponse": { "properties": { - "count": { - "example": 25, - "type": "integer" + "pagination": { + "$ref": "#/definitions/reddit.Pagination" }, - "departments": { - "description": "Departments are the store's permanent browsable departments.", + "posts": { "items": { - "$ref": "#/definitions/sevennow.CategoryRef" + "$ref": "#/definitions/reddit.Post" }, "type": "array" }, - "fetched_at": { + "query": { + "example": "openai", "type": "string" }, - "shelves": { - "description": "Shelves are the merchandising rows the homepage currently features.\nThese rotate with promotions and seasons, so re-read them rather than\ncaching ids long-term.", - "items": { - "$ref": "#/definitions/sevennow.CategoryRef" - }, - "type": "array" + "sort": { + "example": "relevance", + "type": "string" }, - "source_url": { + "source": { + "$ref": "#/definitions/reddit.SourceDetail" + }, + "subreddit": { + "example": "OpenAI", "type": "string" }, - "store_id": { - "example": "39640", + "time": { + "example": "week", "type": "string" } }, "type": "object" }, - "sevennow.CategoryItem": { + "reddit.SourceDetail": { "properties": { - "age_restricted": { - "example": false, - "type": "boolean" - }, - "available": { - "example": true, - "type": "boolean" - }, - "available_quantity": { - "example": 100, - "type": "integer" + "type": { + "example": "rss", + "type": "string" }, - "calories": { - "example": "360", + "url": { + "example": "https://www.reddit.com/r/OpenAI/.rss", + "type": "string" + } + }, + "type": "object" + }, + "reddit.SubredditAboutResponse": { + "properties": { + "display_name": { + "example": "r/OpenAI", "type": "string" }, - "image_url": { + "feed_url": { + "example": "https://www.reddit.com/r/OpenAI.rss?limit=10", "type": "string" }, - "name": { - "example": "Large Pizza - Ultimate Pepperoni", + "latest_post_created": { + "example": "2024-04-19T00:00:00Z", "type": "string" }, - "price_cents": { - "example": 1299, + "latest_post_created_utc": { + "example": 1713484800, "type": "integer" }, - "product_id": { - "example": "178322-2-6-2", - "type": "string" - }, - "promo_description": { - "example": "On Sale $6.99", + "public_url": { + "example": "https://www.reddit.com/r/OpenAI/", "type": "string" }, - "promo_price_cents": { - "example": 699, + "recent_post_count": { + "example": 10, "type": "integer" }, - "subcategory": { - "example": "Pizza", + "sample_posts": { + "items": { + "$ref": "#/definitions/reddit.Post" + }, + "type": "array" + }, + "source": { + "$ref": "#/definitions/reddit.SourceDetail" + }, + "subreddit": { + "example": "OpenAI", "type": "string" }, - "upc": { - "example": "00052548537524", + "title": { + "example": "OpenAI", "type": "string" } }, "type": "object" }, - "sevennow.CategoryRef": { + "reddit.SubredditCommentsResponse": { "properties": { - "display_order": { - "description": "DisplayOrder is the shelf's position on the store homepage. Only\nmeaningful for shelves.", - "example": 18, - "type": "integer" - }, - "id": { - "example": "48395", - "type": "string" + "comments": { + "items": { + "$ref": "#/definitions/reddit.Comment" + }, + "type": "array" }, - "item_count": { - "description": "ItemCount is how many items the shelf holds upstream. Only populated\nfor shelves -- departments do not report a count here (use\nGET /7now/category's stats.total for those).", - "example": 25, - "type": "integer" + "pagination": { + "$ref": "#/definitions/reddit.Pagination" }, - "kind": { - "description": "Kind is `department` for the store's permanent browsable departments\n(Drinks, Snacks, Fresh Food, ...) or `shelf` for a merchandising row\nthe homepage is currently featuring (\"$2 Deals\", \"What's New\").\nBoth are valid category_id values; shelves rotate, departments do not.", - "example": "department", - "type": "string" + "source": { + "$ref": "#/definitions/reddit.SourceDetail" }, - "name": { - "example": "Drinks", + "subreddit": { + "example": "OpenAI", "type": "string" } }, "type": "object" }, - "sevennow.CategoryResponse": { + "reddit.SubredditPostsResponse": { "properties": { - "category_id": { - "example": "48423", - "type": "string" + "pagination": { + "$ref": "#/definitions/reddit.Pagination" }, - "fetched_at": { - "type": "string" + "posts": { + "items": { + "$ref": "#/definitions/reddit.Post" + }, + "type": "array" }, - "limit": { - "example": 20, - "type": "integer" + "sort": { + "example": "hot", + "type": "string" }, - "skip": { - "example": 0, - "type": "integer" + "source": { + "$ref": "#/definitions/reddit.SourceDetail" }, - "source_url": { + "subreddit": { + "example": "OpenAI", "type": "string" }, - "stats": { - "$ref": "#/definitions/sevennow.CategoryStats" - }, - "store_id": { - "example": "39226", + "time": { + "example": "week", "type": "string" + } + }, + "type": "object" + }, + "reddit.TrendsResponse": { + "properties": { + "pagination": { + "$ref": "#/definitions/reddit.Pagination" }, - "subcategories": { + "posts": { "items": { - "$ref": "#/definitions/sevennow.CategorySubcategory" + "$ref": "#/definitions/reddit.Post" }, "type": "array" + }, + "sort": { + "example": "hot", + "type": "string" + }, + "source": { + "$ref": "#/definitions/reddit.SourceDetail" + }, + "time": { + "example": "day", + "type": "string" } }, "type": "object" }, - "sevennow.CategoryStats": { + "reddit.UserCommentsResponse": { "properties": { - "available": { - "example": 99, - "type": "integer" + "comments": { + "items": { + "$ref": "#/definitions/reddit.Comment" + }, + "type": "array" }, - "out_of_stock": { - "example": 22, - "type": "integer" + "pagination": { + "$ref": "#/definitions/reddit.Pagination" }, - "percentage_available": { - "example": 82, - "type": "integer" + "source": { + "$ref": "#/definitions/reddit.SourceDetail" }, - "total": { - "example": 121, - "type": "integer" + "username": { + "example": "reddit", + "type": "string" } }, "type": "object" }, - "sevennow.CategorySubcategory": { + "reddit.UserPostsResponse": { "properties": { - "items": { + "pagination": { + "$ref": "#/definitions/reddit.Pagination" + }, + "posts": { "items": { - "$ref": "#/definitions/sevennow.CategoryItem" + "$ref": "#/definitions/reddit.Post" }, "type": "array" }, - "name": { - "example": "Pizza", + "source": { + "$ref": "#/definitions/reddit.SourceDetail" + }, + "username": { + "example": "reddit", "type": "string" } }, "type": "object" }, - "sevennow.Combo": { + "reddit.commentsResponseDoc": { "properties": { - "available": { - "example": true, - "type": "boolean" - }, - "bundle_id": { - "example": "B00037", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "description": { - "type": "string" + "data": { + "$ref": "#/definitions/reddit.CommentsResponse" }, - "image_url": { + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "reddit.domainPostsResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "name": { - "example": "7NOW Combo Builder SLIN 22 - $6.99 Pizza", - "type": "string" + "data": { + "$ref": "#/definitions/reddit.DomainPostsResponse" }, - "promo_id": { - "description": "PromoID is the promotion behind the bundle. Pass it to\nGET /7now/combo for the bundle's pick-one-from-each item groups, or\nto GET /7now/promotion for a flat list of every eligible item.", - "example": "6a849a8fa1df2409010c719f", + "msg": { + "example": "OK", "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array" } }, "type": "object" }, - "sevennow.ComboGroup": { + "reddit.leadsResponseDoc": { "properties": { - "is_primary": { - "example": true, - "type": "boolean" + "code": { + "example": 200, + "type": "integer" }, - "items": { - "items": { - "$ref": "#/definitions/sevennow.DealItem" - }, - "type": "array" + "data": { + "$ref": "#/definitions/redditleads.Response" }, - "name": { - "example": "Eligible Whole Pizzas", + "msg": { + "example": "OK", "type": "string" - }, - "quantity": { - "example": 1, - "type": "integer" } }, "type": "object" }, - "sevennow.ComboResponse": { + "reddit.multiSubredditPostsResponseDoc": { "properties": { - "count": { - "example": 1, + "code": { + "example": 200, "type": "integer" }, - "fetched_at": { - "type": "string" - }, - "groups": { - "items": { - "$ref": "#/definitions/sevennow.ComboGroup" - }, - "type": "array" + "data": { + "$ref": "#/definitions/reddit.MultiSubredditPostsResponse" }, - "promo_id": { - "example": "6a849a8fa1df2409010c719f", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "reddit.postResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "source_url": { - "type": "string" + "data": { + "$ref": "#/definitions/reddit.PostResponse" }, - "store_id": { - "example": "39640", + "msg": { + "example": "OK", "type": "string" - }, - "terms": { - "$ref": "#/definitions/sevennow.ComboTerms" } }, "type": "object" }, - "sevennow.ComboTerms": { + "reddit.searchResponseDoc": { "properties": { - "description": { - "example": "Any Whole Pizza $6.99 each", - "type": "string" + "code": { + "example": 200, + "type": "integer" }, - "legal_terms": { - "type": "string" + "data": { + "$ref": "#/definitions/reddit.SearchResponse" }, - "title": { - "example": "$6.99 Pizza", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "sevennow.CombosResponse": { + "reddit.subredditAboutResponseDoc": { "properties": { - "combos": { - "items": { - "$ref": "#/definitions/sevennow.Combo" - }, - "type": "array" - }, - "count": { - "example": 5, + "code": { + "example": 200, "type": "integer" }, - "fetched_at": { - "type": "string" - }, - "source_url": { - "type": "string" + "data": { + "$ref": "#/definitions/reddit.SubredditAboutResponse" }, - "store_id": { - "example": "39640", + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "sevennow.DealItem": { + "reddit.subredditCommentsResponseDoc": { "properties": { - "age_restricted": { - "example": false, - "type": "boolean" - }, - "available": { - "example": true, - "type": "boolean" - }, - "available_quantity": { - "example": 5, + "code": { + "example": 200, "type": "integer" }, - "brand": { - "example": "Ben & Jerry's", - "type": "string" + "data": { + "$ref": "#/definitions/reddit.SubredditCommentsResponse" }, - "calories": { - "example": "370", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "reddit.subredditPostsResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "category": { - "example": "Ice Cream", - "type": "string" + "data": { + "$ref": "#/definitions/reddit.SubredditPostsResponse" }, - "category_id": { - "example": "48396", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "reddit.trendsResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "image_url": { - "type": "string" + "data": { + "$ref": "#/definitions/reddit.TrendsResponse" }, - "name": { - "example": "Ben & Jerry's Sundae Cookie Vermont-ster 14oz", + "msg": { + "example": "OK", "type": "string" - }, - "price_cents": { - "example": 999, + } + }, + "type": "object" + }, + "reddit.userCommentsResponseDoc": { + "properties": { + "code": { + "example": 200, "type": "integer" }, - "product_id": { - "example": "191743-0-1", - "type": "string" - }, - "promos": { - "items": { - "$ref": "#/definitions/sevennow.DealPromo" - }, - "type": "array" + "data": { + "$ref": "#/definitions/reddit.UserCommentsResponse" }, - "subcategory": { - "example": "Ben & Jerry's", + "msg": { + "example": "OK", "type": "string" + } + }, + "type": "object" + }, + "reddit.userPostsResponseDoc": { + "properties": { + "code": { + "example": 200, + "type": "integer" }, - "upc": { - "example": "00076840004294", + "data": { + "$ref": "#/definitions/reddit.UserPostsResponse" + }, + "msg": { + "example": "OK", "type": "string" } }, "type": "object" }, - "sevennow.DealPromo": { + "redditleads.Lead": { "properties": { - "expiration_date": { - "example": "10/27/2026", + "author": { + "example": "someuser", "type": "string" }, - "id": { - "example": "6a9746d488cc35e1bbff1584", + "comment_count": { + "example": 12, + "type": "integer" + }, + "created": { + "example": "2026-08-01T00:00:00Z", "type": "string" }, - "long_description": { + "permalink": { + "example": "https://www.reddit.com/r/smallbusiness/comments/1abcxyz/", "type": "string" }, - "promo_price_cents": { - "example": 700, + "post_score": { + "example": 20, "type": "integer" }, - "promo_type": { - "example": "item", + "reason": { + "example": "Asking for a CRM and states a monthly budget.", "type": "string" }, - "short_description": { - "example": "On Sale $7", + "score": { + "example": 9, + "type": "integer" + }, + "signals": { + "items": { + "$ref": "#/definitions/redditleads.Signal" + }, + "type": "array" + }, + "subreddit": { + "example": "smallbusiness", "type": "string" }, - "start_date": { - "example": "09/01/2026", + "title": { + "example": "Looking for a CRM for a 3-person team, budget ~$50/mo", "type": "string" } }, "type": "object" }, - "sevennow.DealsResponse": { + "redditleads.Response": { "properties": { - "count": { - "example": 20, - "type": "integer" - }, - "fetched_at": { + "classifier": { + "example": "llm", "type": "string" }, - "has_more": { - "example": true, + "degraded": { + "example": false, "type": "boolean" }, - "items": { + "leads": { "items": { - "$ref": "#/definitions/sevennow.DealItem" + "$ref": "#/definitions/redditleads.Lead" }, "type": "array" }, - "limit": { - "example": 20, + "min_score": { + "example": 4, "type": "integer" }, - "skip": { - "example": 0, - "type": "integer" + "model": { + "example": "gpt-5.4", + "type": "string" }, - "source_url": { + "query": { + "example": "crm for small teams", "type": "string" }, "stats": { - "$ref": "#/definitions/sevennow.DealsStats" + "$ref": "#/definitions/redditleads.Stats" }, - "store_id": { - "example": "39640", + "subreddit": { + "example": "smallbusiness", + "type": "string" + } + }, + "type": "object" + }, + "redditleads.Signal": { + "properties": { + "id": { + "example": "explicit-ask", "type": "string" }, - "total": { - "example": 548, - "type": "integer" + "label": { + "example": "asking for a tool", + "type": "string" } }, "type": "object" }, - "sevennow.DealsStats": { + "redditleads.Stats": { "properties": { - "available": { - "example": 503, + "classified": { + "example": 12, "type": "integer" }, - "out_of_stock": { - "example": 45, + "prefiltered": { + "example": 88, "type": "integer" }, - "percentage_available": { - "example": 92, + "returned": { + "example": 9, "type": "integer" }, - "total": { - "example": 548, + "scanned": { + "example": 100, "type": "integer" } }, "type": "object" }, - "sevennow.NutritionEntry": { + "redfin.EstimateResponse": { "properties": { - "name": { - "example": "Total Fat", + "address": { "type": "string" }, - "value": { - "example": "11.0Gram", + "baths": { + "type": "number" + }, + "beds": { + "type": "number" + }, + "city_time_series": { + "items": { + "type": "number" + }, + "type": "array" + }, + "county_time_series": { + "items": { + "type": "number" + }, + "type": "array" + }, + "estimate": { + "type": "number" + }, + "estimate_text": { "type": "string" - } - }, - "type": "object" - }, - "sevennow.NutritionGroup": { - "properties": { - "entries": { + }, + "latitude": { + "type": "number" + }, + "listing_price": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "postal_code_time_series": { "items": { - "$ref": "#/definitions/sevennow.NutritionEntry" + "type": "number" }, "type": "array" }, - "group": { - "example": "fat", + "property_id": { + "example": "1715020", "type": "string" + }, + "property_time_series": { + "items": { + "type": "number" + }, + "type": "array" + }, + "sqft": { + "type": "number" + }, + "updated_at": { + "type": "integer" + }, + "year_built": { + "type": "integer" } }, "type": "object" }, - "sevennow.Offer": { + "redfin.PropertyItem": { "properties": { - "button_text": { + "address": { "type": "string" }, - "description": { - "example": "Any Whole Pizza $6.99 each", - "type": "string" + "baths": { + "type": "number" }, - "image_url": { + "beds": { + "type": "number" + }, + "city": { "type": "string" }, - "legal_terms": { + "days_on_market": { + "type": "integer" + }, + "hoa_monthly": { + "type": "number" + }, + "image": { "type": "string" }, - "name": { - "description": "Name is upstream's internal campaign name, e.g.\n\"US_7NOW_$6.99 Pizza_(8/21/26-1/5/2027)\". It usually encodes the run\ndates, which the banner record does not carry as fields.", - "example": "US_7NOW_$6.99 Pizza_(8/21/26-1/5/2027)", + "latitude": { + "type": "number" + }, + "listing_id": { "type": "string" }, - "offer_id": { - "example": "6a8879a4478334ff62f902d9-sE4Q1s2116PXg7di5yN2tt-7NOW_WEB", + "longitude": { + "type": "number" + }, + "lot_size": { + "type": "number" + }, + "mls_number": { "type": "string" }, - "promo_ids": { - "description": "PromoIDs are the promotions this campaign points at. Usually one,\nbut a multi-product campaign (e.g. a brand takeover) genuinely\ncarries several -- upstream packs them into one comma-separated\nstring, which is split here so each id is individually usable. Pass\none to GET /7now/promotion for every item it covers, or to\nGET /7now/combo when the campaign advertises a bundle.", - "items": { - "type": "string" - }, - "type": "array" + "price": { + "type": "number" }, - "sort_order": { - "example": 2, - "type": "integer" + "price_per_sqft": { + "type": "number" }, - "target_entity": { - "description": "TargetEntity is what tapping the banner opens, e.g. `promo_items` or\n`Category`. A campaign with no destination reports `none` upstream\nand is omitted here.", - "example": "promo_items", + "property_id": { + "example": "1715020", "type": "string" }, - "target_id": { - "description": "TargetID is the entity the banner opens when it is not a promotion --\nfor a `Category` banner this is a category_id GET /7now/category\naccepts.", - "example": "48395", + "property_type": { "type": "string" }, - "target_url": { + "sqft": { + "type": "number" + }, + "state": { "type": "string" }, - "title": { - "example": "$6.99 Pizza", + "status": { "type": "string" }, - "web_image_url": { + "url": { + "type": "string" + }, + "year_built": { + "type": "integer" + }, + "zip": { "type": "string" } }, "type": "object" }, - "sevennow.OffersResponse": { + "redfin.PropertyResponse": { "properties": { - "count": { - "example": 4, + "address": { + "type": "string" + }, + "baths": { + "type": "number" + }, + "beds": { + "type": "number" + }, + "city": { + "type": "string" + }, + "days_on_market": { "type": "integer" }, - "fetched_at": { + "description": { "type": "string" }, - "offers": { + "facts": { "items": { - "$ref": "#/definitions/sevennow.Offer" + "type": "string" }, "type": "array" }, - "source_url": { - "type": "string" + "hoa_monthly": { + "type": "number" }, - "store_id": { - "example": "39640", + "image": { "type": "string" - } - }, - "type": "object" - }, - "sevennow.PopularResponse": { - "properties": { - "fetched_at": { + }, + "latitude": { + "type": "number" + }, + "listing_id": { "type": "string" }, - "region": { - "description": "Region is upstream's own name for the index the terms came from,\ne.g. `NY_NE`, `W`, `SE`, or the vertical's own name when no store\nnarrowed it. It is the only signal upstream gives for which region a\nresult set covers.", - "example": "NY_NE", + "longitude": { + "type": "number" + }, + "lot_size": { + "type": "number" + }, + "mls_number": { "type": "string" }, - "source_url": { + "price": { + "type": "number" + }, + "price_per_sqft": { + "type": "number" + }, + "property_id": { + "example": "1715020", "type": "string" }, - "store_id": { - "example": "39226", + "property_type": { "type": "string" }, - "suggestions": { - "example": [ - "ice cream", - "coffee", - "pizza" - ], - "items": { - "type": "string" - }, - "type": "array" + "sqft": { + "type": "number" }, - "vertical": { - "description": "Vertical echoes back which index was read.", - "example": "convenience", - "type": "string" - } - }, - "type": "object" - }, - "sevennow.ProductPromo": { - "properties": { - "expiration_date": { - "example": "01/05/2027", + "state": { "type": "string" }, - "id": { - "example": "6a849a8fa1df2409010c719f", + "status": { "type": "string" }, - "long_description": { - "example": "$6.99 Whole Pizza!", + "url": { "type": "string" }, - "promo_price_cents": { - "example": 699, + "year_built": { "type": "integer" }, - "short_description": { - "example": "On Sale $6.99", - "type": "string" - }, - "start_date": { - "example": "08/21/2026", + "zip": { "type": "string" } }, "type": "object" }, - "sevennow.ProductResponse": { + "redfin.RegionTrendsResponse": { "properties": { - "age_restricted": { - "example": false, - "type": "boolean" - }, - "allergens": { - "description": "Allergens is upstream's allergen statement, e.g. \"CONTAINS MILK, SOY,\nWHEAT.\" Absent on products with no declared allergens.", - "example": "CONTAINS MILK, SOY, WHEAT.", + "avg_days_on_market": { "type": "string" }, - "brand": { - "example": "Hot Food Pizza", + "avg_down_payment": { "type": "string" }, - "calories": { - "example": "360", + "avg_num_offers": { "type": "string" }, - "category": { - "example": "Fresh Food", + "median_list_per_sqft": { "type": "string" }, - "category_id": { - "example": "48423", + "median_list_price": { + "example": "$1.29M", "type": "string" }, - "description": { + "median_sale_per_list": { "type": "string" }, - "fetched_at": { + "median_sale_per_sqft": { "type": "string" }, - "flavor_choices": { - "items": { - "type": "string" - }, - "type": "array" + "median_sale_price": { + "example": "$1.76M", + "type": "string" }, - "flavor_name": { - "example": "Pepperoni Pizza", + "num_homes_on_market": { "type": "string" }, - "images": { - "items": { - "type": "string" - }, - "type": "array" + "num_homes_sold": { + "type": "string" }, - "ingredients": { - "description": "Ingredients is the declared ingredient list. Upstream splits it on\ncommas, so a parenthesised sub-list arrives as several entries.", - "items": { - "type": "string" - }, - "type": "array" + "region_id": { + "example": 17151, + "type": "integer" }, - "limit_per_order": { - "example": 100, + "region_type": { + "example": 6, "type": "integer" }, - "name": { - "example": "Large Pizza - Ultimate Pepperoni", + "yoy_sale_per_sqft": { "type": "string" }, - "nutrition": { - "items": { - "$ref": "#/definitions/sevennow.NutritionGroup" - }, - "type": "array" + "yoy_sale_price": { + "type": "string" + } + }, + "type": "object" + }, + "redfin.SearchResponse": { + "properties": { + "location": { + "example": "San Francisco, CA", + "type": "string" }, - "nutrition_disclaimers": { - "description": "NutritionDisclaimers carries upstream's own RDI/daily-value notices.", - "items": { - "type": "string" - }, - "type": "array" + "page": { + "example": 1, + "type": "integer" }, - "product_id": { - "example": "178322-2-6-2", - "type": "string" + "region_id": { + "example": 17151, + "type": "integer" }, - "promos": { - "items": { - "$ref": "#/definitions/sevennow.ProductPromo" - }, - "type": "array" + "region_type": { + "example": 6, + "type": "integer" }, - "related_items": { + "results": { "items": { - "$ref": "#/definitions/sevennow.RelatedProduct" + "$ref": "#/definitions/redfin.PropertyItem" }, "type": "array" + } + }, + "type": "object" + }, + "redfin.SimilarResponse": { + "properties": { + "property_id": { + "example": "1715020", + "type": "string" }, - "size_choices": { + "results": { "items": { - "type": "string" + "$ref": "#/definitions/redfin.PropertyItem" }, "type": "array" + } + }, + "type": "object" + }, + "referrals.referralAttributionDoc": { + "properties": { + "campaign": { + "example": "spring-launch", + "type": "string" }, - "size_value": { - "example": "1WholePizza", + "code": { + "example": "A1B2C3D4E5F6", "type": "string" }, - "slin": { - "example": "178322", + "created_at": { "type": "string" }, - "source_url": { + "expires_at": { "type": "string" }, - "tags": { - "items": { - "type": "string" - }, - "type": "array" + "id": { + "example": "abc123", + "type": "string" }, - "upc": { - "example": "00072180687340", + "qualified_at": { + "type": "string" + }, + "reward_credits": { + "example": 10000, + "type": "integer" + }, + "rewarded_at": { + "type": "string" + }, + "role": { + "enum": [ + "referrer", + "referred" + ], + "example": "referrer", + "type": "string" + }, + "status": { + "enum": [ + "attributed", + "qualified", + "review_required", + "rewarded", + "expired", + "capped", + "failed", + "rejected" + ], + "example": "rewarded", "type": "string" } }, "type": "object" }, - "sevennow.PromotionDetail": { + "referrals.referralClickRequestDoc": { "properties": { - "display_priority": { - "example": 2, - "type": "integer" - }, - "expiration_date": { - "example": "2026-10-27T23:59:59.000Z", + "click_id": { + "example": "refclk_abc123", "type": "string" }, - "id": { - "example": "6a9746d488cc35e1bbff1584", + "code": { + "example": "A1B2C3D4E5F6", "type": "string" }, - "long_description": { + "landing_path": { + "example": "/pricing", "type": "string" }, - "mark_down_slins": { - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "example": "US_7N_Ben & Jerry's Pints $7_(9/1/2026-10/27/2026) - FOR 7NOW", + "utm_campaign": { + "example": "spring-launch", "type": "string" }, - "offer_type": { - "example": "item_discount", + "utm_medium": { + "example": "email", "type": "string" }, - "promo_price_cents": { - "example": 700, - "type": "integer" - }, - "promo_type": { - "example": "item", + "utm_source": { + "example": "newsletter", "type": "string" - }, - "short_description": { - "example": "On Sale $7", + } + }, + "type": "object" + }, + "referrals.referralClickResponseDoc": { + "properties": { + "click_id": { + "example": "refclk_abc123", "type": "string" }, - "start_date": { - "example": "2026-09-01T00:00:00.000Z", + "code": { + "example": "A1B2C3D4E5F6", "type": "string" - }, - "terms": { + } + }, + "type": "object" + }, + "referrals.referralsEventsResponseDoc": { + "properties": { + "items": { "items": { - "type": "string" + "$ref": "#/definitions/referrals.referralAttributionDoc" }, "type": "array" } }, "type": "object" }, - "sevennow.PromotionResponse": { + "referrals.referralsMeResponseDoc": { "properties": { - "count": { - "example": 14, + "attribution_window_days": { + "example": 30, "type": "integer" }, - "fetched_at": { + "code": { + "example": "A1B2C3D4E5F6", "type": "string" }, - "has_more": { - "example": false, - "type": "boolean" - }, "items": { "items": { - "$ref": "#/definitions/sevennow.DealItem" + "$ref": "#/definitions/referrals.referralAttributionDoc" }, "type": "array" }, - "limit": { - "example": 20, + "monthly_referrer_reward_cap": { + "example": 10, "type": "integer" }, - "promo_id": { - "example": "6a9746d488cc35e1bbff1584", - "type": "string" - }, - "promotion": { - "$ref": "#/definitions/sevennow.PromotionDetail" - }, - "skip": { - "example": 0, + "referred_reward_credits": { + "example": 10000, "type": "integer" }, - "source_url": { - "type": "string" + "reward_credits": { + "example": 10000, + "type": "integer" }, - "store_id": { - "example": "39640", + "share_path": { + "example": "/r/A1B2C3D4E5F6", "type": "string" }, - "total": { - "example": 14, - "type": "integer" + "stats": { + "$ref": "#/definitions/referrals.referralsStatsDoc" } }, "type": "object" }, - "sevennow.RelatedProduct": { + "referrals.referralsStatsDoc": { "properties": { - "brand": { - "example": "Hot Food Pizza", - "type": "string" - }, - "calories": { - "example": "550", - "type": "string" + "attributed": { + "example": 3, + "type": "integer" }, - "category": { - "example": "Fresh Food", - "type": "string" + "capped": { + "example": 0, + "type": "integer" }, - "flavor_name": { - "example": "Sausage Breakfast Pizza", - "type": "string" + "expired": { + "example": 0, + "type": "integer" }, - "image_url": { - "type": "string" + "qualified": { + "example": 1, + "type": "integer" }, - "name": { - "example": "Whole Breakfast Pizza - Sausage", - "type": "string" + "rejected": { + "example": 0, + "type": "integer" }, - "product_id": { - "example": "170776-1-8", - "type": "string" + "review_required": { + "example": 0, + "type": "integer" }, - "size_value": { - "example": "1WholePizza", - "type": "string" + "rewarded": { + "example": 1, + "type": "integer" } }, "type": "object" }, - "sevennow.SearchBrand": { + "resy.AvailabilityResponse": { "properties": { - "brand_id": { - "example": "262b9206-d316-3cf8-9ccf-a06998c5c0a1", - "type": "string" - }, - "brand_name": { - "example": "Pringles", + "date": { "type": "string" }, - "is_sponsored": { - "example": false, - "type": "boolean" + "party_size": { + "type": "integer" }, - "logo_url": { + "restaurant_id": { "type": "string" }, - "rank": { - "example": 25, - "type": "integer" + "timeslots": { + "items": { + "$ref": "#/definitions/resy.Timeslot" + }, + "type": "array" } }, "type": "object" }, - "sevennow.SearchItem": { + "resy.CuisinesResponse": { "properties": { - "age_restricted": { - "example": false, - "type": "boolean" + "cuisines": { + "items": { + "type": "string" + }, + "type": "array" }, - "available": { - "example": true, - "type": "boolean" + "location": { + "type": "string" + } + }, + "type": "object" + }, + "resy.Event": { + "properties": { + "city": { + "type": "string" }, - "available_quantity": { - "example": 100, - "type": "integer" + "currency": { + "example": "USD", + "type": "string" }, - "bundle_id": { - "example": "B00037", + "date": { + "example": "2026-09-20", "type": "string" }, - "calories": { - "example": "360", + "description": { "type": "string" }, - "category": { - "example": "Fresh Food", + "end_time": { + "example": "17:00:00", "type": "string" }, - "image_url": { + "general_sale_date": { "type": "string" }, - "list_price_cents": { - "example": 1299, + "images": { + "items": { + "type": "string" + }, + "type": "array" + }, + "is_presale": { + "type": "boolean" + }, + "max_party_size": { + "example": 8, + "type": "integer" + }, + "min_party_size": { + "example": 1, "type": "integer" }, "name": { - "example": "Large Pizza - Ultimate Pepperoni", + "example": "Breakfast & Citi Field Trip", "type": "string" }, - "price_cents": { - "example": 1099, - "type": "integer" + "neighborhood": { + "type": "string" }, - "product_id": { - "example": "178322-2-6-2", + "price_max": { + "example": 85, + "type": "number" + }, + "price_min": { + "example": 85, + "type": "number" + }, + "restaurant_id": { "type": "string" }, - "product_type": { - "example": "product", + "restaurant_name": { "type": "string" }, - "promo_description": { - "example": "On Sale $6.99", + "restaurant_url_slug": { + "description": "RestaurantURLSlug, together with URLSlug and the search/events\nLocation value, is what resy-event-detail needs to fetch this\nevent's full description and ticket packages.", "type": "string" }, - "promo_price_cents": { - "example": 699, + "shift_id": { "type": "integer" }, - "subcategory": { - "example": "Pizza", + "time": { + "example": "09:30:00", "type": "string" }, - "upc": { - "example": "00072180687340", + "url_slug": { + "type": "string" + }, + "why_we_like_it": { "type": "string" } }, "type": "object" }, - "sevennow.SearchResponse": { + "resy.EventDetailResponse": { "properties": { - "brands": { + "currency": { + "type": "string" + }, + "date": { + "type": "string" + }, + "description": { + "type": "string" + }, + "end_time": { + "type": "string" + }, + "enhanced_description": { + "type": "string" + }, + "enhanced_need_to_know": { + "type": "string" + }, + "general_sale_date": { + "type": "string" + }, + "images": { "items": { - "$ref": "#/definitions/sevennow.SearchBrand" + "type": "string" }, "type": "array" }, - "count": { - "example": 20, + "is_presale": { + "type": "boolean" + }, + "max_party_size": { "type": "integer" }, - "fetched_at": { + "min_party_size": { + "type": "integer" + }, + "name": { "type": "string" }, - "has_more": { - "example": true, - "type": "boolean" + "need_to_know": { + "type": "string" }, - "items": { + "packages": { "items": { - "$ref": "#/definitions/sevennow.SearchItem" + "$ref": "#/definitions/resy.EventPackage" }, "type": "array" }, - "limit": { - "example": 20, + "price_max": { + "type": "number" + }, + "price_min": { + "type": "number" + }, + "shift_id": { "type": "integer" }, - "query": { - "example": "pizza", + "time": { "type": "string" }, - "skip": { - "example": 0, + "url_slug": { + "type": "string" + } + }, + "type": "object" + }, + "resy.EventPackage": { + "properties": { + "max_party_size": { + "example": 8, "type": "integer" }, - "source_url": { + "min_party_size": { + "example": 1, + "type": "integer" + }, + "name": { + "example": "One Ticket for Breakfast & Citi Field Trip", "type": "string" }, - "store_id": { - "example": "39226", + "price_total": { + "example": 85, + "type": "number" + }, + "price_total_str": { + "example": "$85.00", "type": "string" }, - "total": { - "example": 100, + "quantity_remaining": { + "example": 22, + "type": "integer" + }, + "quantity_total": { + "example": 40, "type": "integer" + }, + "sold_out": { + "type": "boolean" + }, + "timeslots": { + "items": { + "$ref": "#/definitions/resy.Timeslot" + }, + "type": "array" + }, + "whats_included": { + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "sevennow.Store": { + "resy.EventsResponse": { "properties": { - "address": { - "example": "866 6TH AVE", - "type": "string" - }, - "alcohol_sale_hours": { - "description": "AlcoholSaleHours are the windows during which the store may sell\nalcohol, per day of week -- upstream's own encoding of the local\nlaw. A New York store, for instance, reports Sunday as two windows\n(00:00-02:00 and 08:00-23:59) and every other day as one.\n\nAn empty list means upstream publishes no windows for this store.\nThat is not the same as \"sells no alcohol\": Austin, TX stores return\nan empty list while New York stores return a full week.", + "events": { "items": { - "$ref": "#/definitions/sevennow.StoreAlcoholDay" + "$ref": "#/definitions/resy.Event" }, "type": "array" }, - "brand": { - "description": "Brand is the banner the store trades under. 7-Eleven operates\nseveral (Speedway, Stripes); every store measured so far reports\n\"7-Eleven\", so treat a different value as possible rather than\nimpossible.", - "example": "7-Eleven", - "type": "string" - }, - "brand_logo_url": { + "location": { "type": "string" }, - "city": { - "example": "New York", + "total": { + "type": "integer" + } + }, + "type": "object" + }, + "resy.Location": { + "properties": { + "code": { + "example": "ny", "type": "string" }, "country": { - "example": "US", + "example": "United States", "type": "string" }, - "county": { - "example": "New York County", + "country_code": { + "example": "US", "type": "string" }, - "distance_miles": { - "example": 0.22, - "type": "number" - }, - "dma": { - "description": "DMA is the Nielsen Designated Market Area the store sits in, e.g.\n\"New York Ny\", \"Austin Tx\". It groups stores by media market rather\nthan by state or county.", - "example": "New York Ny", + "id": { + "example": "1", "type": "string" }, "latitude": { - "example": 40.747508, "type": "number" }, "longitude": { - "example": -73.989099, "type": "number" }, "name": { - "example": "7-Eleven", - "type": "string" - }, - "state": { - "example": "NY", - "type": "string" - }, - "store_category": { - "example": "7now", + "example": "New York", "type": "string" }, - "store_id": { - "example": "39226", + "time_zone": { + "example": "America/New_York", "type": "string" }, - "zip": { - "example": "10001", + "url_slug": { + "example": "new-york-ny", "type": "string" } }, "type": "object" }, - "sevennow.StoreAlcoholDay": { + "resy.LocationsResponse": { "properties": { - "day": { - "example": "Sunday", - "type": "string" - }, - "windows": { - "description": "Windows are that day's permitted selling periods. More than one\nmeans the day is split, as New York's Sunday rule does.", + "locations": { "items": { - "$ref": "#/definitions/sevennow.StoreAlcoholWindow" + "$ref": "#/definitions/resy.Location" }, "type": "array" + }, + "total": { + "type": "integer" } }, "type": "object" }, - "sevennow.StoreAlcoholWindow": { + "resy.RestaurantResponse": { "properties": { - "end_time": { - "example": "2359", + "about": { "type": "string" }, - "start_time": { - "example": "0800", + "address": { + "example": "181 Thompson Street", "type": "string" - } - }, - "type": "object" - }, - "sevennow.StoresResponse": { - "properties": { - "count": { - "example": 15, - "type": "integer" }, - "fetched_at": { + "average_cost_per_person": { + "example": "$150", "type": "string" }, - "h3_index": { - "description": "H3Index is the Uber H3 cell (resolution 7) upstream assigns to the\nresolved address -- a stable geospatial key for grouping or caching\nlookups by area.", - "example": "872a100d2ffffff", + "city": { + "example": "New York", "type": "string" }, - "latitude": { - "example": 40.7480997, - "type": "number" - }, - "longitude": { - "example": -73.9849926, - "type": "number" - }, - "query": { - "example": "350 5th Ave, New York, NY", + "country": { "type": "string" }, - "resolved_address": { - "example": "350 5th Ave, New York, NY 10118, USA", + "cross_street": { "type": "string" }, - "source_url": { + "cuisine": { + "example": "Italian", "type": "string" }, - "stores": { - "items": { - "$ref": "#/definitions/sevennow.Store" - }, - "type": "array" - } - }, - "type": "object" - }, - "sevennow.SuggestResponse": { - "properties": { - "fetched_at": { + "currency_symbol": { + "example": "$", "type": "string" }, - "query": { - "example": "chi", + "description": { "type": "string" }, - "source_url": { + "id": { "type": "string" }, - "suggestions": { - "example": [ - "chips ahoy", - "chips", - "chicken" - ], + "images": { "items": { "type": "string" }, "type": "array" - } - }, - "type": "object" - }, - "sevennow.catalogResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" }, - "data": { - "$ref": "#/definitions/sevennow.CatalogResponse" + "latitude": { + "type": "number" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "sevennow.categoriesResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", - "type": "integer" + "location_code": { + "description": "LocationCode is Resy's short city code (e.g. \"ny\") -- pass it as\nresy-cuisines' or resy-events' location param to discover more about\nthis same city.", + "example": "ny", + "type": "string" }, - "data": { - "$ref": "#/definitions/sevennow.CategoriesResponse" + "longitude": { + "type": "number" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "sevennow.categoryResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "max_party_size": { + "example": 14, "type": "integer" }, - "data": { - "$ref": "#/definitions/sevennow.CategoryResponse" + "menu_url": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" - }, - "sevennow.comboResponseDoc": { - "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "min_party_size": { + "example": 1, "type": "integer" }, - "data": { - "$ref": "#/definitions/sevennow.ComboResponse" + "name": { + "type": "string" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" - } - }, - "type": "object" + "need_to_know": { + "type": "string" + }, + "neighborhood": { + "example": "Greenwich Village", + "type": "string" + }, + "phone_number": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "price_range": { + "example": 4, + "type": "integer" + }, + "rating": { + "example": 4.75, + "type": "number" + }, + "region": { + "example": "NY", + "type": "string" + }, + "review_count": { + "example": 33837, + "type": "integer" + }, + "url_slug": { + "example": "carbone", + "type": "string" + }, + "website": { + "type": "string" + }, + "why_we_like_it": { + "type": "string" + } + }, + "type": "object" }, - "sevennow.combosResponseDoc": { + "resy.SearchResponse": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "available_cuisines": { + "description": "AvailableCuisines lists the cuisines present among restaurants near this\nsearch location (Resy's own search facet) -- use it to discover cuisine\nvalues worth passing back in Term, since the upstream search index has\nno separate structured cuisine filter (confirmed live: a top-level\n\"cuisine\" search field is rejected as an unknown field).", + "items": { + "type": "string" + }, + "type": "array" + }, + "results": { + "items": { + "$ref": "#/definitions/resy.SearchResult" + }, + "type": "array" + }, + "term": { + "type": "string" + }, + "total": { + "type": "integer" + } + }, + "type": "object" + }, + "resy.SearchResult": { + "properties": { + "city": { + "example": "New York", + "type": "string" + }, + "cuisines": { + "example": [ + "Italian" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "example": "6194", + "type": "string" + }, + "latitude": { + "type": "number" + }, + "location_code": { + "description": "LocationCode is Resy's short city code (e.g. \"ny\") -- pass it as\nresy-cuisines' or resy-events' location param to discover more about\nthis same city.", + "example": "ny", + "type": "string" + }, + "location_url_slug": { + "example": "new-york-ny", + "type": "string" + }, + "longitude": { + "type": "number" + }, + "name": { + "example": "Carbone", + "type": "string" + }, + "neighborhood": { + "example": "Greenwich Village", + "type": "string" + }, + "phone_number": { + "type": "string" + }, + "price_range": { + "example": 4, "type": "integer" }, - "data": { - "$ref": "#/definitions/sevennow.CombosResponse" + "rating": { + "example": 4.75, + "type": "number" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "region": { + "example": "NY", + "type": "string" + }, + "review_count": { + "example": 33837, + "type": "integer" + }, + "timeslots": { + "items": { + "$ref": "#/definitions/resy.Timeslot" + }, + "type": "array" + }, + "url_slug": { + "example": "carbone", + "type": "string" } }, "type": "object" }, - "sevennow.dealsResponseDoc": { + "resy.Timeslot": { "properties": { - "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "end": { + "example": "2026-09-20 20:30:00", + "type": "string" + }, + "max_party_size": { + "example": 4, "type": "integer" }, - "data": { - "$ref": "#/definitions/sevennow.DealsResponse" + "min_party_size": { + "example": 1, + "type": "integer" }, - "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "seating_type": { + "example": "Dining Room", + "type": "string" + }, + "start": { + "description": "Start/End are Resy's own local \"YYYY-MM-DD HH:MM:SS\" strings (not RFC3339\n-- kept as upstream returns them since seating-area shifts don't carry a\nUTC offset in the response).", + "example": "2026-09-20 19:00:00", + "type": "string" + }, + "token": { + "description": "Token is Resy's opaque reservation-config identifier for this slot\n(an \"rgs://...\" string). It is only meaningful back to Resy's own\nbooking flow -- this service does not implement booking, only\ndiscovery.", + "type": "string" } }, "type": "object" }, - "sevennow.offersResponseDoc": { + "resy.availabilityResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sevennow.OffersResponse" + "$ref": "#/definitions/resy.AvailabilityResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "sevennow.popularResponseDoc": { + "resy.cuisinesResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sevennow.PopularResponse" + "$ref": "#/definitions/resy.CuisinesResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "sevennow.productResponseDoc": { + "resy.eventDetailResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sevennow.ProductResponse" + "$ref": "#/definitions/resy.EventDetailResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "sevennow.promotionResponseDoc": { + "resy.eventsResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sevennow.PromotionResponse" + "$ref": "#/definitions/resy.EventsResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "sevennow.searchResponseDoc": { + "resy.locationsResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sevennow.SearchResponse" + "$ref": "#/definitions/resy.LocationsResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "sevennow.storesResponseDoc": { + "resy.restaurantResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sevennow.StoresResponse" + "$ref": "#/definitions/resy.RestaurantResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "sevennow.suggestResponseDoc": { + "resy.searchResponseDoc": { "properties": { "code": { - "description": "Code is the HTTP status code or a custom code used to indicate the result of the request\n@example 200", + "example": 200, "type": "integer" }, "data": { - "$ref": "#/definitions/sevennow.SuggestResponse" + "$ref": "#/definitions/resy.SearchResponse" }, "msg": { - "description": "Msg is the message that describes the result of the request\n@example \"Request successful\"" + "example": "OK", + "type": "string" } }, "type": "object" }, - "sfgate.AuthorArticle": { + "retailmenot.AutocompleteGroup": { "properties": { - "summary": { - "type": "string" + "items": { + "items": { + "$ref": "#/definitions/retailmenot.AutocompleteItem" + }, + "type": "array" }, - "title": { + "label": { "type": "string" }, - "url": { + "name": { "type": "string" } }, "type": "object" }, - "sfgate.AuthorResponse": { + "retailmenot.AutocompleteItem": { "properties": { - "articles": { - "items": { - "$ref": "#/definitions/sfgate.AuthorArticle" - }, - "type": "array" - }, - "biography": { - "items": { - "type": "string" - }, - "type": "array" + "category_slug": { + "description": "CategorySlug is set on category suggestions; use it with\nGET /retailmenot/category.", + "type": "string" }, - "image_url": { + "domain": { "type": "string" }, - "job_title": { + "meta_info": { "type": "string" }, - "name": { + "offer_id": { "type": "string" }, - "same_as": { - "items": { - "type": "string" - }, - "type": "array" + "title": { + "type": "string" }, "url": { "type": "string" @@ -139939,1077 +140204,1063 @@ }, "type": "object" }, - "shakeshack.DeliveryFeeTier": { + "retailmenot.AutocompleteResponse": { "properties": { - "amount": { - "example": 1.99, - "type": "number" - }, - "subtotal_minimum": { - "example": 12.01, - "type": "number" + "groups": { + "items": { + "$ref": "#/definitions/retailmenot.AutocompleteGroup" + }, + "type": "array" } }, "type": "object" }, - "shakeshack.LocationSummary": { + "retailmenot.BlogCategoriesResponse": { "properties": { - "latitude": { - "description": "Latitude/Longitude are present only for entries sourced from the map\nsection (source \"map\"). Fetch GET /shakeshack/store for coordinates\non a \"list\"-sourced entry.", - "example": 29.6856442, - "type": "number" - }, - "longitude": { - "example": -95.4574726, - "type": "number" - }, - "name": { - "example": "Meyerland", - "type": "string" - }, - "path": { - "description": "Path is the value GET /shakeshack/store takes, e.g.\n\"location/meyerland-tx\" or \"node/15226\".", - "example": "location/meyerland-tx", - "type": "string" - }, - "source": { - "description": "Source is which section of the /locations page this entry was\nparsed from, not a business classification: \"list\" is Shake Shack's\nown \"Full List of Locations\" text index (structured address, no\ncoordinates); \"map\" is the interactive map's pin data (coordinates,\nno structured address). Both round-trip through GET /shakeshack/store\nby path.", - "example": "list", - "type": "string" + "categories": { + "items": { + "$ref": "#/definitions/retailmenot.BlogCategory" + }, + "type": "array" } }, "type": "object" }, - "shakeshack.LocationsResponse": { + "retailmenot.BlogCategory": { "properties": { "count": { - "example": 100, "type": "integer" }, - "fetched_at": { + "description": { "type": "string" }, - "locations": { - "items": { - "$ref": "#/definitions/shakeshack.LocationSummary" - }, - "type": "array" - }, - "page": { - "example": 1, + "id": { "type": "integer" }, - "source_url": { + "name": { "type": "string" }, - "total": { - "example": 1322, + "parent_id": { "type": "integer" }, - "total_pages": { - "example": 14, - "type": "integer" + "slug": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "shakeshack.MenuCategory": { + "retailmenot.BlogLink": { "properties": { "name": { - "example": "Burgers & More", "type": "string" }, - "products": { - "items": { - "$ref": "#/definitions/shakeshack.MenuProduct" - }, - "type": "array" + "slug": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "shakeshack.MenuProduct": { + "retailmenot.BlogPostResponse": { "properties": { - "allergens": { - "description": "Allergens is upstream's own comma-separated free text, passed through\nas published rather than split into a fixed list.", - "example": "dairy allergy, egg allergy, soy allergy, wheat allergy, sesame allergy", + "author": { "type": "string" }, - "badge": { - "description": "Badge is a short promotional/dietary label Shake Shack publishes for\nsome items, e.g. \"LIMITED TIME ONLY\", \"VEGETARIAN\".", - "example": "VEGETARIAN", + "categories": { + "items": { + "$ref": "#/definitions/retailmenot.BlogTerm" + }, + "type": "array" + }, + "coupon_categories": { + "items": { + "$ref": "#/definitions/retailmenot.BlogLink" + }, + "type": "array" + }, + "description": { "type": "string" }, - "base_calories": { - "description": "BaseCalories is 0 when upstream reports none.", - "example": 880, - "type": "integer" + "excerpt": { + "type": "string" }, - "chain_product_id": { - "example": 1119032, + "id": { "type": "integer" }, - "description": { + "image_url": { "type": "string" }, - "image_url": { + "modified": { "type": "string" }, - "modifiers": { + "published": { + "type": "string" + }, + "sections": { "items": { - "$ref": "#/definitions/shakeshack.ModifierGroup" + "$ref": "#/definitions/retailmenot.BlogSection" }, "type": "array" }, - "name": { - "example": "West Coast Burger", + "slug": { "type": "string" }, - "price": { - "description": "Price is this item's base price. Many items price entirely through a\nrequired size/flavor modifier rather than a base price, so 0 is\ncommon here -- not a parsing gap (same shape as this repo's other\nOlo-backed menus, e.g. Jimmy John's).", - "example": 0, - "type": "number" + "stores": { + "items": { + "$ref": "#/definitions/retailmenot.BlogLink" + }, + "type": "array" + }, + "tags": { + "items": { + "$ref": "#/definitions/retailmenot.BlogTerm" + }, + "type": "array" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "shakeshack.MenuResponse": { + "retailmenot.BlogPostSummary": { "properties": { + "author": { + "type": "string" + }, "categories": { "items": { - "$ref": "#/definitions/shakeshack.MenuCategory" + "$ref": "#/definitions/retailmenot.BlogTerm" }, "type": "array" }, - "category_count": { - "example": 11, - "type": "integer" + "description": { + "type": "string" }, - "fetched_at": { + "excerpt": { "type": "string" }, - "location_id": { - "example": 14992, + "id": { "type": "integer" }, - "product_count": { - "example": 76, - "type": "integer" + "image_url": { + "type": "string" }, - "source_url": { + "modified": { + "type": "string" + }, + "published": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "tags": { + "items": { + "$ref": "#/definitions/retailmenot.BlogTerm" + }, + "type": "array" + }, + "title": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "shakeshack.ModifierChoice": { + "retailmenot.BlogPostsResponse": { "properties": { - "calorie_delta": { - "example": -1, + "category": { + "type": "string" + }, + "order": { + "enum": [ + "desc", + "asc" + ], + "type": "string" + }, + "order_by": { + "enum": [ + "date", + "modified", + "title", + "relevance" + ], + "type": "string" + }, + "page": { "type": "integer" }, - "chain_option_id": { - "example": 213463, + "page_size": { "type": "integer" }, - "groups": { + "posts": { "items": { - "$ref": "#/definitions/shakeshack.ModifierGroup" + "$ref": "#/definitions/retailmenot.BlogPostSummary" }, "type": "array" }, - "is_default": { - "type": "boolean" + "query": { + "type": "string" }, - "name": { - "example": "No Lettuce", + "tag": { "type": "string" }, - "option_id": { - "example": 4127201667, + "total": { "type": "integer" }, - "price": { - "example": 0, - "type": "number" + "total_pages": { + "type": "integer" } }, "type": "object" }, - "shakeshack.ModifierGroup": { + "retailmenot.BlogSection": { "properties": { - "chain_modifier_id": { - "example": 38041, - "type": "integer" - }, - "choices": { + "lists": { "items": { - "$ref": "#/definitions/shakeshack.ModifierChoice" + "items": { + "type": "string" + }, + "type": "array" }, "type": "array" }, - "group_id": { - "example": 890226904, - "type": "integer" - }, - "name": { - "example": "Remove Lettuce:", - "type": "string" + "paragraphs": { + "items": { + "type": "string" + }, + "type": "array" }, - "type": { - "example": "REMOVAL", + "title": { "type": "string" } }, "type": "object" }, - "shakeshack.NearbyAddress": { + "retailmenot.BlogTagsResponse": { "properties": { - "city": { - "example": "New York", - "type": "string" + "page": { + "type": "integer" }, - "postal_code": { - "example": "10036", - "type": "string" + "page_size": { + "type": "integer" }, - "region": { - "example": "NY", + "query": { "type": "string" }, - "street": { - "example": "691 Eighth Avenue", - "type": "string" + "tags": { + "items": { + "$ref": "#/definitions/retailmenot.BlogTerm" + }, + "type": "array" + }, + "total": { + "type": "integer" + }, + "total_pages": { + "type": "integer" } }, "type": "object" }, - "shakeshack.NearbyHours": { + "retailmenot.BlogTerm": { "properties": { - "closes": { - "example": "23:00", + "count": { + "type": "integer" + }, + "id": { + "type": "integer" + }, + "name": { "type": "string" }, - "day_of_week": { - "example": "Monday", + "slug": { "type": "string" }, - "opens": { - "example": "10:00", + "url": { "type": "string" } }, "type": "object" }, - "shakeshack.NearbyLocation": { + "retailmenot.CashBackResponse": { "properties": { - "address": { - "$ref": "#/definitions/shakeshack.NearbyAddress" - }, - "delivery_fees": { - "items": { - "$ref": "#/definitions/shakeshack.DeliveryFeeTier" - }, - "type": "array" - }, - "distance_miles": { - "example": 0.19, - "type": "number" - }, - "fulfillment_modes": { - "description": "FulfillmentModes are the handoff modes this location currently has\nenabled, e.g. \"dine_in\", \"pickup\", \"delivery\", \"curbside\",\n\"drive_thru\", \"walk_up\".", + "sections": { "items": { - "type": "string" + "$ref": "#/definitions/retailmenot.OfferSection" }, "type": "array" - }, - "hours": { - "description": "Hours is the current rolling week, Monday-first.", + } + }, + "type": "object" + }, + "retailmenot.CategoriesResponse": { + "properties": { + "categories": { "items": { - "$ref": "#/definitions/shakeshack.NearbyHours" + "$ref": "#/definitions/retailmenot.Category" }, "type": "array" - }, - "is_online_ordering_available": { - "type": "boolean" - }, - "latitude": { - "example": 40.7584054, - "type": "number" - }, - "location_id": { - "example": 14992, + } + }, + "type": "object" + }, + "retailmenot.Category": { + "properties": { + "level": { "type": "integer" }, - "longitude": { - "example": -73.9891734, - "type": "number" - }, "name": { - "example": "Theater District", "type": "string" }, - "phone_number": { - "example": "(646) 435-0135", + "parent_slug": { "type": "string" }, - "timezone": { - "example": "America/New_York", + "slug": { + "type": "string" + }, + "url": { "type": "string" } }, "type": "object" }, - "shakeshack.NearbyResponse": { + "retailmenot.CategoryOffer": { "properties": { - "count": { - "example": 10, - "type": "integer" + "discount": { + "type": "string" }, - "fetched_at": { + "id": { "type": "string" }, - "locations": { - "items": { - "$ref": "#/definitions/shakeshack.NearbyLocation" - }, - "type": "array" + "offer_type": { + "type": "string" }, - "radius_miles": { - "example": 15, + "position": { "type": "integer" }, - "source_url": { - "type": "string" - } - }, - "type": "object" - }, - "shakeshack.StoreAddress": { - "properties": { - "city": { - "example": "Houston", + "store_domain": { "type": "string" }, - "country": { - "example": "United States", + "store_name": { "type": "string" }, - "line1": { - "example": "8815 W Loop S", + "store_url": { "type": "string" }, - "postal_code": { - "example": "77096", + "title": { "type": "string" }, - "region": { - "example": "TX", + "type_label": { "type": "string" } }, "type": "object" }, - "shakeshack.StoreHours": { + "retailmenot.CategoryRef": { "properties": { - "closed": { - "description": "Closed is true when Shake Shack publishes the day with no open\ninterval.", - "example": false, - "type": "boolean" - }, - "closes": { - "example": "23:00", + "name": { "type": "string" }, - "day_of_week": { - "example": "Monday", + "slug": { "type": "string" }, - "opens": { - "example": "10:00", + "url": { "type": "string" } }, "type": "object" }, - "shakeshack.StoreResponse": { + "retailmenot.CategoryResponse": { "properties": { - "address": { - "$ref": "#/definitions/shakeshack.StoreAddress" + "description": { + "type": "string" }, - "fetched_at": { + "name": { "type": "string" }, - "hours": { - "description": "Hours is Monday-first. Omitted entirely for locations that publish no\nweekly schedule (seen on venue/kiosk-shaped locations, e.g. inside a\nstadium).", + "offers": { "items": { - "$ref": "#/definitions/shakeshack.StoreHours" + "$ref": "#/definitions/retailmenot.CategoryOffer" }, "type": "array" }, - "latitude": { - "example": 29.6856442, - "type": "number" - }, - "longitude": { - "example": -95.4574726, - "type": "number" - }, - "name": { - "example": "Meyerland", - "type": "string" + "page": { + "type": "integer" }, - "order_types": { - "description": "OrderTypes are the fulfillment types Shake Shack publishes for this\nlocation, e.g. \"Dine In\", \"Delivery\".", + "similar_stores": { "items": { - "type": "string" + "$ref": "#/definitions/retailmenot.StoreRef" }, "type": "array" }, - "path": { - "description": "Path is the canonical page path this record resolved to, e.g.\n\"location/meyerland-tx\" -- present even when the requested path was\nthe legacy \"node/` location ids -- free-text location names are rejected by the search backend). Apple exposes no bulk \"list everything\" API for this; its only source is its own location-filter typeahead, a fuzzy search capped at 10 results per call covering four granularities (country, state/province, metro area, city) with no empty-input listing mode. With no `q`, this returns the full country-level value space (206 values, live-verified) as a static list -- the granularity apple-jobs-search's own examples use and nearly every caller needs, with no live upstream call required. With `q` supplied, this instead live-proxies Apple's own typeahead so callers can discover state/metro/city-level values for finer filtering; results at those deeper levels may include more than one candidate and are ranked by Apple's own relevance, not alphabetically.",
+ "operationId": "apple-jobs-locations",
+ "parameters": [
+ {
+ "description": "Optional free-text location search. Omit to get the full country-level list; supply to live-search state/metro/city-level values too (e.g. a city name).",
+ "in": "query",
+ "name": "q",
+ "type": "string",
+ "x-example": "singapore"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applejobs.locationsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Apple Jobs location discovery",
+ "tags": [
+ "Apple Jobs"
+ ]
+ }
+ },
+ "/apple-jobs/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Apple's public careers site (jobs.apple.com) via its server-rendered search page's embedded job data. Page size is fixed by Apple at 20 results. Search results carry identity/location/team metadata only — call the job endpoint for the full description and qualifications.",
+ "operationId": "apple-jobs-search",
+ "parameters": [
+ {
+ "description": "Search query",
+ "in": "query",
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "software engineer"
+ },
+ {
+ "description": "Location filter in Apple's own slug format, e.g. united-states-USA or singapore-SGP. Free-text location names are not accepted -- call apple-jobs-locations to discover valid values.",
+ "in": "query",
+ "name": "location",
+ "type": "string",
+ "x-example": "united-states-USA"
+ },
+ {
+ "description": "Page number, 1-based",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applejobs.searchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Apple Jobs search",
+ "tags": [
+ "Apple Jobs"
+ ]
+ }
+ },
+ "/apple-maps/autocomplete": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Apple Maps typeahead suggestions for a partial query near a coordinate: query completions, matching businesses (resolved to the same place summary the search endpoint returns, with the place ID the place endpoint takes), and addresses.",
+ "operationId": "apple-maps-autocomplete",
+ "parameters": [
+ {
+ "description": "Partial search text to complete",
+ "in": "query",
+ "name": "query",
+ "required": true,
+ "type": "string",
+ "x-example": "blue bot"
+ },
+ {
+ "description": "Center latitude the suggestions are biased to",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7749
+ },
+ {
+ "description": "Center longitude the suggestions are biased to",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4194
+ },
+ {
+ "description": "Viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5.",
+ "in": "query",
+ "name": "span",
+ "type": "number",
+ "x-example": 0.05
+ },
+ {
+ "description": "Display language as a BCP 47 tag. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.autocompleteResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Apple Maps search suggestions for a partial query",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/categories": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the \"Find Nearby\" browse categories Apple Maps offers for an area (for example Restaurants, Coffee Shops, Gas Stations, Hotels, Parking, Grocery Stores), each with the key and name the category-search endpoint takes. The set is location-aware.",
+ "operationId": "apple-maps-categories",
+ "parameters": [
+ {
+ "description": "Center latitude",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7749
+ },
+ {
+ "description": "Center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4194
+ },
+ {
+ "description": "Viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5.",
+ "in": "query",
+ "name": "span",
+ "type": "number",
+ "x-example": 0.05
+ },
+ {
+ "description": "Display language as a BCP 47 tag. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.categoriesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Apple Maps browse categories for an area",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/category-search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns places in one browse category near a coordinate without a keyword, in the same shape as the search endpoint (place summaries, region, relocation flag, and the refinement filters block). The category is a name from the categories endpoint for the same area (case-insensitive) or its key; an unknown name returns 400 listing the categories available there. Filters and sort work exactly as on the search endpoint.",
+ "operationId": "apple-maps-category-search",
+ "parameters": [
+ {
+ "description": "Category name (e.g. Coffee Shops, Restaurants) or key from /apple-maps/categories for the same area",
+ "in": "query",
+ "name": "category",
+ "required": true,
+ "type": "string",
+ "x-example": "Coffee Shops"
+ },
+ {
+ "description": "Search center latitude",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7749
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4194
+ },
+ {
+ "description": "Search viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5.",
+ "in": "query",
+ "name": "span",
+ "type": "number",
+ "x-example": 0.05
+ },
+ {
+ "description": "Max places returned. Defaults to 25, maximum 100.",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 25
+ },
+ {
+ "description": "Display language as a BCP 47 tag. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ },
+ {
+ "description": "Comma-separated filter keys from the filters block of an unfiltered category search for the same category and area. Unknown keys return 400 listing the available keys. Costs a second upstream call.",
+ "in": "query",
+ "name": "filters",
+ "type": "string",
+ "x-example": "OPEN_NOW"
+ },
+ {
+ "description": "Result order. Costs a second upstream call.",
+ "enum": [
+ "best_match",
+ "distance",
+ "ratings"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "ratings"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.searchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Browse one Apple Maps category near a coordinate",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/directions": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Apple Maps routes between an origin and a destination, with optional intermediate stops, for driving, walking, or cycling. Each route carries its name, whether it is Apple's main or an alternate route, distance, live/historic/free-flow durations, toll and highway flags, Apple's route description and traffic note, and per-leg turn-by-turn steps (maneuver, road, shield, instruction text, distance, duration); detail=full adds each leg's path as coordinates. Departure time and avoid-tolls/highways/stairs preferences are supported. Transit routing is not available.",
+ "operationId": "apple-maps-directions",
+ "parameters": [
+ {
+ "description": "Origin latitude",
+ "in": "query",
+ "name": "origin_latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7749
+ },
+ {
+ "description": "Origin longitude",
+ "in": "query",
+ "name": "origin_longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4194
+ },
+ {
+ "description": "Destination latitude",
+ "in": "query",
+ "name": "destination_latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.8199
+ },
+ {
+ "description": "Destination longitude",
+ "in": "query",
+ "name": "destination_longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4783
+ },
+ {
+ "description": "Intermediate stops as lat,lng pairs separated by |, at most 8",
+ "in": "query",
+ "name": "via",
+ "type": "string",
+ "x-example": "37.7955,-122.3937"
+ },
+ {
+ "description": "Travel mode. Defaults to driving.",
+ "enum": [
+ "driving",
+ "walking",
+ "cycling"
+ ],
+ "in": "query",
+ "name": "mode",
+ "type": "string",
+ "x-example": "driving"
+ },
+ {
+ "description": "Driving only: prefer routes without tolls",
+ "in": "query",
+ "name": "avoid_tolls",
+ "type": "boolean",
+ "x-example": false
+ },
+ {
+ "description": "Driving only: prefer routes without highways",
+ "in": "query",
+ "name": "avoid_highways",
+ "type": "boolean",
+ "x-example": false
+ },
+ {
+ "description": "Walking only: prefer routes without stairs",
+ "in": "query",
+ "name": "avoid_stairs",
+ "type": "boolean",
+ "x-example": false
+ },
+ {
+ "description": "Departure time as RFC 3339 for traffic-aware estimates. Defaults to now.",
+ "in": "query",
+ "name": "depart_at",
+ "type": "string",
+ "x-example": "2026-09-07T08:30:00Z"
+ },
+ {
+ "description": "How much of each route to return. Defaults to steps.",
+ "enum": [
+ "summary",
+ "steps",
+ "full"
+ ],
+ "in": "query",
+ "name": "detail",
+ "type": "string",
+ "x-example": "steps"
+ },
+ {
+ "description": "Language for road names and instructions as a BCP 47 tag. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.directionsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Apple Maps driving, walking, or cycling directions",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/eta": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Apple Maps travel-time estimates between an origin and a destination: for each transport type Apple reports (driving always; walking when requested), the live best estimate, the historic and free-flow durations, and the route distance. Cheaper than the directions endpoint when only the time and distance are needed. Apple has no cycling ETA; use the directions endpoint for cycling.",
+ "operationId": "apple-maps-eta",
+ "parameters": [
+ {
+ "description": "Origin latitude",
+ "in": "query",
+ "name": "origin_latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7749
+ },
+ {
+ "description": "Origin longitude",
+ "in": "query",
+ "name": "origin_longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4194
+ },
+ {
+ "description": "Destination latitude",
+ "in": "query",
+ "name": "destination_latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.8199
+ },
+ {
+ "description": "Destination longitude",
+ "in": "query",
+ "name": "destination_longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4783
+ },
+ {
+ "description": "Travel mode. Defaults to driving.",
+ "enum": [
+ "driving",
+ "walking"
+ ],
+ "in": "query",
+ "name": "mode",
+ "type": "string",
+ "x-example": "driving"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.etaResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Apple Maps travel-time estimates between two points",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/guides": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the Apple Guides home page for the Worldwide scope or one city: the featured guide, the guide carousels (expert recommendations, latest, and similar rows), the city shortcut list, and the browse-by-publisher list. Each guide carries its id (the value the guide endpoint takes), title, description, last-modified time, place count, cover photo, source link, and publisher; each publisher carries its id, name, subtitle, website, and guide count.",
+ "operationId": "apple-maps-guides",
+ "parameters": [
+ {
+ "description": "City id from /apple-maps/guides/cities. Omit for the Worldwide guides home.",
+ "in": "query",
+ "name": "city_id",
+ "type": "string",
+ "x-example": "8077516530309122779"
+ },
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.guidesHomeResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Browse the Apple Guides home page worldwide or for one city",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/guides/cities": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the Apple Guides city picker: every region (North America, Europe, Australia, and any Apple adds) with the cities it publishes guides for, each with its id, country, coordinates, and cover photo. Pass a city id to the guides home, publishers, or publisher endpoints to scope them to that city; omit it for the Worldwide scope.",
+ "operationId": "apple-maps-guides-cities",
+ "parameters": [
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Region and city names follow it. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.guidesCitiesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List the regions and cities Apple Guides cover",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/guides/guide": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Apple Guide (curated collection) by id: title, description, last-modified time, cover photos, source link, publisher, and every place in the guide with the publisher's blurb for it plus the place's Apple place ID, name, category, coordinates, address, phone, website, rating, price level, hours, and photo.",
+ "operationId": "apple-maps-guide",
+ "parameters": [
+ {
+ "description": "Guide id: from the guides home, a publisher page, a place's guide_ids, or the curated= value in a maps.apple.com/guides URL",
+ "in": "query",
+ "name": "guide_id",
+ "required": true,
+ "type": "string",
+ "x-example": "13100041759208417726"
+ },
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.guideResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get one Apple Guide with its places",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/guides/lookup": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns guide summaries (id, title, description, last-modified time, place count, cover photo, source link) for up to 20 guide ids in one call, for example the guide_ids a place carries. Ids Apple does not return are listed in not_found. Publisher details are not part of this lookup; use the guide endpoint for a single guide's publisher and places.",
+ "operationId": "apple-maps-guides-lookup",
+ "parameters": [
+ {
+ "description": "Comma-separated Apple guide ids, 1 to 20",
+ "in": "query",
+ "name": "guide_ids",
+ "required": true,
+ "type": "string",
+ "x-example": "13100041759208417726,17954826775154719886"
+ },
+ {
+ "description": "Display language as a BCP 47 tag. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.guidesLookupResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Resolve up to 20 Apple Guide ids to guide summaries",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/guides/nearby": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the guides Apple suggests for the area around a coordinate (\"Guides We Love\" for that location) as guide summaries, plus the Apple Guides city the area belongs to (with the city id the guides home endpoint takes). A coordinate outside any guides city returns an empty list.",
+ "operationId": "apple-maps-guides-nearby",
+ "parameters": [
+ {
+ "description": "Latitude of the area",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7749
+ },
+ {
+ "description": "Longitude of the area",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4194
+ },
+ {
+ "description": "Viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5.",
+ "in": "query",
+ "name": "span",
+ "type": "number",
+ "x-example": 0.05
+ },
+ {
+ "description": "Display language as a BCP 47 tag. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.guidesNearbyResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get the Apple Guides curated for the area around a coordinate",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/guides/publisher": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Apple Guides publisher by id: name, subtitle, website, guide count, the cities the publisher offers as filters, and its guides (each with id, title, description, last-modified time, place count, cover photo, and source link). Pass one of the publisher's own city ids as city_id to return only the guides for that city.",
+ "operationId": "apple-maps-guides-publisher",
+ "parameters": [
+ {
+ "description": "Publisher id: from the guides home or publishers list, a guide's publisher.id, or the publisher= value in a maps.apple.com/guides URL",
+ "in": "query",
+ "name": "publisher_id",
+ "required": true,
+ "type": "string",
+ "x-example": "1706564968711360917"
+ },
+ {
+ "description": "Restrict to one city: an id from this publisher's own cities list",
+ "in": "query",
+ "name": "city_id",
+ "type": "string",
+ "x-example": "18366846785603624515"
+ },
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.publisherResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get one Apple Guides publisher and its guides",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/guides/publishers": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the Apple Guides \"Browse by Publisher\" list for the Worldwide scope or one city, sorted by name: each publisher's id (the value the publisher endpoint takes), name, subtitle, website, and number of guides. With no city_id this is the complete enumeration of every publisher Apple lists, usable as the id lookup table for the publisher endpoint.",
+ "operationId": "apple-maps-guides-publishers",
+ "parameters": [
+ {
+ "description": "City id from /apple-maps/guides/cities. Omit for the Worldwide publisher list.",
+ "in": "query",
+ "name": "city_id",
+ "type": "string",
+ "x-example": "8077516530309122779"
+ },
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.guidesPublishersResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Apple Guides publishers worldwide or for one city",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/place": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Apple Maps place by its place ID: name, type, category taxonomy, coordinates, formatted and structured address, phone numbers, website, rating and review count, price level, weekly opening hours, amenities (payment, accessibility, parking, and similar yes/no attributes), photos, review snippets (text, rating, time, and source link, without reviewer identity), the business-claim link, and the IDs of Apple Guides that include the place. Accepts either the external place ID (starts with I, the place-id= value in a maps.apple.com/place URL) or the numeric ID from a search result.",
+ "operationId": "apple-maps-place",
+ "parameters": [
+ {
+ "description": "Apple place ID: external form (I594FECA0B369D14A) or numeric id from a search result",
+ "in": "query",
+ "name": "place_id",
+ "required": true,
+ "type": "string",
+ "x-example": "I594FECA0B369D14A"
+ },
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US, ja-JP, de-DE. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code selecting Apple's regional catalog. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.placeResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get one Apple Maps place's full detail",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/place/photos": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns all of a place's photos (the place endpoint caps at 20): the business cover photo first when present, then the hero photo, then every categorized photo with its category (Food & Drink, Interior, Exterior, ...), width and height.",
+ "operationId": "apple-maps-place-photos",
+ "parameters": [
+ {
+ "description": "Apple place ID (external I... form or numeric id)",
+ "in": "query",
+ "name": "place_id",
+ "required": true,
+ "type": "string",
+ "x-example": "I594FECA0B369D14A"
+ },
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.placePhotosResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List every photo Apple Maps carries for a place",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/places": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the same full detail as the place endpoint for up to 20 place IDs in a single upstream call, plus the list of requested IDs Apple did not return. Accepts the external I... form and the numeric id interchangeably.",
+ "operationId": "apple-maps-places",
+ "parameters": [
+ {
+ "description": "Comma-separated Apple place ids, 1 to 20",
+ "in": "query",
+ "name": "place_ids",
+ "required": true,
+ "type": "string",
+ "x-example": "I594FECA0B369D14A,243355970509228267"
+ },
+ {
+ "description": "Display language as a BCP 47 tag. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.placesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get full detail for up to 20 Apple Maps places in one call",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/reverse-geocode": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Apple Maps' address record for a coordinate: the matched place name and type (an address, street, or area of interest such as a neighborhood), the formatted and structured address, the matched center, the IANA timezone, and the display region.",
+ "operationId": "apple-maps-reverse-geocode",
+ "parameters": [
+ {
+ "description": "Latitude to reverse-geocode",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7749
+ },
+ {
+ "description": "Longitude to reverse-geocode",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4194
+ },
+ {
+ "description": "Display language as a BCP 47 tag. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.reverseGeocodeResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Reverse-geocode a coordinate with Apple Maps",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Apple Maps places matching a keyword, business name, category, or street address near a coordinate. Each place carries its Apple place ID (the value the place endpoint takes), name, category, coordinates, formatted and structured address, phone, website, rating and review count, price level, weekly opening hours, and a hero photo. Apple returns a bounded set per viewport (around 25 places for the default span) with no pagination; widen the span or move the center to cover more area. When nothing matches near the center Apple may relocate the search to a default region, reported by relocated=true and the region bounds. The response's filters block lists the refinement chips Apple offers for this query and area (open now, top rated, in guides, cuisines, price bands, amenities, accolades, sort); pass their keys back as filters and sort to refine the same search.",
+ "operationId": "apple-maps-search",
+ "parameters": [
+ {
+ "description": "Keyword, business name, category, or street address to search for",
+ "in": "query",
+ "name": "query",
+ "required": true,
+ "type": "string",
+ "x-example": "coffee"
+ },
+ {
+ "description": "Search center latitude",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7749
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.4194
+ },
+ {
+ "description": "Search viewport size in degrees of latitude/longitude around the center. Defaults to 0.05 (roughly a 5km box); minimum 0.001, maximum 5.",
+ "in": "query",
+ "name": "span",
+ "type": "number",
+ "x-example": 0.05
+ },
+ {
+ "description": "Max places returned. Defaults to 25, maximum 100.",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 25
+ },
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US, ja-JP, de-DE. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code selecting Apple's regional catalog. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ },
+ {
+ "description": "Comma-separated filter keys from the filters block of an unfiltered search for the same query and area, e.g. OPEN_NOW, TOP_RATED, FEATURED_IN_GUIDES, PRICE_RANGE_MODERATE, modern_pizza_restaurant, ACCEPTS_CREDIT_CARDS. Unknown keys return 400 listing the available keys. Costs a second upstream search.",
+ "in": "query",
+ "name": "filters",
+ "type": "string",
+ "x-example": "OPEN_NOW,modern_pizza_restaurant"
+ },
+ {
+ "description": "Result order. Costs a second upstream search.",
+ "enum": [
+ "best_match",
+ "distance",
+ "ratings"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "ratings"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.searchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Search Apple Maps places near a coordinate",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/transit-departures": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a transit stop or station's systems (e.g. BART, Muni Metro), lines (name, shield, color), and the upcoming departures Apple Maps shows, each with the line, headsign, direction, scheduled and live times, and real-time status. Takes the stop's Apple place ID (find stops with the search endpoint, e.g. a station name). A place that is not a transit stop returns 404.",
+ "operationId": "apple-maps-transit-departures",
+ "parameters": [
+ {
+ "description": "Apple place ID of a transit stop or station (external I... form or numeric id)",
+ "in": "query",
+ "name": "place_id",
+ "required": true,
+ "type": "string",
+ "x-example": "5261664738367631956"
+ },
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.transitDeparturesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a transit stop's lines and live departures from Apple Maps",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-maps/venue/browse": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns an indoor venue's directory (mall, airport, stadium: categories such as Clothes, Shoes, Food, All Shops with their subcategories and levels) and, when a category is given, the places inside the venue for that category with the same summary shape as search. Find venues with the search endpoint; a place without a directory returns 404, an unknown category returns 400 listing the available ones.",
+ "operationId": "apple-maps-venue-browse",
+ "parameters": [
+ {
+ "description": "Apple place ID of the venue (external I... form or numeric id)",
+ "in": "query",
+ "name": "place_id",
+ "required": true,
+ "type": "string",
+ "x-example": "14643260860569849804"
+ },
+ {
+ "description": "Directory category or subcategory to browse, by name (case-insensitive) or key from the venue's directory. Omit to list the directory only.",
+ "in": "query",
+ "name": "category",
+ "type": "string",
+ "x-example": "Clothes"
+ },
+ {
+ "description": "Max places returned. Defaults to 25, maximum 100.",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 25
+ },
+ {
+ "description": "Display language as a BCP 47 tag, e.g. en-US. Defaults to en-US.",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-US"
+ },
+ {
+ "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applemaps.venueBrowseResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Browse the stores and places inside a venue on Apple Maps",
+ "tags": [
+ "Apple Maps"
+ ]
+ }
+ },
+ "/apple-podcasts/charts": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Apple Podcasts show chart rankings from public iTunes RSS JSON feeds. Supported collections are `toppodcasts` and `topaudiopodcasts`.",
+ "operationId": "apple-podcasts-charts",
+ "parameters": [
+ {
+ "description": "Chart collection",
+ "in": "query",
+ "name": "collection",
+ "type": "string",
+ "x-example": "toppodcasts"
+ },
+ {
+ "description": "Numeric Apple podcast genre ID",
+ "in": "query",
+ "name": "category",
+ "type": "integer",
+ "x-example": 1303
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Number of chart items to return",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applepodcasts.chartsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve Apple Podcasts chart rankings",
+ "tags": [
+ "ApplePodcasts"
+ ]
+ }
+ },
+ "/apple-podcasts/charts/rankings": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Apple Podcasts chart rankings from the modern podcasts.apple.com charts page, covering chart algorithms (`top`, `top-subscriber`, `top-series`) crossed with entity types (`podcasts`, `podcast-episodes`, `podcast-channels`) and an optional genre filter. A richer, differently-sourced capability than the legacy RSS-based `/apple-podcasts/charts` endpoint.",
+ "operationId": "apple-podcasts-charts-rankings",
+ "parameters": [
+ {
+ "description": "Chart algorithm. Allowed values: `top`, `top-subscriber`, `top-series`. Default `top`.",
+ "in": "query",
+ "name": "chart",
+ "type": "string",
+ "x-example": "top"
+ },
+ {
+ "description": "Entity type. Allowed values: `podcasts`, `podcast-episodes`, `podcast-channels`. Default `podcasts`.",
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "podcasts"
+ },
+ {
+ "description": "Optional Apple Podcasts genre ID to filter the chart, e.g. 1303 for Comedy",
+ "in": "query",
+ "name": "genre",
+ "type": "integer",
+ "x-example": 1303
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Number of chart entries to return, default 24, max 200",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 24
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applepodcasts.chartRankingsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve Apple Podcasts chart rankings by algorithm, type, and genre",
+ "tags": [
+ "ApplePodcasts"
+ ]
+ }
+ },
+ "/apple-podcasts/episodes/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized Apple Podcasts episodes from Apple's public iTunes Search API.",
+ "operationId": "apple-podcasts-episodes-search",
+ "parameters": [
+ {
+ "description": "Search term",
+ "in": "query",
+ "name": "term",
+ "required": true,
+ "type": "string",
+ "x-example": "hardcore history"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ },
+ {
+ "description": "Number of episodes per page",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
+ },
+ {
+ "description": "Search page number (1-based)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applepodcasts.episodeSearchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Search Apple Podcasts episodes",
+ "tags": [
+ "ApplePodcasts"
+ ]
+ }
+ },
+ "/apple-podcasts/new": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the curated editorial shelves from podcasts.apple.com/{country}/new (New Shows, New Seasons, New Trailers, Essentials, and other seasonal spotlights). Shelves that merely mirror a Charts Rankings query are omitted here since `/apple-podcasts/charts/rankings` already covers that data.",
+ "operationId": "apple-podcasts-new",
+ "parameters": [
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applepodcasts.newShelvesResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve Apple Podcasts curated \"New\" editorial shelves",
+ "tags": [
+ "ApplePodcasts"
+ ]
+ }
+ },
+ "/apple-podcasts/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized Apple Podcasts shows from Apple's public iTunes Search API.",
+ "operationId": "apple-podcasts-search",
+ "parameters": [
+ {
+ "description": "Search term",
+ "in": "query",
+ "name": "term",
+ "required": true,
+ "type": "string",
+ "x-example": "hardcore history"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ },
+ {
+ "description": "Number of shows per page",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
+ },
+ {
+ "description": "Search page number (1-based)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applepodcasts.searchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Search Apple Podcasts shows",
+ "tags": [
+ "ApplePodcasts"
+ ]
+ }
+ },
+ "/apple-podcasts/show/{id}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized show metadata from Apple's public iTunes Lookup API.",
+ "operationId": "apple-podcasts-show",
+ "parameters": [
+ {
+ "description": "Apple Podcasts show ID",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "173001861"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applepodcasts.showResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Show not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve Apple Podcasts show details",
+ "tags": [
+ "ApplePodcasts"
+ ]
+ }
+ },
+ "/apple-podcasts/show/{id}/episodes": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a show and its public Apple Podcasts episodes from Apple's iTunes Lookup API.",
+ "operationId": "apple-podcasts-show-episodes",
+ "parameters": [
+ {
+ "description": "Apple Podcasts show ID",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "173001861"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ },
+ {
+ "description": "Number of episodes to return",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applepodcasts.showEpisodesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Show not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve Apple Podcasts show episodes",
+ "tags": [
+ "ApplePodcasts"
+ ]
+ }
+ },
+ "/apple-podcasts/show/{id}/related": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the \"You Might Also Like\" rail for a single show, sourced from the modern podcasts.apple.com show page's listener-cohort recommendation data.",
+ "operationId": "apple-podcasts-show-related",
+ "parameters": [
+ {
+ "description": "Apple Podcasts show ID",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "173001861"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Number of related shows to return, default 20, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/applepodcasts.relatedShowsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Show not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve Apple Podcasts \"You Might Also Like\" related shows",
+ "tags": [
+ "ApplePodcasts"
+ ]
+ }
+ },
+ "/appstore/app": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized app metadata from the App Store lookup API. Provide either `id` (numeric track ID) or `app_id` (bundle ID). `id`/`app_id` can identify an iPhone, iPad, or Mac App Store listing.",
+ "operationId": "appstore-app",
+ "parameters": [
+ {
+ "description": "App Store numeric track ID (digits only)",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "553834731"
+ },
+ {
+ "description": "App Store bundle ID",
+ "in": "query",
+ "name": "app_id",
+ "type": "string",
+ "x-example": "com.midasplayer.apps.candycrushsaga"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ },
+ {
+ "default": false,
+ "description": "Include ratings histogram",
+ "in": "query",
+ "name": "ratings",
+ "type": "boolean"
+ },
+ {
+ "default": false,
+ "description": "Include the full device-platform compatibility list (adds one extra upstream fetch)",
+ "in": "query",
+ "name": "platforms",
+ "type": "boolean"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.appDetailsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "App not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve full App Store app details",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/categories": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns every category ID and chart collection accepted by `/appstore/list`, including Games and Magazines & Newspapers subgenres with their parent ID. Collections carry their device platform (`phone`, `pad`, `mac`), chart type (`top_free`, `top_paid`, `top_grossing`, `top`, `new`), and whether the feed currently returns entries.",
+ "operationId": "appstore-categories",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.categoriesResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve App Store chart categories and collections",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/collection": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns app items embedded in an Apple room or EDS collection page. Discover IDs with `appstore_collections`. `platform` enum: `iphone`, `ipad`, `mac`, `vision`, `watch`, `tv`. `collection_id` must be a numeric room ID or `eds.UUID` ID returned by the discovery endpoint.",
+ "operationId": "appstore-collection",
+ "parameters": [
+ {
+ "description": "Apple device catalog",
+ "enum": [
+ "iphone",
+ "ipad",
+ "mac",
+ "vision",
+ "watch",
+ "tv"
+ ],
+ "in": "query",
+ "name": "platform",
+ "required": true,
+ "type": "string",
+ "x-example": "iphone"
+ },
+ {
+ "description": "Room ID or EDS UUID collection ID from appstore_collections",
+ "in": "query",
+ "name": "collection_id",
+ "required": true,
+ "type": "string",
+ "x-example": "6757461219"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.collectionResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Collection not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve apps in one App Store collection",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/collections": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the room and EDS collection links embedded in Apple's browse page for one device. `platform` enum: `iphone`, `ipad`, `mac`, `vision`, `watch`, `tv`. Pass a returned `id` and the same platform to `appstore_collection` to retrieve the collection's apps.",
+ "operationId": "appstore-collections",
+ "parameters": [
+ {
+ "description": "Apple device catalog",
+ "enum": [
+ "iphone",
+ "ipad",
+ "mac",
+ "vision",
+ "watch",
+ "tv"
+ ],
+ "in": "query",
+ "name": "platform",
+ "required": true,
+ "type": "string",
+ "x-example": "iphone"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.collectionsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Page not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Discover App Store editorial collections",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/developer/{dev_id}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns App Store apps associated with a specific developer artist ID.",
+ "operationId": "appstore-developer",
+ "parameters": [
+ {
+ "description": "Developer artist ID",
+ "in": "path",
+ "name": "dev_id",
+ "required": true,
+ "type": "string",
+ "x-example": "284882218"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.developerResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Developer not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve apps by developer ID",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/editorial": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the curated editorial shelves from one of Apple's per-device App Store landing pages (the same content shown by apps.apple.com's device switcher). `device` enum: `iphone`, `ipad`, `mac`, `vision`, `watch`, `tv`. `section` enum: `main` (the device's Today/Discover/Apps & Games landing page), `arcade` (the device's Apple Arcade landing page). Watch has no Arcade page — `device=watch` with `section=arcade` returns `400`.",
+ "operationId": "appstore-editorial",
+ "parameters": [
+ {
+ "description": "Apple device catalog",
+ "enum": [
+ "iphone",
+ "ipad",
+ "mac",
+ "vision",
+ "watch",
+ "tv"
+ ],
+ "in": "query",
+ "name": "device",
+ "required": true,
+ "type": "string",
+ "x-example": "iphone"
+ },
+ {
+ "default": "main",
+ "description": "Editorial section within the device",
+ "enum": [
+ "main",
+ "arcade"
+ ],
+ "in": "query",
+ "name": "section",
+ "type": "string"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.editorialResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Page not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve an App Store device or Arcade editorial landing page",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/editorial/category": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the curated editorial shelves for one device category page (e.g. \"Entertainment Apps for Vision\"). `category_id` is a numeric, device-specific editorial page ID — not a static enum — discovered from an `appstore_editorial` response for the SAME `device`, in its \"Browse by Category\" shelf items' `destination_id` field. `device` enum: `iphone`, `ipad`, `mac`, `vision`, `watch`, `tv`.",
+ "operationId": "appstore-editorial-category",
+ "parameters": [
+ {
+ "description": "Apple device catalog",
+ "enum": [
+ "iphone",
+ "ipad",
+ "mac",
+ "vision",
+ "watch",
+ "tv"
+ ],
+ "in": "query",
+ "name": "device",
+ "required": true,
+ "type": "string",
+ "x-example": "iphone"
+ },
+ {
+ "description": "Numeric App Store editorial page ID, discovered from appstore_editorial (same device)",
+ "in": "query",
+ "name": "category_id",
+ "required": true,
+ "type": "string",
+ "x-example": "6503709728"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.editorialResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Category page not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve an App Store category-scoped editorial page",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/list": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns ranked App Store apps from an iTunes RSS collection, optionally expanded to full lookup details. `collection` enum: `topfreeapplications`, `toppaidapplications`, `topgrossingapplications`, `topfreeipadapplications`, `toppaidipadapplications`, `topgrossingipadapplications`, `topmacapps`, `topfreemacapps`, `topgrossingmacapps`, `toppaidmacapps`, `newapplications`, `newfreeapplications`, `newpaidapplications`. Of the Mac collections, only `topfreemacapps` currently returns ranked apps — `topmacapps`, `topgrossingmacapps`, and `toppaidmacapps` are accepted but Apple's feed for them is currently empty. There is no separate Games `collection` — combine any collection with `category=6014` (or a Games subgenre ID, e.g. `7012` for Puzzle) to get its Games-only equivalent, e.g. Top Free Games. See the endpoint markdown for the full category ID table.",
+ "operationId": "appstore-list",
+ "parameters": [
+ {
+ "description": "Chart collection slug, see description for the full enum",
+ "in": "query",
+ "name": "collection",
+ "type": "string",
+ "x-example": "topfreeapplications"
+ },
+ {
+ "description": "Numeric App Store category ID, see description for the full enum; e.g. 6014 = Games, 7012 = Games/Puzzle",
+ "in": "query",
+ "name": "category",
+ "type": "integer",
+ "x-example": 6014
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ },
+ {
+ "description": "Number of apps to return",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 50
+ },
+ {
+ "default": false,
+ "description": "Expand each app via lookup API",
+ "in": "query",
+ "name": "full_detail",
+ "type": "boolean"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.listResultsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve App Store collection rankings",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/privacy/{id}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the app privacy cards shown on the App Store page, including data categories and purposes.",
+ "operationId": "appstore-privacy",
+ "parameters": [
+ {
+ "description": "App Store numeric track ID (digits only)",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "324684580"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.privacyResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "App not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve App Store privacy disclosures",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/ratings": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns total ratings count and the 1-5 star histogram shown on the App Store product page.",
+ "operationId": "appstore-ratings",
+ "parameters": [
+ {
+ "description": "App Store numeric track ID (digits only)",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "553834731"
+ },
+ {
+ "description": "App Store bundle ID",
+ "in": "query",
+ "name": "app_id",
+ "type": "string",
+ "x-example": "com.midasplayer.apps.candycrushsaga"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.ratingsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "App not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve App Store ratings histogram",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/reviews": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one page of customer reviews for an app. Provide either `id` (numeric track ID) or `app_id` (bundle ID).",
+ "operationId": "appstore-reviews",
+ "parameters": [
+ {
+ "description": "App Store numeric track ID (digits only)",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "553834731"
+ },
+ {
+ "description": "App Store bundle ID",
+ "in": "query",
+ "name": "app_id",
+ "type": "string",
+ "x-example": "com.midasplayer.apps.candycrushsaga"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Review page number (1-10)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "default": "mostRecent",
+ "description": "Sort order",
+ "enum": [
+ "mostRecent",
+ "mostHelpful"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.reviewsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "App not found, or not published in the requested storefront",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve App Store reviews",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns App Store search results for a term. Set `ids_only=true` to return only app IDs. `platform` enum: `phone`, `pad`, `mac`.",
+ "operationId": "appstore-search",
+ "parameters": [
+ {
+ "description": "Search term",
+ "in": "query",
+ "name": "term",
+ "required": true,
+ "type": "string",
+ "x-example": "panda"
+ },
+ {
+ "description": "Number of apps per page",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 50
+ },
+ {
+ "description": "Search page number (1-based)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ },
+ {
+ "default": false,
+ "description": "Return only app IDs",
+ "in": "query",
+ "name": "ids_only",
+ "type": "boolean"
+ },
+ {
+ "default": "phone",
+ "description": "App Store catalog to search: phone, pad, mac",
+ "enum": [
+ "phone",
+ "pad",
+ "mac"
+ ],
+ "in": "query",
+ "name": "platform",
+ "type": "string"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.searchResultsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Search the App Store",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/similar": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the related apps shown on the App Store product page. Provide either `id` (numeric track ID) or `app_id` (bundle ID).",
+ "operationId": "appstore-similar",
+ "parameters": [
+ {
+ "description": "App Store numeric track ID (digits only)",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "553834731"
+ },
+ {
+ "description": "App Store bundle ID",
+ "in": "query",
+ "name": "app_id",
+ "type": "string",
+ "x-example": "com.midasplayer.apps.candycrushsaga"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.similarResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "App not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve \"You Might Also Like\" apps",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/suggest/{term}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns suggested search terms for the given partial keyword.",
+ "operationId": "appstore-suggest",
+ "parameters": [
+ {
+ "description": "Partial search term",
+ "in": "path",
+ "name": "term",
+ "required": true,
+ "type": "string",
+ "x-example": "panda"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.suggestResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve App Store search suggestions",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/appstore/version-history/{id}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the version history entries shown in the App Store \"What's New\" section.",
+ "operationId": "appstore-version-history",
+ "parameters": [
+ {
+ "description": "App Store numeric track ID (digits only)",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "553834731"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Result language tag",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/appstore.versionHistoryResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "App not found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Retrieve App Store version history",
+ "tags": [
+ "AppStore"
+ ]
+ }
+ },
+ "/arbys/categories": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Arby's US menu's top-level categories -- Slow Roasted Beef, Crispy Juicy Chicken, Meals, Sides & Snacks, Beverages, Desserts, Kids Menu and others. Each entry's slug is the value GET /arbys/menu takes. store_id (optional, default 0) selects which pricing snapshot categories' item counts are read from; the default 0 is Arby's own reference catalog and carries no prices at all -- pass a store_id you already know (for example one you have seen on arbys.com after picking a location) to price GET /arbys/menu's items against a specific store. There is no location-lookup endpoint in this family.",
+ "operationId": "arbys-categories",
+ "parameters": [
+ {
+ "description": "Optional. Store id to read the catalog from, default 0 (Arby's priceless national reference catalog).",
+ "in": "query",
+ "name": "store_id",
+ "type": "integer",
+ "x-example": 0
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/arbys.categoriesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Arby's menu categories",
+ "tags": [
+ "Arbys"
+ ]
+ }
+ },
+ "/arbys/directory": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one level of Arby's US store directory: every state Arby's serves with its store count (no params), one state's cities (state given), or one city's stores (state and city given) -- id, address, and phone only, pair with GET /arbys/location for hours/amenities/status. Unlike GET /arbys/locations, this needs no coordinate; it is a plain browse of the whole ~3,200-store US chain.",
+ "operationId": "arbys-directory",
+ "parameters": [
+ {
+ "description": "Optional. Two-letter US state abbreviation. Omit to list every state.",
+ "in": "query",
+ "name": "state",
+ "type": "string",
+ "x-example": "OH"
+ },
+ {
+ "description": "Optional. City name, requires state. Omit to list every city in the state.",
+ "in": "query",
+ "name": "city",
+ "type": "string",
+ "x-example": "Youngstown"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/arbys.directoryResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Browse Arby's US store directory by state and city",
+ "tags": [
+ "Arbys"
+ ]
+ }
+ },
+ "/arbys/location": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Arby's restaurant directly by its store id (e.g. one found via GET /arbys/locations), with the same address, hours, amenities, and capability fields as that endpoint's results, minus distance (there is no search center for a direct lookup).",
+ "operationId": "arbys-location",
+ "parameters": [
+ {
+ "description": "A real Arby's store id, e.g. one returned by GET /arbys/locations",
+ "in": "query",
+ "name": "store_id",
+ "required": true,
+ "type": "integer",
+ "x-example": 8725
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/arbys.locationResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Look up one Arby's restaurant by store id",
+ "tags": [
+ "Arbys"
+ ]
+ }
+ },
+ "/arbys/locations": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Arby's restaurants within a radius of a coordinate, nearest first, with address, phone, coordinates, distance, open/closed status, hours, amenities, and pickup/delivery capability flags. Each result's store_id also prices GET /arbys/menu and GET /arbys/categories. To search from a free-text address instead of coordinates, resolve it first with GET /geocoding/search.",
+ "operationId": "arbys-locations",
+ "parameters": [
+ {
+ "description": "Search center latitude",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 32.787706
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -96.79985
+ },
+ {
+ "description": "Optional. Search radius in miles, 1-50, default 50. Upstream hard-blocks any radius over 50.",
+ "in": "query",
+ "name": "radius",
+ "type": "integer",
+ "x-example": 50
+ },
+ {
+ "description": "Optional. Maximum stores per page, 1-50, default 10.",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Optional. Zero-based page index, default 0.",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 0
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/arbys.nearbyResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Find Arby's restaurants near a coordinate",
+ "tags": [
+ "Arbys"
+ ]
+ }
+ },
+ "/arbys/menu": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the items in one Arby's menu category, each with its stable product code, name, description, image, tags, availability, a full per-serving nutrition panel (calories, total and saturated fat, trans fat, cholesterol, sodium, carbohydrate, fiber, sugar, protein and serving weight), and a price when store_id resolves to a priced catalog. Category slugs come from GET /arbys/categories. store_id (optional, default 0) is Arby's own priceless national reference catalog; pass a store_id you already know to get that store's pricing instead -- there is no location-lookup endpoint in this family, so store_id is a passthrough value, not something this API can look up for you. A price of exactly 0 on an item is a genuine free add-on, distinct from the default catalog's complete absence of pricing.",
+ "operationId": "arbys-menu",
+ "parameters": [
+ {
+ "description": "Category slug from /arbys/categories",
+ "in": "query",
+ "name": "category",
+ "required": true,
+ "type": "string",
+ "x-example": "slow-roasted-beef"
+ },
+ {
+ "description": "Optional. Same store id semantics as /arbys/categories.",
+ "in": "query",
+ "name": "store_id",
+ "type": "integer",
+ "x-example": 0
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/arbys.menuResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List one Arby's menu category's items with full nutrition and price",
+ "tags": [
+ "Arbys"
+ ]
+ }
+ },
+ "/arstechnica/article": {
+ "get": {
+ "description": "Returns public Ars Technica article metadata and body paragraphs from a canonical article URL. The service uses the configured production browser fleet when ordinary HTTP transport encounters Ars Technica's bot-verification challenge; it does not bypass authentication or access controls.",
+ "operationId": "arstechnica-article",
+ "parameters": [
+ {
+ "description": "Canonical Ars Technica article URL",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://arstechnica.com/gadgets/2026/09/example-story/"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Ars Technica article content",
+ "tags": [
+ "Ars Technica"
+ ]
+ }
+ },
+ "/arstechnica/author": {
+ "get": {
+ "description": "Returns an Ars Technica contributor's byline metadata (name, job title, headshot, contact email), biography, and recent articles from a canonical author URL. The service uses the configured production browser fleet when ordinary HTTP transport encounters Ars Technica's bot-verification challenge; it does not bypass authentication or access controls.",
+ "operationId": "arstechnica-author",
+ "parameters": [
+ {
+ "description": "Canonical Ars Technica contributor URL",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://arstechnica.com/author/example-writer/"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.arstechnicaAuthorResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get an Ars Technica contributor profile",
+ "tags": [
+ "Ars Technica"
+ ]
+ }
+ },
+ "/arstechnica/headlines": {
+ "get": {
+ "description": "Returns fresh headlines from one Ars Technica section's public RSS feed.",
+ "operationId": "arstechnica-headlines",
+ "parameters": [
+ {
+ "description": "Ars Technica section slug",
+ "enum": [
+ "ai",
+ "apple",
+ "cars",
+ "culture",
+ "features",
+ "gadgets",
+ "gaming",
+ "health",
+ "information-technology",
+ "reviews",
+ "science",
+ "security",
+ "space",
+ "staff",
+ "tech-policy"
+ ],
+ "in": "query",
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "ai"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Ars Technica section headlines",
+ "tags": [
+ "Ars Technica"
+ ]
+ }
+ },
+ "/arstechnica/news": {
+ "get": {
+ "description": "Returns fresh Ars Technica stories from its public RSS feed.",
+ "operationId": "arstechnica-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Ars Technica top stories",
+ "tags": [
+ "Ars Technica"
+ ]
+ }
+ },
+ "/arstechnica/sections": {
+ "get": {
+ "description": "Returns the Ars Technica section inventory: the site's own current navigation and RSS-feed-directory sections (AI, Gadgets, Science, Security, Space, and others), each linking to its public RSS feed.",
+ "operationId": "arstechnica-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Ars Technica sections",
+ "tags": [
+ "Ars Technica"
+ ]
+ }
+ },
+ "/audible/categories": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Audible's full genre/category tree (root genres with their subgenres), including the category ids accepted by GET /audible/search's category_id filter. Credential-free public catalog data from api.audible.com.",
+ "operationId": "audible-categories",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.categoriesResponseDoc"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Audible's genre/category tree",
+ "tags": [
+ "Audible"
+ ]
+ }
+ },
+ "/audible/category/{id}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Audible category node and its immediate children by id — cheaper than fetching the full tree from GET /audible/categories when only one node is needed. Credential-free public catalog data from api.audible.com.",
+ "operationId": "audible-category",
+ "parameters": [
+ {
+ "description": "Audible category id from GET /audible/categories",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "18580606011"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.categoryResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get one Audible category node",
+ "tags": [
+ "Audible"
+ ]
+ }
+ },
+ "/audible/charts": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one page of an Audible chart — a ranked list with real chart position, price, and rating that has no equivalent on api.audible.com's public JSON API. This is an HTML scrape of audible.com/charts, a different, less stable source class than the rest of this family, though its own filters (category, access level, language, duration, Audible-Originals-only) were individually verified to actually change results. category_id, access_level, and content_type=podcasts are mutually exclusive.",
+ "operationId": "audible-charts",
+ "parameters": [
+ {
+ "description": "Chart type, default most_listened",
+ "enum": [
+ "most_listened",
+ "bestselling"
+ ],
+ "in": "query",
+ "name": "chart",
+ "type": "string"
+ },
+ {
+ "description": "Content type, default audiobooks",
+ "enum": [
+ "audiobooks",
+ "podcasts"
+ ],
+ "in": "query",
+ "name": "content_type",
+ "type": "string"
+ },
+ {
+ "description": "Restrict to a category id from GET /audible/categories",
+ "in": "query",
+ "name": "category_id",
+ "type": "string"
+ },
+ {
+ "description": "Membership access level, default all",
+ "enum": [
+ "all",
+ "free",
+ "plus",
+ "premium"
+ ],
+ "in": "query",
+ "name": "access_level",
+ "type": "string"
+ },
+ {
+ "description": "Language filter, default all",
+ "enum": [
+ "all",
+ "danish",
+ "english",
+ "french",
+ "german",
+ "italian",
+ "japanese",
+ "polish",
+ "portuguese",
+ "russian",
+ "spanish",
+ "swedish"
+ ],
+ "in": "query",
+ "name": "language",
+ "type": "string"
+ },
+ {
+ "description": "Runtime-length filter, default all",
+ "enum": [
+ "all",
+ "oneHourLess",
+ "oneToThreeHour",
+ "threeToSixHour",
+ "sixToTenHour",
+ "tenToTwentyHour",
+ "twentyHourMore"
+ ],
+ "in": "query",
+ "name": "duration",
+ "type": "string"
+ },
+ {
+ "description": "Restrict to Audible Originals only",
+ "in": "query",
+ "name": "originals_only",
+ "type": "boolean"
+ },
+ {
+ "description": "1-based result page, default 1, 20 results per page",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.chartsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get an Audible chart (audible.com/charts)",
+ "tags": [
+ "Audible"
+ ]
+ }
+ },
+ "/audible/charts/authors": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one page of Audible's public ranked author chart. This is a people-shaped HTML surface and exposes only rank, author identity, image metadata when available, and a canonical author URI; author detail remains outside the credential-free public surface.",
+ "operationId": "audible-author-charts",
+ "parameters": [
+ {
+ "description": "1-based result page, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.authorChartsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Audible's top-author chart",
+ "tags": [
+ "Audible"
+ ]
+ }
+ },
+ "/audible/list/{list}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one of Audible's hand-curated \"Popular Lists\" pages, normalized into its themed shelves (heading + ordered ASINs). This is an HTML scrape of a marketing/editorial page (audible.com), not api.audible.com's JSON API — pair an ASIN from any shelf with GET /audible/products (batch) or GET /audible/product/{asin} for full title/author/price/rating detail. \"Best of the Year\" is not covered — its layout has no consistent structure to parse.",
+ "operationId": "audible-editorial-list",
+ "parameters": [
+ {
+ "description": "Editorial list slug",
+ "enum": [
+ "audiobooks",
+ "booktok",
+ "podcasts"
+ ],
+ "in": "path",
+ "name": "list",
+ "required": true,
+ "type": "string",
+ "x-example": "audiobooks"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.editorialListResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get an Audible curated editorial list",
+ "tags": [
+ "Audible"
+ ]
+ }
+ },
+ "/audible/product/{asin}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a normalized Audible audiobook: description, authors, narrators, series, category ladders, publisher, release date, runtime, language, sample audio URL, rating (overall/performance/story), and public list price. Credential-free public catalog data from api.audible.com.",
+ "operationId": "audible-product",
+ "parameters": [
+ {
+ "description": "Audible ASIN",
+ "in": "path",
+ "name": "asin",
+ "required": true,
+ "type": "string",
+ "x-example": "B08G9PRS1K"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.productResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get an Audible audiobook",
+ "tags": [
+ "Audible"
+ ]
+ }
+ },
+ "/audible/product/{asin}/related": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Audible titles related to a given ASIN by a required relation type: same series, same narrator, same author, next in series, or raw upstream similarity. Credential-free public catalog data from api.audible.com.",
+ "operationId": "audible-product-related",
+ "parameters": [
+ {
+ "description": "Audible ASIN",
+ "in": "path",
+ "name": "asin",
+ "required": true,
+ "type": "string",
+ "x-example": "B08G9PRS1K"
+ },
+ {
+ "description": "How to relate titles to the given ASIN",
+ "enum": [
+ "InTheSameSeries",
+ "ByTheSameNarrator",
+ "RawSimilarities",
+ "ByTheSameAuthor",
+ "NextInSameSeries"
+ ],
+ "in": "query",
+ "name": "similarity_type",
+ "required": true,
+ "type": "string",
+ "x-example": "InTheSameSeries"
+ },
+ {
+ "description": "Max results, default 10, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.relatedResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Audible titles related to an audiobook",
+ "tags": [
+ "Audible"
+ ]
+ }
+ },
+ "/audible/product/{asin}/reviews": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a page of an Audible audiobook's customer reviews (author, title, body, overall/performance/story ratings, helpful votes, submission date). Credential-free public catalog data from api.audible.com.",
+ "operationId": "audible-product-reviews",
+ "parameters": [
+ {
+ "description": "Audible ASIN",
+ "in": "path",
+ "name": "asin",
+ "required": true,
+ "type": "string",
+ "x-example": "B08G9PRS1K"
+ },
+ {
+ "description": "Zero-based result page, default 0",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Max reviews, default 10, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.reviewsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get an Audible audiobook's customer reviews",
+ "tags": [
+ "Audible"
+ ]
+ }
+ },
+ "/audible/products": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized Audible audiobooks for up to 50 ASINs in a single request — the same fields as GET /audible/product/{asin}. Unrecognized ASINs are silently omitted rather than failing the whole batch. Credential-free public catalog data from api.audible.com.",
+ "operationId": "audible-products",
+ "parameters": [
+ {
+ "description": "Comma-separated Audible ASINs, up to 50",
+ "in": "query",
+ "name": "asins",
+ "required": true,
+ "type": "string",
+ "x-example": "B08G9PRS1K,B002V1OF70"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.productsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get multiple Audible audiobooks in one call",
+ "tags": [
+ "Audible"
+ ]
+ }
+ },
+ "/audible/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Audible's audiobook catalog by keyword, title, author, narrator, or category id. At least one filter is required. Credential-free public catalog data from api.audible.com.",
+ "operationId": "audible-search",
+ "parameters": [
+ {
+ "description": "Free-text query matched across title, subtitle, and author",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Match by title",
+ "in": "query",
+ "name": "title",
+ "type": "string"
+ },
+ {
+ "description": "Match by author name",
+ "in": "query",
+ "name": "author",
+ "type": "string"
+ },
+ {
+ "description": "Match by narrator name",
+ "in": "query",
+ "name": "narrator",
+ "type": "string"
+ },
+ {
+ "description": "Restrict to a category id from GET /audible/categories",
+ "in": "query",
+ "name": "category_id",
+ "type": "string"
+ },
+ {
+ "description": "Zero-based result page, default 0",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Max results, default 10, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/audible.searchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
- "$ref": "#/definitions/firstdibs.categoriesDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -194126,25 +222608,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List 1stDibs categories and filters",
+ "summary": "Search Audible's catalog",
"tags": [
- "1stDibs"
+ "Audible"
]
}
},
- "/1stdibs/designers": {
+ "/audible/series/{asin}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns designer values discovered from the selected 1stDibs category page. Each slug is valid for firstdibs-search's designer filter.",
- "operationId": "firstdibs-designers",
+ "description": "Returns an Audible series and every book in it, in series order. A series has its own ASIN distinct from any book in it — find one via a book's series[].asin field from GET /audible/product/{asin}. Credential-free public catalog data from api.audible.com.",
+ "operationId": "audible-series",
"parameters": [
{
- "description": "Category slug from firstdibs-categories",
- "in": "query",
- "name": "category",
- "type": "string"
+ "description": "Audible series ASIN, from a product's series[].asin field",
+ "in": "path",
+ "name": "asin",
+ "required": true,
+ "type": "string",
+ "x-example": "B006W3V2B0"
}
],
"produces": [
@@ -194154,7 +222638,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/firstdibs.designersDoc"
+ "$ref": "#/definitions/audible.seriesResponseDoc"
}
},
"400": {
@@ -194163,6 +222647,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -194175,26 +222671,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List 1stDibs designers",
+ "summary": "Get an Audible series' ordered book list",
"tags": [
- "1stDibs"
+ "Audible"
]
}
},
- "/1stdibs/product": {
+ "/autotrader/dealer/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public product detail, pricing, availability, brand, category, description, and images for a 1stDibs product URL.",
- "operationId": "firstdibs-product",
+ "description": "Returns a normalized Autotrader dealer profile (name, phone, address, rating, website) plus a first page of the dealer's own current inventory as normalized vehicle summaries and the dealer's total listing count. Credential-free public data sourced from Autotrader's own server-rendered dealer profile page.",
+ "operationId": "autotrader-dealer",
"parameters": [
{
- "description": "1stDibs product URL",
- "in": "query",
- "name": "url",
+ "description": "Autotrader dealer/owner id, the numeric path segment of a /car-dealers/{id} URL",
+ "in": "path",
+ "name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "64141623"
}
],
"produces": [
@@ -194204,7 +222701,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/firstdibs.productDoc"
+ "$ref": "#/definitions/autotrader.DealerResponse"
}
},
"400": {
@@ -194219,6 +222716,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -194231,160 +222734,365 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a 1stDibs product",
+ "summary": "Get Autotrader dealer profile",
"tags": [
- "1stDibs"
+ "Autotrader"
]
}
},
- "/1stdibs/search": {
+ "/autotrader/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches or browses 1stDibs handbags and purses with category, designer, price, sale, color, period, location, gender, origin, seller, and sort filters.",
- "operationId": "firstdibs-search",
+ "description": "Searches Autotrader for new and used car listings, returning normalized vehicle summaries (make, model, trim, year, mileage, pricing, images) plus the total matching count. Credential-free public data sourced from Autotrader's own server-rendered search page.",
+ "operationId": "autotrader-search",
"parameters": [
{
- "description": "Free-text search",
+ "description": "Free-text keyword search",
"in": "query",
- "name": "q",
- "type": "string"
+ "name": "query",
+ "type": "string",
+ "x-example": "leather seats"
},
{
- "description": "Category slug from firstdibs-categories",
+ "description": "5-digit US ZIP code to search around",
"in": "query",
- "name": "category",
- "type": "string"
+ "name": "zip",
+ "type": "string",
+ "x-example": "90210"
},
{
- "description": "Designer slug from firstdibs-designers",
+ "description": "Search radius in miles around zip",
"in": "query",
- "name": "designer",
- "type": "string"
+ "name": "radius",
+ "type": "integer",
+ "x-example": 50
},
{
- "description": "Color value",
+ "description": "Autotrader make code, e.g. TOYOTA, HONDA, BMW",
"in": "query",
- "name": "color",
- "type": "string"
+ "name": "make",
+ "type": "string",
+ "x-example": "TOYOTA"
},
{
- "description": "Period value",
+ "description": "Autotrader model code, e.g. CAMRY. Requires make",
"in": "query",
- "name": "period",
- "type": "string"
+ "name": "model",
+ "type": "string",
+ "x-example": "CAMRY"
},
{
- "description": "Item location",
+ "description": "Autotrader trim code. Requires make and model",
"in": "query",
- "name": "location",
- "type": "string"
+ "name": "trim",
+ "type": "string",
+ "x-example": "LE"
},
{
- "description": "Gender value",
+ "description": "Listing condition. Allowed values: new, used, certified, 3p_cert",
+ "enum": [
+ "new",
+ "used",
+ "certified",
+ "3p_cert"
+ ],
"in": "query",
- "name": "gender",
- "type": "string"
+ "name": "condition",
+ "type": "string",
+ "x-example": "used"
},
{
- "description": "Place-of-origin value",
+ "description": "Body style. Allowed values: convertible, coupe, hatchback, sedan, suv, truck, van, wagon",
+ "enum": [
+ "convertible",
+ "coupe",
+ "hatchback",
+ "sedan",
+ "suv",
+ "truck",
+ "van",
+ "wagon"
+ ],
"in": "query",
- "name": "origin",
- "type": "string"
+ "name": "body_style",
+ "type": "string",
+ "x-example": "suv"
},
{
- "description": "Price preset",
+ "description": "Seller type. Allowed values: dealer, private",
"enum": [
- "all price",
- "[* TO 999]",
- "[* TO 1999]",
- "[* TO 4999]",
- "[5000 TO *]"
+ "dealer",
+ "private"
],
"in": "query",
- "name": "price",
- "type": "string"
+ "name": "seller_type",
+ "type": "string",
+ "x-example": "dealer"
},
{
- "description": "Minimum price",
+ "description": "Minimum model year",
"in": "query",
- "name": "price_min",
- "type": "number"
+ "name": "min_year",
+ "type": "integer",
+ "x-example": 2020
},
{
- "description": "Maximum price",
+ "description": "Maximum model year",
"in": "query",
- "name": "price_max",
- "type": "number"
+ "name": "max_year",
+ "type": "integer",
+ "x-example": 2026
},
{
- "description": "On-sale listings only",
+ "description": "Minimum price in US dollars",
"in": "query",
- "name": "on_sale",
- "type": "boolean"
+ "name": "min_price",
+ "type": "integer",
+ "x-example": 10000
},
{
- "description": "Listings with measurements",
+ "description": "Maximum price in US dollars",
"in": "query",
- "name": "measurements",
- "type": "boolean"
+ "name": "max_price",
+ "type": "integer",
+ "x-example": 40000
},
{
- "description": "Listings added this week",
+ "description": "Maximum odometer mileage",
"in": "query",
- "name": "this_week",
- "type": "boolean"
+ "name": "max_mileage",
+ "type": "integer",
+ "x-example": 60000
},
{
- "description": "Returnable items only",
+ "description": "1-indexed result page, defaults to 1. Autotrader returns 24 results per page",
"in": "query",
- "name": "returnable",
- "type": "boolean"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/autotrader.searchResponseDoc"
+ }
},
- {
- "description": "Recognized seller listings only",
- "in": "query",
- "name": "recognized_seller",
- "type": "boolean"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Top seller listings only",
- "in": "query",
- "name": "top_seller",
- "type": "boolean"
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Search Autotrader vehicle listings",
+ "tags": [
+ "Autotrader"
+ ]
+ }
+ },
+ "/autotrader/vehicle/{id}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a normalized Autotrader vehicle listing: full vehicle spec (make, model, trim, mileage, colors, transmission, fuel type, engine, images, pricing), the full listing description, and seller detail (dealership or private seller). Credential-free public data sourced from Autotrader's own server-rendered vehicle detail page.",
+ "operationId": "autotrader-vehicle",
+ "parameters": [
+ {
+ "description": "Autotrader listing id, the numeric path segment of a /cars-for-sale/vehicle/{id} URL",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "754822172"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/autotrader.VehicleResponse"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Sort",
- "enum": [
- "recommended",
- "newest",
- "price-high",
- "price-low",
- "popular"
- ],
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Autotrader vehicle listing detail",
+ "tags": [
+ "Autotrader"
+ ]
+ }
+ },
+ "/axios/article": {
+ "get": {
+ "description": "Returns a public Axios article's metadata and full body paragraphs from a canonical article URL. Subscriber-only stories with no free preview return a 403 permission error instead of an empty body.",
+ "operationId": "axios-article",
+ "parameters": [
+ {
+ "description": "Canonical www.axios.com article URL",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.axios.com/2026/09/19/google-safety-incidents-testing-hacks"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/axios.articleResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "403": {
+ "description": "Forbidden",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "default": 1,
- "description": "1-based page",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Axios article content",
+ "tags": [
+ "Axios"
+ ]
+ }
+ },
+ "/axios/categories": {
+ "get": {
+ "description": "Returns Axios's full public topic and subtopic navigation tree. Use a subtopic's topic value directly as the topic parameter on axios-headlines.",
+ "operationId": "axios-categories",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/axios.categoriesResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "default": 60,
- "description": "Results per page",
- "enum": [
- 60,
- 120
- ],
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Axios topic navigation",
+ "tags": [
+ "Axios"
+ ]
+ }
+ },
+ "/axios/headlines": {
+ "get": {
+ "description": "Returns the newest public Axios stories on one topic or subtopic page. topic is a topic slug (e.g. technology) or a topic/subtopic path (e.g. technology/automation-and-ai) -- see axios-categories for the full known value space.",
+ "operationId": "axios-headlines",
+ "parameters": [
+ {
+ "description": "Axios topic slug or topic/subtopic path",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "topic",
+ "required": true,
+ "type": "string",
+ "x-example": "technology"
}
],
"produces": [
@@ -194394,7 +223102,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/firstdibs.searchDoc"
+ "$ref": "#/definitions/axios.headlinesResponseDoc"
}
},
"400": {
@@ -194403,6 +223111,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -194415,55 +223135,101 @@
"ApiKeyAuth": []
}
],
- "summary": "Search 1stDibs listings",
+ "summary": "Get Axios topic headlines",
"tags": [
- "1stDibs"
+ "Axios"
]
}
},
- "/7now/catalog": {
+ "/balenciaga/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one 7NOW store's browsable category list, a paginated item listing per catalog section (each with real per-item pricing, active promotions, calories, UPC and image), and a live active/out-of-stock inventory count for that store. store_id comes from GET /7now/stores; lat and lon are accepted but inert (store_id alone selects the store). The catalog is genuinely store-scoped, not a national price list. skip/limit page every item section uniformly (limit is capped at 50, defaults to 20).",
- "operationId": "7now-catalog",
+ "description": "Returns Balenciaga's live storefront navigation/category taxonomy. Each categories[].path is the exact value accepted by balenciaga-category's path parameter.",
+ "operationId": "balenciaga-categories",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/balenciaga.categoriesResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Balenciaga categories",
+ "tags": [
+ "Balenciaga"
+ ]
+ }
+ },
+ "/balenciaga/category": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Balenciaga category listing from the site's own Search-ShowAjax fragment. path comes from balenciaga-categories. sort accepts latest, price_ascending, or price_descending. filters is a comma-separated list of exact field:value pairs from the response's live facets; repeat a field to OR multiple values within that facet; omit it for an unfiltered listing.",
+ "operationId": "balenciaga-category",
"parameters": [
{
- "description": "7NOW store id, from GET /7now/stores.",
+ "description": "Category path from balenciaga-categories",
"in": "query",
- "name": "store_id",
+ "name": "path",
"required": true,
"type": "string",
- "x-example": "39226"
+ "x-example": "/en-en/women/bags-for-women/handbags"
},
{
- "description": "Accepted but inert -- store_id alone selects the store; responses are byte-identical with any value or none. Forwarded upstream for fidelity with 7now.com's own client.",
+ "description": "Sort order",
+ "enum": [
+ "latest",
+ "price_ascending",
+ "price_descending"
+ ],
"in": "query",
- "name": "lat",
- "type": "number",
- "x-example": 40.747508
+ "name": "sort",
+ "type": "string",
+ "x-example": "latest"
},
{
- "description": "Accepted but inert -- see lat.",
+ "description": "One-based page number, defaults to 1",
"in": "query",
- "name": "lon",
- "type": "number",
- "x-example": -73.989099
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Pagination offset, applied uniformly to every catalog section. Defaults to 0.",
+ "description": "Products per page, defaults to 16, maximum 48",
"in": "query",
- "name": "skip",
+ "name": "limit",
"type": "integer",
- "x-example": 0
+ "x-example": 16
},
{
- "description": "Max items returned per catalog section, 1-50. Defaults to 20.",
+ "description": "Comma-separated exact facet filters; repeat a field for OR values, for example akeneo_macroColor:BLACK,akeneo_macroColor:WHITE",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "name": "filters",
+ "type": "string",
+ "x-example": "akeneo_macroColor:BLACK"
}
],
"produces": [
@@ -194473,7 +223239,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.catalogResponseDoc"
+ "$ref": "#/definitions/balenciaga.listingResponseDoc"
}
},
"400": {
@@ -194482,6 +223248,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -194500,41 +223272,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one 7NOW store's live product catalog",
+ "summary": "Browse a Balenciaga category",
"tags": [
- "7NOW"
+ "Balenciaga"
]
}
},
- "/7now/categories": {
+ "/balenciaga/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Enumerates every value GET /7now/category accepts for a store, so callers do not have to pull the full catalog to discover them. 7NOW has two disjoint id spaces behind that one parameter: `departments` are the store's 10 permanent browsable departments (Fresh Food, Drinks, Snacks, Candy, Ice Cream, Beer & Seltzer, Tobacco, Grocery, Household, Personal Care), and `shelves` are the merchandising rows the homepage currently features (\"$2 Deals\", \"What's New\", \"Only At 7-Eleven\", seasonal ones). Both work as category_id. Shelves rotate with promotions and seasons, so re-read them rather than caching ids long-term. store_id comes from GET /7now/stores; lat and lon are accepted but inert (store_id alone selects the store).",
- "operationId": "7now-categories",
+ "description": "Returns structured product detail from Balenciaga's product page, including schema.org name/SKU/price/availability, images, color variants, and visible product details. url must be a product URL returned by balenciaga-category or balenciaga-search.",
+ "operationId": "balenciaga-product",
"parameters": [
{
- "description": "7NOW store id, from GET /7now/stores.",
+ "description": "Product URL from a Balenciaga listing",
"in": "query",
- "name": "store_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "39640"
- },
- {
- "description": "Accepted but inert -- store_id alone selects the store; responses are byte-identical with any value or none. Forwarded upstream for fidelity with 7now.com's own client.",
- "in": "query",
- "name": "lat",
- "type": "number",
- "x-example": 40.712775
- },
- {
- "description": "Accepted but inert -- see lat.",
- "in": "query",
- "name": "lon",
- "type": "number",
- "x-example": -74.005973
+ "x-example": "/en-en/hourglass-avenue-top-handle-bag-small-black-A007IH2ACT21000.html"
}
],
"produces": [
@@ -194544,7 +223302,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.categoriesResponseDoc"
+ "$ref": "#/definitions/balenciaga.productResponseDoc"
}
},
"400": {
@@ -194553,6 +223311,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -194571,56 +223335,116 @@
"ApiKeyAuth": []
}
],
- "summary": "List every category id one 7NOW store accepts",
+ "summary": "Get a Balenciaga product",
"tags": [
- "7NOW"
+ "Balenciaga"
]
}
},
- "/7now/category": {
+ "/balenciaga/product/variants": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one 7NOW store's top-level category broken into its real subcategory groups (e.g. Fresh Food -> Pizza, Wings & Chicken Bites, Subs & Sandwiches, ...), each with its own paginated, priced item list and live availability, plus a category-wide availability summary. Complements GET /7now/catalog, whose per-category section is a single flat list -- this is the same data organized the way 7now.com's own category page groups it. store_id comes from GET /7now/stores and category_id from GET /7now/categories -- which accepts both the store's permanent departments and the merchandising shelves its homepage features, since 7NOW uses one parameter for two id spaces. An invalid or empty category_id returns a normal 200 with an empty subcategories array, not an error.",
- "operationId": "7now-category",
+ "description": "Returns Balenciaga's live color/size variation matrix for a product, including variation ids, selection/sellability flags, care text, availability, and related product ids. url may be a product URL or a Product-Variation URL from balenciaga-product's colors[].url.",
+ "operationId": "balenciaga-product-variants",
"parameters": [
{
- "description": "7NOW store id, from GET /7now/stores.",
+ "description": "Balenciaga product URL or Product-Variation URL",
"in": "query",
- "name": "store_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "39226"
+ "x-example": "https://www.balenciaga.com/on/demandware.store/Sites-BAL-R-INTL-Site/en_ZW/Product-Variation?dwvar_A007IH2ACT21000_color=1000&dwvar_A007IH2ACT21000_size=U&pid=A007IH2ACT21000&quantity=1"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/balenciaga.productVariantsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Category id, from GET /7now/categories -- either a department or a merchandising shelf.",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Balenciaga product variations",
+ "tags": [
+ "Balenciaga"
+ ]
+ }
+ },
+ "/balenciaga/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Balenciaga's storefront by keyword using the site's own product-grid fragment. q is required; sort accepts latest, price_ascending, or price_descending; page is one-based with 12 products per page; and filters accepts comma-separated exact field:value pairs from live facets. Repeat a field to OR multiple values within that facet. A genuine no-result query returns an empty products list.",
+ "operationId": "balenciaga-search",
+ "parameters": [
+ {
+ "description": "Free-text search query",
"in": "query",
- "name": "category_id",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "48423"
+ "x-example": "hourglass"
},
{
- "description": "Restrict to one subcategory group by exact name (from a prior call's subcategories[].name).",
+ "description": "Sort order",
+ "enum": [
+ "latest",
+ "price_ascending",
+ "price_descending"
+ ],
"in": "query",
- "name": "subcategory",
+ "name": "sort",
"type": "string",
- "x-example": "Pizza"
+ "x-example": "latest"
},
{
- "description": "Pagination offset, applied uniformly to every subcategory group. Defaults to 0.",
+ "description": "One-based page number, defaults to 1",
"in": "query",
- "name": "skip",
+ "name": "page",
"type": "integer",
- "x-example": 0
+ "x-example": 1
},
{
- "description": "Max items returned per subcategory group, 1-50. Defaults to 20.",
+ "description": "Comma-separated exact facet filters; repeat a field for OR values, for example akeneo_macroColor:BLACK,akeneo_macroColor:WHITE",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "name": "filters",
+ "type": "string",
+ "x-example": "akeneo_macroColor:BLACK"
}
],
"produces": [
@@ -194630,7 +223454,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.categoryResponseDoc"
+ "$ref": "#/definitions/balenciaga.listingResponseDoc"
}
},
"400": {
@@ -194639,6 +223463,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -194657,35 +223487,156 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse one 7NOW store's category by subcategory",
+ "summary": "Search Balenciaga products",
"tags": [
- "7NOW"
+ "Balenciaga"
]
}
},
- "/7now/combo": {
+ "/balenciaga/store-countries": {
"get": {
"consumes": [
"application/json"
],
- "description": "Expands one bundle deal into its structure: each pick-from group's name, how many items the shopper picks from it, and every eligible item with live pricing and availability -- e.g. the \"$6.99 Pizza\" bundle returns one group, \"Eligible Whole Pizzas\", holding six priced pizzas. Also returns the bundle's shopper-facing headline and full legal terms. promo_id comes from GET /7now/combos' combos[].promo_id, and store_id from GET /7now/stores. The upstream also accepts a plain item-discount promotion id but answers one with unnamed groups -- for those, GET /7now/promotion's flat item list is the right endpoint. An unknown promo_id returns 404.",
- "operationId": "7now-combo",
+ "description": "Returns every country code accepted by balenciaga-stores, discovered from Balenciaga's own public store-locator form.",
+ "operationId": "balenciaga-store-countries",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/balenciaga.storeCountriesResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Balenciaga store-locator countries",
+ "tags": [
+ "Balenciaga"
+ ]
+ }
+ },
+ "/balenciaga/stores": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Balenciaga's public physical-store directory for one country, including addresses, coordinates, phone numbers, opening hours, and store-service flags. Use balenciaga-store-countries to discover the complete accepted country enum.",
+ "operationId": "balenciaga-stores",
"parameters": [
{
- "description": "Promotion id, from GET /7now/combos' combos[].promo_id.",
+ "description": "Two-letter country code",
+ "enum": [
+ "AE",
+ "AT",
+ "AU",
+ "BE",
+ "BR",
+ "CA",
+ "CN",
+ "CZ",
+ "DE",
+ "DK",
+ "ES",
+ "FR",
+ "GB",
+ "HK",
+ "IE",
+ "IT",
+ "JP",
+ "KR",
+ "KW",
+ "MC",
+ "MO",
+ "MX",
+ "MY",
+ "NL",
+ "NZ",
+ "QA",
+ "SA",
+ "SG",
+ "CH",
+ "TH",
+ "TW",
+ "US"
+ ],
"in": "query",
- "name": "promo_id",
+ "name": "country",
"required": true,
"type": "string",
- "x-example": "6a849a8fa1df2409010c719f"
+ "x-example": "US"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/balenciaga.storesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "7NOW store id, from GET /7now/stores.",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Balenciaga stores",
+ "tags": [
+ "Balenciaga"
+ ]
+ }
+ },
+ "/barrons/article": {
+ "get": {
+ "description": "Returns one Barron's article's title, byline, section, publication time, word count, and body paragraphs, recovered from a public web-archive snapshot of the article. Barron's serves only the first paragraphs of an article at the origin, so an article is returned only when a full-text archive snapshot exists; an article without one returns 404.",
+ "operationId": "barrons-article",
+ "parameters": [
+ {
+ "description": "Canonical Barron's article URL",
"in": "query",
- "name": "store_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "39640"
+ "x-example": "https://www.barrons.com/articles/nvidia-stock-price-meta-ai-chips-rally-11911927"
}
],
"produces": [
@@ -194695,7 +223646,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.comboResponseDoc"
+ "$ref": "#/definitions/barrons.articleResponseDoc"
}
},
"400": {
@@ -194704,6 +223655,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "403": {
+ "description": "Forbidden",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"404": {
"description": "Not Found",
"schema": {
@@ -194728,41 +223685,171 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one 7NOW bundle deal's pick-from groups",
+ "summary": "Get a Barron's article's content",
"tags": [
- "7NOW"
+ "Barrons"
]
}
},
- "/7now/combos": {
+ "/barrons/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Lists every bundle deal a store offers -- 7NOW's combo-builder products, where a fixed price buys one item from each of several groups (e.g. \"$6.99 Pizza\", \"Bone In Wing Combo\"). GET /7now/search surfaces a combo only when a query happens to match one, so this is the only way to enumerate a store's bundles. Each entry carries the promotion id behind it: pass it to GET /7now/combo for the actual pick-from groups, or to GET /7now/promotion for a flat list of every eligible item. store_id comes from GET /7now/stores; lat and lon are accepted but inert (store_id alone selects the store).",
- "operationId": "7now-combos",
+ "description": "Returns one page of a Barron's topic's headlines: each story's title, canonical URL, summary, publication time, authors, and lead image. Section must be a slug returned by /barrons/topics.",
+ "operationId": "barrons-headlines",
"parameters": [
{
- "description": "7NOW store id, from GET /7now/stores.",
+ "description": "Barron's topic slug from /barrons/topics",
"in": "query",
- "name": "store_id",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "39640"
+ "x-example": "technology"
},
{
- "description": "Accepted but inert -- store_id alone selects the store; responses are byte-identical with any value or none. Forwarded upstream for fidelity with 7now.com's own client.",
+ "description": "Results page",
"in": "query",
- "name": "lat",
- "type": "number",
- "x-example": 40.712775
+ "maximum": 200,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/barrons.headlinesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Accepted but inert -- see lat.",
- "in": "query",
- "name": "lon",
- "type": "number",
- "x-example": -74.005973
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get the latest stories in a Barron's topic",
+ "tags": [
+ "Barrons"
+ ]
+ }
+ },
+ "/barrons/news": {
+ "get": {
+ "description": "Returns Barron's current cross-section news feed: the newest stories across every section, each with its title, canonical URL, and publication time.",
+ "operationId": "barrons-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/barrons.newsResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get the latest Barron's stories",
+ "tags": [
+ "Barrons"
+ ]
+ }
+ },
+ "/barrons/topics": {
+ "get": {
+ "description": "Lists every Barron's editorial topic accepted by /barrons/headlines' section parameter, with each topic's slug, display name, and landing-page URL.",
+ "operationId": "barrons-topics",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/barrons.topicsResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Barron's topics",
+ "tags": [
+ "Barrons"
+ ]
+ }
+ },
+ "/bbb/business": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a normalized bbb.org business profile: BBB rating letter grade and reasons, accreditation status and since-date, years in business, BBB file/incorporation dates, entity type, contact info, business categories, social media, and a short latest-reviews preview. Credential-free public Better Business Bureau data.",
+ "operationId": "bbb-business",
+ "parameters": [
+ {
+ "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803"
}
],
"produces": [
@@ -194772,7 +223859,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.combosResponseDoc"
+ "$ref": "#/definitions/bbb.businessResponseDoc"
}
},
"400": {
@@ -194781,8 +223868,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -194799,55 +223892,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List a 7NOW store's bundle deals",
+ "summary": "Get a Better Business Bureau business profile",
"tags": [
- "7NOW"
+ "BBB"
]
}
},
- "/7now/deals": {
+ "/bbb/business/complaints": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns every currently discounted item in a store, paginated, each with the promotion driving the discount -- its id, shopper-facing description (\"2 for $4\", \"On Sale $7\"), promotional price where the offer has a single-unit one, and run dates. A busy store carries several hundred; the response also reports a store-wide availability summary across all of them before paging. This is the store-wide offers listing: the per-category browse endpoints surface promotions only for the items they happen to return, and pulling them all otherwise means walking the entire catalog. Pass a promos[].id to GET /7now/promotion to see every item that same promotion covers. store_id comes from GET /7now/stores; lat and lon are accepted but inert (store_id alone selects the store).",
- "operationId": "7now-deals",
+ "description": "Returns a business's BBB complaint history: total complaint count, complaints closed in the last 12 months, and per-complaint detail (date, type, status, narrative text, and any business response / customer answer thread). A business with no filed complaints returns total_complaints 0 and an empty complaints list -- this is a normal result, not an error. Credential-free public Better Business Bureau data.",
+ "operationId": "bbb-business-complaints",
"parameters": [
{
- "description": "7NOW store id, from GET /7now/stores.",
+ "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url",
"in": "query",
- "name": "store_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "39640"
- },
- {
- "description": "Accepted but inert -- store_id alone selects the store; responses are byte-identical with any value or none. Forwarded upstream for fidelity with 7now.com's own client.",
- "in": "query",
- "name": "lat",
- "type": "number",
- "x-example": 40.712775
- },
- {
- "description": "Accepted but inert -- see lat.",
- "in": "query",
- "name": "lon",
- "type": "number",
- "x-example": -74.005973
- },
- {
- "description": "Pagination offset. Defaults to 0.",
- "in": "query",
- "name": "skip",
- "type": "integer",
- "x-example": 0
- },
- {
- "description": "Max items returned, 1-100. Defaults to 20.",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "x-example": "https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803"
}
],
"produces": [
@@ -194857,7 +223922,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.dealsResponseDoc"
+ "$ref": "#/definitions/bbb.complaintsResponseDoc"
}
},
"400": {
@@ -194866,8 +223931,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -194884,41 +223955,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List every discounted item in one 7NOW store",
+ "summary": "Get a Better Business Bureau business's complaint history",
"tags": [
- "7NOW"
+ "BBB"
]
}
},
- "/7now/offers": {
+ "/bbb/business/more-info": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns every promotional campaign a store currently advertises -- the headline, body copy, legal terms and artwork behind offers like \"$6.99 Pizza\" or \"2/$5 Gatorade 28oz\". This is campaign-level and complements the item-level views: GET /7now/deals answers \"which items are discounted and why\", while this answers \"what is this store advertising, and on what terms\". The full legal terms are available nowhere else. Each campaign points somewhere: promo_ids[] feed GET /7now/promotion (or GET /7now/combo when the campaign advertises a bundle), while a category campaign instead carries target_id, a category_id GET /7now/category accepts. store_id comes from GET /7now/stores; lat and lon are accepted but inert (store_id alone selects the store).",
- "operationId": "7now-offers",
+ "description": "Returns a business's full per-factor \"Reasons for Rating\" list and full service-area list, from the separate BBB business profile /more-info sub-page. The bbb-business endpoint's own rating_reasons field is read from the main profile page and typically holds only one generic boilerplate bullet regardless of actual rating; this endpoint fetches the richer, business-specific list instead. Service area is business-conditional -- some businesses render no service-area section at all, in which case service_areas is empty. Credential-free public Better Business Bureau data.",
+ "operationId": "bbb-business-more-info",
"parameters": [
{
- "description": "7NOW store id, from GET /7now/stores.",
+ "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url",
"in": "query",
- "name": "store_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "39640"
- },
- {
- "description": "Accepted but inert -- store_id alone selects the store; responses are byte-identical with any value or none. Forwarded upstream for fidelity with 7now.com's own client.",
- "in": "query",
- "name": "lat",
- "type": "number",
- "x-example": 40.712775
- },
- {
- "description": "Accepted but inert -- see lat.",
- "in": "query",
- "name": "lon",
- "type": "number",
- "x-example": -74.005973
+ "x-example": "https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803"
}
],
"produces": [
@@ -194928,7 +223985,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.offersResponseDoc"
+ "$ref": "#/definitions/bbb.moreInfoResponseDoc"
}
},
"400": {
@@ -194937,8 +223994,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -194955,38 +224018,33 @@
"ApiKeyAuth": []
}
],
- "summary": "List a 7NOW store's advertised promotional campaigns",
+ "summary": "Get a Better Business Bureau business's full rating reasons and service area",
"tags": [
- "7NOW"
+ "BBB"
]
}
},
- "/7now/popular": {
+ "/bbb/business/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the trending search terms 7NOW shows in its own search box. Two axes select the index and both matter. vertical picks the catalogue: `convenience` and `restaurant` return different terms for the same store, and `global` is the genuinely national cross-vertical list. store_id (from GET /7now/stores) then narrows to that store's region within the vertical -- a New York store returns index NY_NE, a Florida store SE, and omitting it returns the vertical-wide list. The restaurant vertical is the exception: it ignores store_id entirely, returning identical terms for every store. The response echoes back both the vertical and the regional index the terms came from.",
- "operationId": "7now-popular",
+ "description": "Returns a business's full customer-review list (author, star rating, date, text, and any business response thread), paginated 10 per page, plus the average star rating and total review count. Credential-free public Better Business Bureau data. Unlike the other bbb-business-* endpoints, this one is fetched with browser impersonation rather than plain direct HTTP -- see the family's maintenance note for why.",
+ "operationId": "bbb-business-reviews",
"parameters": [
{
- "description": "7NOW store id, from GET /7now/stores. Selects that store's regional index within the chosen vertical; omit for the vertical-wide list. Ignored by the restaurant vertical.",
+ "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url",
"in": "query",
- "name": "store_id",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "39226"
+ "x-example": "https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803"
},
{
- "description": "Which trending index to read. One of: convenience, restaurant, global. Defaults to convenience.",
- "enum": [
- "convenience",
- "restaurant",
- "global"
- ],
+ "description": "Result page (10 per page), default 1",
"in": "query",
- "name": "vertical",
- "type": "string",
- "x-example": "convenience"
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -194996,7 +224054,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.popularResponseDoc"
+ "$ref": "#/definitions/bbb.reviewsResponseDoc"
}
},
"400": {
@@ -195005,8 +224063,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -195023,27 +224081,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get 7NOW trending search terms",
+ "summary": "Get a Better Business Bureau business's customer reviews",
"tags": [
- "7NOW"
+ "BBB"
]
}
},
- "/7now/product": {
+ "/bbb/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one product's complete reference record: description, the full nutrition panel (serving size, calories, fat, cholesterol, sodium, carbohydrates, protein, vitamins and allergen \"contains\" list), the declared ingredient list, the allergen statement, size and flavor variants, related products, and any attached promotions. product_id comes from GET /7now/search, /7now/catalog or /7now/category. This record is store-independent and deliberately carries no price, availability or stock -- use those three endpoints for per-store pricing and availability. An unknown product_id returns a 404.",
- "operationId": "7now-product",
+ "description": "Browses bbb.org businesses by category and location directly, without a free-text search query. Returns the same normalized business-result shape as bbb-search. Credential-free public Better Business Bureau data.",
+ "operationId": "bbb-category",
"parameters": [
{
- "description": "7NOW product id, from GET /7now/search, /7now/catalog or /7now/category.",
+ "description": "BBB category browse URL, from a bbb-search result's related_categories",
"in": "query",
- "name": "product_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "178322-2-6-2"
+ "x-example": "https://www.bbb.org/us/tx/austin/category/plumber"
+ },
+ {
+ "description": "Result page, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -195053,7 +224117,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.productResponseDoc"
+ "$ref": "#/definitions/bbb.categoryResponseDoc"
}
},
"400": {
@@ -195062,14 +224126,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -195086,49 +224144,119 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one 7NOW product's full reference record",
+ "summary": "Browse a Better Business Bureau category",
"tags": [
- "7NOW"
+ "BBB"
]
}
},
- "/7now/promotion": {
+ "/bbb/scamtracker/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Expands one promotion into every item it applies to in a store, plus the promotion's own offer type, terms, and run dates. GET /7now/deals reads discount-to-item (here is a discounted product, here is why); this reads it the other way round (here is an offer, here is everything it covers) -- e.g. a \"2 for $4\" tea promotion expands to all five flavours in it. promo_id comes from GET /7now/deals' items[].promos[].id, and store_id from GET /7now/stores. An unknown promo_id returns 404.",
- "operationId": "7now-promotion",
+ "description": "Searches bbb.org Scam Tracker's consumer-reported-scam database by free-text query, scam category, targeted-victim state/province, reported-scammer state/province, report-date range, and/or dollar-loss range, paginated 10 results/page. Omit every filter to browse the most-recent-first feed. Credential-free public Better Business Bureau data. This is a separate BBB dataset from the bbb-search/bbb-business/bbb-business-complaints business-rating family -- consumer-reported scam incidents, not business ratings.",
+ "operationId": "bbb-scamtracker-search",
"parameters": [
{
- "description": "Promotion id, from GET /7now/deals' items[].promos[].id.",
+ "description": "Free-text search (phone number, website, email, business name, scam ID, description). Omit to browse the most-recent feed",
"in": "query",
- "name": "promo_id",
- "required": true,
+ "name": "query",
"type": "string",
- "x-example": "6a9746d488cc35e1bbff1584"
+ "x-example": "amazon"
},
{
- "description": "7NOW store id, from GET /7now/stores.",
+ "description": "Scam category filter",
+ "enum": [
+ "Advance Fee Loan",
+ "Bank/Credit Card Company Imposter",
+ "Business Email Compromise",
+ "Charity",
+ "Counterfeit Product",
+ "COVID-19",
+ "Credit Cards",
+ "Credit Repair/Debt Relief",
+ "CryptoCurrency",
+ "Debt Collections",
+ "Employment",
+ "Fake Check/Money Order",
+ "Fake Invoice/Supplier Bill",
+ "Family/Friend Emergency",
+ "Foreign Money Exchange",
+ "Government Agency Imposter",
+ "Government Grant",
+ "Healthcare/Medicaid/Medicare",
+ "Home Improvement",
+ "Identity Theft",
+ "Investment",
+ "Moving",
+ "Online Purchase",
+ "Other",
+ "Phishing",
+ "Rental",
+ "Retail Business",
+ "Romance",
+ "Scholarship",
+ "Sweepstakes/Lottery/Prizes",
+ "Tax Collection",
+ "Tech Support",
+ "Travel/Vacation/Timeshare",
+ "Utility",
+ "Vanity Award",
+ "Worthless Problem-solving Service",
+ "Yellow Pages/Directories"
+ ],
"in": "query",
- "name": "store_id",
- "required": true,
+ "name": "scam_type",
+ "type": "string"
+ },
+ {
+ "description": "Optional 2-letter targeted-victim state/province code (US state or Canadian province)",
+ "in": "query",
+ "name": "state",
"type": "string",
- "x-example": "39640"
+ "x-example": "TX"
},
{
- "description": "Pagination offset. Defaults to 0.",
+ "description": "Optional 2-letter reported-scammer state/province code (US state or Canadian province) -- where the scammer is reported to be, not the victim",
"in": "query",
- "name": "skip",
+ "name": "scammer_state",
+ "type": "string",
+ "x-example": "NY"
+ },
+ {
+ "description": "Optional report-date range start (YYYY-MM-DD), inclusive. Must be set together with date_to",
+ "in": "query",
+ "name": "date_from",
+ "type": "string",
+ "x-example": "2026-01-01"
+ },
+ {
+ "description": "Optional report-date range end (YYYY-MM-DD), inclusive. Must be set together with date_from",
+ "in": "query",
+ "name": "date_to",
+ "type": "string",
+ "x-example": "2026-01-31"
+ },
+ {
+ "description": "Optional minimum reported dollar loss. Must be set together with max_dollars_lost",
+ "in": "query",
+ "name": "min_dollars_lost",
"type": "integer",
- "x-example": 0
+ "x-example": 500000
},
{
- "description": "Max items returned, 1-100. Defaults to 20.",
+ "description": "Optional maximum reported dollar loss. Must be set together with min_dollars_lost",
"in": "query",
- "name": "limit",
+ "name": "max_dollars_lost",
"type": "integer",
- "x-example": 20
+ "x-example": 1000000
+ },
+ {
+ "description": "Result page (10 per page), default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -195138,7 +224266,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.promotionResponseDoc"
+ "$ref": "#/definitions/bbbscamtracker.searchResponseDoc"
}
},
"400": {
@@ -195147,14 +224275,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -195171,49 +224293,31 @@
"ApiKeyAuth": []
}
],
- "summary": "List every item one 7NOW promotion covers",
+ "summary": "Search Better Business Bureau Scam Tracker reports",
"tags": [
- "7NOW"
+ "BBB"
]
}
},
- "/7now/search": {
+ "/bbb/scamtracker/state-stats": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one 7NOW store's keyword search results: matching products and combo deals with current pricing (list price, everyday sale price, and any further active promotion), live availability, and a sponsored-brand facet list relevant to the query. store_id comes from GET /7now/stores. A query matching nothing returns a normal 200 with an empty items array, not an error.",
- "operationId": "7now-search",
+ "description": "Returns aggregate scam-report stats per US state and Canadian province for a given time window: report counts, dollar losses, per-capita rates, year-over-year change, and top scam-type breakdown. This calls the same JSON API the BBB Scam Tracker heatmap dashboard's own frontend uses -- not an HTML scrape. Credential-free public Better Business Bureau data.",
+ "operationId": "bbb-scamtracker-state-stats",
"parameters": [
{
- "description": "7NOW store id, from GET /7now/stores.",
- "in": "query",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "39226"
- },
- {
- "description": "Keyword search term.",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "pizza"
- },
- {
- "description": "Pagination offset. Defaults to 0.",
- "in": "query",
- "name": "skip",
- "type": "integer",
- "x-example": 0
- },
- {
- "description": "Max results returned, 1-50. Defaults to 20.",
+ "description": "Aggregation window, default 90",
+ "enum": [
+ "30",
+ "90",
+ "365",
+ "all"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "name": "period",
+ "type": "string"
}
],
"produces": [
@@ -195223,7 +224327,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.searchResponseDoc"
+ "$ref": "#/definitions/bbbscamtracker.stateStatsResponseDoc"
}
},
"400": {
@@ -195232,8 +224336,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -195250,27 +224354,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search one 7NOW store's products",
+ "summary": "Get Better Business Bureau Scam Tracker state/province aggregate stats",
"tags": [
- "7NOW"
+ "BBB"
]
}
},
- "/7now/stores": {
+ "/bbb/scamtracker/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Resolves a free-text delivery address, street, city and state, or postal code to the nearest 7NOW-enabled 7-Eleven stores, nearest first. Each store carries its store_id, address, coordinates, straight-line distance in miles from the resolved address, the banner it trades under, its Nielsen DMA, and its per-day alcohol sale windows -- upstream's own encoding of the local law, which is why a day can hold more than one window (a New York store's Sunday runs 0000-0200 and 0800-2359). An empty alcohol_sale_hours means upstream publishes no windows for that store, which is not the same as it selling no alcohol. The response also carries the Uber H3 cell for the resolved address. Use store_id with GET /7now/catalog, /7now/categories, /7now/deals, /7now/offers or /7now/combos to browse that store. An address that cannot be geocoded, or one with no nearby 7NOW coverage, returns a 404.",
- "operationId": "7now-stores",
+ "description": "Returns one normalized BBB Scam Tracker consumer scam report: description, dollars lost, targeted person's location, scammer location/email/phone/URL (when known), scam type, business name used, and date reported. Credential-free public Better Business Bureau data.",
+ "operationId": "bbb-scamtracker-detail",
"parameters": [
{
- "description": "Free-text delivery address, street, city and state, or postal code.",
- "in": "query",
- "name": "address",
+ "description": "BBB Scam Tracker report id, from a bbb-scamtracker-search result's id or url",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "350 5th Ave, New York, NY"
+ "x-example": "1397968"
}
],
"produces": [
@@ -195280,7 +224384,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.storesResponseDoc"
+ "$ref": "#/definitions/bbbscamtracker.detailResponseDoc"
}
},
"400": {
@@ -195295,8 +224399,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -195313,39 +224417,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Find 7NOW delivery stores near an address",
+ "summary": "Get a Better Business Bureau Scam Tracker report",
"tags": [
- "7NOW"
+ "BBB"
]
}
},
- "/7now/suggest": {
+ "/bbb/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns search-term completions for a partial query, e.g. \"chi\" -> \"chips ahoy\", \"chips\", \"chicken\". No store is required. q must be at least 3 characters -- shorter values return a typed invalid-param error, matching upstream's own enforced minimum. vertical selects which search index to complete against, and the indexes are materially different rather than variations on one list: for \"chi\", `convenience` answers \"chips ahoy, chips, chicken wings\" while `restaurant` answers \"chipotle, chinese food, chili\". `global` is a sparse cross-vertical index -- many prefixes legitimately return no suggestions there.",
- "operationId": "7now-suggest",
+ "description": "Searches bbb.org for businesses by name or category near a location. Returns each business's BBB rating letter grade, accreditation status, categories, service areas, contact info, and profile URL. Credential-free public Better Business Bureau data.",
+ "operationId": "bbb-search",
"parameters": [
{
- "description": "Partial search term, at least 3 characters.",
+ "description": "Business name or category/service keyword",
"in": "query",
- "name": "q",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "chi"
+ "x-example": "plumber"
},
{
- "description": "Which search index to complete against. One of: convenience, restaurant, global. Defaults to convenience.",
- "enum": [
- "convenience",
- "restaurant",
- "global"
- ],
+ "description": "City and state (e.g. 'Austin, TX') or a ZIP code",
"in": "query",
- "name": "vertical",
+ "name": "location",
+ "required": true,
"type": "string",
- "x-example": "convenience"
+ "x-example": "Austin, TX"
+ },
+ {
+ "description": "Result page, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -195355,7 +224461,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/sevennow.suggestResponseDoc"
+ "$ref": "#/definitions/bbb.searchResponseDoc"
}
},
"400": {
@@ -195364,8 +224470,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -195382,24 +224488,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get 7NOW search-term suggestions",
+ "summary": "Search Better Business Bureau businesses",
"tags": [
- "7NOW"
+ "BBB"
]
}
},
- "/abcau/article": {
+ "/bbc/article": {
"get": {
- "description": "Returns public ABC News Australia article metadata and body paragraphs from a canonical article URL.",
- "operationId": "abcau-article",
+ "description": "Returns a BBC News article's public metadata and body paragraphs from a canonical article URL. Live pages are not supported.",
+ "operationId": "bbc-article",
"parameters": [
{
- "description": "Canonical ABC News Australia article URL",
+ "description": "Canonical BBC News article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.abc.net.au/news/2026-09-24/example-article-slug/107189792"
+ "x-example": "https://www.bbc.co.uk/news/articles/cd68q3wynnqo"
}
],
"produces": [
@@ -195409,7 +224515,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/bbc.articleResponseDoc"
}
},
"400": {
@@ -195424,6 +224530,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -195436,24 +224548,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get ABC News Australia article content",
+ "summary": "Get BBC News article content",
"tags": [
- "ABC News Australia"
+ "BBC"
]
}
},
- "/abcau/author": {
+ "/bbc/author": {
"get": {
- "description": "Returns an ABC News Australia author's byline metadata, biography, and recent articles from a canonical author URL.",
- "operationId": "abcau-author",
+ "description": "Returns a BBC News correspondent's public profile: name, short bio, and their recent articles.",
+ "operationId": "bbc-author",
"parameters": [
{
- "description": "Canonical ABC News Australia author URL",
+ "description": "Canonical BBC News correspondent URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.abc.net.au/news/jane-doe/12345"
+ "x-example": "https://www.bbc.co.uk/news/correspondents/jonnydymond"
}
],
"produces": [
@@ -195463,7 +224575,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.abcauAuthorResponseDoc"
+ "$ref": "#/definitions/bbc.authorResponseDoc"
}
},
"400": {
@@ -195478,6 +224590,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -195490,39 +224608,32 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an ABC News Australia author profile",
+ "summary": "Get a BBC News correspondent's profile",
"tags": [
- "ABC News Australia"
+ "BBC"
]
}
},
- "/abcau/headlines": {
+ "/bbc/headlines": {
"get": {
- "description": "Returns fresh headlines from one public ABC News Australia section.",
- "operationId": "abcau-headlines",
+ "description": "Returns fresh headlines from a public BBC News RSS section. section defaults to world.",
+ "operationId": "bbc-headlines",
"parameters": [
{
- "description": "ABC News Australia section slug",
+ "description": "BBC News RSS section, defaults to world",
"enum": [
- "justin",
+ "all",
"world",
+ "uk",
"politics",
"business",
- "sport",
"health",
- "entertainment",
- "science",
- "rural",
- "analysis-and-opinion",
- "indigenous",
- "environment",
- "backstory",
- "lifestyle",
- "australia"
+ "science_and_environment",
+ "technology",
+ "entertainment_and_arts"
],
"in": "query",
"name": "section",
- "required": true,
"type": "string"
}
],
@@ -195533,7 +224644,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/bbc.headlinesResponseDoc"
}
},
"400": {
@@ -195542,6 +224653,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -195554,16 +224677,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Get ABC News Australia section headlines",
+ "summary": "Get BBC News section headlines",
"tags": [
- "ABC News Australia"
+ "BBC"
]
}
},
- "/abcau/news": {
+ "/bbc/live": {
"get": {
- "description": "Returns fresh ABC News Australia top stories from its public RSS feed.",
- "operationId": "abcau-news",
+ "description": "Returns the current server-rendered text updates from one canonical BBC News live URL. It does not subscribe to updates or return broadcast, player, or stream data.",
+ "operationId": "bbc-live",
+ "parameters": [
+ {
+ "description": "Canonical BBC News live URL",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.bbc.co.uk/news/live/c6y8mjmnpxv0t"
+ }
+ ],
"produces": [
"application/json"
],
@@ -195571,7 +224704,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/bbc.liveResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -195592,50 +224737,32 @@
"ApiKeyAuth": []
}
],
- "summary": "Get ABC News Australia top stories",
- "tags": [
- "ABC News Australia"
- ]
- }
- },
- "/abcau/sections": {
- "get": {
- "description": "Returns the public ABC News Australia section inventory used by the headlines endpoint.",
- "operationId": "abcau-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get ABC News Australia sections",
+ "summary": "Get a BBC News live-page text snapshot",
"tags": [
- "ABC News Australia"
+ "BBC"
]
}
},
- "/abcnews/article": {
+ "/bbc/search": {
"get": {
- "description": "Returns public ABC News article metadata and body paragraphs from a canonical article URL. Accepts both the \"story?id=...\" and \"wireStory/...\" canonical URL shapes.",
- "operationId": "abcnews-article",
+ "description": "Returns a bounded page of public BBC search-result metadata: title, URL, standfirst summary, display date, and a type of article, video, audio, live, topic, or page. Topic items are BBC topic hub pages rather than articles and carry no published_at. Media entries link only to their BBC landing pages; streams, downloads, and transcripts are not returned.",
+ "operationId": "bbc-search",
"parameters": [
{
- "description": "Canonical ABC News article URL",
+ "description": "Search query, up to 120 characters",
"in": "query",
- "name": "url",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "https://abcnews.com/Politics/example-story/story?id=123456789"
+ "x-example": "climate"
+ },
+ {
+ "description": "Results page, defaults to 1",
+ "in": "query",
+ "maximum": 10,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -195645,7 +224772,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/bbc.searchResponseDoc"
}
},
"400": {
@@ -195660,6 +224787,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -195672,24 +224805,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get ABC News article content",
+ "summary": "Search public BBC pages",
"tags": [
- "ABC News"
+ "BBC"
]
}
},
- "/abcnews/author": {
+ "/benzinga/article": {
"get": {
- "description": "Returns an ABC News author's profile: name, job title/biography when the page carries one, and social links, from a canonical author URL. Does NOT include a list of the author's recent articles -- unlike this repo's other news-author endpoints, ABC News only exposes that list through an internal endpoint disallowed for every crawler in abcnews.com's robots.txt (a generic \"Disallow: /proxy/*\" rule, not limited to AI-training bots), so it is out of scope for this endpoint.",
- "operationId": "abcnews-author",
+ "description": "Returns metadata and anonymous body paragraphs from a canonical dated Benzinga editorial article URL.",
+ "operationId": "benzinga-article",
"parameters": [
{
- "description": "Canonical ABC News author URL",
+ "description": "Canonical dated Benzinga editorial article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://abcnews.com/author/benjamin_siegel"
+ "x-example": "https://www.benzinga.com/trading-ideas/movers/26/09/62057574/spacex-stock-rises-tuesday"
}
],
"produces": [
@@ -195699,7 +224832,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.abcNewsAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -195726,33 +224859,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an ABC News author profile",
+ "summary": "Get a Benzinga article",
"tags": [
- "ABC News"
+ "Benzinga"
]
}
},
- "/abcnews/headlines": {
+ "/benzinga/headlines": {
"get": {
- "description": "Returns fresh headlines from one ABC News section's public hub page.",
- "operationId": "abcnews-headlines",
+ "description": "Returns public story cards from one verified Benzinga news section; section must come from benzinga_sections.",
+ "operationId": "benzinga-headlines",
"parameters": [
{
- "description": "ABC News section slug",
+ "description": "Benzinga editorial section slug",
"enum": [
- "us",
- "world",
+ "latest",
+ "technology-stocks",
"politics",
- "business",
- "technology",
- "entertainment",
- "health",
- "sports"
+ "health-care"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "latest"
}
],
"produces": [
@@ -195783,16 +224913,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get ABC News section headlines",
+ "summary": "Get Benzinga section headlines",
"tags": [
- "ABC News"
+ "Benzinga"
]
}
},
- "/abcnews/news": {
+ "/benzinga/news": {
"get": {
- "description": "Returns fresh ABC News top stories from its public news sitemap feed.",
- "operationId": "abcnews-news",
+ "description": "Returns current Benzinga stories and teaser summaries from its public RSS feed.",
+ "operationId": "benzinga-news",
"produces": [
"application/json"
],
@@ -195803,8 +224933,50 @@
"$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Benzinga top stories",
+ "tags": [
+ "Benzinga"
+ ]
+ }
+ },
+ "/benzinga/search": {
+ "get": {
+ "description": "Returns up to five public news-article suggestions from Benzinga's anonymous search typeahead. Ticker-only suggestions are omitted; this is not a paginated archive search.",
+ "operationId": "benzinga-search",
+ "parameters": [
+ {
+ "description": "Search text (2 to 100 characters)",
+ "in": "query",
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "Tesla"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.benzingaSearchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -195821,16 +224993,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get ABC News top stories",
+ "summary": "Search Benzinga article suggestions",
"tags": [
- "ABC News"
+ "Benzinga"
]
}
},
- "/abcnews/sections": {
+ "/benzinga/sections": {
"get": {
- "description": "Returns the ABC News section inventory: the 8 core news sections accepted by abcnews-headlines.",
- "operationId": "abcnews-sections",
+ "description": "Returns the four menu-verified Benzinga editorial sections accepted by benzinga_headlines.",
+ "operationId": "benzinga-sections",
"produces": [
"application/json"
],
@@ -195847,19 +225019,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get ABC News sections",
+ "summary": "List Benzinga news sections",
"tags": [
- "ABC News"
+ "Benzinga"
]
}
},
- "/accor/amenities": {
+ "/bestbuy/brands": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the anonymous public Accor amenity catalog with stable amenity codes, labels, categories, and display ordering. It is reference data for interpreting hotel search facets; booking, rates, rooms, reviews, and account data are excluded.",
- "operationId": "accor-amenities",
+ "description": "Returns Best Buy's full brand directory (name, category id, url), sourced from the site's own \"Name Brands\" page. Each id is directly usable as bestbuy_category's category_id input.",
+ "operationId": "bestbuy-brands",
"produces": [
"application/json"
],
@@ -195867,7 +225039,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/accor.amenitiesResponseDoc"
+ "$ref": "#/definitions/bestbuy.brandsResponseDoc"
}
},
"429": {
@@ -195876,12 +225048,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -195894,19 +225060,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Accor amenity reference catalog",
+ "summary": "Get Best Buy's full brand directory",
"tags": [
- "Accor"
+ "Best Buy"
]
}
},
- "/accor/brands": {
+ "/bestbuy/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the Accor brand directory published on the public brands page, with each brand's name, slug, and source URL. Booking, rates, rooms, reviews, contacts, and location are excluded.",
- "operationId": "accor-brands",
+ "description": "Returns Best Buy's top-level shopping departments (name, category id, url), sourced from the homepage's own category carousel. Each id is directly usable as bestbuy_category's category_id input.",
+ "operationId": "bestbuy-categories",
"produces": [
"application/json"
],
@@ -195914,7 +225080,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/accor.brandsResponseDoc"
+ "$ref": "#/definitions/bestbuy.categoriesResponseDoc"
}
},
"429": {
@@ -195923,12 +225089,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -195941,73 +225101,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Accor brand directory",
+ "summary": "Get Best Buy's top-level shopping departments",
"tags": [
- "Accor"
+ "Best Buy"
]
}
},
- "/accor/catalog/hotels": {
+ "/bestbuy/categories/trending": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Accor's anonymous public hotel catalog by text, hotel code, or latitude/longitude radius. Results contain static property identity and broad location metadata plus catalog relevance/distance; contact details, precise hotel coordinates, payment, loyalty, media, rates, rooms, reviews, and booking data are excluded.",
- "operationId": "accor-catalog-hotels",
- "parameters": [
- {
- "description": "Destination or hotel text (at least two characters)",
- "in": "query",
- "name": "query",
- "type": "string",
- "x-example": "London"
- },
- {
- "description": "Four-character Accor hotel code",
- "in": "query",
- "name": "hotel_id",
- "type": "string",
- "x-example": "A7L5"
- },
- {
- "description": "Search-center latitude (-90 to 90)",
- "in": "query",
- "name": "latitude",
- "type": "number",
- "x-example": 51.5072
- },
- {
- "description": "Search-center longitude (-180 to 180)",
- "in": "query",
- "name": "longitude",
- "type": "number",
- "x-example": -0.1276
- },
- {
- "default": 10,
- "description": "Search radius in kilometers (0.1 to 100; defaults to 10 for coordinate searches)",
- "in": "query",
- "name": "radius_km",
- "type": "number",
- "x-example": 10
- },
- {
- "default": 0,
- "description": "Zero-based result offset (0 to 300)",
- "in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
- },
- {
- "default": 20,
- "description": "Results per request (1 to 50)",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
- }
- ],
+ "description": "Returns Best Buy's fine-grained, often deeply-nested product-type categories (e.g. \"Windows Laptops\", \"55-Inch TVs (55 - 64 in)\", \"PS5 Consoles\") sourced from the homepage's own \"Best Selling\" section -- much more specific than bestbuy_categories' ~25 top-level departments. Each id is directly usable as bestbuy_category's category_id input.",
+ "operationId": "bestbuy-categories-trending",
"produces": [
"application/json"
],
@@ -196015,13 +225121,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/accor.catalogResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/bestbuy.trendingCategoriesResponseDoc"
}
},
"429": {
@@ -196030,12 +225130,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -196048,66 +225142,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Accor hotel catalog",
+ "summary": "Get Best Buy's fine-grained trending product-type categories",
"tags": [
- "Accor"
+ "Best Buy"
]
}
},
- "/accor/destination/hotels": {
+ "/bestbuy/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the static list of hotels published on one Accor destination directory page (world, continent, country, region, department, city, district, or place), optionally narrowed by a theme facet. Each hotel carries its code, name, source URL, and broad city/country. Booking, rates, rooms, reviews, contacts, and precise location are excluded.",
- "operationId": "accor-destination-hotels",
+ "description": "Returns one page (up to 24) of one Best Buy category's normalized product listing (sku, title, url, image, price, rating, review count). category_id is a Best Buy category id, e.g. pcmcat138500050001, found in a category page URL's trailing .c?id= segment. page is the optional 1-indexed page number (defaults to 1); requesting a page past the last one returns an empty products list, not an error.",
+ "operationId": "bestbuy-category",
"parameters": [
{
- "description": "Destination level: world, continent, country, region, department, city, district, or place",
- "enum": [
- "world",
- "continent",
- "country",
- "region",
- "department",
- "city",
- "district",
- "place"
- ],
+ "description": "Best Buy category id",
"in": "query",
- "name": "destination_type",
+ "name": "category_id",
"required": true,
- "type": "string"
- },
- {
- "description": "Destination page slug, e.g. hotels-dusseldorf-v1158. Required for every type except world.",
- "in": "query",
- "name": "slug",
- "type": "string"
+ "type": "string",
+ "x-example": "pcmcat138500050001"
},
{
- "description": "Optional theme facet: 4-stars, 5-stars, apart-hotel, breakfast, budget-friendly, business, eco-certified, family-friendly, fitness, luxury, meetings-and-events, parking, pet-friendly, pool, resorts, or spa",
- "enum": [
- "4-stars",
- "5-stars",
- "apart-hotel",
- "breakfast",
- "budget-friendly",
- "business",
- "eco-certified",
- "family-friendly",
- "fitness",
- "luxury",
- "meetings-and-events",
- "parking",
- "pet-friendly",
- "pool",
- "resorts",
- "spa"
- ],
+ "description": "1-indexed page number, defaults to 1",
"in": "query",
- "name": "theme",
- "type": "string"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -196117,7 +225179,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/accor.destinationResponseDoc"
+ "$ref": "#/definitions/bestbuy.categoryResponseDoc"
}
},
"400": {
@@ -196126,14 +225188,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -196150,27 +225212,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Accor hotels in a destination",
+ "summary": "Get a Best Buy category's product listing",
"tags": [
- "Accor"
+ "Best Buy"
]
}
},
- "/accor/property": {
+ "/bestbuy/category/subcategories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns static public metadata for one Accor hotel code, including name, brand, city/country, explicitly listed amenities, and published check-in/check-out times. Booking, rates, rooms, reviews, contacts, and precise location are excluded.",
- "operationId": "accor-property",
+ "description": "Returns a Best Buy category's own sibling/child category set (name, category id, url), sourced from that category page's own \"Category\" filter facet. Each id is directly usable as bestbuy_category's category_id input. category_id is a Best Buy category id, e.g. pcmcat138500050001, found in a category page URL's trailing .c?id= segment. A leaf category with no siblings returns an empty list, not an error.",
+ "operationId": "bestbuy-category-subcategories",
"parameters": [
{
- "description": "Four-character Accor hotel code",
+ "description": "Best Buy category id",
"in": "query",
- "name": "hotel_code",
+ "name": "category_id",
"required": true,
"type": "string",
- "x-example": "A7L5"
+ "x-example": "pcmcat138500050001"
}
],
"produces": [
@@ -196180,7 +225242,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/accor.propertyResponseDoc"
+ "$ref": "#/definitions/bestbuy.subcategoriesResponseDoc"
}
},
"400": {
@@ -196195,12 +225257,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -196213,85 +225269,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Accor hotel metadata",
+ "summary": "Get a Best Buy category's own sibling/child categories",
"tags": [
- "Accor"
+ "Best Buy"
]
}
},
- "/accor/search": {
+ "/bestbuy/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the public Accor hotel index by destination or hotel name, with optional country, city, brand, star, page, and page-size filters. Results contain static hotel identity, location labels, ratings, and source URLs; booking, rates, rooms, reviews, loyalty, and payment flows are excluded.",
- "operationId": "accor-search",
+ "description": "Returns one Best Buy product's normalized detail (name, brand, model, color, price, availability, rating, images, breadcrumbs), sourced from the product page's own schema.org Product structured-data block. sku is the numeric Best Buy SKU shown on bestbuy.com product pages and URLs.",
+ "operationId": "bestbuy-product",
"parameters": [
{
- "description": "Destination or hotel query (at least two characters)",
+ "description": "Numeric Best Buy SKU",
"in": "query",
- "name": "query",
+ "name": "sku",
"required": true,
"type": "string",
- "x-example": "London"
- },
- {
- "description": "Index locale",
- "in": "query",
- "name": "language",
- "type": "string",
- "x-example": "en"
- },
- {
- "default": 0,
- "description": "Zero-based result page",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 0
- },
- {
- "default": 20,
- "description": "Results per page, 1-100",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
- },
- {
- "description": "Country facet",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "United Kingdom"
- },
- {
- "description": "City facet",
- "in": "query",
- "name": "city",
- "type": "string",
- "x-example": "London"
- },
- {
- "description": "Accor brand code facet",
- "in": "query",
- "name": "brand",
- "type": "string",
- "x-example": "NOVOTEL"
- },
- {
- "description": "Exact star facet",
- "enum": [
- 1,
- 2,
- 3,
- 4,
- 5
- ],
- "in": "query",
- "name": "stars",
- "type": "integer",
- "x-example": 4
+ "x-example": "6673590"
}
],
"produces": [
@@ -196301,7 +225299,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/accor.searchResponseDoc"
+ "$ref": "#/definitions/bestbuy.productResponseDoc"
}
},
"400": {
@@ -196316,12 +225314,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -196334,46 +225326,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Accor hotels",
+ "summary": "Get a Best Buy product's detail",
"tags": [
- "Accor"
+ "Best Buy"
]
}
},
- "/accor/search/details": {
+ "/bestbuy/product/questions": {
"get": {
"consumes": [
"application/json"
],
- "description": "Resolves an anonymous Accor search suggestion identifier to its description, coordinates, viewport, radius, and address components. It uses the same public place-details source as the Accor search box; booking, rates, rooms, reviews, and account data are excluded.",
- "operationId": "accor-search-details",
+ "description": "Returns the customer questions (with answers, when present) Best Buy embeds directly on a product's page: question text, answer text, who answered, and when. sku is the numeric Best Buy SKU shown on bestbuy.com product pages and URLs. A product with no questions asked yet returns an empty list, not an error.",
+ "operationId": "bestbuy-product-questions",
"parameters": [
{
- "description": "Suggestion source",
- "enum": [
- "google_places",
- "hod_hotels"
- ],
- "in": "query",
- "name": "source",
- "required": true,
- "type": "string",
- "x-example": "google_places"
- },
- {
- "description": "Identifier returned by Accor search suggestions",
+ "description": "Numeric Best Buy SKU",
"in": "query",
- "name": "id",
+ "name": "sku",
"required": true,
"type": "string",
- "x-example": "ChIJdd4hrwug2EcRmSrV3Vo6llI"
- },
- {
- "description": "Optional locale",
- "in": "query",
- "name": "language",
- "type": "string",
- "x-example": "en"
+ "x-example": "6673590"
}
],
"produces": [
@@ -196383,7 +225356,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/accor.detailsResponseDoc"
+ "$ref": "#/definitions/bestbuy.productQuestionsResponseDoc"
}
},
"400": {
@@ -196398,12 +225371,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -196416,34 +225383,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Accor place coordinates and viewport",
+ "summary": "Get a Best Buy product's customer questions and answers",
"tags": [
- "Accor"
+ "Best Buy"
]
}
},
- "/accor/search/suggest": {
+ "/bestbuy/product/related": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns anonymous Accor typeahead suggestions for a partial destination or hotel query, including destination/place and hotel identifiers, types, labels, and match metadata. It uses the public search-box suggestion source only; booking, rates, rooms, reviews, and result-list requests are excluded.",
- "operationId": "accor-search-suggest",
+ "description": "Returns the organic (non-sponsored) related products Best Buy embeds in a product page's own comparison table (sku, name, url, image, price). sku is the numeric Best Buy SKU shown on bestbuy.com product pages and URLs. A product page with no comparison table returns an empty list, not an error.",
+ "operationId": "bestbuy-product-related",
"parameters": [
{
- "description": "Partial destination or hotel query (at least two characters)",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "London"
- },
- {
- "description": "Optional locale used by the suggestion source",
+ "description": "Numeric Best Buy SKU",
"in": "query",
- "name": "language",
+ "name": "sku",
+ "required": true,
"type": "string",
- "x-example": "en"
+ "x-example": "6673590"
}
],
"produces": [
@@ -196453,7 +225413,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/accor.suggestResponseDoc"
+ "$ref": "#/definitions/bestbuy.productRelatedResponseDoc"
}
},
"400": {
@@ -196468,12 +225428,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -196486,27 +225440,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Accor destination and hotel search suggestions",
+ "summary": "Get a Best Buy product's related products",
"tags": [
- "Accor"
+ "Best Buy"
]
}
},
- "/adidas/product": {
+ "/bestbuy/product/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized product-detail data for one Adidas SKU: name, brand, category, description, pricing (current/standard/sale), images, and every purchasable size variant. product_id is the Adidas SKU (e.g. JI0397), taken from a search result's products[].id field or the trailing segment of an Adidas product page URL. An unknown product_id returns a not-found error.",
- "operationId": "adidas-product",
+ "description": "Returns page 1 (up to 20) of one Best Buy product's normalized customer reviews (rating, title, text, author, posted date, tags such as Verified Purchaser, recommended flag, helpful/unhelpful counts), sourced from the product's dedicated reviews page. sku is the numeric Best Buy SKU shown on bestbuy.com product pages and URLs.",
+ "operationId": "bestbuy-product-reviews",
"parameters": [
{
- "description": "Adidas SKU/product id, from a search result's products[].id field",
+ "description": "Numeric Best Buy SKU",
"in": "query",
- "name": "product_id",
+ "name": "sku",
"required": true,
"type": "string",
- "x-example": "JI0397"
+ "x-example": "6673590"
}
],
"produces": [
@@ -196516,7 +225470,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/adidas.productResponseDoc"
+ "$ref": "#/definitions/bestbuy.productReviewsResponseDoc"
}
},
"400": {
@@ -196525,12 +225479,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -196549,34 +225497,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Adidas product",
+ "summary": "Get a Best Buy product's customer reviews",
"tags": [
- "Adidas"
+ "Best Buy"
]
}
},
- "/adidas/product/review-topics": {
+ "/bestbuy/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the topics an Adidas product model's customer reviews can be filtered by -- the \"filter by topic\" chips the product page shows, commonly satisfaction, comfort, color, purchase, fit, appearance, quality and style. Feed a topics[].topic value back to /adidas/product/reviews as its topic parameter to return only reviews about that aspect. The topic vocabulary is per model, not a fixed list: a shoe exposes fit and comfort topics that an accessory does not, so read it per model rather than hard-coding it. model_number is the Adidas model number (e.g. SAMBAU2312) -- NOT the SKU: take it from an adidas_search result's products[].model_number field. A model with no reviews, including a well-formed but unrecognized model_number, returns an empty topics list rather than an error. Note the label field is a display form of topic, not translated text: Adidas returns the same English values for every locale on this route.",
- "operationId": "adidas-product-review-topics",
+ "description": "Returns one page (up to 24) of one Best Buy keyword search's normalized product listing (sku, title, url, image, price, rating, review count). q is free-text search keywords, e.g. \"laptop\". page is the optional 1-indexed page number (defaults to 1); requesting a page past the last one returns an empty products list, not an error.",
+ "operationId": "bestbuy-search",
"parameters": [
{
- "description": "Adidas model number, from an adidas_search result's products[].model_number field",
+ "description": "Search keywords",
"in": "query",
- "name": "model_number",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "SAMBAU2312"
+ "x-example": "laptop"
},
{
- "description": "Locale accepted for consistency with the reviews endpoint. Allowed values: cs_CZ, da_DK, de_AT, de_CH, de_DE, el_GR, en_AE, en_AU, en_CA, en_GB, en_IE, en_IL, en_IN, en_NZ, en_PH, en_SG, en_US, en_ZA, es_AR, es_CL, es_CO, es_ES, es_MX, es_PE, fr_BE, fr_CA, fr_CH, fr_FR, id_ID, it_CH, it_IT, ja_JP, ko_KR, nl_BE, nl_NL, pl_PL, pt_BR, pt_PT, ru_RU, sk_SK, sv_SE, th_TH, tr_TR, zh_HK, zh_TW. Defaults to en_US. Note Adidas returns the same English topic labels regardless of this value.",
+ "description": "1-indexed page number, defaults to 1",
"in": "query",
- "name": "locale",
- "type": "string",
- "x-example": "en_US"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -196586,7 +225534,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/adidas.reviewTopicsResponseDoc"
+ "$ref": "#/definitions/bestbuy.searchResponseDoc"
}
},
"400": {
@@ -196619,55 +225567,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Adidas review topics for a product",
+ "summary": "Search Best Buy's product catalog",
"tags": [
- "Adidas"
+ "Best Buy"
]
}
},
- "/adidas/product/reviews": {
+ "/bestbuy/stores": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of customer reviews for an Adidas product model, plus the model's rating summary: overall rating, star histogram, percentage of reviewers who recommend it, per-attribute averages (Size, Width, Comfort, Quality with their own scale labels), and Adidas's AI-generated review digest when one exists. Each review carries the rating, headline, body, author nickname, purchased colorway, helpful/not-helpful vote counts, badges, customer photos, and submission time. model_number is the Adidas model number (e.g. SAMBAU2312) -- NOT the SKU: take it from an adidas_search result's products[].model_number field, which is a different value from products[].id. Reviews are returned 10 per page. Reviews are scoped to review text written in the requested locale's language, and most of the US catalog's reviews are English, so a non-English locale commonly returns rating statistics and a localized summary with an empty reviews list. A model with no reviews -- including a well-formed but unrecognized model_number -- returns an empty reviews list rather than an error, because Adidas answers 200 with a zero count rather than 404.",
- "operationId": "adidas-product-reviews",
+ "description": "Returns Best Buy's physical store locations in one city (name, address, phone, coordinates, rating, hours), sourced from Best Buy's own SEO store directory. state is one of the 50 US state codes plus dc and pr: `al`, `ak`, `az`, `ar`, `ca`, `co`, `ct`, `de`, `dc`, `fl`, `ga`, `hi`, `id`, `il`, `in`, `ia`, `ks`, `ky`, `la`, `me`, `md`, `ma`, `mi`, `mn`, `ms`, `mo`, `mt`, `ne`, `nv`, `nh`, `nj`, `nm`, `ny`, `nc`, `nd`, `oh`, `ok`, `or`, `pa`, `pr`, `ri`, `sc`, `sd`, `tn`, `tx`, `ut`, `vt`, `va`, `wa`, `wv`, `wi`, `wy`. city is free text matched case-insensitively against that state's own directory (e.g. \"Chicago\").",
+ "operationId": "bestbuy-stores",
"parameters": [
{
- "description": "Adidas model number, from an adidas_search result's products[].model_number field",
+ "description": "Two-letter state/territory code",
"in": "query",
- "name": "model_number",
+ "name": "state",
"required": true,
"type": "string",
- "x-example": "SAMBAU2312"
- },
- {
- "description": "Locale for the review-summary language, the secondary-rating scale labels, and the language of the reviews returned. Allowed values: cs_CZ, da_DK, de_AT, de_CH, de_DE, el_GR, en_AE, en_AU, en_CA, en_GB, en_IE, en_IL, en_IN, en_NZ, en_PH, en_SG, en_US, en_ZA, es_AR, es_CL, es_CO, es_ES, es_MX, es_PE, fr_BE, fr_CA, fr_CH, fr_FR, id_ID, it_CH, it_IT, ja_JP, ko_KR, nl_BE, nl_NL, pl_PL, pt_BR, pt_PT, ru_RU, sk_SK, sv_SE, th_TH, tr_TR, zh_HK, zh_TW. Defaults to en_US.",
- "in": "query",
- "name": "locale",
- "type": "string",
- "x-example": "en_US"
- },
- {
- "description": "Return only reviews with this star rating. Allowed values: 1, 2, 3, 4, 5. Omitted returns every rating.",
- "in": "query",
- "name": "rating",
- "type": "integer",
- "x-example": 5
+ "x-example": "il"
},
{
- "description": "Return only reviews about one topic. Valid values are per-model -- read them from /adidas/product/review-topics for the same model_number (commonly satisfaction, comfort, color, purchase, fit, appearance, quality, style). An unrecognized topic returns a 400 listing the model's own topics.",
+ "description": "City name",
"in": "query",
- "name": "topic",
+ "name": "city",
+ "required": true,
"type": "string",
- "x-example": "comfort"
- },
- {
- "description": "One-based page number, 10 reviews per page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "Chicago"
}
],
"produces": [
@@ -196677,7 +225605,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/adidas.productReviewsResponseDoc"
+ "$ref": "#/definitions/bestbuy.storesResponseDoc"
}
},
"400": {
@@ -196710,44 +225638,32 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Adidas product reviews",
+ "summary": "Get Best Buy's physical stores in one city",
"tags": [
- "Adidas"
+ "Best Buy"
]
}
},
- "/adidas/search": {
+ "/bigcommerce/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Adidas.com product listings by keyword, or browses a category listing by taxonomy slug, with real pagination and sort options. Exactly one of query or category is required. Returns normalized product summaries (title, price, rating, images, color variants) plus facet filter groups, sort options, and (for category browse) a breadcrumb trail. Keyword search is best-effort relevance, not a guaranteed match: an obscure keyword returns whatever Adidas's own search index surfaces. A genuinely empty keyword search returns an empty product list, and requesting a page beyond the available result pages (or an unknown category) returns a not-found error. Category values are the path segment after /us/ in an Adidas category URL (e.g. women-athletic_sneakers); they can also be read from the url fields of a search/category response's own filters and breadcrumbs. Facets are applied by composing them into the category slug rather than by a separate parameter: each filters[].values[].slug is a token you splice into the category value (e.g. category=women-black-athletic_sneakers applies the Color=Black facet, and category=women-athletic_sneakers-prime applies Shipping=PRIME). Use filters[].key (the facet's stable name, e.g. searchcolor) rather than filters[].id, which is an opaque per-deployment UUID that cannot be used to build a request. Note the token's position within the slug varies by facet, so compose from a slug you have seen rather than assuming a fixed order.",
- "operationId": "adidas-search",
+ "description": "Returns one normalized product-listing page from a public BigCommerce storefront category page. url must be the full public category-page URL. page is 1-indexed and defaults to 1.",
+ "operationId": "bigcommerce-category",
"parameters": [
{
- "description": "Search keyword. Exactly one of query or category is required.",
- "in": "query",
- "name": "query",
- "type": "string",
- "x-example": "running shoes"
- },
- {
- "description": "Category/taxonomy slug, the path segment after /us/ in an Adidas category URL. Exactly one of query or category is required.",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "women-athletic_sneakers"
- },
- {
- "description": "Sort order. Allowed values: price-low-to-high, newest-to-oldest, top-sellers, price-high-to-low. Omitted means relevance.",
+ "description": "Full public BigCommerce category page URL",
"in": "query",
- "name": "sort",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "price-low-to-high"
+ "x-example": "https://www.bulkapothecary.com/melt-and-pour-soap-bases/"
},
{
- "description": "One-based page number, defaults to 1",
+ "description": "1-indexed category page, defaults to 1",
"in": "query",
+ "minimum": 1,
"name": "page",
"type": "integer",
"x-example": 1
@@ -196760,7 +225676,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/adidas.searchResponseDoc"
+ "$ref": "#/definitions/bigcommerce.categoryResponseDoc"
}
},
"400": {
@@ -196793,27 +225709,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search or browse Adidas products",
+ "summary": "Browse a BigCommerce storefront category",
"tags": [
- "Adidas"
+ "BigCommerce"
]
}
},
- "/adidas/store": {
+ "/bigcommerce/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized detail for one Adidas retail store: name, status, phone, description, full address, coordinates, opening hours, and in-store services (e.g. Click and Collect, Free Wi-Fi). store_id is the numeric Adidas store id, taken from an adidas-stores response's stores[].id field. An unknown store_id returns a not-found error.",
- "operationId": "adidas-store",
+ "description": "Returns normalized product detail from a public BigCommerce storefront product page. url must be the full public product-page URL for a BigCommerce Stencil storefront.",
+ "operationId": "bigcommerce-product",
"parameters": [
{
- "description": "Adidas store id, from a stores response's stores[].id field",
+ "description": "Full public BigCommerce product page URL",
"in": "query",
- "name": "store_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "9990021686"
+ "x-example": "https://www.bulkapothecary.com/goat-milk-sfic-all-natural-glycerin-melt-and-pour-soap-base/"
}
],
"produces": [
@@ -196823,7 +225739,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/adidas.storeDetailResponseDoc"
+ "$ref": "#/definitions/bigcommerce.productResponseDoc"
}
},
"400": {
@@ -196856,42 +225772,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Adidas store",
+ "summary": "Get a BigCommerce storefront product",
"tags": [
- "Adidas"
+ "BigCommerce"
]
}
},
- "/adidas/stores": {
+ "/bigcommerce/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Adidas physical retail stores nearest to a coordinate, sourced from Adidas's own store-finder API: name, address, phone, coordinates, distance in miles, opening hours, and in-store feature flags. lat and lng are both required. Adidas's upstream ignores a caller-supplied radius and returns the nearest ~20 stores ordered by distance. A location with no stores returns an empty list rather than an error.",
- "operationId": "adidas-stores",
+ "description": "Returns one normalized product-search page from a public BigCommerce storefront. url must be the public storefront origin; an optional caller path or query is ignored. q is required search text. page is 1-indexed and defaults to 1.",
+ "operationId": "bigcommerce-search",
"parameters": [
{
- "description": "Latitude, -90 to 90",
+ "description": "Public BigCommerce storefront origin",
"in": "query",
- "name": "lat",
+ "name": "url",
"required": true,
- "type": "number",
- "x-example": 40.75
+ "type": "string",
+ "x-example": "https://www.bulkapothecary.com"
},
{
- "description": "Longitude, -180 to 180",
+ "description": "Search text",
"in": "query",
- "name": "lng",
+ "name": "q",
"required": true,
- "type": "number",
- "x-example": -73.99
+ "type": "string",
+ "x-example": "lavender"
},
{
- "description": "Accepted only as 0. Adidas's store finder returns every nearby store (up to 20) in a single page, so any higher value is always empty and is rejected as an invalid parameter.",
+ "description": "1-indexed search page, defaults to 1",
"in": "query",
+ "minimum": 1,
"name": "page",
"type": "integer",
- "x-example": 0
+ "x-example": 1
}
],
"produces": [
@@ -196901,7 +225818,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/adidas.storesResponseDoc"
+ "$ref": "#/definitions/bigcommerce.searchResponseDoc"
}
},
"400": {
@@ -196910,6 +225827,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -196928,29 +225851,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Find nearby Adidas stores",
+ "summary": "Search a BigCommerce storefront",
"tags": [
- "Adidas"
+ "BigCommerce"
]
}
},
- "/adidas/suggest": {
+ "/bilibili/anime-home": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the top matching products for a partial query, the same search-as-you-type preview Adidas's own search box shows. Adidas has no separate term-autocomplete index, so each suggestion is a matching product (id, title, url, image, price) rather than a completed search phrase. Best-effort relevance: an obscure query returns whatever Adidas's own search surfaces.",
- "operationId": "adidas-suggest",
- "parameters": [
- {
- "description": "Partial search query",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "samba"
- }
- ],
+ "description": "Returns the anonymous anime homepage's featured titles, latest updates, schedule, popular ranking, and new recommendations. Personalized rotating feed items are excluded.",
+ "operationId": "bilibili-anime-home",
"produces": [
"application/json"
],
@@ -196958,17 +225871,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/adidas.suggestResponseDoc"
+ "$ref": "#/definitions/bilibili.animeHomeResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -196985,40 +225898,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Adidas search suggestions",
+ "summary": "Get Bilibili anime home sections",
"tags": [
- "Adidas"
+ "Bilibili"
]
}
},
- "/agoda/activities/search": {
+ "/bilibili/autocomplete": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Agoda activities (tours, attractions, experiences) matching a free-text keyword and/or a city. When keyword is omitted, the resolved city's name is used instead to return a general listing of activities in that city. Callers may supply a known Agoda city id or a free-text city name for the city filter; when both are supplied city_id takes precedence. Credential-free public data from Agoda's own destination search.",
- "operationId": "agoda-activities-search",
+ "description": "Returns Bilibili search-box query suggestions for partial text. An empty suggestion list is a valid response when nothing matches.",
+ "operationId": "bilibili-autocomplete",
"parameters": [
{
- "description": "Free-text activity search keyword. When omitted, the resolved city's name is used instead.",
- "in": "query",
- "name": "keyword",
- "type": "string",
- "x-example": "cooking class"
- },
- {
- "description": "Numeric Agoda city id to filter results to. Optional if keyword is supplied; city_id takes precedence over city when both are supplied.",
- "in": "query",
- "name": "city_id",
- "type": "integer",
- "x-example": 9395
- },
- {
- "description": "Free-text city name, used directly as the search text when keyword is omitted, and to resolve a city id filter.",
+ "description": "Partial search text",
"in": "query",
- "name": "city",
+ "name": "q",
+ "required": true,
"type": "string",
- "x-example": "Bangkok"
+ "x-example": "原神"
}
],
"produces": [
@@ -197028,7 +225928,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/agoda.activitiesSearchResponseDoc"
+ "$ref": "#/definitions/bilibili.autocompleteResponseDoc"
}
},
"400": {
@@ -197037,8 +225937,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -197061,29 +225961,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Agoda activities",
+ "summary": "Get Bilibili search suggestions",
"tags": [
- "Agoda"
+ "Bilibili"
]
}
},
- "/agoda/activities/{activity_id}": {
+ "/bilibili/guochuang-home": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns full activity detail from Agoda: title, description, stated duration, categories, and content images. Credential-free public data from Agoda's own activity content source.",
- "operationId": "agoda-activity-detail",
- "parameters": [
- {
- "description": "Numeric Agoda activity id, from a prior activities search call's activity_id field",
- "in": "path",
- "name": "activity_id",
- "required": true,
- "type": "string",
- "x-example": "1633875"
- }
- ],
+ "description": "Returns the anonymous Chinese-animation homepage's featured titles, latest updates, schedule, popular ranking, and new recommendations. Personalized rotating feed items are excluded.",
+ "operationId": "bilibili-guochuang-home",
"produces": [
"application/json"
],
@@ -197091,17 +225981,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/agoda.ActivityDetailResponse"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/bilibili.guochuangHomeResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -197124,30 +226008,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Agoda activity detail",
+ "summary": "Get Bilibili Chinese-animation home sections",
"tags": [
- "Agoda"
+ "Bilibili"
]
}
},
- "/agoda/flights/itinerary-amenities": {
- "post": {
+ "/bilibili/must-watch": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Returns real-content amenities (aircraft type, seat layout, meals, entertainment, wifi) for one or more flight segments. Copy the segments straight from a flight search response's own segment fields. Credential-free public data from Agoda's own flight content service.",
- "operationId": "agoda-flights-itinerary-amenities",
- "parameters": [
- {
- "description": "One or more flight segments to fetch amenities for",
- "in": "body",
- "name": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/agoda.FlightItineraryAmenitiesOption"
- }
- }
- ],
+ "description": "Returns Bilibili's curated must-watch collection, separated into established classics and the latest additions.",
+ "operationId": "bilibili-must-watch",
"produces": [
"application/json"
],
@@ -197155,11 +226028,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/agoda.flightItineraryAmenitiesResponseDoc"
+ "$ref": "#/definitions/bilibili.mustWatchResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -197182,83 +226055,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Agoda flight segment amenities",
+ "summary": "Get Bilibili's curated must-watch videos",
"tags": [
- "Agoda"
+ "Bilibili"
]
}
},
- "/agoda/flights/search": {
+ "/bilibili/popular": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns bookable one-way flight itineraries between two IATA airport codes for a departure date, including per-segment flight number, airline, times, layovers, aircraft type, and price. Resolve free-text city/airport names to codes first via the flight destination search endpoint. Credential-free public data from Agoda's own flight search.",
- "operationId": "agoda-flights-search",
+ "description": "Returns Bilibili's current popular-video feed in upstream order. Pass next_cursor back as cursor to continue to the next batch.",
+ "operationId": "bilibili-popular",
"parameters": [
{
- "description": "Origin IATA airport code",
- "in": "query",
- "name": "origin",
- "required": true,
- "type": "string",
- "x-example": "BKK"
- },
- {
- "description": "Destination IATA airport code",
- "in": "query",
- "name": "destination",
- "required": true,
- "type": "string",
- "x-example": "HKT"
- },
- {
- "description": "Departure date, YYYY-MM-DD",
- "in": "query",
- "name": "departure_date",
- "required": true,
- "type": "string",
- "x-example": "2026-09-15"
- },
- {
- "description": "Adult passengers (age 12+), defaults to 1",
- "in": "query",
- "name": "adults",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Child passengers (age 2-11), defaults to 0",
- "in": "query",
- "name": "children",
- "type": "integer",
- "x-example": 0
- },
- {
- "description": "Infant passengers (under age 2), defaults to 0",
+ "description": "Upstream cursor from the previous response; defaults to 0",
"in": "query",
- "name": "infants",
+ "maximum": 10000000,
+ "minimum": 0,
+ "name": "cursor",
"type": "integer",
"x-example": 0
- },
- {
- "description": "Cabin class, defaults to Economy",
- "enum": [
- "Economy",
- "PremiumEconomy",
- "Business",
- "First"
- ],
- "in": "query",
- "name": "cabin_class",
- "type": "string"
- },
- {
- "description": "1-indexed result page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
}
],
"produces": [
@@ -197268,7 +226086,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/agoda.flightSearchResponseDoc"
+ "$ref": "#/definitions/bilibili.popularResponseDoc"
}
},
"400": {
@@ -197277,6 +226095,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -197295,29 +226119,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Agoda one-way flights",
+ "summary": "Get current popular Bilibili videos",
"tags": [
- "Agoda"
+ "Bilibili"
]
}
},
- "/agoda/flights/search-locations": {
+ "/bilibili/ranking": {
"get": {
"consumes": [
"application/json"
],
- "description": "Resolves a free-text city or airport name into IATA airport codes for flight search, with each city's direct and nearby airports. Credential-free public data from Agoda's own flight destination search.",
- "operationId": "agoda-flights-search-locations",
- "parameters": [
- {
- "description": "Free-text city or airport name",
- "in": "query",
- "name": "keyword",
- "required": true,
- "type": "string",
- "x-example": "Bangkok"
- }
- ],
+ "description": "Returns the current official all-site ranking with video engagement, category, and creator metadata in rank order.",
+ "operationId": "bilibili-ranking",
"produces": [
"application/json"
],
@@ -197325,11 +226139,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/agoda.flightLocationSearchResponseDoc"
+ "$ref": "#/definitions/bilibili.rankingResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -197352,47 +226166,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Agoda flight destinations/airports",
+ "summary": "Get the current Bilibili all-site ranking",
"tags": [
- "Agoda"
+ "Bilibili"
]
}
},
- "/agoda/homes/search": {
+ "/bilibili/vertical-home": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Homes & Apartments results for an Agoda city: full listing detail for every matching property whose accommodation type is Apartment, drawn from the same city search as hotel search and filtered to non-hotel accommodation types. Callers may supply a known Agoda city id or a free-text city name; when both are supplied city_id takes precedence. Credential-free public data from Agoda's own hotel/home search.",
- "operationId": "agoda-homes-search",
+ "description": "Returns stable server-rendered editorial sections for one Bilibili vertical. Allowed category values: documentary, movie, tv, variety. Rotating feeds, pagination, account state, and streaming URLs are excluded.",
+ "operationId": "bilibili-vertical-home",
"parameters": [
{
- "description": "Numeric Agoda city id, e.g. 9395 for Bangkok. Either city_id or city is required; city_id takes precedence when both are supplied.",
- "in": "query",
- "name": "city_id",
- "type": "integer",
- "x-example": 9395
- },
- {
- "description": "Free-text city name, resolved to a numeric city id via Agoda's own destination search. Ignored when city_id is also supplied.",
+ "description": "Vertical: documentary, movie, tv, variety",
+ "enum": [
+ "documentary",
+ "movie",
+ "tv",
+ "variety"
+ ],
"in": "query",
- "name": "city",
+ "name": "category",
+ "required": true,
"type": "string",
- "x-example": "Bangkok"
- },
- {
- "description": "1-indexed result page over the underlying city search, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Candidate listings fetched per page before filtering to homes/apartments, defaults to 10, maximum 50",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
+ "x-example": "documentary"
}
],
"produces": [
@@ -197402,7 +226202,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/agoda.homesSearchResponseDoc"
+ "$ref": "#/definitions/bilibili.verticalHomeResponseDoc"
}
},
"400": {
@@ -197411,8 +226211,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -197435,47 +226235,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Agoda Homes & Apartments by city",
+ "summary": "Get Bilibili documentary, movie, TV, or variety home sections",
"tags": [
- "Agoda"
+ "Bilibili"
]
}
},
- "/agoda/hotels/search": {
+ "/bilibili/weekly": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns hotel search results for an Agoda city: the matching property ids for that city plus a direct link to each property's listing page. Callers may supply a known Agoda city id or a free-text city name; when both are supplied city_id takes precedence. Credential-free public data from Agoda's own hotel search.",
- "operationId": "agoda-hotels-search",
+ "description": "Returns one issue from Bilibili's weekly selected-video archive. Omit number to resolve and return the latest issue.",
+ "operationId": "bilibili-weekly",
"parameters": [
{
- "description": "Numeric Agoda city id, e.g. 9395 for Bangkok. Either city_id or city is required; city_id takes precedence when both are supplied.",
- "in": "query",
- "name": "city_id",
- "type": "integer",
- "x-example": 9395
- },
- {
- "description": "Free-text city name, resolved to a numeric city id via Agoda's own destination search. Ignored when city_id is also supplied.",
- "in": "query",
- "name": "city",
- "type": "string",
- "x-example": "Bangkok"
- },
- {
- "description": "1-indexed result page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Results per page, defaults to 10, maximum 50",
+ "description": "Positive issue number; omit for the latest issue",
"in": "query",
- "name": "limit",
+ "maximum": 1000000,
+ "minimum": 1,
+ "name": "number",
"type": "integer",
- "x-example": 10
+ "x-example": 387
}
],
"produces": [
@@ -197485,7 +226266,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/agoda.searchResponseDoc"
+ "$ref": "#/definitions/bilibili.weeklyResponseDoc"
}
},
"400": {
@@ -197500,6 +226281,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -197518,27 +226305,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Agoda hotels by city",
+ "summary": "Get a Bilibili weekly selected-video issue",
"tags": [
- "Agoda"
+ "Bilibili"
]
}
},
- "/agoda/hotels/{property_id}": {
+ "/billboard/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns full hotel detail from Agoda: identity (name, any former name), an accommodation type code, address (street address, postal code, city, country), guest rating, a main photo, room count, hotel chain id, a long and short description, and short-form policy statements (minimum age, adult/child definitions, extra-bed and additional-room booking policy). Credential-free public data from Agoda's own hotel content source.",
- "operationId": "agoda-hotel-detail",
+ "description": "Returns public Billboard article metadata and body paragraphs from a canonical article URL. Billboard Pro articles are returned in full when the public page serves the full body; a teaser-only page is flagged paywalled.",
+ "operationId": "billboard-article",
"parameters": [
{
- "description": "Numeric Agoda property id, from a prior search call's property_id field or the id embedded in an Agoda hotel URL",
- "in": "path",
- "name": "property_id",
+ "description": "Canonical Billboard article URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "10637"
+ "x-example": "https://www.billboard.com/music/latin/stray-kids-like-bts-younger-mexican-president-confirm-visit-1236346530/"
}
],
"produces": [
@@ -197548,7 +226332,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/agoda.DetailResponse"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -197563,12 +226347,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -197581,26 +226359,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Agoda hotel detail",
+ "summary": "Get Billboard article content",
"tags": [
- "Agoda"
+ "Billboard"
]
}
},
- "/airbnb/host/{id}": {
+ "/billboard/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a normalized Airbnb public host profile — display name, Superhost and identity-verification status, location, bio, hosting tenure, total guest-review count, and total listing count.",
- "operationId": "airbnb-host",
+ "description": "Returns a Billboard author's byline metadata, biography, and recent articles (sourced from the author's own public RSS feed) from a canonical author URL.",
+ "operationId": "billboard-author",
"parameters": [
{
- "description": "Host id (numeric)",
- "in": "path",
- "name": "id",
+ "description": "Canonical Billboard author URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "https://www.billboard.com/author/gil-kaufman/"
}
],
"produces": [
@@ -197610,7 +226386,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/airbnb.HostResponse"
+ "$ref": "#/definitions/publicnews.billboardAuthorResponseDoc"
}
},
"400": {
@@ -197625,12 +226401,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -197643,32 +226413,67 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Airbnb host profile",
+ "summary": "Get a Billboard author profile",
"tags": [
- "Airbnb"
+ "Billboard"
]
}
},
- "/airbnb/host/{id}/listings": {
+ "/billboard/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the listings an Airbnb host manages, paginated. Page 1 comes from the host profile; deeper pages page through the host's full portfolio.",
- "operationId": "airbnb-host-listings",
+ "description": "Returns fresh headlines from one public Billboard section.",
+ "operationId": "billboard-headlines",
"parameters": [
{
- "description": "Host id (numeric)",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string"
- },
- {
- "description": "1-based page",
+ "description": "Billboard section slug",
+ "enum": [
+ "music",
+ "music-news",
+ "chart-beat",
+ "awards",
+ "concerts",
+ "country",
+ "features",
+ "latin",
+ "lyrics",
+ "pop",
+ "rb-hip-hop",
+ "reviews",
+ "rock",
+ "business",
+ "business-news",
+ "legal",
+ "management",
+ "publishing",
+ "radio",
+ "record-labels",
+ "streaming",
+ "tech",
+ "touring",
+ "culture",
+ "events",
+ "lifestyle",
+ "politics",
+ "pride",
+ "product-recommendations",
+ "tv-film",
+ "media",
+ "lists",
+ "photos-media",
+ "podcasts",
+ "videos",
+ "espanol",
+ "cultura-entretenimiento",
+ "musica",
+ "negocios",
+ "noticias",
+ "pro"
+ ],
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "music"
}
],
"produces": [
@@ -197678,7 +226483,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/airbnb.HostListingsResponse"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -197687,18 +226492,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -197711,34 +226504,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Airbnb host listings",
+ "summary": "Get Billboard section headlines",
"tags": [
- "Airbnb"
+ "Billboard"
]
}
},
- "/airbnb/host/{id}/reviews": {
+ "/billboard/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns reviews guests left for an Airbnb host, paginated, including the reviewer name and location.",
- "operationId": "airbnb-host-reviews",
- "parameters": [
- {
- "description": "Host id (numeric)",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string"
- },
- {
- "description": "1-based page",
- "in": "query",
- "name": "page",
- "type": "integer"
- }
- ],
+ "description": "Returns fresh Billboard top stories from its public RSS feed.",
+ "operationId": "billboard-news",
"produces": [
"application/json"
],
@@ -197746,19 +226521,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/airbnb.HostReviewsResponse"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -197779,28 +226542,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Airbnb host reviews",
+ "summary": "Get Billboard top stories",
"tags": [
- "Airbnb"
+ "Billboard"
]
}
},
- "/airbnb/room/{id}": {
+ "/billboard/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Airbnb public room details.",
- "operationId": "airbnb-room",
- "parameters": [
- {
- "description": "Room id",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string"
- }
- ],
+ "description": "Returns the public Billboard section inventory: every music, business, culture, media and Spanish-language category plus Billboard Pro, each linking to its public RSS feed.",
+ "operationId": "billboard-sections",
"produces": [
"application/json"
],
@@ -197808,31 +226559,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/airbnb.RoomResponse"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -197841,58 +226568,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Airbnb room",
+ "summary": "Get Billboard sections",
"tags": [
- "Airbnb"
+ "Billboard"
]
}
},
- "/airbnb/room/{id}/calendar": {
+ "/billing/me": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public calendar month hints parsed from Airbnb room bootstrap data.",
- "operationId": "airbnb-room-calendar",
- "parameters": [
- {
- "description": "Room id",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string"
- }
- ],
+ "description": "Returns the authenticated user's current billing plan, period, included credits, used credits, remaining credits, overage status, and any downgrade scheduled for the next renewal.",
+ "operationId": "billing-me",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/airbnb.CalendarResponse"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Current billing state",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/billing.billingStateResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "401": {
+ "description": "Authentication required",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -197903,32 +226609,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Airbnb room calendar",
+ "summary": "Get current billing state",
"tags": [
- "Airbnb"
+ "Billing"
]
}
},
- "/airbnb/room/{id}/reviews": {
- "get": {
+ "/billing/me/checkout": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Airbnb public review snippets.",
- "operationId": "airbnb-room-reviews",
+ "description": "Creates a Stripe Checkout session for the authenticated user's selected paid billing plan. The created subscription is tagged with the local user id and plan so Stripe webhooks can link the customer and activate the plan after payment.",
+ "operationId": "billing-me-checkout",
"parameters": [
{
- "description": "Room id",
- "in": "path",
- "name": "id",
+ "description": "Checkout request",
+ "in": "body",
+ "name": "request",
"required": true,
- "type": "string"
- },
- {
- "description": "1-based page",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "schema": {
+ "$ref": "#/definitions/billing.stripeCheckoutRequestDoc"
+ }
}
],
"produces": [
@@ -197936,31 +226638,25 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Stripe checkout session",
"schema": {
- "$ref": "#/definitions/airbnb.ReviewsResponse"
+ "$ref": "#/definitions/billing.stripeSessionResponseDoc"
}
},
"400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Invalid request or plan",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "401": {
+ "description": "Authentication required",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -197971,202 +226667,99 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Airbnb room reviews",
+ "summary": "Create Stripe checkout session",
"tags": [
- "Airbnb"
+ "Billing"
]
}
},
- "/airbnb/search": {
+ "/billing/me/events": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Airbnb public web search results.",
- "operationId": "airbnb-search",
+ "description": "Returns recent billing audit events for the authenticated user, with optional filters for time range, endpoint, request id, event status, and billable flag. Invalid event_status values and reversed time ranges return invalid params.",
+ "operationId": "billing-me-events",
"parameters": [
{
- "description": "Location",
- "in": "query",
- "name": "location",
- "required": true,
- "type": "string"
- },
- {
- "description": "Check-in date",
- "in": "query",
- "name": "check_in",
- "type": "string"
- },
- {
- "description": "Check-out date",
- "in": "query",
- "name": "check_out",
- "type": "string"
- },
- {
- "description": "Adult guests",
- "in": "query",
- "name": "adults",
- "type": "integer"
- },
- {
- "description": "1-based page",
+ "description": "Maximum records to return. Defaults to 50 and clamps to 100.",
"in": "query",
- "name": "page",
+ "maximum": 100,
+ "minimum": 1,
+ "name": "limit",
"type": "integer"
},
{
- "description": "Currency for bounded map search",
- "in": "query",
- "name": "currency",
- "type": "string"
- },
- {
- "description": "Northeast latitude for bounded map search",
- "in": "query",
- "name": "ne_lat",
- "type": "number"
- },
- {
- "description": "Northeast longitude for bounded map search",
+ "description": "Created-at lower bound in RFC3339 format",
"in": "query",
- "name": "ne_lng",
- "type": "number"
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-04-01T00:00:00Z"
},
{
- "description": "Southwest latitude for bounded map search",
+ "description": "Created-at upper bound in RFC3339 format",
"in": "query",
- "name": "sw_lat",
- "type": "number"
+ "name": "to",
+ "type": "string",
+ "x-example": "2026-04-16T00:00:00Z"
},
{
- "description": "Southwest longitude for bounded map search",
+ "description": "Normalized endpoint or API path",
"in": "query",
- "name": "sw_lng",
- "type": "number"
+ "name": "endpoint",
+ "type": "string",
+ "x-example": "google/search"
},
{
- "description": "Map zoom for bounded map search",
+ "description": "Request id to inspect",
"in": "query",
- "name": "zoom",
- "type": "integer"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/airbnb.SearchResponse"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ "name": "request_id",
+ "type": "string",
+ "x-example": "req-1"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Search Airbnb stays",
- "tags": [
- "Airbnb"
- ]
- }
- },
- "/alcom/headlines": {
- "get": {
- "description": "Returns current headlines from one of AL.com's public Arc RSS section feeds. Summaries are brief publisher teasers, not full article text.",
- "operationId": "alcom-headlines",
- "parameters": [
{
- "description": "AL.com editorial section",
+ "description": "Billing event status",
"enum": [
- "news",
- "sports",
- "life"
+ "reserved",
+ "charged",
+ "non_billable",
+ "failed"
],
- "in": "query",
- "name": "section",
- "required": true,
- "type": "string"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
+ "in": "query",
+ "name": "event_status",
+ "type": "string"
+ },
{
- "ApiKeyAuth": []
+ "description": "Filter billable or non-billable events",
+ "in": "query",
+ "name": "billable",
+ "type": "boolean"
}
],
- "summary": "Get AL.com section headlines",
- "tags": [
- "AL.com"
- ]
- }
- },
- "/alcom/news": {
- "get": {
- "description": "Returns current AL.com News stories from its public Arc RSS feed. Feed summaries are brief publisher teasers, not full article text.",
- "operationId": "alcom-news",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Billing events",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/billing.billingEventsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Invalid query parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "401": {
+ "description": "Authentication required",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198177,28 +226770,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Get AL.com top stories",
+ "summary": "List current user's billing events",
"tags": [
- "AL.com"
+ "Billing"
]
}
},
- "/alcom/sections": {
+ "/billing/me/periods": {
"get": {
- "description": "Returns the three top-level editorial sections exposed in AL.com's site navigation and accepted by the headlines endpoint.",
- "operationId": "alcom-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns recent local billing period ledgers for the authenticated user. Period ledgers are local reconciliation records built from billing events and are not charged credits.",
+ "operationId": "billing-me-periods",
+ "parameters": [
+ {
+ "description": "Maximum periods to return. Defaults to 12 and clamps to 24.",
+ "in": "query",
+ "maximum": 24,
+ "minimum": 1,
+ "name": "limit",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Billing period ledgers",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/billing.billingPeriodLedgersResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "401": {
+ "description": "Authentication required",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198209,24 +226821,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get AL.com editorial sections",
+ "summary": "List current user's billing period ledgers",
"tags": [
- "AL.com"
+ "Billing"
]
}
},
- "/aljazeera/article": {
+ "/billing/me/periods/{period_key}": {
"get": {
- "description": "Returns a public Al Jazeera article's metadata and body paragraphs from a canonical article URL.",
- "operationId": "aljazeera-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one billing period ledger for the authenticated user. If the ledger has not been materialized yet, it is rebuilt from billing events and stored locally. The period key must use YYYY-MM format.",
+ "operationId": "billing-me-period",
"parameters": [
{
- "description": "Canonical www.aljazeera.com article URL",
- "in": "query",
- "name": "url",
+ "description": "Billing period key in YYYY-MM format",
+ "in": "path",
+ "name": "period_key",
"required": true,
"type": "string",
- "x-example": "https://www.aljazeera.com/news/2026/9/20/example-slug"
+ "x-example": "2026-04"
}
],
"produces": [
@@ -198234,31 +226849,25 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Billing period ledger",
"schema": {
- "$ref": "#/definitions/aljazeera.articleResponseDoc"
+ "$ref": "#/definitions/billing.billingPeriodLedgerResponseDoc"
}
},
"400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Invalid period key",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "401": {
+ "description": "Authentication required",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198269,37 +226878,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Al Jazeera article content",
+ "summary": "Get current user's billing period ledger",
"tags": [
- "Al Jazeera"
+ "Billing"
]
}
},
- "/aljazeera/author": {
+ "/billing/me/periods/{period_key}/statement": {
"get": {
- "description": "Returns one Al Jazeera author's public profile (name, job title, bio when available) and one page of their recent articles, identified by an author slug or a canonical author URL.",
- "operationId": "aljazeera-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a customer-safe JSON statement for one billing period, combining the local ledger, endpoint breakdown, optional billing events, and Stripe invoice evidence. Closed periods normally return a pre-frozen snapshot created during period close; historical closed periods without a snapshot are lazily frozen on read. Internal repair errors and raw webhook audit details are not exposed.",
+ "operationId": "billing-me-period-statement",
"parameters": [
{
- "description": "Al Jazeera author slug",
- "in": "query",
- "name": "slug",
+ "description": "Billing period key in YYYY-MM format",
+ "in": "path",
+ "name": "period_key",
+ "required": true,
"type": "string",
- "x-example": "hakeem-najimdeen"
+ "x-example": "2026-04"
},
{
- "description": "Canonical https://www.aljazeera.com/author/ URL, as an alternative to slug",
+ "description": "Include recent billing events. Defaults to true.",
"in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.aljazeera.com/author/hakeem-najimdeen"
+ "name": "include_events",
+ "type": "boolean"
},
{
- "description": "1-based page number of the author's article list; overrides any page embedded in url",
+ "description": "Maximum billing events to include. Defaults to 100 and clamps to 500.",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "maximum": 500,
+ "minimum": 1,
+ "name": "event_limit",
+ "type": "integer"
}
],
"produces": [
@@ -198307,31 +226920,25 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Billing period statement",
"schema": {
- "$ref": "#/definitions/aljazeera.authorResponseDoc"
+ "$ref": "#/definitions/billing.billingPeriodStatementResponseDoc"
}
},
"400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Invalid period key or query parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "401": {
+ "description": "Authentication required",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198342,34 +226949,53 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Al Jazeera author's profile and recent articles",
+ "summary": "Get current user's billing period statement",
"tags": [
- "Al Jazeera"
+ "Billing"
]
}
},
- "/aljazeera/categories": {
+ "/billing/me/periods/{period_key}/statement/download": {
"get": {
- "description": "Returns Al Jazeera's current public section navigation. Use a returned slug directly as the topic parameter on aljazeera-topic.",
- "operationId": "aljazeera-categories",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the exact customer-safe canonical JSON for a closed billing period statement snapshot. Closed periods are normally frozen during period close; if a historical closed period is missing a snapshot, the snapshot is lazily created before download. The raw response body is JSON, not the standard app envelope.",
+ "operationId": "billing-me-period-statement-download",
+ "parameters": [
+ {
+ "description": "Billing period key in YYYY-MM format",
+ "in": "path",
+ "name": "period_key",
+ "required": true,
+ "type": "string",
+ "x-example": "2026-04"
+ }
+ ],
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Raw frozen customer statement JSON",
"schema": {
- "$ref": "#/definitions/aljazeera.categoriesResponseDoc"
+ "type": "string"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Invalid period key or open billing period",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "401": {
+ "description": "Authentication required",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198380,34 +227006,54 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Al Jazeera section navigation",
+ "summary": "Download current user's frozen billing period statement",
"tags": [
- "Al Jazeera"
+ "Billing"
]
}
},
- "/aljazeera/headlines": {
- "get": {
- "description": "Returns fresh headlines from Al Jazeera's public, site-wide RSS feed.",
- "operationId": "aljazeera-headlines",
+ "/billing/me/portal": {
+ "post": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Creates a Stripe customer portal session for the authenticated user's linked Stripe customer so they can manage payment method, invoices, and subscription state.",
+ "operationId": "billing-me-portal",
+ "parameters": [
+ {
+ "description": "Portal request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/billing.stripePortalRequestDoc"
+ }
+ }
+ ],
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Stripe portal session",
"schema": {
- "$ref": "#/definitions/aljazeera.headlinesResponseDoc"
+ "$ref": "#/definitions/billing.stripeSessionResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Invalid request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "401": {
+ "description": "Authentication required",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198418,56 +227064,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Al Jazeera site-wide headlines",
+ "summary": "Create Stripe billing portal session",
"tags": [
- "Al Jazeera"
+ "Billing"
]
}
},
- "/aljazeera/topic": {
+ "/billing/me/rejections": {
"get": {
- "description": "Returns the newest public Al Jazeera stories from one section archive page. topic is a section slug; use aljazeera-categories for the current value space.",
- "operationId": "aljazeera-topic",
- "parameters": [
- {
- "description": "Al Jazeera section slug",
- "in": "query",
- "name": "topic",
- "required": true,
- "type": "string",
- "x-example": "news"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns the authenticated user's own tally of pre-handler billing rejections (HTTP 402 quota / 429 rate-limit), summed over the last two UTC days (today and yesterday — the full retention window). These blocks never reach the request-usage index or the billing-events log, so this is the only way for a caller to see their own throttling.",
+ "operationId": "billing-me-rejections",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/aljazeera.topicResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Caller's own rejection tally",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/billing.myRejectionsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "401": {
+ "description": "Authentication required",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198478,33 +227105,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Al Jazeera section headlines",
+ "summary": "Caller's own blocked-request tally",
"tags": [
- "Al Jazeera"
+ "Billing"
]
}
},
- "/allbirds/collections": {
- "get": {
+ "/billing/me/subscription/change": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized collections from Allbirds (https://www.allbirds.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
- "operationId": "allbirds-collections",
+ "description": "Applies an immediate, prorated upgrade after Stripe payment succeeds, or schedules a downgrade for the next renewal. The unused legacy metered item is removed as part of an immediate upgrade.",
+ "operationId": "billing-me-subscription-change",
"parameters": [
{
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum collections, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "description": "Subscription change request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/billing.stripeSubscriptionChangeRequestDoc"
+ }
}
],
"produces": [
@@ -198512,25 +227134,25 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Subscription change result",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
+ "$ref": "#/definitions/billing.stripeSubscriptionChangeResultResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid plan, stale preview, or idempotency key",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "401": {
+ "description": "Authentication required",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198541,73 +227163,43 @@
"ApiKeyAuth": []
}
],
- "summary": "List Allbirds collections",
+ "summary": "Apply a subscription plan change",
"tags": [
- "Allbirds"
+ "Billing"
]
}
},
- "/allbirds/collections/{handle}/products": {
- "get": {
+ "/billing/me/subscription/change/cancel": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from one Allbirds (https://www.allbirds.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
- "operationId": "allbirds-collection-products",
- "parameters": [
- {
- "description": "Collection handle",
- "in": "path",
- "name": "handle",
- "required": true,
- "type": "string",
- "x-example": "collection-handle"
- },
- {
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum products, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
- }
- ],
+ "description": "Releases the authenticated user's pending downgrade schedule and keeps the current plan active through renewal.",
+ "operationId": "billing-me-subscription-change-cancel",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Subscription change cancellation result",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
+ "$ref": "#/definitions/billing.stripeSubscriptionChangeResultResponseDoc"
}
},
"400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Invalid subscription state",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "401": {
+ "description": "Authentication required",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198618,33 +227210,28 @@
"ApiKeyAuth": []
}
],
- "summary": "List Allbirds collection products",
+ "summary": "Cancel a scheduled subscription downgrade",
"tags": [
- "Allbirds"
+ "Billing"
]
}
},
- "/allbirds/pages": {
- "get": {
+ "/billing/me/subscription/preview": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static pages from Allbirds (https://www.allbirds.com). The storefront URL is fixed server-side.",
- "operationId": "allbirds-pages",
+ "description": "Previews an authenticated user's immediate upgrade or next-renewal downgrade. Stripe calculates the upgrade proration; downgrades keep the current plan and credits active until the current period ends.",
+ "operationId": "billing-me-subscription-preview",
"parameters": [
{
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum static pages, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "description": "Subscription change preview request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/billing.stripeSubscriptionChangeRequestDoc"
+ }
}
],
"produces": [
@@ -198652,25 +227239,25 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Subscription change preview",
"schema": {
- "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
+ "$ref": "#/definitions/billing.stripeSubscriptionChangePreviewResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid plan or subscription change",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "401": {
+ "description": "Authentication required",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198681,27 +227268,58 @@
"ApiKeyAuth": []
}
],
- "summary": "List Allbirds static pages",
+ "summary": "Preview a subscription plan change",
"tags": [
- "Allbirds"
+ "Billing"
]
}
},
- "/allbirds/pages/{handle}": {
+ "/bing/images": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static page detail for one Allbirds (https://www.allbirds.com) page handle. The storefront URL is fixed server-side.",
- "operationId": "allbirds-page",
+ "description": "Returns normalized Bing image search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Bing image HTML/async pages and return 503 when Bing serves a challenge page or unusable HTML.",
+ "operationId": "bing-images",
"parameters": [
{
- "description": "Page handle",
- "in": "path",
- "name": "handle",
+ "description": "Search query",
+ "in": "query",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "page-handle"
+ "x-example": "openai"
+ },
+ {
+ "description": "1-based page number; defaults to 1",
+ "in": "query",
+ "minimum": 1,
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Results per page; defaults to 10, clamped to 1..50",
+ "in": "query",
+ "maximum": 50,
+ "minimum": 1,
+ "name": "count",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Two-letter country code; defaults to us",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Bing UI language; defaults to en-us",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
}
],
"produces": [
@@ -198711,29 +227329,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pageResponseDoc"
+ "$ref": "#/definitions/bing.imagesResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Not Found",
+ "description": "No results found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Bing upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198744,33 +227368,58 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Allbirds static page",
+ "summary": "Search Bing image results",
"tags": [
- "Allbirds"
+ "Bing"
]
}
},
- "/allbirds/products": {
+ "/bing/news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from Allbirds's (https://www.allbirds.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
- "operationId": "allbirds-products",
+ "description": "Returns normalized Bing news search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Bing news HTML/async pages and return 503 when Bing serves a challenge page or unusable HTML.",
+ "operationId": "bing-news",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Search query",
+ "in": "query",
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "openai"
+ },
+ {
+ "description": "1-based page number; defaults to 1",
"in": "query",
+ "minimum": 1,
"name": "page",
"type": "integer",
"x-example": 1
},
{
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Results per page; defaults to 10, clamped to 1..50",
"in": "query",
- "name": "limit",
+ "maximum": 50,
+ "minimum": 1,
+ "name": "count",
"type": "integer",
- "x-example": 50
+ "x-example": 10
+ },
+ {
+ "description": "Two-letter country code; defaults to us",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Bing UI language; defaults to en-us",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
}
],
"produces": [
@@ -198780,23 +227429,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productsResponseDoc"
+ "$ref": "#/definitions/bing.newsResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "No results found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Bing upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198807,27 +227468,58 @@
"ApiKeyAuth": []
}
],
- "summary": "List Allbirds products",
+ "summary": "Search Bing news results",
"tags": [
- "Allbirds"
+ "Bing"
]
}
},
- "/allbirds/products/{handle}": {
+ "/bing/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized product detail for one Allbirds (https://www.allbirds.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
- "operationId": "allbirds-product",
+ "description": "Returns normalized Bing web search results for a query string, including organic results, optional context panel data, related queries, people-also-ask questions, news modules, video modules, and page-based pagination. Empty optional blocks are omitted from the JSON response. Locale defaults to country=us and lang=en-us. Results are fetched with a Chrome-impersonated request client and return 503 on a genuine transport failure or challenge page. Bing occasionally serves a well-formed page whose results share no significant term with the query; when every hedged attempt hits this, the response is still returned as 200 with data.low_confidence set to true (and the X-Low-Confidence header) instead of being withheld, so callers get Bing's real answer plus an honest signal to double-check it rather than nothing. Queries that use the site: operator (for example site:gov.hu) are not supported: Bing serves a bot-verification challenge for them, so they are rejected with 400 before any request is made. Use the DuckDuckGo (/api/v1/duckduckgo/search), Brave (/api/v1/brave/search), or Yahoo (/api/v1/yahoo-search/search) search endpoints for domain-restricted searches instead.",
+ "operationId": "bing-search",
"parameters": [
{
- "description": "Product handle",
- "in": "path",
- "name": "handle",
+ "description": "Search query",
+ "in": "query",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "product-handle"
+ "x-example": "openai"
+ },
+ {
+ "description": "1-based page number; defaults to 1",
+ "in": "query",
+ "minimum": 1,
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Results per page; defaults to 10, clamped to 1..50",
+ "in": "query",
+ "maximum": 50,
+ "minimum": 1,
+ "name": "count",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Two-letter country code; defaults to us",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Bing UI language; defaults to en-us",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
}
],
"produces": [
@@ -198835,31 +227527,37 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "data.low_confidence is true when Bing's results shared no significant term with the query (see the field's description); the data is still exactly what Bing returned",
"schema": {
- "$ref": "#/definitions/shopifybrands.productResponseDoc"
+ "$ref": "#/definitions/bing.searchResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Not Found",
+ "description": "No results found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Bing upstream request failed (transport failure, challenge page, or every hedge attempt rejected -- see data.low_confidence for the case where Bing did answer but every attempt looked unrelated to the query)",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198870,45 +227568,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Allbirds product",
+ "summary": "Search Bing web results",
"tags": [
- "Allbirds"
+ "Bing"
]
}
},
- "/allbirds/products/{handle}/recommendations": {
+ "/bing/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized recommended products for one Allbirds (https://www.allbirds.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
- "operationId": "allbirds-product-recommendations",
+ "description": "Returns Bing autosuggest query completions for a query prefix. Locale defaults to country=us and lang=en-us. Suggestions are fetched from public Bing suggest endpoints and trimmed to the requested count.",
+ "operationId": "bing-suggest",
"parameters": [
{
- "description": "Product handle",
- "in": "path",
- "name": "handle",
+ "description": "Search query prefix",
+ "in": "query",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "product-handle"
+ "x-example": "openai"
},
{
- "description": "Maximum products, defaults to 10 and supports up to 20",
+ "description": "Suggestions to return; defaults to 10, clamped to 1..12",
"in": "query",
- "name": "limit",
+ "maximum": 12,
+ "minimum": 1,
+ "name": "count",
"type": "integer",
"x-example": 10
},
{
- "description": "Recommendation intent. Allowed values: related, complementary",
- "enum": [
- "related",
- "complementary"
- ],
+ "description": "Two-letter country code; defaults to us",
"in": "query",
- "name": "intent",
+ "name": "country",
"type": "string",
- "x-example": "related"
+ "x-example": "us"
+ },
+ {
+ "description": "Bing UI language; defaults to en-us",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
}
],
"produces": [
@@ -198918,29 +227621,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
+ "$ref": "#/definitions/bing.suggestResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Bing upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -198951,19 +227654,19 @@
"ApiKeyAuth": []
}
],
- "summary": "List Allbirds product recommendations",
+ "summary": "Suggest Bing search queries",
"tags": [
- "Allbirds"
+ "Bing"
]
}
},
- "/allbirds/search/suggest": {
+ "/bing/videos": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns products, collections, and query suggestions from Allbirds's (https://www.allbirds.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
- "operationId": "allbirds-search-suggest",
+ "description": "Returns normalized Bing video search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Bing video HTML/async pages and return 503 when Bing serves a challenge page or unusable HTML.",
+ "operationId": "bing-videos",
"parameters": [
{
"description": "Search query",
@@ -198971,21 +227674,38 @@
"name": "q",
"required": true,
"type": "string",
- "x-example": "wool"
+ "x-example": "openai"
},
{
- "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
+ "description": "1-based page number; defaults to 1",
"in": "query",
- "name": "types",
- "type": "string",
- "x-example": "product,collection,query"
+ "minimum": 1,
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Maximum results per type, defaults to 10 and supports up to 20",
+ "description": "Results per page; defaults to 10, clamped to 1..50",
"in": "query",
- "name": "limit",
+ "maximum": 50,
+ "minimum": 1,
+ "name": "count",
"type": "integer",
"x-example": 10
+ },
+ {
+ "description": "Two-letter country code; defaults to us",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Bing UI language; defaults to en-us",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
}
],
"produces": [
@@ -198995,23 +227715,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
+ "$ref": "#/definitions/bing.videosResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "No results found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Bing upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -199022,42 +227754,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Allbirds search suggestions",
+ "summary": "Search Bing video results",
"tags": [
- "Allbirds"
+ "Bing"
]
}
},
- "/allbirds/sitemap/urls": {
+ "/birminghammail/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns capped URL entries from Allbirds's (https://www.allbirds.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
- "operationId": "allbirds-sitemap-urls",
+ "description": "Returns public Birmingham Mail article metadata (including the section) and body paragraphs from a canonical article URL. Photo-gallery URLs are rejected.",
+ "operationId": "birminghammail-article",
"parameters": [
{
- "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
- "enum": [
- "all",
- "products",
- "collections",
- "pages",
- "blogs",
- "agentic_discovery",
- "other"
- ],
+ "description": "Canonical Birmingham Mail article URL",
"in": "query",
- "name": "type",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "products"
- },
- {
- "description": "Maximum URL entries, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "x-example": "https://www.birminghammail.co.uk/news/midlands-news/birmingham-road-six-cars-towed-34668610"
}
],
"produces": [
@@ -199067,7 +227781,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -199076,6 +227790,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -199094,19 +227814,39 @@
"ApiKeyAuth": []
}
],
- "summary": "List Allbirds sitemap URLs",
+ "summary": "Get Birmingham Mail article content",
"tags": [
- "Allbirds"
+ "Birmingham Mail"
]
}
},
- "/allbirds/sitemaps": {
+ "/birminghammail/author": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns one Birmingham Mail author's public profile: name, job title, bio, email, X/Twitter handle, and one page of their recent articles.",
+ "operationId": "birminghammail-author",
+ "parameters": [
+ {
+ "description": "Author slug, e.g. stephanie-balloo",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "stephanie-balloo"
+ },
+ {
+ "description": "Canonical birminghammail.co.uk/authors// URL; alternative to slug",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.birminghammail.co.uk/authors/stephanie-balloo/"
+ },
+ {
+ "default": 1,
+ "description": "1-based page number of the author's article list (1 to 100); overrides any pageNumber in url",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ }
],
- "description": "Returns child sitemap URLs from Allbirds's (https://www.allbirds.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
- "operationId": "allbirds-sitemaps",
"produces": [
"application/json"
],
@@ -199114,7 +227854,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
+ "$ref": "#/definitions/publicnews.reachAuthorResponseDoc"
}
},
"400": {
@@ -199123,6 +227863,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -199141,19 +227887,51 @@
"ApiKeyAuth": []
}
],
- "summary": "List Allbirds sitemaps",
+ "summary": "Get a Birmingham Mail author profile",
"tags": [
- "Allbirds"
+ "Birmingham Mail"
]
}
},
- "/allbirds/store": {
+ "/birminghammail/headlines": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns fresh headlines from one public Birmingham Mail section. Photo galleries are omitted because they have no readable article body.",
+ "operationId": "birminghammail-headlines",
+ "parameters": [
+ {
+ "description": "Birmingham Mail section slug",
+ "enum": [
+ "news",
+ "news/midlands-news",
+ "news/uk-news",
+ "news/world-news",
+ "news/showbiz-tv",
+ "news/cost-of-living",
+ "news/money",
+ "news/health",
+ "black-country",
+ "motoring",
+ "motoring/motoring-news",
+ "sport",
+ "sport/football",
+ "sport/football/football-news",
+ "sport/football/transfer-news",
+ "whats-on",
+ "whats-on/whats-on-news",
+ "whats-on/family-kids-news",
+ "whats-on/food-drink-news",
+ "whats-on/music-nightlife-news",
+ "whats-on/shopping",
+ "travel",
+ "special-features"
+ ],
+ "in": "query",
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "news"
+ }
],
- "description": "Returns normalized storefront metadata for Allbirds (https://www.allbirds.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
- "operationId": "allbirds-store",
"produces": [
"application/json"
],
@@ -199161,7 +227939,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.storeResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -199188,29 +227966,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Allbirds store metadata",
+ "summary": "Get Birmingham Mail section headlines",
"tags": [
- "Allbirds"
+ "Birmingham Mail"
]
}
},
- "/alt/asset": {
+ "/birminghammail/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one card design's identity, full population report (across every grading company and grade Alt tracks), and a recent raw sales feed -- the \"is this card actually rare, and what does it sell for\" data for a specific card design, independent of any single listing. asset_id comes from a prior alt-search/alt-sold-listings/alt-card-search result's asset_id field. recent_sales has no per-transaction grade breakdown -- Alt's own API does not expose one; see alt-sold-listings for per-grade sold prices on specific listings. Credential-free public data from Alt's own GraphQL API.",
- "operationId": "alt-asset",
- "parameters": [
- {
- "description": "The card design's asset id, from a Search/SoldListings/CardSearch result's asset_id field",
- "in": "query",
- "name": "asset_id",
- "required": true,
- "type": "string",
- "x-example": "c3156728-e7eb-11ea-a6f0-02d4568f26ba"
- }
- ],
+ "description": "Returns fresh Birmingham Mail top stories from the public home RSS feed. Photo galleries are omitted because they have no readable article body.",
+ "operationId": "birminghammail-news",
"produces": [
"application/json"
],
@@ -199218,23 +227983,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/alt.assetResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -199251,107 +228004,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one card design's population report and recent sales",
+ "summary": "Get Birmingham Mail top stories",
"tags": [
- "Alt"
+ "Birmingham Mail"
]
}
},
- "/alt/auctions": {
+ "/birminghammail/sections": {
"get": {
- "consumes": [
+ "description": "Returns the public Birmingham Mail editorial section inventory used by birminghammail-headlines.",
+ "operationId": "birminghammail-sections",
+ "produces": [
"application/json"
],
- "description": "Searches Alt's own currently live auctions -- the same pool shown on alt.xyz/browse's \"Auctions\" tab filtered to the Alt source. Unlike alt-search, this never returns another source auction house's listings or Alt's own fixed-price items: it always uses a search key scoped server-side to Alt's own live auction pool. Credential-free public data from Alt's own search backend. See alt-categories for the accepted category/grading_company/sort values.",
- "operationId": "alt-auctions",
- "parameters": [
- {
- "description": "Free-text search across item name, subject, brand, and variety. Omit or pass * to browse every current Alt auction.",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "michael jordan"
- },
- {
- "description": "Comma-separated card category filter",
- "enum": [
- "BASEBALL_CARDS",
- "POKEMON_CARDS",
- "FOOTBALL_CARDS",
- "BASKETBALL_CARDS",
- "POP-CULTURE_CARDS",
- "HOCKEY_CARDS",
- "SOCCER_CARDS",
- "ONE_PIECE_CARDS",
- "OTHER_CARDS",
- "TCG_CARDS",
- "COMBAT_SPORTS_CARDS",
- "RACING_CARDS",
- "MAGIC_CARDS",
- "YUGIOH_CARDS",
- "GOLF_CARDS",
- "TENNIS_CARDS"
- ],
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Comma-separated grading company filter",
- "enum": [
- "PSA",
- "CGC",
- "BGS",
- "CSG",
- "SGC",
- "PSA/DNA",
- "BVG",
- "BCCG",
- "Factory Sealed",
- "BAS",
- "AUTHENTIC",
- "TAG",
- "RELABEL",
- "RECASE",
- "JSA/BVG",
- "REVIEW",
- "INTERNAL",
- "NEW/",
- "BULK",
- "OTHERS",
- "UNGRADED"
- ],
- "in": "query",
- "name": "grading_company",
- "type": "string"
- },
- {
- "description": "Result order. Default recommended.",
- "enum": [
- "recommended",
- "alt_value_desc",
- "alt_value_asc",
- "price_desc",
- "price_asc",
- "watched_desc",
- "ending_soonest_asc",
- "timestamp_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
{
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Birmingham Mail sections",
+ "tags": [
+ "Birmingham Mail"
+ ]
+ }
+ },
+ "/bleacherreport/article": {
+ "get": {
+ "description": "Returns public Bleacher Report article metadata and body paragraphs from a canonical article URL. Bleacher Report serves full articles to anonymous readers, so no article is paywalled.",
+ "operationId": "bleacherreport-article",
+ "parameters": [
{
- "description": "Results per page, default 24, max 100",
+ "description": "Canonical Bleacher Report article URL",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://bleacherreport.com/articles/25502441-vladimir-guerrero-jr-drops-viral-quote-2026-slump-after-signing-500m-blue-jays-contract"
}
],
"produces": [
@@ -199361,7 +228057,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/alt.auctionsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -199370,14 +228066,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -199394,38 +228084,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Alt's own live 24/7 auctions",
+ "summary": "Get Bleacher Report article content",
"tags": [
- "Alt"
+ "Bleacher Report"
]
}
},
- "/alt/card-search": {
+ "/bleacherreport/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Alt's reference card-design catalog -- a canonical catalog of card designs (one entry per year/brand/subject/card-number/variety combination), separate from live listings or sales. Useful for finding a card design's asset_id (to feed into alt-asset for a population report and recent sales) without already having a live listing or sale that references it. Credential-free public data from Alt's own search backend.",
- "operationId": "alt-card-search",
+ "description": "Returns one Bleacher Report writer's public profile: name, role, biography, photo, and the latest stories listed on the page.",
+ "operationId": "bleacherreport-author",
"parameters": [
{
- "description": "Free-text search across card name, subject, brand, and variety",
+ "description": "Writer slug, e.g. scott-polacek",
"in": "query",
- "name": "q",
+ "name": "slug",
"type": "string",
- "x-example": "michael jordan"
- },
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "x-example": "scott-polacek"
},
{
- "description": "Results per page, default 24, max 100",
+ "description": "Canonical bleacherreport.com/writers/ URL; alternative to slug",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "url",
+ "type": "string",
+ "x-example": "https://bleacherreport.com/writers/scott-polacek"
}
],
"produces": [
@@ -199435,7 +228117,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/alt.cardSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.bleacherreportAuthorResponseDoc"
}
},
"400": {
@@ -199444,14 +228126,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -199468,19 +228144,58 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Alt's reference card-design catalog",
+ "summary": "Get a Bleacher Report writer profile",
"tags": [
- "Alt"
+ "Bleacher Report"
]
}
},
- "/alt/categories": {
+ "/bleacherreport/headlines": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns current Bleacher Report headlines from one public league or league sub-hub page.",
+ "operationId": "bleacherreport-headlines",
+ "parameters": [
+ {
+ "description": "Bleacher Report section slug",
+ "enum": [
+ "nba",
+ "nfl",
+ "mlb",
+ "nhl",
+ "wnba",
+ "college-football",
+ "college-basketball",
+ "womens-college-basketball",
+ "world-football",
+ "tennis",
+ "golf",
+ "nascar",
+ "formula-1",
+ "mma",
+ "boxing",
+ "wwe",
+ "all-elite-wrestling",
+ "olympics",
+ "nba-rumors",
+ "nba-draft",
+ "nfl-rumors",
+ "nfl-draft",
+ "fantasy-football",
+ "mlb-rumors",
+ "mlb-prospects",
+ "nhl-rumors",
+ "nhl-draft",
+ "recruiting",
+ "college-basketball-recruiting",
+ "bracketology"
+ ],
+ "in": "query",
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "nba"
+ }
],
- "description": "Returns every accepted value for alt-search/alt-auctions/alt-sold-listings' category, auction_house, grading_company, and listing_type params, plus the sort enum. category/auction_house/grading_company/listing_type are read live from Alt's own current search index via a facets-only query on every call, not a fixed taxonomy -- so this endpoint self-corrects if Alt's aggregator adds a new source auction house, grading company, or category. Credential-free public data from Alt's own search backend.",
- "operationId": "alt-categories",
"produces": [
"application/json"
],
@@ -199488,11 +228203,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/alt.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -199509,42 +228224,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List Alt search filter values",
+ "summary": "Get Bleacher Report section headlines",
"tags": [
- "Alt"
+ "Bleacher Report"
]
}
},
- "/alt/listing": {
+ "/bleacherreport/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "One listing's full public detail -- title, description, price/bid state, grading info, and images -- normalized across Alt's own native listings and its aggregated external listings. id and listing_type come from a prior alt-search/alt-auctions result. Not every response field applies to every listing_type -- see the field-level notes in this endpoint's markdown doc.",
- "operationId": "alt-listing",
- "parameters": [
- {
- "description": "The listing's id, from a Search/Auctions result's id field",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "58e5a6a5-a7ad-417f-8cda-ceffb226928c"
- },
- {
- "description": "The listing's listing_type from the same Search/Auctions result",
- "enum": [
- "AUCTION",
- "FIXED_PRICE",
- "EXTERNAL_AUCTION",
- "EXTERNAL_FIXED_PRICE"
- ],
- "in": "query",
- "name": "listing_type",
- "required": true,
- "type": "string"
- }
- ],
+ "description": "Returns fresh Bleacher Report top sports stories from the public news sitemap.",
+ "operationId": "bleacherreport-news",
"produces": [
"application/json"
],
@@ -199552,23 +228241,49 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/alt.listingResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Bleacher Report top stories",
+ "tags": [
+ "Bleacher Report"
+ ]
+ }
+ },
+ "/bleacherreport/sections": {
+ "get": {
+ "description": "Returns the public Bleacher Report league and league sub-hub sections accepted by the headlines endpoint.",
+ "operationId": "bleacherreport-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -199585,26 +228300,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Alt listing's full public detail",
+ "summary": "Get Bleacher Report sections",
"tags": [
- "Alt"
+ "Bleacher Report"
]
}
},
- "/alt/market-trends": {
+ "/bloomberg/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Alt's own category-level price-trend index -- the same data alt.xyz's \"Market Trends\" page shows: a weekly/monthly/90-day change and a current index value per card category, built from Alt's own sold/valuation data. Credential-free public data from Alt's own GraphQL API.",
- "operationId": "alt-market-trends",
+ "description": "Returns one public Bloomberg article's metadata and body paragraphs from a canonical article URL. Subscriber-only articles are not available.",
+ "operationId": "bloomberg-article",
"parameters": [
{
- "description": "Optional exact category filter -- must match one of the categories present in the live response (a subset of alt-categories' category list; Alt only publishes a trend index for its own tracked sports categories). Omit to get every tracked category.",
+ "description": "Canonical Bloomberg article URL",
"in": "query",
- "name": "category",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "BASKETBALL_CARDS"
+ "x-example": "https://www.bloomberg.com/news/articles/2026-09-20/example-slug"
}
],
"produces": [
@@ -199614,7 +228327,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/alt.marketTrendsResponseDoc"
+ "$ref": "#/definitions/bloomberg.articleResponseDoc"
}
},
"400": {
@@ -199623,8 +228336,20 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "403": {
+ "description": "Forbidden",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -199641,134 +228366,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Alt's card-market price-trend index",
+ "summary": "Get a Bloomberg article's content",
"tags": [
- "Alt"
+ "Bloomberg"
]
}
},
- "/alt/search": {
+ "/bloomberg/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Alt's universal aggregator index -- live auction and fixed-price listings from Alt itself and every other source auction house its search carries (eBay, Fanatics Collect, Pristine Auction, Goldin, CardHobby, Memory Lane) -- by free-text query, category, source auction house, grading company, and listing type, in a caller-selected sort order. Only currently-live listings are returned; see alt-sold-listings for completed sales. Credential-free public data from Alt's own search backend. See alt-categories for the accepted category/auction_house/grading_company/listing_type/sort values.",
- "operationId": "alt-search",
+ "description": "Returns one public Bloomberg author's profile (name, title, bio) and their recent-content feed from a canonical author URL.",
+ "operationId": "bloomberg-author",
"parameters": [
{
- "description": "Free-text search across item name, subject, brand, and variety. Omit or pass * to browse everything.",
+ "description": "Canonical Bloomberg author URL",
"in": "query",
- "name": "q",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "michael jordan"
- },
- {
- "description": "Comma-separated card category filter",
- "enum": [
- "BASEBALL_CARDS",
- "POKEMON_CARDS",
- "FOOTBALL_CARDS",
- "BASKETBALL_CARDS",
- "POP-CULTURE_CARDS",
- "HOCKEY_CARDS",
- "SOCCER_CARDS",
- "ONE_PIECE_CARDS",
- "OTHER_CARDS",
- "TCG_CARDS",
- "COMBAT_SPORTS_CARDS",
- "RACING_CARDS",
- "MAGIC_CARDS",
- "YUGIOH_CARDS",
- "GOLF_CARDS",
- "TENNIS_CARDS"
- ],
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Comma-separated source auction house filter",
- "enum": [
- "eBay",
- "Fanatics Collect",
- "Alt",
- "Pristine Auction",
- "Goldin",
- "CardHobby",
- "Memory Lane"
- ],
- "in": "query",
- "name": "auction_house",
- "type": "string"
- },
- {
- "description": "Comma-separated grading company filter",
- "enum": [
- "PSA",
- "CGC",
- "BGS",
- "CSG",
- "SGC",
- "PSA/DNA",
- "BVG",
- "BCCG",
- "Factory Sealed",
- "BAS",
- "AUTHENTIC",
- "TAG",
- "RELABEL",
- "RECASE",
- "JSA/BVG",
- "REVIEW",
- "INTERNAL",
- "NEW/",
- "BULK",
- "OTHERS",
- "UNGRADED"
- ],
- "in": "query",
- "name": "grading_company",
- "type": "string"
- },
- {
- "description": "Comma-separated listing type filter. Omit to search auctions and fixed-price listings from every source together.",
- "enum": [
- "AUCTION",
- "FIXED_PRICE",
- "EXTERNAL_AUCTION",
- "EXTERNAL_FIXED_PRICE"
- ],
- "in": "query",
- "name": "listing_type",
- "type": "string"
- },
- {
- "description": "Result order. Default recommended.",
- "enum": [
- "recommended",
- "alt_value_desc",
- "alt_value_asc",
- "price_desc",
- "price_asc",
- "watched_desc",
- "ending_soonest_asc",
- "timestamp_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page, default 24, max 100",
- "in": "query",
- "name": "per_page",
- "type": "integer"
+ "x-example": "https://www.bloomberg.com/authors/AXSztklFffk/bernard-goyder"
}
],
"produces": [
@@ -199778,7 +228393,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/alt.searchResponseDoc"
+ "$ref": "#/definitions/bloomberg.authorResponseDoc"
}
},
"400": {
@@ -199787,14 +228402,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -199811,108 +228426,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Alt's aggregated card marketplace",
+ "summary": "Get a Bloomberg author's profile",
"tags": [
- "Alt"
+ "Bloomberg"
]
}
},
- "/alt/sold-listings": {
+ "/bloomberg/categories": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Alt's global archive of completed card sales, aggregated across every source auction house its search carries -- the \"market data\" side of Alt's card-investment-marketplace positioning. This is a separate index from alt-search/alt-auctions, scoped to a rolling recent time window, not a filtered view of live listings. Pass auction_house=Alt to see only Alt's own completed auctions. Credential-free public data from Alt's own search backend. See alt-categories for the accepted category/auction_house/grading_company values.",
- "operationId": "alt-sold-listings",
- "parameters": [
- {
- "description": "Free-text search across item name, subject, brand, and variety. Omit or pass * to browse the most recent sales.",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "michael jordan"
- },
- {
- "description": "Comma-separated card category filter",
- "enum": [
- "BASEBALL_CARDS",
- "POKEMON_CARDS",
- "FOOTBALL_CARDS",
- "BASKETBALL_CARDS",
- "POP-CULTURE_CARDS",
- "HOCKEY_CARDS",
- "SOCCER_CARDS",
- "ONE_PIECE_CARDS",
- "OTHER_CARDS",
- "TCG_CARDS",
- "COMBAT_SPORTS_CARDS",
- "RACING_CARDS",
- "MAGIC_CARDS",
- "YUGIOH_CARDS",
- "GOLF_CARDS",
- "TENNIS_CARDS"
- ],
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Comma-separated source auction house filter. Pass Alt to see only Alt's own completed auctions.",
- "enum": [
- "eBay",
- "Fanatics Collect",
- "Alt",
- "Pristine Auction",
- "Goldin",
- "CardHobby",
- "Memory Lane"
- ],
- "in": "query",
- "name": "auction_house",
- "type": "string"
- },
- {
- "description": "Comma-separated grading company filter",
- "enum": [
- "PSA",
- "CGC",
- "BGS",
- "CSG",
- "SGC",
- "PSA/DNA",
- "BVG",
- "BCCG",
- "Factory Sealed",
- "BAS",
- "AUTHENTIC",
- "TAG",
- "RELABEL",
- "RECASE",
- "JSA/BVG",
- "REVIEW",
- "INTERNAL",
- "NEW/",
- "BULK",
- "OTHERS",
- "UNGRADED"
- ],
- "in": "query",
- "name": "grading_company",
- "type": "string"
- },
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page, default 24, max 100",
- "in": "query",
- "name": "per_page",
- "type": "integer"
- }
- ],
+ "description": "Lists Bloomberg's public editorial navigation categories discovered from its embedded navigation state. Each returned section slug is accepted by /bloomberg/headlines; product, account, newsletter, and sponsored-content links are excluded.",
+ "operationId": "bloomberg-categories",
"produces": [
"application/json"
],
@@ -199920,13 +228443,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/alt.soldListingsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/bloomberg.categoriesResponseDoc"
}
},
"429": {
@@ -199935,12 +228452,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -199953,39 +228464,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Alt's completed sales archive",
+ "summary": "List Bloomberg editorial categories",
"tags": [
- "Alt"
+ "Bloomberg"
]
}
},
- "/alt/top-movers": {
+ "/bloomberg/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Alt's biggest price-index movers -- either a cross-subject leaderboard (optionally scoped to one category) or, when subject is set, that one player/character's own trend broken out per category it appears in. category is not strictly validated against alt-categories' list -- this trend index's own category set is broader (e.g. it includes MULTI-SPORT_CARDS). Credential-free public data from Alt's own GraphQL API.",
- "operationId": "alt-top-movers",
+ "description": "Returns Bloomberg story cards from one editorial section. Section must be a slug returned by /bloomberg/categories.",
+ "operationId": "bloomberg-headlines",
"parameters": [
{
- "description": "Optional category filter for the leaderboard. Ignored when subject is set. Omit to rank movers across every category.",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "BASKETBALL_CARDS"
- },
- {
- "description": "Optional exact player/subject name. Returns that subject's own trend per category instead of a leaderboard, and category is ignored.",
+ "description": "Section slug from /bloomberg/categories",
"in": "query",
- "name": "subject",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "Michael Jordan"
- },
- {
- "description": "Max results, default 10, max 50",
- "in": "query",
- "name": "limit",
- "type": "integer"
+ "x-example": "markets"
}
],
"produces": [
@@ -199995,7 +228491,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/alt.topMoversResponseDoc"
+ "$ref": "#/definitions/bloomberg.headlinesResponseDoc"
}
},
"400": {
@@ -200004,8 +228500,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -200022,19 +228518,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Alt's biggest card-market price movers",
+ "summary": "Get the latest stories in a Bloomberg section",
"tags": [
- "Alt"
+ "Bloomberg"
]
}
},
- "/amazon-jobs/categories": {
+ "/bloomberg/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Lists every value amazon-jobs/search's `category` parameter accepts, each with its current live job count. Live-queries amazon.jobs's own search category facet rather than a static list, so counts and coverage stay current.",
- "operationId": "amazon-jobs-categories",
+ "description": "Returns Bloomberg's current news feed: the newest stories across all sections, each with its title, canonical URL, and publication time.",
+ "operationId": "bloomberg-news",
"produces": [
"application/json"
],
@@ -200042,7 +228535,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/amazonjobs.categoriesResponseDoc"
+ "$ref": "#/definitions/bloomberg.newsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -200063,29 +228562,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Amazon Jobs category discovery",
+ "summary": "Get the latest Bloomberg stories",
"tags": [
- "Amazon Jobs"
+ "Bloomberg"
]
}
},
- "/amazon-jobs/job": {
+ "/bloomberg/news-sitemaps": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Amazon.jobs posting by its numeric job id (the `id` field returned by search). Parsed from amazon.jobs's stable server-rendered job detail page — there is no separate JSON detail endpoint upstream.",
- "operationId": "amazon-jobs-job",
- "parameters": [
- {
- "description": "Numeric Amazon job id",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "10386857"
- }
- ],
+ "description": "Returns Bloomberg's public monthly news-sitemap index so callers can discover historical news feeds beyond the rolling latest feed.",
+ "operationId": "bloomberg-news-sitemaps",
"produces": [
"application/json"
],
@@ -200093,19 +228579,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/amazonjobs.jobResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/bloomberg.newsSitemapsResponseDoc"
}
},
"429": {
@@ -200126,105 +228600,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Amazon Jobs single posting",
+ "summary": "List Bloomberg monthly news sitemaps",
"tags": [
- "Amazon Jobs"
+ "Bloomberg"
]
}
},
- "/amazon-jobs/search": {
+ "/bluesky/author-feed": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Amazon's public careers site (amazon.jobs) via its credential-free search JSON. Each result includes the full description and qualifications inline. `sort` accepts `relevant` (default, upstream relevance ranking) or `recent` (newest posted first). Either `q` or `category` (or both) must be given -- `category` filters by Amazon's own job-category taxonomy and works with no text query at all. See `amazon-jobs-categories` for the full, live-verified list of accepted `category` values.",
- "operationId": "amazon-jobs-search",
+ "description": "Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
+ "operationId": "bluesky-author-feed",
"parameters": [
{
- "description": "Search query. Either q or category is required",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "software engineer"
- },
- {
- "description": "Amazon's own job-category taxonomy slug, case-insensitive. Either q or category is required",
- "enum": [
- "administrative-support",
- "applied-science",
- "audio-video-photography-production",
- "business-intelligence",
- "business-merchant-development",
- "buying-planning-instock-management",
- "corporate-operations",
- "customer-service",
- "data-science",
- "database-administration",
- "design",
- "economics",
- "editorial-writing-content-management",
- "facilities-maintenance-real-estate",
- "finance-accounting",
- "fulfillment-associate",
- "fulfillment-operations-management",
- "fulfillment-warehouse-associate",
- "hardware-development",
- "human-resources",
- "investigation-loss-prevention",
- "leadership-development-training",
- "legal",
- "machine-learning-science",
- "marketing-pr",
- "medical-health-safety",
- "operations-it-support-engineering",
- "procurement",
- "project-program-product-management-non-tech",
- "project-program-product-management-technical",
- "public-policy",
- "public-relations",
- "research-science",
- "sales-advertising-account-management",
- "software-development",
- "solutions-architect",
- "supply-chain-transportation-management",
- "systems-quality-security-engineering"
- ],
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "software-development"
- },
- {
- "description": "ISO 3166-1 alpha-3 country code filter",
+ "description": "A handle (e.g. bsky.app) or DID",
"in": "query",
- "name": "country",
+ "name": "actor",
+ "required": true,
"type": "string",
- "x-example": "USA"
- },
- {
- "description": "Page number, 1-based",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "bsky.app"
},
{
- "description": "Results per page, max 100 (default 20)",
+ "description": "Page size, 1-100",
"in": "query",
"name": "limit",
"type": "integer",
- "x-example": 20
+ "x-example": 25
},
{
- "description": "Sort order",
- "enum": [
- "relevant",
- "recent"
- ],
+ "description": "Pagination cursor from a previous response's cursor field",
"in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "relevant"
+ "name": "cursor",
+ "type": "string"
}
],
"produces": [
@@ -200234,7 +228643,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/amazonjobs.searchResponseDoc"
+ "$ref": "#/definitions/bluesky.authorFeedResponseDoc"
}
},
"400": {
@@ -200243,12 +228652,24 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -200261,54 +228682,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Amazon Jobs search",
+ "summary": "A Bluesky account's posts",
"tags": [
- "Amazon Jobs"
+ "Bluesky"
]
}
},
- "/amazon/charts": {
+ "/bluesky/followers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of a ranked Amazon chart (Best Sellers, New Releases, or Most Wished For) for a department or department subcategory on `amazon.com`. Discover valid department/node values with amazon-charts-categories.",
- "operationId": "amazon-charts",
+ "description": "Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
+ "operationId": "bluesky-followers",
"parameters": [
{
- "description": "Chart type",
- "enum": [
- "best_sellers",
- "new_releases",
- "most_wished_for"
- ],
- "in": "query",
- "name": "chart",
- "required": true,
- "type": "string",
- "x-example": "best_sellers"
- },
- {
- "description": "Amazon department slug",
+ "description": "A handle (e.g. bsky.app) or DID",
"in": "query",
- "name": "department",
+ "name": "actor",
"required": true,
"type": "string",
- "x-example": "electronics"
+ "x-example": "bsky.app"
},
{
- "description": "Numeric browse node id",
+ "description": "Page size, 1-100",
"in": "query",
- "name": "node",
- "type": "string",
- "x-example": "172541"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 25
},
{
- "description": "1-based page number",
+ "description": "Pagination cursor from a previous response's cursor field",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "cursor",
+ "type": "string"
}
],
"produces": [
@@ -200318,7 +228725,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/amazon.chartsResponseDoc"
+ "$ref": "#/definitions/bluesky.followersResponseDoc"
}
},
"400": {
@@ -200357,46 +228764,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Amazon product charts",
+ "summary": "A Bluesky account's followers",
"tags": [
- "Amazon"
+ "Bluesky"
]
}
},
- "/amazon/charts/categories": {
+ "/bluesky/follows": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the department and subcategory values amazon-charts accepts for a given chart. Omit department to list a chart's top-level departments; pass a department (and optionally a node) to get that category's own name plus its immediate child categories.",
- "operationId": "amazon-charts-categories",
+ "description": "Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
+ "operationId": "bluesky-follows",
"parameters": [
{
- "description": "Chart type",
- "enum": [
- "best_sellers",
- "new_releases",
- "most_wished_for"
- ],
+ "description": "A handle (e.g. bsky.app) or DID",
"in": "query",
- "name": "chart",
+ "name": "actor",
"required": true,
"type": "string",
- "x-example": "best_sellers"
+ "x-example": "bsky.app"
},
{
- "description": "Amazon department slug",
+ "description": "Page size, 1-100",
"in": "query",
- "name": "department",
- "type": "string",
- "x-example": "electronics"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 25
},
{
- "description": "Numeric browse node id (requires department)",
+ "description": "Pagination cursor from a previous response's cursor field",
"in": "query",
- "name": "node",
- "type": "string",
- "x-example": "172541"
+ "name": "cursor",
+ "type": "string"
}
],
"produces": [
@@ -200406,7 +228807,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/amazon.chartCategoriesResponseDoc"
+ "$ref": "#/definitions/bluesky.followsResponseDoc"
}
},
"400": {
@@ -200445,46 +228846,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Amazon chart categories",
+ "summary": "Accounts a Bluesky account follows",
"tags": [
- "Amazon"
+ "Bluesky"
]
}
},
- "/amazon/product/{asin}": {
+ "/bluesky/post-likes": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized product details for an Amazon ASIN on `amazon.com`, including pricing, availability, overview data, inline review samples, and descriptive content.",
- "operationId": "amazon-product",
+ "description": "Returns public actors who liked a post, with an optional cursor for pagination.",
+ "operationId": "bluesky-post-likes",
"parameters": [
{
- "description": "Amazon ASIN",
- "in": "path",
- "name": "asin",
+ "description": "The post's at:// URI",
+ "in": "query",
+ "name": "uri",
"required": true,
"type": "string",
- "x-example": "B0DGJ736JM"
+ "x-example": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"
},
{
- "default": "en_US",
- "description": "Amazon language",
- "enum": [
- "en_US"
- ],
+ "default": 25,
+ "description": "Page size, 1-100",
"in": "query",
- "name": "language",
- "type": "string"
+ "name": "limit",
+ "type": "integer"
},
{
- "default": "USD",
- "description": "Amazon currency",
- "enum": [
- "USD"
- ],
+ "description": "Pagination cursor",
"in": "query",
- "name": "currency",
+ "name": "cursor",
"type": "string"
}
],
@@ -200495,7 +228886,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/amazon.productResponseDoc"
+ "$ref": "#/definitions/bluesky.postActorsResponseDoc"
}
},
"400": {
@@ -200534,41 +228925,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Amazon product details",
+ "summary": "List actors who liked a Bluesky post",
"tags": [
- "Amazon"
+ "Bluesky"
]
}
},
- "/amazon/search": {
+ "/bluesky/post-quotes": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Amazon search result cards for `amazon.com`.",
- "operationId": "amazon-search",
+ "description": "Returns public posts that quote the specified post, with an optional cursor for pagination.",
+ "operationId": "bluesky-post-quotes",
"parameters": [
{
- "description": "Search keyword",
+ "description": "The quoted post's at:// URI",
"in": "query",
- "name": "k",
+ "name": "uri",
"required": true,
"type": "string",
- "x-example": "apple watch"
+ "x-example": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"
},
{
- "description": "Sort order",
+ "default": 25,
+ "description": "Page size, 1-100",
"in": "query",
- "name": "s",
- "type": "string",
- "x-example": "review-rank"
+ "name": "limit",
+ "type": "integer"
},
{
- "description": "1-based page number",
+ "description": "Pagination cursor",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "cursor",
+ "type": "string"
}
],
"produces": [
@@ -200578,7 +228965,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/amazon.searchResponseDoc"
+ "$ref": "#/definitions/bluesky.postQuotesResponseDoc"
}
},
"400": {
@@ -200617,27 +229004,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Amazon products",
+ "summary": "List quotes of a Bluesky post",
"tags": [
- "Amazon"
+ "Bluesky"
]
}
},
- "/amazon/suggest/{keyword}": {
+ "/bluesky/post-reposted-by": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns typeahead keyword suggestions from Amazon's public suggestion API for `amazon.com`.",
- "operationId": "amazon-suggest",
+ "description": "Returns public actors who reposted a post, with an optional cursor for pagination.",
+ "operationId": "bluesky-post-reposted-by",
"parameters": [
{
- "description": "Suggestion prefix",
- "in": "path",
- "name": "keyword",
+ "description": "The post's at:// URI",
+ "in": "query",
+ "name": "uri",
"required": true,
"type": "string",
- "x-example": "apple"
+ "x-example": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"
+ },
+ {
+ "default": 25,
+ "description": "Page size, 1-100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Pagination cursor",
+ "in": "query",
+ "name": "cursor",
+ "type": "string"
}
],
"produces": [
@@ -200647,7 +229044,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/amazon.suggestResponseDoc"
+ "$ref": "#/definitions/bluesky.postActorsResponseDoc"
}
},
"400": {
@@ -200686,24 +229083,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Amazon search suggestions",
+ "summary": "List actors who reposted a Bluesky post",
"tags": [
- "Amazon"
+ "Bluesky"
]
}
},
- "/androidauthority/article": {
+ "/bluesky/post-thread": {
"get": {
- "description": "Returns public Android Authority article metadata and body paragraphs from a canonical article URL.",
- "operationId": "androidauthority-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
+ "operationId": "bluesky-post-thread",
"parameters": [
{
- "description": "Canonical Android Authority article URL",
+ "description": "The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field",
"in": "query",
- "name": "url",
+ "name": "uri",
"required": true,
"type": "string",
- "x-example": "https://www.androidauthority.com/gemini-live-avatar-3715280/"
+ "x-example": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"
+ },
+ {
+ "description": "Reply-tree depth, 1-10",
+ "in": "query",
+ "name": "depth",
+ "type": "integer",
+ "x-example": 6
}
],
"produces": [
@@ -200713,7 +229120,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/bluesky.postThreadResponseDoc"
}
},
"400": {
@@ -200728,6 +229135,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -200740,69 +229159,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Android Authority article content",
+ "summary": "A Bluesky post and its reply tree",
"tags": [
- "Android Authority"
+ "Bluesky"
]
}
},
- "/androidauthority/headlines": {
+ "/bluesky/posts": {
"get": {
- "description": "Returns fresh headlines from one public Android Authority section page.",
- "operationId": "androidauthority-headlines",
+ "description": "Returns public Bluesky posts for 1-25 at:// post URIs. Missing, deleted, or blocked posts are omitted when the public AppView omits them.",
+ "operationId": "bluesky-posts",
"parameters": [
{
- "description": "Android Authority section slug",
- "enum": [
- "news",
- "reviews",
- "best",
- "how-to",
- "features",
- "deals",
- "authority-insights",
- "audio",
- "computers-pc",
- "gaming",
- "technology",
- "mobile",
- "smart-home",
- "streaming-entertainment",
- "wearables",
- "earbuds-headphones",
- "chromebook",
- "mac",
- "pc-windows",
- "emulation",
- "handhelds",
- "mobile-games",
- "nintendo",
- "playstation",
- "xbox",
- "smart-devices",
- "smart-speakers",
- "virtual-assistants",
- "streaming-hardware",
- "ai",
- "mobility",
- "privacy-security",
- "vr-ar",
- "fitness-trackers",
- "smartwatches",
- "android-apps",
- "android-os",
- "android-phones",
- "android-tablets",
- "carriers-plans",
- "ios-apps",
- "iphone-ipad",
- "accessories",
- "mobile-technology"
- ],
+ "collectionFormat": "csv",
+ "description": "One or more at:// post URIs (1-25); repeat the parameter for multiple URIs",
"in": "query",
- "name": "section",
+ "items": {
+ "type": "string"
+ },
+ "name": "uris",
"required": true,
- "type": "string"
+ "type": "array",
+ "x-example": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"
}
],
"produces": [
@@ -200812,7 +229190,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/bluesky.postsResponseDoc"
}
},
"400": {
@@ -200821,6 +229199,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -200833,16 +229223,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Android Authority section headlines",
+ "summary": "Look up Bluesky posts in a batch",
"tags": [
- "Android Authority"
+ "Bluesky"
]
}
},
- "/androidauthority/news": {
+ "/bluesky/profile": {
"get": {
- "description": "Returns the latest Android Authority stories from the public site-wide feed.",
- "operationId": "androidauthority-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
+ "operationId": "bluesky-profile",
+ "parameters": [
+ {
+ "description": "A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)",
+ "in": "query",
+ "name": "actor",
+ "required": true,
+ "type": "string",
+ "x-example": "bsky.app"
+ }
+ ],
"produces": [
"application/json"
],
@@ -200850,7 +229253,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/bluesky.profileResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -200859,6 +229274,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -200871,16 +229292,42 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Android Authority top stories",
+ "summary": "A Bluesky account's full public profile",
"tags": [
- "Android Authority"
+ "Bluesky"
]
}
},
- "/androidauthority/sections": {
+ "/bluesky/search-actors": {
"get": {
- "description": "Returns the public Android Authority section inventory accepted by the headlines endpoint.",
- "operationId": "androidauthority-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
+ "operationId": "bluesky-search-actors",
+ "parameters": [
+ {
+ "description": "Search text",
+ "in": "query",
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "news"
+ },
+ {
+ "description": "Page size, 1-100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 25
+ },
+ {
+ "description": "Pagination cursor from a previous response's cursor field",
+ "in": "query",
+ "name": "cursor",
+ "type": "string"
+ }
+ ],
"produces": [
"application/json"
],
@@ -200888,7 +229335,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/bluesky.searchActorsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -200896,6 +229349,18 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -200903,33 +229368,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Android Authority sections",
+ "summary": "Search Bluesky accounts",
"tags": [
- "Android Authority"
+ "Bluesky"
]
}
},
- "/anime/airing-schedule": {
+ "/bluesky/trending-topics": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns upcoming anime episode broadcasts (episode number, air time, countdown, and the normalized title), soonest first, paginated. Credential-free public AniList data.",
- "operationId": "anime-airing-schedule",
- "parameters": [
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page, default 20, max 50",
- "in": "query",
- "name": "per_page",
- "type": "integer"
- }
- ],
+ "description": "Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.",
+ "operationId": "bluesky-trending-topics",
"produces": [
"application/json"
],
@@ -200937,11 +229388,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/anime.airingScheduleResponseDoc"
+ "$ref": "#/definitions/bluesky.trendingTopicsResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -200964,27 +229415,72 @@
"ApiKeyAuth": []
}
],
- "summary": "Upcoming anime airing schedule",
+ "summary": "Bluesky's current trending topics",
"tags": [
- "Anime"
+ "Bluesky"
]
}
},
- "/anime/character/search": {
+ "/bonhams/auctions/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches anime and manga characters by name. Returns character summaries (name, native name, image, favourites), paginated. Credential-free public AniList data.",
- "operationId": "anime-character-search",
+ "description": "Searches and filters Bonhams' auctions. Default status \"upcoming\" excludes ended auctions, matching bonhams.com's own default; \"past\" browses Bonhams' full historical auction archive instead. Credential-free public data from bonhams.com's own search API.",
+ "operationId": "bonhams-auction-search",
"parameters": [
{
- "description": "Search text",
+ "description": "Free-text search across auction title and department names",
"in": "query",
- "name": "query",
- "required": true,
+ "name": "q",
"type": "string",
- "x-example": "Frieren"
+ "x-example": "Home & Interiors"
+ },
+ {
+ "description": "Comma-separated country names (not a fixed enum -- live facet)",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "United Kingdom"
+ },
+ {
+ "description": "Comma-separated categories. Allowed values: 20th & 21st Century Art, Asian Art, Books, History & Science, Classic Art, Decorative Arts & Furniture, Handbags, Jewels & Watches, Motoring, Popular Culture, Wine & Whisky.",
+ "in": "query",
+ "name": "category",
+ "type": "string",
+ "x-example": "Asian Art"
+ },
+ {
+ "description": "Comma-separated month-and-year values, e.g. \\",
+ "in": "query",
+ "name": "month",
+ "type": "string",
+ "x-example": "September 2026"
+ },
+ {
+ "description": "Comma-separated auction types",
+ "enum": [
+ "ONLINE",
+ "PUBLIC",
+ "EXHIBITION",
+ "OTHER"
+ ],
+ "in": "query",
+ "name": "auction_type",
+ "type": "string",
+ "x-example": "ONLINE"
+ },
+ {
+ "description": "Filters by bidding/completion status, default upcoming",
+ "enum": [
+ "upcoming",
+ "past",
+ "all"
+ ],
+ "in": "query",
+ "name": "status",
+ "type": "string",
+ "x-example": "upcoming"
},
{
"description": "1-based page number, default 1",
@@ -200993,7 +229489,7 @@
"type": "integer"
},
{
- "description": "Results per page, default 10, max 50",
+ "description": "Results per page, default 24, max 100",
"in": "query",
"name": "per_page",
"type": "integer"
@@ -201006,7 +229502,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/anime.characterSearchResponseDoc"
+ "$ref": "#/definitions/bonhams.auctionSearchResponseDoc"
}
},
"400": {
@@ -201033,27 +229529,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search anime & manga characters",
+ "summary": "Search Bonhams auctions",
"tags": [
- "Anime"
+ "Bonhams"
]
}
},
- "/anime/character/{id}": {
+ "/bonhams/auctions/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized character profile by AniList id: names, image, description, gender, age, blood type, birthday, favourites, and the titles the character appears in with their billed role. Credential-free public AniList data.",
- "operationId": "anime-character",
+ "description": "Returns one Bonhams auction's normalized facts by id: title, category, department, country, currency, sale dates, and lot count. Unlike the search endpoint, this is not restricted to upcoming/live auctions -- a historical/ended auction id resolves too. Credential-free public data from bonhams.com's own search API.",
+ "operationId": "bonhams-auction-detail",
"parameters": [
{
- "description": "AniList character id",
+ "description": "Bonhams auction id",
"in": "path",
"name": "id",
"required": true,
"type": "string",
- "x-example": "176754"
+ "x-example": "32001"
}
],
"produces": [
@@ -201063,7 +229559,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/anime.characterResponseDoc"
+ "$ref": "#/definitions/bonhams.auctionDetailResponseDoc"
}
},
"400": {
@@ -201096,85 +229592,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an anime/manga character",
+ "summary": "Get a Bonhams auction's normalized facts",
"tags": [
- "Anime"
+ "Bonhams"
]
}
},
- "/anime/rankings": {
+ "/bonhams/auctions/{id}/lots": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a filterable, sorted anime ranking. Credential-free public AniList data. Filter by season, year, format, genre, and status.",
- "operationId": "anime-rankings",
+ "description": "Returns the normalized lot listing for one Bonhams auction, optionally filtered by department and/or a free-text query. Credential-free public data from bonhams.com's own search API.",
+ "operationId": "bonhams-auction-lots",
"parameters": [
{
- "description": "Order: TRENDING_DESC, POPULARITY_DESC, SCORE_DESC, FAVOURITES_DESC, START_DATE_DESC, UPDATED_AT_DESC. Default TRENDING_DESC.",
- "enum": [
- "TRENDING_DESC",
- "POPULARITY_DESC",
- "SCORE_DESC",
- "FAVOURITES_DESC",
- "START_DATE_DESC",
- "UPDATED_AT_DESC"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Airing season filter: WINTER, SPRING, SUMMER, FALL.",
- "enum": [
- "WINTER",
- "SPRING",
- "SUMMER",
- "FALL"
- ],
- "in": "query",
- "name": "season",
- "type": "string"
- },
- {
- "description": "Airing year filter, 1940-2100.",
- "in": "query",
- "name": "season_year",
- "type": "integer"
- },
- {
- "description": "Format filter: TV, TV_SHORT, MOVIE, SPECIAL, OVA, ONA, MUSIC.",
- "enum": [
- "TV",
- "TV_SHORT",
- "MOVIE",
- "SPECIAL",
- "OVA",
- "ONA",
- "MUSIC"
- ],
- "in": "query",
- "name": "format",
- "type": "string"
+ "description": "Bonhams auction id",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "32001"
},
{
- "description": "Genre filter, e.g. Fantasy.",
+ "description": "Free-text search across lot title, catalog description, and footnotes",
"in": "query",
- "name": "genre",
- "type": "string"
+ "name": "q",
+ "type": "string",
+ "x-example": "candelabra"
},
{
- "description": "Status filter: FINISHED, RELEASING, NOT_YET_RELEASED, CANCELLED, HIATUS.",
- "enum": [
- "FINISHED",
- "RELEASING",
- "NOT_YET_RELEASED",
- "CANCELLED",
- "HIATUS"
- ],
+ "description": "Comma-separated department names (not a fixed enum -- varies per auction)",
"in": "query",
- "name": "status",
- "type": "string"
+ "name": "department",
+ "type": "string",
+ "x-example": "Silver"
},
{
"description": "1-based page number, default 1",
@@ -201183,7 +229635,7 @@
"type": "integer"
},
{
- "description": "Results per page, default 20, max 50",
+ "description": "Results per page, default 48, max 100",
"in": "query",
"name": "per_page",
"type": "integer"
@@ -201196,7 +229648,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/anime.rankingsResponseDoc"
+ "$ref": "#/definitions/bonhams.auctionLotsResponseDoc"
}
},
"400": {
@@ -201223,37 +229675,61 @@
"ApiKeyAuth": []
}
],
- "summary": "Rank anime",
+ "summary": "List the lots in a Bonhams auction",
"tags": [
- "Anime"
+ "Bonhams"
]
}
},
- "/anime/search": {
+ "/bonhams/lots/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches anime by free-text query. Credential-free public anime data from AniList. Returns normalized entries: titles, scores, popularity, format, status, season, genres, tags, and studios.",
- "operationId": "anime-search",
+ "description": "Searches Bonhams lots across every auction, current and historical -- including sold/prices-realized lots -- optionally filtered by department, country, a GBP-normalized estimate price range, and/or a free-text query, in a caller-selected sort order. Without a query and without an explicit sort, results are ordered by most recently active sale date first. Credential-free public data from bonhams.com's own search API.",
+ "operationId": "bonhams-lot-search",
"parameters": [
{
- "description": "Search text",
+ "description": "Free-text search across lot title, catalog description, and footnotes",
"in": "query",
- "name": "query",
- "required": true,
+ "name": "q",
"type": "string",
- "x-example": "Frieren"
+ "x-example": "Rolex Submariner"
},
{
- "description": "Ordering: SEARCH_MATCH, POPULARITY_DESC, SCORE_DESC, TRENDING_DESC, FAVOURITES_DESC, START_DATE_DESC. Default SEARCH_MATCH.",
+ "description": "Comma-separated department names (not a fixed enum -- large, changes over time)",
+ "in": "query",
+ "name": "department",
+ "type": "string",
+ "x-example": "Watches"
+ },
+ {
+ "description": "Comma-separated country names (not a fixed enum -- live facet)",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "United States"
+ },
+ {
+ "description": "Minimum estimate, in GBP (converted from each lot's own sale currency), inclusive. Omit or 0 for no minimum.",
+ "in": "query",
+ "name": "min_price_gbp",
+ "type": "number"
+ },
+ {
+ "description": "Maximum estimate, in GBP (converted from each lot's own sale currency), inclusive. Omit or 0 for no maximum.",
+ "in": "query",
+ "name": "max_price_gbp",
+ "type": "number"
+ },
+ {
+ "description": "Result order. Default: Typesense relevance ranking when q is set, otherwise recency (most recently active sale date first).",
"enum": [
- "SEARCH_MATCH",
- "POPULARITY_DESC",
- "SCORE_DESC",
- "TRENDING_DESC",
- "FAVOURITES_DESC",
- "START_DATE_DESC"
+ "relevance",
+ "recency",
+ "price_high",
+ "price_low",
+ "lot_number"
],
"in": "query",
"name": "sort",
@@ -201266,7 +229742,7 @@
"type": "integer"
},
{
- "description": "Results per page, default 10, max 50",
+ "description": "Results per page, default 48, max 100",
"in": "query",
"name": "per_page",
"type": "integer"
@@ -201279,7 +229755,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/anime.searchResponseDoc"
+ "$ref": "#/definitions/bonhams.lotSearchResponseDoc"
}
},
"400": {
@@ -201306,33 +229782,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Search anime",
+ "summary": "Search Bonhams lots across every auction",
"tags": [
- "Anime"
+ "Bonhams"
]
}
},
- "/anime/title/{id}": {
+ "/bonhams/lots/{auctionId}/{lotNumber}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized anime by AniList id: titles (romaji/english/native), MyAnimeList id, scores, popularity, favourites, format, status, season, episodes, duration, genres, ranked tags, studios, dates, description, images, and next-airing countdown. Pass mal=true to additionally enrich the response with the MyAnimeList community score (mal block: score on a 0-10 scale, plus scored-by count), scraped credential-free from the public MAL page. Credential-free public AniList data.",
- "operationId": "anime-title",
+ "description": "Returns one Bonhams lot's normalized facts: title, estimate range, hammer/realized price (once sold), sale date, category, department, and lot number. Full lot description prose, condition-report text, and additional images are not reproduced -- see the response fields. Credential-free public data from bonhams.com's own search API.",
+ "operationId": "bonhams-lot-detail",
"parameters": [
{
- "description": "AniList anime id",
+ "description": "Bonhams auction id",
"in": "path",
- "name": "id",
+ "name": "auctionId",
"required": true,
"type": "string",
- "x-example": "154587"
+ "x-example": "32001"
},
{
- "description": "Enrich with the MyAnimeList community score (adds one fetch; omitted when the title has no MAL id)",
- "in": "query",
- "name": "mal",
- "type": "boolean"
+ "description": "Bonhams lot number",
+ "in": "path",
+ "name": "lotNumber",
+ "required": true,
+ "type": "string",
+ "x-example": "2"
}
],
"produces": [
@@ -201342,7 +229820,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/anime.mediaResponseDoc"
+ "$ref": "#/definitions/bonhams.lotDetailResponseDoc"
}
},
"400": {
@@ -201375,39 +229853,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an anime",
+ "summary": "Get a Bonhams lot's normalized facts",
"tags": [
- "Anime"
+ "Bonhams"
]
}
},
- "/anime/title/{id}/characters": {
+ "/booking-attractions/detail": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns an anime's cast (character name, native name, billed role, image, favourites), paginated. Credential-free public AniList data.",
- "operationId": "anime-title-characters",
+ "description": "Returns a Booking.com attraction's detail page.",
+ "operationId": "booking-attractions-detail",
"parameters": [
{
- "description": "AniList anime id",
- "in": "path",
- "name": "id",
+ "description": "Attraction slug, from a prior attraction search result",
+ "in": "query",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "154587"
- },
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page, default 10, max 50",
- "in": "query",
- "name": "per_page",
- "type": "integer"
+ "x-example": "pre4ksvwxdrd-seine-river-sightseeing-cruise"
}
],
"produces": [
@@ -201417,7 +229883,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/anime.charactersResponseDoc"
+ "$ref": "#/definitions/booking.bookingAttractionDetailResponseDoc"
}
},
"400": {
@@ -201432,8 +229898,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201450,39 +229916,41 @@
"ApiKeyAuth": []
}
],
- "summary": "List an anime's characters",
+ "summary": "Booking.com attraction detail",
"tags": [
- "Anime"
+ "Booking"
]
}
},
- "/anime/title/{id}/recommendations": {
+ "/booking-attractions/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns community-recommended titles for an anime, each with a recommendation rating and the full normalized media entry, paginated. Credential-free public AniList data.",
- "operationId": "anime-title-recommendations",
+ "description": "Returns normalized guest reviews for a Booking.com attraction.",
+ "operationId": "booking-attractions-reviews",
"parameters": [
{
- "description": "AniList anime id",
- "in": "path",
- "name": "id",
+ "description": "Attraction product id, from a prior attraction search result",
+ "in": "query",
+ "name": "product_id",
"required": true,
"type": "string",
- "x-example": "154587"
+ "x-example": "PRe4kSVWXdrD"
},
{
- "description": "1-based page number, default 1",
+ "description": "1-based result page, default 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Results per page, default 10, max 50",
+ "description": "Reviews per page, 1-50, default 10",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -201492,7 +229960,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/anime.recommendationsResponseDoc"
+ "$ref": "#/definitions/booking.bookingAttractionReviewsResponseDoc"
}
},
"400": {
@@ -201507,8 +229975,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201525,39 +229993,70 @@
"ApiKeyAuth": []
}
],
- "summary": "List an anime's recommendations",
+ "summary": "Booking.com attraction reviews",
"tags": [
- "Anime"
+ "Booking"
]
}
},
- "/anime/title/{id}/staff": {
+ "/booking-attractions/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the people credited on an anime (name, production role, occupations, image), paginated. Credential-free public AniList data.",
- "operationId": "anime-title-staff",
+ "description": "Returns normalized Booking.com attractions/things-to-do search results for a destination and date range, with an optional category/subcategory filter and a discoverable category taxonomy.",
+ "operationId": "booking-attractions-search",
"parameters": [
{
- "description": "AniList anime id",
- "in": "path",
- "name": "id",
+ "description": "Destination name or city",
+ "in": "query",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "154587"
+ "x-example": "Paris"
},
{
- "description": "1-based page number, default 1",
+ "description": "Availability start date, YYYY-MM-DD",
+ "in": "query",
+ "name": "start_date",
+ "required": true,
+ "type": "string",
+ "x-example": "2026-09-15"
+ },
+ {
+ "description": "Availability end date, YYYY-MM-DD, defaults to start_date",
+ "in": "query",
+ "name": "end_date",
+ "type": "string",
+ "x-example": "2026-09-15"
+ },
+ {
+ "description": "1-based result page, default 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Results per page, default 10, max 50",
+ "description": "Results per page, 1-30, default 15",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 15
+ },
+ {
+ "description": "Optional top-level category tagname filter, from a prior response's categories",
+ "in": "query",
+ "name": "category",
+ "type": "string",
+ "x-example": "PTCMCcodv3rh"
+ },
+ {
+ "description": "Optional subcategory tagname filter, from a prior response's categories",
+ "in": "query",
+ "name": "subcategory",
+ "type": "string",
+ "x-example": "PTCMCfzh93xC"
}
],
"produces": [
@@ -201567,7 +230066,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/anime.staffResponseDoc"
+ "$ref": "#/definitions/booking.bookingAttractionSearchResponseDoc"
}
},
"400": {
@@ -201582,8 +230081,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201600,30 +230099,51 @@
"ApiKeyAuth": []
}
],
- "summary": "List an anime's staff",
+ "summary": "Search Booking.com attractions",
"tags": [
- "Anime"
+ "Booking"
]
}
},
- "/apk-teardown/compare-ownership": {
+ "/booking-flights/autocomplete": {
"get": {
- "description": "Compares two DIFFERENT completed jobs (not versions of the same app) for signals of common ownership -- shared signing certificate, SDK/analytics identifiers, and more.",
- "operationId": "apkTeardownCompareOwnership",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Booking.com flight-search location suggestions (airports/cities) for a query string.",
+ "operationId": "booking-flights-autocomplete",
"parameters": [
{
- "description": "First job ID",
+ "description": "City or airport name/code to search",
"in": "query",
- "name": "job_id_a",
+ "name": "query",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "Chengdu"
},
{
- "description": "Second job ID",
+ "description": "Location role, default to",
+ "enum": [
+ "to",
+ "from"
+ ],
"in": "query",
- "name": "job_id_b",
- "required": true,
+ "name": "type",
"type": "string"
+ },
+ {
+ "description": "Optional origin location code, biases results by proximity",
+ "in": "query",
+ "name": "origin",
+ "type": "string",
+ "x-example": "SGN"
+ },
+ {
+ "description": "Origin location type",
+ "in": "query",
+ "name": "origin_type",
+ "type": "string",
+ "x-example": "AIRPORT"
}
],
"produces": [
@@ -201633,11 +230153,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/apkteardown.CompareOwnershipResponseDoc"
+ "$ref": "#/definitions/booking.bookingFlightAutocompleteResponseDoc"
}
},
"400": {
- "description": "Missing job ids, or one/both jobs not found or not done",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201648,30 +230186,102 @@
"ApiKeyAuth": []
}
],
- "summary": "Compare two apk-teardown jobs for evidence of common ownership",
+ "summary": "Booking.com flight autocomplete",
"tags": [
- "AppInsights"
+ "Booking"
]
}
},
- "/apk-teardown/diff": {
+ "/booking-flights/search": {
"get": {
- "description": "Compares two already-completed jobs -- typically two versions of the same app -- and returns what changed (permissions, signing, SDKs, size, and more).",
- "operationId": "apkTeardownDiff",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized round-trip or one-way flight offers between two Booking.com flight-search locations.",
+ "operationId": "booking-flights-search",
"parameters": [
{
- "description": "First job ID",
+ "description": "Trip type, default ROUNDTRIP",
+ "enum": [
+ "ROUNDTRIP",
+ "ONEWAY"
+ ],
"in": "query",
- "name": "job_id_a",
- "required": true,
+ "name": "type",
"type": "string"
},
{
- "description": "Second job ID",
+ "description": "Origin location id, e.g. SGN.AIRPORT, from a prior autocomplete result",
"in": "query",
- "name": "job_id_b",
+ "name": "from",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "SGN.AIRPORT"
+ },
+ {
+ "description": "Destination location id, same composite format as from",
+ "in": "query",
+ "name": "to",
+ "required": true,
+ "type": "string",
+ "x-example": "CTU.CITY"
+ },
+ {
+ "description": "Origin country code",
+ "in": "query",
+ "name": "from_country",
+ "type": "string",
+ "x-example": "VN"
+ },
+ {
+ "description": "Destination country code",
+ "in": "query",
+ "name": "to_country",
+ "type": "string",
+ "x-example": "CN"
+ },
+ {
+ "description": "Departure date, YYYY-MM-DD",
+ "in": "query",
+ "name": "depart",
+ "required": true,
+ "type": "string",
+ "x-example": "2026-09-05"
+ },
+ {
+ "description": "Return date, YYYY-MM-DD, required when type is ROUNDTRIP",
+ "in": "query",
+ "name": "return",
+ "type": "string",
+ "x-example": "2026-09-12"
+ },
+ {
+ "description": "Number of adults, 1-9, default 1",
+ "in": "query",
+ "name": "adults",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Number of children, 0-9",
+ "in": "query",
+ "name": "children",
+ "type": "integer",
+ "x-example": 0
+ },
+ {
+ "description": "Cabin class, default ECONOMY",
+ "in": "query",
+ "name": "cabin_class",
+ "type": "string",
+ "x-example": "ECONOMY"
+ },
+ {
+ "description": "Result sort order, default BEST",
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "BEST"
}
],
"produces": [
@@ -201681,11 +230291,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/apkteardown.DiffResponseDoc"
+ "$ref": "#/definitions/booking.bookingFlightSearchResponseDoc"
}
},
"400": {
- "description": "Missing job ids, or one/both jobs not found or not done",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201696,43 +230324,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Diff two completed apk-teardown jobs",
+ "summary": "Search Booking.com flights",
"tags": [
- "AppInsights"
+ "Booking"
]
}
},
- "/apk-teardown/jobs": {
- "post": {
+ "/booking/hotel-detail": {
+ "get": {
"consumes": [
- "multipart/form-data"
+ "application/json"
],
- "description": "Uploads a single .apk/.xapk file (up to 400MB), or set file_url to have the server fetch it from an https:// URL instead -- exactly one of \"file\" or \"file_url\" must be given, not both. Enqueues a Tier 1 static-analysis job -- manifest, permissions, signing, SDK detection, tech stack, locales, and more. Poll the returned poll_path for the result, or set webhook_url for push delivery. Identical uploads (by sha256) within 48h return the existing job instead of re-running analysis. file_url is validated (https only, must resolve to a public address -- no loopback/private/link-local targets) and every redirect hop is re-validated the same way before being followed.",
- "operationId": "apkTeardownSubmit",
+ "description": "Returns a Booking.com hotel's core detail page: rating, facilities, highlights, house rules, cover photos, and rooms with their own photos.",
+ "operationId": "booking-hotel-detail",
"parameters": [
{
- "description": "APK or XAPK/APKS/APKM bundle file -- mutually exclusive with file_url",
- "in": "formData",
- "name": "file",
- "type": "file"
- },
- {
- "description": "https:// URL to fetch the APK/bundle from server-side -- mutually exclusive with file",
- "in": "formData",
- "name": "file_url",
- "type": "string"
- },
- {
- "description": "Declared filename for a file_url submission (must end .apk/.xapk/.apks/.apkm). Defaults to the URL path's basename when omitted.",
- "in": "formData",
- "name": "file_name",
- "type": "string"
- },
- {
- "description": "Optional URL to receive a webhook POST when the job reaches a terminal state",
- "in": "formData",
- "name": "webhook_url",
- "type": "string"
+ "description": "Booking.com hotel id, from a prior search's property id",
+ "in": "query",
+ "name": "hotel_id",
+ "required": true,
+ "type": "integer",
+ "x-example": 2845972
}
],
"produces": [
@@ -201742,29 +230354,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/apkteardown.JobSubmitResponseDoc"
+ "$ref": "#/definitions/booking.bookingHotelDetailResponseDoc"
}
},
"400": {
- "description": "Missing/invalid file or file_url, oversized upload, or not a valid APK/ZIP",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too many apk-teardown jobs already in flight for this caller",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal error submitting the job",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "502": {
- "description": "file_url could not be fetched",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201775,23 +230387,70 @@
"ApiKeyAuth": []
}
],
- "summary": "Submit an APK for static teardown analysis",
+ "summary": "Booking.com hotel detail",
"tags": [
- "AppInsights"
+ "Booking"
]
}
},
- "/apk-teardown/jobs/{job_id}": {
- "delete": {
- "description": "Purges a job's metadata/result before its normal retention window expires. The uploaded binary is already gone by the time any job reaches a terminal state, so this only ever deletes job metadata, never a binary.",
- "operationId": "apkTeardownDeleteJob",
+ "/booking/reviews": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized guest reviews for a Booking.com hotel, with an optional free-text search over review content.",
+ "operationId": "booking-reviews",
"parameters": [
{
- "description": "Job ID to delete",
- "in": "path",
- "name": "job_id",
+ "description": "Booking.com hotel id, from a prior search's property id",
+ "in": "query",
+ "name": "hotel_id",
"required": true,
- "type": "string"
+ "type": "integer",
+ "x-example": 2845972
+ },
+ {
+ "description": "Destination id (ufi), from a prior search response",
+ "in": "query",
+ "name": "destination_id",
+ "type": "integer",
+ "x-example": -1456928
+ },
+ {
+ "description": "Hotel's country code, from a prior search response",
+ "in": "query",
+ "name": "hotel_country_code",
+ "required": true,
+ "type": "string",
+ "x-example": "fr"
+ },
+ {
+ "description": "Hotel's overall review score",
+ "in": "query",
+ "name": "hotel_score",
+ "type": "number",
+ "x-example": 8.2
+ },
+ {
+ "description": "Optional free-text search over review content",
+ "in": "query",
+ "name": "search_text",
+ "type": "string",
+ "x-example": "elevator"
+ },
+ {
+ "description": "1-based result page, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Reviews per page, 1-25, default 10",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -201801,17 +230460,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/booking.bookingReviewsResponseDoc"
}
},
"400": {
- "description": "job_id is required",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal error deleting the job",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201822,21 +230493,71 @@
"ApiKeyAuth": []
}
],
- "summary": "Delete an apk-teardown job",
+ "summary": "Booking.com hotel reviews",
"tags": [
- "AppInsights"
+ "Booking"
]
- },
+ }
+ },
+ "/booking/search": {
"get": {
- "description": "Returns the current status (queued, processing, done, failed, or lost) of a submitted job, and its full result once done.",
- "operationId": "apkTeardownJobStatus",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized Booking.com hotel search results for a destination and date range.",
+ "operationId": "booking-search",
"parameters": [
{
- "description": "Job ID returned by Submit",
- "in": "path",
- "name": "job_id",
+ "description": "Destination name or city",
+ "in": "query",
+ "name": "query",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "Paris"
+ },
+ {
+ "description": "Check-in date, YYYY-MM-DD",
+ "in": "query",
+ "name": "checkin",
+ "required": true,
+ "type": "string",
+ "x-example": "2026-09-15"
+ },
+ {
+ "description": "Check-out date, YYYY-MM-DD",
+ "in": "query",
+ "name": "checkout",
+ "required": true,
+ "type": "string",
+ "x-example": "2026-09-17"
+ },
+ {
+ "description": "Number of adults, 1-9, default 2",
+ "in": "query",
+ "name": "adults",
+ "type": "integer",
+ "x-example": 2
+ },
+ {
+ "description": "Number of rooms, 1-8, default 1",
+ "in": "query",
+ "name": "rooms",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Number of children, 0-9",
+ "in": "query",
+ "name": "children",
+ "type": "integer",
+ "x-example": 0
+ },
+ {
+ "description": "1-based result page, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -201846,23 +230567,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/apkteardown.JobStatusResponseDoc"
+ "$ref": "#/definitions/booking.bookingSearchResponseDoc"
}
},
"400": {
- "description": "job_id is required",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Job not found or expired",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal error reading the job",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201873,65 +230600,95 @@
"ApiKeyAuth": []
}
],
- "summary": "Poll an apk-teardown job's status/result",
+ "summary": "Search Booking.com hotels",
"tags": [
- "AppInsights"
+ "Booking"
]
}
},
- "/apk-teardown/timeline": {
+ "/boots/search": {
"get": {
- "description": "Compares 2+ completed jobs the caller asserts are versions of the same app and returns the consecutive pairwise diff for each version transition, sorted by version code.",
- "operationId": "apkTeardownTimeline",
+ "description": "Returns one page of Boots UK's public product catalog, including product cards and live facets. Supply `q`, one or more hierarchical `category` keys, or both. Use repeatable `filter=facet_key:option_key` values from that response's dynamic facets, plus the dedicated price and stock controls. `sort` accepts `relevance`, `price_low_to_high`, `price_high_to_low`, `top_rated`, `best_seller`, or `newest`.",
+ "operationId": "boots-search",
"parameters": [
{
- "description": "Comma-separated list of 2+ completed job ids, any order",
+ "description": "Free-text product query; required unless category is supplied",
"in": "query",
- "name": "job_ids",
- "required": true,
- "type": "string"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/apkteardown.TimelineResponseDoc"
- }
+ "name": "q",
+ "type": "string",
+ "x-example": "vitamin c"
+ },
+ {
+ "collectionFormat": "multi",
+ "description": "Repeat the exact category hierarchy keys from root through the desired leaf; required unless q is supplied",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "category",
+ "type": "array",
+ "x-example": "health & pharmacy"
+ },
+ {
+ "collectionFormat": "multi",
+ "description": "Repeat a dynamic facet filter as facet_key:option_key, using key/option values returned in facets; category, currentPrice, and inStock use their dedicated parameters",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "filter",
+ "type": "array",
+ "x-example": "brand:No7"
+ },
+ {
+ "description": "Inclusive minimum GBP price; may be combined with price_max",
+ "in": "query",
+ "name": "price_min",
+ "type": "number",
+ "x-example": 45
+ },
+ {
+ "description": "Inclusive maximum GBP price; may be combined with price_min",
+ "in": "query",
+ "name": "price_max",
+ "type": "number",
+ "x-example": 100
+ },
+ {
+ "description": "true hides out-of-stock items; false leaves stock unfiltered",
+ "in": "query",
+ "name": "in_stock",
+ "type": "boolean",
+ "x-example": true
+ },
+ {
+ "default": 1,
+ "description": "Page from 1 through 1000",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
},
- "400": {
- "description": "Fewer than 2 job ids, or a job not found or not done",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "Build a version timeline across 2+ apk-teardown jobs",
- "tags": [
- "AppInsights"
- ]
- }
- },
- "/apnews/article": {
- "get": {
- "description": "Returns public AP News article metadata and body paragraphs. The service uses the configured production browser fleet when ordinary HTTP transport encounters AP's edge challenge; it does not bypass authentication or access controls. Billing is 2 credits for an HTTP-profile success and 10 credits when browser rendering is required.",
- "operationId": "apnews-article",
- "parameters": [
+ "default": 48,
+ "description": "Results per page from 1 through 48",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
+ },
{
- "description": "Canonical AP News article URL",
+ "default": "relevance",
+ "description": "Sort: relevance, price_low_to_high, price_high_to_low, top_rated, best_seller, or newest",
+ "enum": [
+ "relevance",
+ "price_low_to_high",
+ "price_high_to_low",
+ "top_rated",
+ "best_seller",
+ "newest"
+ ],
"in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://apnews.com/article/example-article-id"
+ "name": "sort",
+ "type": "string"
}
],
"produces": [
@@ -201941,7 +230698,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/boots.searchResponseDoc"
}
},
"400": {
@@ -201950,8 +230707,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201968,24 +230725,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get AP News article content",
+ "summary": "Search Boots UK products and categories",
"tags": [
- "AP News"
+ "Boots"
]
}
},
- "/apnews/author": {
+ "/boots/suggest": {
"get": {
- "description": "Returns an AP News author's byline metadata, biography, and recent articles from a canonical author URL. The service uses the configured production browser fleet when ordinary HTTP transport encounters AP's edge challenge; it does not bypass authentication or access controls. Billing is 1 credit for an HTTP-profile success and 5 credits when browser rendering is required.",
- "operationId": "apnews-author",
+ "description": "Returns Boots UK's own public typeahead phrases for a partial product query. The suggestions are search terms only; pass one to boots-search's q parameter for product cards and live facets.",
+ "operationId": "boots-suggest",
"parameters": [
{
- "description": "Canonical AP News author URL",
+ "description": "Partial product query",
"in": "query",
- "name": "url",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "https://apnews.com/author/lauran-neergaard"
+ "x-example": "vitamin c"
}
],
"produces": [
@@ -201995,7 +230752,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.apNewsAuthorResponseDoc"
+ "$ref": "#/definitions/boots.suggestResponseDoc"
}
},
"400": {
@@ -202004,8 +230761,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202022,16 +230779,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an AP News author profile",
+ "summary": "Get Boots UK search-box suggestions",
"tags": [
- "AP News"
+ "Boots"
]
}
},
- "/apnews/fact-check": {
+ "/bostonglobe/news": {
"get": {
- "description": "Returns current headlines from AP News' public Fact Check page. The service uses the configured production browser fleet when ordinary HTTP transport encounters AP's edge challenge; it does not bypass authentication or access controls. Billing is 1 credit for an HTTP-profile success and 5 credits when browser rendering is required.",
- "operationId": "apnews-fact-check",
+ "description": "Returns recent Boston Globe story metadata and RSS summaries from its public Arc feed. The feed also carries content:encoded article prose, which this endpoint intentionally omits. Article bodies, sections, headlines-by-section, and author profiles are not exposed because the public contracts are not fully verified and some stories require a subscription.",
+ "operationId": "bostonglobe-news",
"produces": [
"application/json"
],
@@ -202039,7 +230796,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -202060,36 +230817,70 @@
"ApiKeyAuth": []
}
],
- "summary": "Get AP News fact checks",
+ "summary": "Get Boston Globe top stories",
"tags": [
- "AP News"
+ "Boston Globe"
]
}
},
- "/apnews/headlines": {
+ "/boxofficemojo/brand": {
"get": {
- "description": "Returns AP News headlines from a public editorial hub. The service uses the configured production browser fleet when ordinary HTTP transport encounters AP's edge challenge; it does not bypass authentication or access controls. Billing is 1 credit for an HTTP-profile success and 5 credits when browser rendering is required.",
- "operationId": "apnews-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized release rows from a public Box Office Mojo brand page. Pass exactly one of `id`, `path`, or `url`.",
+ "operationId": "boxofficemojo-brand",
"parameters": [
{
- "description": "AP News section slug",
+ "description": "Box Office Mojo brand id",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "bn3732077058"
+ },
+ {
+ "description": "Box Office Mojo brand path",
+ "in": "query",
+ "name": "path",
+ "type": "string",
+ "x-example": "/brand/bn3732077058/"
+ },
+ {
+ "description": "Absolute https://www.boxofficemojo.com brand URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.boxofficemojo.com/brand/bn3732077058/"
+ },
+ {
+ "description": "Sort field",
"enum": [
- "ap-top-news",
- "us-news",
- "world-news",
- "politics",
- "business",
- "technology",
- "science",
- "health",
- "sports",
- "entertainment",
- "lifestyle"
+ "grossToDate",
+ "maxNumTheaters",
+ "openingWeekendGross",
+ "openingNumTheaters",
+ "releaseDate"
],
"in": "query",
- "name": "section",
- "required": true,
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Sort direction",
+ "enum": [
+ "asc",
+ "desc"
+ ],
+ "in": "query",
+ "name": "sortDir",
"type": "string"
+ },
+ {
+ "description": "Row offset for pagination (page size 100)",
+ "in": "query",
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -202099,7 +230890,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.taxonomyDetailResponseDoc"
}
},
"400": {
@@ -202108,46 +230899,20 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get AP News section headlines",
- "tags": [
- "AP News"
- ]
- }
- },
- "/apnews/news": {
- "get": {
- "description": "Returns AP News top stories from the public AP News Top News hub. The service uses the configured production browser fleet when ordinary HTTP transport encounters AP's edge challenge; it does not bypass authentication or access controls. Billing is 1 credit for an HTTP-profile success and 5 credits when browser rendering is required.",
- "operationId": "apnews-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202164,67 +230929,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Get AP News top stories",
- "tags": [
- "AP News"
- ]
- }
- },
- "/apnews/sections": {
- "get": {
- "description": "Returns the AP News editorial hub inventory used by apnews-headlines.",
- "operationId": "apnews-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get AP News sections",
+ "summary": "Box Office Mojo brand detail",
"tags": [
- "AP News"
+ "Box Office Mojo"
]
}
},
- "/apple-books/audiobook-series/{id}": {
+ "/boxofficemojo/brands": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns series metadata and the full ordered list of audiobooks in the series from Apple Books' public catalog page. An audio-book-series is a catalog resource distinct from a book-series, even for the same conceptual series.",
- "operationId": "apple-books-audiobook-series",
+ "description": "Returns normalized rows from Box Office Mojo's public brand chart.",
+ "operationId": "boxofficemojo-brands",
"parameters": [
{
- "description": "Apple Books numeric audiobook series ID",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "6442645726"
- },
- {
- "description": "Two-letter storefront country code",
+ "description": "Sort field",
+ "enum": [
+ "totalGross",
+ "numReleases",
+ "grossToDate"
+ ],
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Result language tag",
+ "description": "Sort direction",
+ "enum": [
+ "asc",
+ "desc"
+ ],
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "name": "sortDir",
+ "type": "string"
}
],
"produces": [
@@ -202234,29 +230972,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.audiobookSeriesResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.taxonomyListResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Series not found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202267,55 +231005,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve an Apple Books audiobook series and its full audiobook list",
+ "summary": "Box Office Mojo brand chart",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/audiobook/search": {
+ "/boxofficemojo/calendar": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Apple Books audiobooks from Apple's public iTunes Search API.",
- "operationId": "apple-books-audiobook-search",
+ "description": "Returns normalized grouped rows from Box Office Mojo's public domestic release schedule. Provide `year` and `month`.",
+ "operationId": "boxofficemojo-calendar",
"parameters": [
{
- "description": "Search term",
+ "description": "Calendar year, from 1921 through 2100",
"in": "query",
- "name": "term",
+ "name": "year",
"required": true,
- "type": "string",
- "x-example": "harry potter"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
- },
- {
- "description": "Number of audiobooks per page",
- "in": "query",
- "name": "limit",
"type": "integer",
- "x-example": 50
+ "x-example": 2026
},
{
- "description": "Search page number (1-based)",
+ "description": "Calendar month, 1 through 12",
"in": "query",
- "name": "page",
+ "name": "month",
+ "required": true,
"type": "integer",
- "x-example": 1
+ "x-example": 9
}
],
"produces": [
@@ -202325,23 +231043,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.audiobookSearchResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.calendarResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202352,41 +231076,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Apple Books audiobooks",
+ "summary": "Box Office Mojo domestic release schedule",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/audiobook/{id}": {
+ "/boxofficemojo/calendar/changes": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized audiobook metadata from Apple Books' public catalog page, including narrator, duration, audio preview, and a cross-link to the ebook edition (when one exists).",
- "operationId": "apple-books-audiobook",
+ "description": "Returns normalized grouped rows from Box Office Mojo's public domestic release-schedule changes page.",
+ "operationId": "boxofficemojo-calendar-changes",
"parameters": [
{
- "description": "Apple Books numeric audiobook ID",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "1442174040"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
+ "description": "Changes page offset. Allowed values: 0, 30, 60, ... 780",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -202396,29 +231105,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.audiobookResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.calendarChangesResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Audiobook not found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202429,55 +231138,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Books audiobook details",
+ "summary": "Box Office Mojo domestic release schedule changes",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/audiobook/{id}/reviews": {
+ "/boxofficemojo/calendar/date": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of an audiobook's customer reviews. The default first page is served from the audiobook's own catalog page; deeper pages (page>1 or a larger limit) page through Apple's review API directly, up to 20 per page.",
- "operationId": "apple-books-audiobook-reviews",
+ "description": "Returns normalized release rows for one public Box Office Mojo domestic release-schedule date.",
+ "operationId": "boxofficemojo-calendar-date",
"parameters": [
{
- "description": "Apple Books numeric audiobook ID",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "1442174040"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
+ "description": "Calendar date in YYYY-MM-DD format",
"in": "query",
- "name": "lang",
+ "name": "date",
+ "required": true,
"type": "string",
- "x-example": "en-us"
- },
- {
- "description": "Review page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Reviews per page, default 10, max 20",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
+ "x-example": "2026-09-04"
}
],
"produces": [
@@ -202487,29 +231168,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.audiobookReviewsResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.calendarDateResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Audiobook not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202520,41 +231207,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Books audiobook customer reviews",
+ "summary": "Box Office Mojo domestic release schedule date",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/audiobook/{id}/similar": {
+ "/boxofficemojo/date/domestic": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the related audiobooks shown on the Apple Books catalog page.",
- "operationId": "apple-books-audiobook-similar",
+ "description": "Returns normalized rows from Box Office Mojo's public domestic daily chart. Empty upstream daily pages return a typed not-found error rather than an empty success.",
+ "operationId": "boxofficemojo-date-domestic",
"parameters": [
{
- "description": "Apple Books numeric audiobook ID",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "1442174040"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
+ "description": "Domestic box office date in YYYY-MM-DD format",
"in": "query",
- "name": "lang",
+ "name": "date",
+ "required": true,
"type": "string",
- "x-example": "en-us"
+ "x-example": "2025-12-25"
}
],
"produces": [
@@ -202564,29 +231237,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.audiobookSimilarResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.domesticDateResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Audiobook not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202597,41 +231276,70 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve \"Customers Also Bought\" audiobooks",
+ "summary": "Box Office Mojo domestic daily box office",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/author/{id}": {
+ "/boxofficemojo/franchise": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns author metadata and their full ebook (and audiobook, where available) bibliography from Apple Books' public catalog page.",
- "operationId": "apple-books-author",
+ "description": "Returns normalized release rows from a public Box Office Mojo franchise page. Pass exactly one of `id`, `path`, or `url`.",
+ "operationId": "boxofficemojo-franchise",
"parameters": [
{
- "description": "Apple Books numeric author ID",
- "in": "path",
+ "description": "Box Office Mojo franchise id",
+ "in": "query",
"name": "id",
- "required": true,
"type": "string",
- "x-example": "79595314"
+ "x-example": "fr541495045"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Box Office Mojo franchise path",
"in": "query",
- "name": "country",
+ "name": "path",
"type": "string",
- "x-example": "us"
+ "x-example": "/franchise/fr541495045/"
},
{
- "description": "Result language tag",
+ "description": "Absolute https://www.boxofficemojo.com franchise URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en-us"
+ "x-example": "https://www.boxofficemojo.com/franchise/fr541495045/"
+ },
+ {
+ "description": "Sort field",
+ "enum": [
+ "grossToDate",
+ "maxNumTheaters",
+ "openingWeekendGross",
+ "openingNumTheaters",
+ "releaseDate"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Sort direction",
+ "enum": [
+ "asc",
+ "desc"
+ ],
+ "in": "query",
+ "name": "sortDir",
+ "type": "string"
+ },
+ {
+ "description": "Row offset for pagination (page size 100)",
+ "in": "query",
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -202641,29 +231349,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.authorResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.taxonomyDetailResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Author not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202674,41 +231388,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve an Apple Books author's bibliography",
+ "summary": "Box Office Mojo franchise detail",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/book/{id}": {
+ "/boxofficemojo/franchises": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized book metadata from Apple Books' public catalog page, including ISBN, page count, publisher, audience, rating histogram, and series linkage.",
- "operationId": "apple-books-book",
+ "description": "Returns normalized rows from Box Office Mojo's public franchise chart.",
+ "operationId": "boxofficemojo-franchises",
"parameters": [
{
- "description": "Apple Books numeric book ID",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "1037193578"
- },
- {
- "description": "Two-letter storefront country code",
+ "description": "Sort field",
+ "enum": [
+ "totalGross",
+ "numReleases",
+ "grossToDate"
+ ],
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Result language tag",
+ "description": "Sort direction",
+ "enum": [
+ "asc",
+ "desc"
+ ],
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "name": "sortDir",
+ "type": "string"
}
],
"produces": [
@@ -202718,29 +231431,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.bookResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.taxonomyListResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Book not found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202751,55 +231464,70 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Books book details",
+ "summary": "Box Office Mojo franchise chart",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/book/{id}/reviews": {
+ "/boxofficemojo/genre": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of a book's customer reviews. The default first page is served from the book's own catalog page; deeper pages (page>1 or a larger limit) page through Apple's review API directly, up to 20 per page.",
- "operationId": "apple-books-book-reviews",
+ "description": "Returns normalized release rows from a public Box Office Mojo genre page. Pass exactly one of `id`, `path`, or `url`.",
+ "operationId": "boxofficemojo-genre",
"parameters": [
{
- "description": "Apple Books numeric book ID",
- "in": "path",
+ "description": "Box Office Mojo genre id",
+ "in": "query",
"name": "id",
- "required": true,
"type": "string",
- "x-example": "1037193578"
+ "x-example": "sg3621777665"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Box Office Mojo genre path",
"in": "query",
- "name": "country",
+ "name": "path",
"type": "string",
- "x-example": "us"
+ "x-example": "/genre/sg3621777665/"
},
{
- "description": "Result language tag",
+ "description": "Absolute https://www.boxofficemojo.com genre URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en-us"
+ "x-example": "https://www.boxofficemojo.com/genre/sg3621777665/"
},
{
- "description": "Review page number, default 1",
+ "description": "Sort field",
+ "enum": [
+ "grossToDate",
+ "maxNumTheaters",
+ "openingWeekendGross",
+ "openingNumTheaters",
+ "releaseDate"
+ ],
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Reviews per page, default 10, max 20",
+ "description": "Sort direction",
+ "enum": [
+ "asc",
+ "desc"
+ ],
"in": "query",
- "name": "limit",
+ "name": "sortDir",
+ "type": "string"
+ },
+ {
+ "description": "Row offset for pagination (page size 100)",
+ "in": "query",
+ "name": "offset",
"type": "integer",
- "x-example": 10
+ "x-example": 0
}
],
"produces": [
@@ -202809,29 +231537,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.reviewsResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.taxonomyDetailResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Book not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202842,41 +231576,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Books customer reviews",
+ "summary": "Box Office Mojo genre detail",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/book/{id}/similar": {
+ "/boxofficemojo/genres": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the related books shown on the Apple Books catalog page.",
- "operationId": "apple-books-book-similar",
+ "description": "Returns normalized rows from Box Office Mojo's public genre chart.",
+ "operationId": "boxofficemojo-genres",
"parameters": [
{
- "description": "Apple Books numeric book ID",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "1037193578"
- },
- {
- "description": "Two-letter storefront country code",
+ "description": "Sort field",
+ "enum": [
+ "totalGross",
+ "numTitles",
+ "grossToDate"
+ ],
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Result language tag",
+ "description": "Sort direction",
+ "enum": [
+ "asc",
+ "desc"
+ ],
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "name": "sortDir",
+ "type": "string"
}
],
"produces": [
@@ -202886,29 +231619,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.similarResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.taxonomyListResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Book not found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -202919,51 +231652,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve \"Customers Also Bought\" books",
+ "summary": "Box Office Mojo genre chart",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/charts": {
+ "/boxofficemojo/lifetime-grosses": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Apple Books chart rankings from Apple's public marketing-tools RSS JSON feed. Supported collections are `top-free` and `top-paid`.",
- "operationId": "apple-books-charts",
+ "description": "Returns normalized rows from Box Office Mojo's credential-free lifetime gross chart. `area` values: `worldwide`, `domestic`.",
+ "operationId": "boxofficemojo-lifetime-grosses",
"parameters": [
{
- "description": "Chart collection. Allowed values: top-free, top-paid",
+ "description": "Chart area. Allowed values: worldwide, domestic",
"enum": [
- "top-free",
- "top-paid"
+ "worldwide",
+ "domestic"
],
"in": "query",
- "name": "collection",
- "type": "string",
- "x-example": "top-free"
- },
- {
- "description": "Optional Apple Books genre ID to filter the chart",
- "in": "query",
- "name": "genre",
- "type": "integer",
- "x-example": 9031
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
+ "name": "area",
"type": "string",
- "x-example": "us"
+ "x-example": "worldwide"
},
{
- "description": "Number of chart items to return",
+ "description": "Chart page offset. Allowed values: 0, 200, 400, 600, 800",
"in": "query",
- "name": "limit",
+ "name": "offset",
"type": "integer",
- "x-example": 50
+ "x-example": 0
}
],
"produces": [
@@ -202973,23 +231692,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.chartsResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.lifetimeGrossesResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -203000,55 +231725,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Books chart rankings",
+ "summary": "Box Office Mojo lifetime gross chart",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/search": {
+ "/boxofficemojo/release": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Apple Books ebooks from Apple's public iTunes Search API.",
- "operationId": "apple-books-search",
+ "description": "Returns normalized Box Office Mojo release summary fields and domestic daily rows from a public release page. Pass exactly one of `id`, `path`, or `url`.",
+ "operationId": "boxofficemojo-release",
"parameters": [
{
- "description": "Search term",
+ "description": "Box Office Mojo release id",
"in": "query",
- "name": "term",
- "required": true,
+ "name": "id",
"type": "string",
- "x-example": "harry potter"
+ "x-example": "rl3389031937"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Box Office Mojo release path",
"in": "query",
- "name": "country",
+ "name": "path",
"type": "string",
- "x-example": "us"
+ "x-example": "/release/rl3389031937/"
},
{
- "description": "Result language tag",
+ "description": "Absolute https://www.boxofficemojo.com release URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en-us"
- },
- {
- "description": "Number of books per page",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
- },
- {
- "description": "Search page number (1-based)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "https://www.boxofficemojo.com/release/rl3389031937/"
}
],
"produces": [
@@ -203058,23 +231768,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.searchResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.releaseResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -203085,41 +231807,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Apple Books titles",
+ "summary": "Box Office Mojo release detail",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-books/series/{id}": {
+ "/boxofficemojo/release-group": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns series metadata and the full ordered list of books in the series from Apple Books' public catalog page.",
- "operationId": "apple-books-series",
+ "description": "Returns normalized market release rows grouped by region from a public Box Office Mojo release-group page. Pass exactly one of `id`, `path`, or `url`.",
+ "operationId": "boxofficemojo-release-group",
"parameters": [
{
- "description": "Apple Books numeric series ID",
- "in": "path",
+ "description": "Box Office Mojo release-group id",
+ "in": "query",
"name": "id",
- "required": true,
"type": "string",
- "x-example": "1044374793"
+ "x-example": "gr3486798341"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Box Office Mojo release-group path",
"in": "query",
- "name": "country",
+ "name": "path",
"type": "string",
- "x-example": "us"
+ "x-example": "/releasegroup/gr3486798341/"
},
{
- "description": "Result language tag",
+ "description": "Absolute https://www.boxofficemojo.com release-group URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en-us"
+ "x-example": "https://www.boxofficemojo.com/releasegroup/gr3486798341/"
}
],
"produces": [
@@ -203129,29 +231850,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applebooks.seriesResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.releaseGroupResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Series not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -203162,27 +231889,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve an Apple Books series and its full book list",
+ "summary": "Box Office Mojo release group detail",
"tags": [
- "AppleBooks"
+ "Box Office Mojo"
]
}
},
- "/apple-jobs/job": {
+ "/boxofficemojo/showdown": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Apple Careers posting by its job id (the `id` field returned by search, e.g. `200674676-0836` for a specific requisition or `PIPE-200314122` for an evergreen/pipeline retail role). Parsed from jobs.apple.com's server-rendered job detail page.",
- "operationId": "apple-jobs-job",
+ "description": "Returns normalized release comparison metrics from a public Box Office Mojo showdown page. Pass exactly one of `id`, `path`, or `url`.",
+ "operationId": "boxofficemojo-showdown",
"parameters": [
{
- "description": "Apple job id",
+ "description": "Box Office Mojo showdown id",
"in": "query",
"name": "id",
- "required": true,
"type": "string",
- "x-example": "200674676-0836"
+ "x-example": "sd943519236"
+ },
+ {
+ "description": "Box Office Mojo showdown path",
+ "in": "query",
+ "name": "path",
+ "type": "string",
+ "x-example": "/showdown/sd943519236/"
+ },
+ {
+ "description": "Absolute https://www.boxofficemojo.com showdown URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.boxofficemojo.com/showdown/sd943519236/"
}
],
"produces": [
@@ -203192,7 +231932,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applejobs.jobResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.showdownResponseDoc"
}
},
"400": {
@@ -203213,6 +231953,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -203225,28 +231971,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Apple Jobs single posting",
+ "summary": "Box Office Mojo showdown detail",
"tags": [
- "Apple Jobs"
+ "Box Office Mojo"
]
}
},
- "/apple-jobs/locations": {
+ "/boxofficemojo/showdowns": {
"get": {
"consumes": [
"application/json"
],
- "description": "Discovery endpoint for apple-jobs-search's `location` parameter, whose accepted values are a closed set Apple itself defines (its own `-` location ids -- free-text location names are rejected by the search backend). Apple exposes no bulk \"list everything\" API for this; its only source is its own location-filter typeahead, a fuzzy search capped at 10 results per call covering four granularities (country, state/province, metro area, city) with no empty-input listing mode. With no `q`, this returns the full country-level value space (206 values, live-verified) as a static list -- the granularity apple-jobs-search's own examples use and nearly every caller needs, with no live upstream call required. With `q` supplied, this instead live-proxies Apple's own typeahead so callers can discover state/metro/city-level values for finer filtering; results at those deeper levels may include more than one candidate and are ranked by Apple's own relevance, not alphabetically.",
- "operationId": "apple-jobs-locations",
- "parameters": [
- {
- "description": "Optional free-text location search. Omit to get the full country-level list; supply to live-search state/metro/city-level values too (e.g. a city name).",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "singapore"
- }
- ],
+ "description": "Returns normalized comparison rows from Box Office Mojo's public showdowns page.",
+ "operationId": "boxofficemojo-showdowns",
"produces": [
"application/json"
],
@@ -203254,17 +231991,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applejobs.locationsResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.showdownsResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -203281,41 +232018,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Apple Jobs location discovery",
+ "summary": "Box Office Mojo showdowns",
"tags": [
- "Apple Jobs"
+ "Box Office Mojo"
]
}
},
- "/apple-jobs/search": {
+ "/boxofficemojo/title": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Apple's public careers site (jobs.apple.com) via its server-rendered search page's embedded job data. Page size is fixed by Apple at 20 results. Search results carry identity/location/team metadata only — call the job endpoint for the full description and qualifications.",
- "operationId": "apple-jobs-search",
+ "description": "Returns normalized Box Office Mojo title release-group and market-gross tables from a public title page. Pass exactly one of `id`, `path`, or `url`.",
+ "operationId": "boxofficemojo-title",
"parameters": [
{
- "description": "Search query",
+ "description": "Box Office Mojo title id",
"in": "query",
- "name": "q",
- "required": true,
+ "name": "id",
"type": "string",
- "x-example": "software engineer"
+ "x-example": "tt0499549"
},
{
- "description": "Location filter in Apple's own slug format, e.g. united-states-USA or singapore-SGP. Free-text location names are not accepted -- call apple-jobs-locations to discover valid values.",
+ "description": "Box Office Mojo title path",
"in": "query",
- "name": "location",
+ "name": "path",
"type": "string",
- "x-example": "united-states-USA"
+ "x-example": "/title/tt0499549/"
},
{
- "description": "Page number, 1-based",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "description": "Absolute https://www.boxofficemojo.com title URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.boxofficemojo.com/title/tt0499549/"
}
],
"produces": [
@@ -203325,7 +232061,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applejobs.searchResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.titleResponseDoc"
}
},
"400": {
@@ -203334,12 +232070,24 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -203352,64 +232100,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Apple Jobs search",
+ "summary": "Box Office Mojo title detail",
"tags": [
- "Apple Jobs"
+ "Box Office Mojo"
]
}
},
- "/apple-maps/autocomplete": {
+ "/boxofficemojo/weekend/domestic": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Apple Maps typeahead suggestions for a partial query near a coordinate: query completions, matching businesses (resolved to the same place summary the search endpoint returns, with the place ID the place endpoint takes), and addresses.",
- "operationId": "apple-maps-autocomplete",
+ "description": "Returns normalized rows from Box Office Mojo's public domestic weekend chart. Empty upstream weekend pages return a typed not-found error rather than an empty success.",
+ "operationId": "boxofficemojo-weekend-domestic",
"parameters": [
{
- "description": "Partial search text to complete",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "blue bot"
- },
- {
- "description": "Center latitude the suggestions are biased to",
+ "description": "Domestic weekend year, from 1982 through 2100",
"in": "query",
- "name": "latitude",
+ "name": "year",
"required": true,
- "type": "number",
- "x-example": 37.7749
+ "type": "integer",
+ "x-example": 2025
},
{
- "description": "Center longitude the suggestions are biased to",
+ "description": "Weekend number, 1 through 53",
"in": "query",
- "name": "longitude",
+ "name": "week",
"required": true,
- "type": "number",
- "x-example": -122.4194
- },
- {
- "description": "Viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5.",
- "in": "query",
- "name": "span",
- "type": "number",
- "x-example": 0.05
- },
- {
- "description": "Display language as a BCP 47 tag. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
+ "type": "integer",
+ "x-example": 52
}
],
"produces": [
@@ -203419,7 +232138,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.autocompleteResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.domesticWeekendResponseDoc"
}
},
"400": {
@@ -203428,6 +232147,24 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -203440,56 +232177,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Apple Maps search suggestions for a partial query",
+ "summary": "Box Office Mojo domestic weekend box office",
"tags": [
- "Apple Maps"
+ "Box Office Mojo"
]
}
},
- "/apple-maps/categories": {
+ "/boxofficemojo/weekend/domestic/by-distributor": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the \"Find Nearby\" browse categories Apple Maps offers for an area (for example Restaurants, Coffee Shops, Gas Stations, Hotels, Parking, Grocery Stores), each with the key and name the category-search endpoint takes. The set is location-aware.",
- "operationId": "apple-maps-categories",
+ "description": "Returns normalized distributor rows from Box Office Mojo's public domestic weekend by-distributor chart. Empty upstream weekend pages return a typed not-found error rather than an empty success.",
+ "operationId": "boxofficemojo-weekend-domestic-by-distributor",
"parameters": [
{
- "description": "Center latitude",
+ "description": "Domestic weekend year, from 1982 through 2100",
"in": "query",
- "name": "latitude",
+ "name": "year",
"required": true,
- "type": "number",
- "x-example": 37.7749
+ "type": "integer",
+ "x-example": 2025
},
{
- "description": "Center longitude",
+ "description": "Weekend number, 1 through 53",
"in": "query",
- "name": "longitude",
+ "name": "week",
"required": true,
- "type": "number",
- "x-example": -122.4194
- },
- {
- "description": "Viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5.",
- "in": "query",
- "name": "span",
- "type": "number",
- "x-example": 0.05
- },
- {
- "description": "Display language as a BCP 47 tag. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
+ "type": "integer",
+ "x-example": 52
}
],
"produces": [
@@ -203499,7 +232215,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.categoriesResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.weekendDistributorResponseDoc"
}
},
"400": {
@@ -203508,6 +232224,24 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -203520,90 +232254,35 @@
"ApiKeyAuth": []
}
],
- "summary": "List Apple Maps browse categories for an area",
+ "summary": "Box Office Mojo domestic weekend by distributor",
"tags": [
- "Apple Maps"
+ "Box Office Mojo"
]
}
},
- "/apple-maps/category-search": {
+ "/boxofficemojo/weekend/domestic/estimates": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns places in one browse category near a coordinate without a keyword, in the same shape as the search endpoint (place summaries, region, relocation flag, and the refinement filters block). The category is a name from the categories endpoint for the same area (case-insensitive) or its key; an unknown name returns 400 listing the categories available there. Filters and sort work exactly as on the search endpoint.",
- "operationId": "apple-maps-category-search",
+ "description": "Returns normalized estimate-vs-actual rows from Box Office Mojo's public domestic weekend estimates chart. Empty upstream weekend pages return a typed not-found error rather than an empty success.",
+ "operationId": "boxofficemojo-weekend-domestic-estimates",
"parameters": [
{
- "description": "Category name (e.g. Coffee Shops, Restaurants) or key from /apple-maps/categories for the same area",
- "in": "query",
- "name": "category",
- "required": true,
- "type": "string",
- "x-example": "Coffee Shops"
- },
- {
- "description": "Search center latitude",
+ "description": "Domestic weekend year, from 1982 through 2100",
"in": "query",
- "name": "latitude",
+ "name": "year",
"required": true,
- "type": "number",
- "x-example": 37.7749
+ "type": "integer",
+ "x-example": 2025
},
{
- "description": "Search center longitude",
+ "description": "Weekend number, 1 through 53",
"in": "query",
- "name": "longitude",
+ "name": "week",
"required": true,
- "type": "number",
- "x-example": -122.4194
- },
- {
- "description": "Search viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5.",
- "in": "query",
- "name": "span",
- "type": "number",
- "x-example": 0.05
- },
- {
- "description": "Max places returned. Defaults to 25, maximum 100.",
- "in": "query",
- "name": "limit",
"type": "integer",
- "x-example": 25
- },
- {
- "description": "Display language as a BCP 47 tag. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
- },
- {
- "description": "Comma-separated filter keys from the filters block of an unfiltered category search for the same category and area. Unknown keys return 400 listing the available keys. Costs a second upstream call.",
- "in": "query",
- "name": "filters",
- "type": "string",
- "x-example": "OPEN_NOW"
- },
- {
- "description": "Result order. Costs a second upstream call.",
- "enum": [
- "best_match",
- "distance",
- "ratings"
- ],
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "ratings"
+ "x-example": 52
}
],
"produces": [
@@ -203613,7 +232292,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.searchResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.weekendEstimatesResponseDoc"
}
},
"400": {
@@ -203622,6 +232301,24 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -203634,124 +232331,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse one Apple Maps category near a coordinate",
+ "summary": "Box Office Mojo domestic weekend estimates",
"tags": [
- "Apple Maps"
+ "Box Office Mojo"
]
}
},
- "/apple-maps/directions": {
+ "/boxofficemojo/year/domestic": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Apple Maps routes between an origin and a destination, with optional intermediate stops, for driving, walking, or cycling. Each route carries its name, whether it is Apple's main or an alternate route, distance, live/historic/free-flow durations, toll and highway flags, Apple's route description and traffic note, and per-leg turn-by-turn steps (maneuver, road, shield, instruction text, distance, duration); detail=full adds each leg's path as coordinates. Departure time and avoid-tolls/highways/stairs preferences are supported. Transit routing is not available.",
- "operationId": "apple-maps-directions",
+ "description": "Returns normalized release rows from Box Office Mojo's public domestic yearly calendar-grosses chart.",
+ "operationId": "boxofficemojo-year-domestic",
"parameters": [
{
- "description": "Origin latitude",
- "in": "query",
- "name": "origin_latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7749
- },
- {
- "description": "Origin longitude",
- "in": "query",
- "name": "origin_longitude",
- "required": true,
- "type": "number",
- "x-example": -122.4194
- },
- {
- "description": "Destination latitude",
- "in": "query",
- "name": "destination_latitude",
- "required": true,
- "type": "number",
- "x-example": 37.8199
- },
- {
- "description": "Destination longitude",
+ "description": "Domestic box office year, from 1977 through 2100",
"in": "query",
- "name": "destination_longitude",
+ "name": "year",
"required": true,
- "type": "number",
- "x-example": -122.4783
- },
- {
- "description": "Intermediate stops as lat,lng pairs separated by |, at most 8",
- "in": "query",
- "name": "via",
- "type": "string",
- "x-example": "37.7955,-122.3937"
- },
- {
- "description": "Travel mode. Defaults to driving.",
- "enum": [
- "driving",
- "walking",
- "cycling"
- ],
- "in": "query",
- "name": "mode",
- "type": "string",
- "x-example": "driving"
- },
- {
- "description": "Driving only: prefer routes without tolls",
- "in": "query",
- "name": "avoid_tolls",
- "type": "boolean",
- "x-example": false
- },
- {
- "description": "Driving only: prefer routes without highways",
- "in": "query",
- "name": "avoid_highways",
- "type": "boolean",
- "x-example": false
- },
- {
- "description": "Walking only: prefer routes without stairs",
- "in": "query",
- "name": "avoid_stairs",
- "type": "boolean",
- "x-example": false
- },
- {
- "description": "Departure time as RFC 3339 for traffic-aware estimates. Defaults to now.",
- "in": "query",
- "name": "depart_at",
- "type": "string",
- "x-example": "2026-09-07T08:30:00Z"
- },
- {
- "description": "How much of each route to return. Defaults to steps.",
- "enum": [
- "summary",
- "steps",
- "full"
- ],
- "in": "query",
- "name": "detail",
- "type": "string",
- "x-example": "steps"
- },
- {
- "description": "Language for road names and instructions as a BCP 47 tag. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
+ "type": "integer",
+ "x-example": 2025
}
],
"produces": [
@@ -203761,7 +232361,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.directionsResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.domesticYearResponseDoc"
}
},
"400": {
@@ -203770,8 +232370,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -203788,69 +232394,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Apple Maps driving, walking, or cycling directions",
+ "summary": "Box Office Mojo domestic yearly box office",
"tags": [
- "Apple Maps"
+ "Box Office Mojo"
]
}
},
- "/apple-maps/eta": {
+ "/boxofficemojo/year/worldwide": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Apple Maps travel-time estimates between an origin and a destination: for each transport type Apple reports (driving always; walking when requested), the live best estimate, the historic and free-flow durations, and the route distance. Cheaper than the directions endpoint when only the time and distance are needed. Apple has no cycling ETA; use the directions endpoint for cycling.",
- "operationId": "apple-maps-eta",
+ "description": "Returns normalized release-group rows from Box Office Mojo's public worldwide yearly chart.",
+ "operationId": "boxofficemojo-year-worldwide",
"parameters": [
{
- "description": "Origin latitude",
- "in": "query",
- "name": "origin_latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7749
- },
- {
- "description": "Origin longitude",
- "in": "query",
- "name": "origin_longitude",
- "required": true,
- "type": "number",
- "x-example": -122.4194
- },
- {
- "description": "Destination latitude",
- "in": "query",
- "name": "destination_latitude",
- "required": true,
- "type": "number",
- "x-example": 37.8199
- },
- {
- "description": "Destination longitude",
+ "description": "Box office year, from 1977 through 2100",
"in": "query",
- "name": "destination_longitude",
+ "name": "year",
"required": true,
- "type": "number",
- "x-example": -122.4783
- },
- {
- "description": "Travel mode. Defaults to driving.",
- "enum": [
- "driving",
- "walking"
- ],
- "in": "query",
- "name": "mode",
- "type": "string",
- "x-example": "driving"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
+ "type": "integer",
+ "x-example": 2025
}
],
"produces": [
@@ -203860,7 +232424,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.etaResponseDoc"
+ "$ref": "#/definitions/boxofficemojo.worldwideYearResponseDoc"
}
},
"400": {
@@ -203869,8 +232433,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -203887,40 +232457,51 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Apple Maps travel-time estimates between two points",
+ "summary": "Box Office Mojo worldwide yearly box office",
"tags": [
- "Apple Maps"
+ "Box Office Mojo"
]
}
},
- "/apple-maps/guides": {
+ "/brand/retrieve": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the Apple Guides home page for the Worldwide scope or one city: the featured guide, the guide carousels (expert recommendations, latest, and similar rows), the city shortcut list, and the browse-by-publisher list. Each guide carries its id (the value the guide endpoint takes), title, description, last-modified time, place count, cover photo, source link, and publisher; each publisher carries its id, name, subtitle, website, and guide count.",
- "operationId": "apple-maps-guides",
+ "description": "Fetches a domain's homepage and Web App Manifest and extracts a normalized brand profile (title, description, brand colors normalized to hex, logos and icons ranked best-first, backdrops, socials, links, and any schema.org organization data). Enrichment-only fields that are not present in the page markup are returned as null.",
+ "operationId": "brand-retrieve",
"parameters": [
{
- "description": "City id from /apple-maps/guides/cities. Omit for the Worldwide guides home.",
+ "description": "Domain to retrieve brand data for, e.g. context.dev",
"in": "query",
- "name": "city_id",
+ "name": "domain",
+ "required": true,
"type": "string",
- "x-example": "8077516530309122779"
+ "x-example": "context.dev"
},
{
- "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Defaults to en-US.",
+ "description": "Accepted for compatibility; not applied in HTML-only mode",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
+ "name": "force_language",
+ "type": "string"
},
{
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "description": "Optimize for speed by skipping schema.org and footer-link extraction",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
+ "name": "maxSpeed",
+ "type": "boolean"
+ },
+ {
+ "description": "Cache freshness window in milliseconds, clamps to 1 day..1 year",
+ "in": "query",
+ "name": "maxAgeMs",
+ "type": "integer"
+ },
+ {
+ "description": "Upstream fetch timeout in milliseconds, clamps to 1000..300000",
+ "in": "query",
+ "name": "timeoutMS",
+ "type": "integer"
}
],
"produces": [
@@ -203930,7 +232511,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.guidesHomeResponseDoc"
+ "$ref": "#/definitions/brand.retrieveResponseDoc"
}
},
"400": {
@@ -203945,6 +232526,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "408": {
+ "description": "Request Timeout",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -203957,33 +232550,114 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse the Apple Guides home page worldwide or for one city",
+ "summary": "Retrieve brand data by domain",
"tags": [
- "Apple Maps"
+ "Brand"
]
}
},
- "/apple-maps/guides/cities": {
+ "/brave/images": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the Apple Guides city picker: every region (North America, Europe, Australia, and any Apple adds) with the cities it publishes guides for, each with its id, country, coordinates, and cover photo. Pass a city id to the guides home, publishers, or publisher endpoints to scope them to that city; omit it for the Worldwide scope.",
- "operationId": "apple-maps-guides-cities",
+ "description": "Returns normalized Brave image search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Brave Search image HTML and return 503 when Brave serves a challenge page or unusable HTML.",
+ "operationId": "brave-images",
"parameters": [
{
- "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Region and city names follow it. Defaults to en-US.",
+ "description": "Search query",
"in": "query",
- "name": "lang",
+ "name": "q",
+ "required": true,
"type": "string",
- "x-example": "en-US"
+ "x-example": "openai"
},
{
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "description": "Zero-based Brave result page; defaults to 0",
+ "in": "query",
+ "minimum": 0,
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
+ },
+ {
+ "description": "Results to return; defaults to 10, clamped to 1..50",
+ "in": "query",
+ "maximum": 50,
+ "minimum": 1,
+ "name": "count",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Brave result country; defaults to us",
+ "enum": [
+ "all",
+ "ar",
+ "at",
+ "au",
+ "be",
+ "br",
+ "ca",
+ "ch",
+ "cl",
+ "cn",
+ "de",
+ "dk",
+ "es",
+ "fi",
+ "fr",
+ "gb",
+ "gr",
+ "hk",
+ "id",
+ "in",
+ "it",
+ "jp",
+ "kr",
+ "mx",
+ "my",
+ "nl",
+ "no",
+ "nz",
+ "ph",
+ "pl",
+ "pt",
+ "ru",
+ "sa",
+ "se",
+ "sg",
+ "tr",
+ "tw",
+ "us",
+ "za"
+ ],
"in": "query",
"name": "country",
"type": "string",
- "x-example": "US"
+ "x-example": "us"
+ },
+ {
+ "description": "Brave UI language; defaults to en-us",
+ "enum": [
+ "de-de",
+ "en-ca",
+ "en-gb",
+ "en-in",
+ "en-us",
+ "fi-fi",
+ "fr-ca",
+ "fr-fr",
+ "ja-jp",
+ "pt-br",
+ "sq-al",
+ "sw-ke",
+ "zh-tw"
+ ],
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
}
],
"produces": [
@@ -203993,17 +232667,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.guidesCitiesResponseDoc"
+ "$ref": "#/definitions/brave.imagesResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "No results found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Brave upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -204014,41 +232706,142 @@
"ApiKeyAuth": []
}
],
- "summary": "List the regions and cities Apple Guides cover",
+ "summary": "Search Brave image results",
"tags": [
- "Apple Maps"
+ "Brave"
]
}
},
- "/apple-maps/guides/guide": {
+ "/brave/news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Apple Guide (curated collection) by id: title, description, last-modified time, cover photos, source link, publisher, and every place in the guide with the publisher's blurb for it plus the place's Apple place ID, name, category, coordinates, address, phone, website, rating, price level, hours, and photo.",
- "operationId": "apple-maps-guide",
+ "description": "Returns normalized Brave news search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Brave Search news HTML and return 503 when Brave serves a challenge page or unusable HTML.",
+ "operationId": "brave-news",
"parameters": [
{
- "description": "Guide id: from the guides home, a publisher page, a place's guide_ids, or the curated= value in a maps.apple.com/guides URL",
+ "description": "Search query",
"in": "query",
- "name": "guide_id",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "13100041759208417726"
+ "x-example": "openai"
},
{
- "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Defaults to en-US.",
+ "description": "Zero-based Brave result page; defaults to 0",
+ "in": "query",
+ "minimum": 0,
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
+ },
+ {
+ "description": "Results to return; defaults to 10, clamped to 1..50",
+ "in": "query",
+ "maximum": 50,
+ "minimum": 1,
+ "name": "count",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Brave result country; defaults to us",
+ "enum": [
+ "all",
+ "ar",
+ "at",
+ "au",
+ "be",
+ "br",
+ "ca",
+ "ch",
+ "cl",
+ "cn",
+ "de",
+ "dk",
+ "es",
+ "fi",
+ "fr",
+ "gb",
+ "gr",
+ "hk",
+ "id",
+ "in",
+ "it",
+ "jp",
+ "kr",
+ "mx",
+ "my",
+ "nl",
+ "no",
+ "nz",
+ "ph",
+ "pl",
+ "pt",
+ "ru",
+ "sa",
+ "se",
+ "sg",
+ "tr",
+ "tw",
+ "us",
+ "za"
+ ],
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Brave UI language; defaults to en-us",
+ "enum": [
+ "de-de",
+ "en-ca",
+ "en-gb",
+ "en-in",
+ "en-us",
+ "fi-fi",
+ "fr-ca",
+ "fr-fr",
+ "ja-jp",
+ "pt-br",
+ "sq-al",
+ "sw-ke",
+ "zh-tw"
+ ],
"in": "query",
"name": "lang",
"type": "string",
- "x-example": "en-US"
+ "x-example": "en-us"
},
{
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "description": "Preset time filter: any, day, week, month, year, or custom",
+ "enum": [
+ "any",
+ "day",
+ "week",
+ "month",
+ "year",
+ "custom"
+ ],
"in": "query",
- "name": "country",
+ "name": "time_range",
+ "type": "string"
+ },
+ {
+ "description": "Custom start date in YYYY-MM-DD; requires date_to",
+ "in": "query",
+ "name": "date_from",
"type": "string",
- "x-example": "US"
+ "x-example": "2026-03-01"
+ },
+ {
+ "description": "Custom end date in YYYY-MM-DD; requires date_from",
+ "in": "query",
+ "name": "date_to",
+ "type": "string",
+ "x-example": "2026-03-30"
}
],
"produces": [
@@ -204058,23 +232851,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.guideResponseDoc"
+ "$ref": "#/definitions/brave.newsResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Not Found",
+ "description": "No results found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Brave upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -204085,41 +232890,133 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Apple Guide with its places",
+ "summary": "Search Brave news results",
"tags": [
- "Apple Maps"
+ "Brave"
]
}
},
- "/apple-maps/guides/lookup": {
+ "/brave/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns guide summaries (id, title, description, last-modified time, place count, cover photo, source link) for up to 20 guide ids in one call, for example the guide_ids a place carries. Ids Apple does not return are listed in not_found. Publisher details are not part of this lookup; use the guide endpoint for a single guide's publisher and places.",
- "operationId": "apple-maps-guides-lookup",
+ "description": "Returns normalized web search results from Brave Search for a query string, along with offset-based pagination, related queries, discussions, videos, and the right-side knowledge card when Brave includes one. Use time_range for preset ranges or date_from/date_to for a custom YYYY-MM-DD range. Locale defaults to country=us and lang=en-us.",
+ "operationId": "brave-search",
"parameters": [
{
- "description": "Comma-separated Apple guide ids, 1 to 20",
+ "description": "Search query",
"in": "query",
- "name": "guide_ids",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "13100041759208417726,17954826775154719886"
+ "x-example": "openai"
},
{
- "description": "Display language as a BCP 47 tag. Defaults to en-US.",
+ "description": "Zero-based Brave result page",
+ "in": "query",
+ "minimum": 0,
+ "name": "offset",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Brave result country; defaults to us",
+ "enum": [
+ "all",
+ "ar",
+ "at",
+ "au",
+ "be",
+ "br",
+ "ca",
+ "ch",
+ "cl",
+ "cn",
+ "de",
+ "dk",
+ "es",
+ "fi",
+ "fr",
+ "gb",
+ "gr",
+ "hk",
+ "id",
+ "in",
+ "it",
+ "jp",
+ "kr",
+ "mx",
+ "my",
+ "nl",
+ "no",
+ "nz",
+ "ph",
+ "pl",
+ "pt",
+ "ru",
+ "sa",
+ "se",
+ "sg",
+ "tr",
+ "tw",
+ "us",
+ "za"
+ ],
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Brave UI language; defaults to en-us",
+ "enum": [
+ "de-de",
+ "en-ca",
+ "en-gb",
+ "en-in",
+ "en-us",
+ "fi-fi",
+ "fr-ca",
+ "fr-fr",
+ "ja-jp",
+ "pt-br",
+ "sq-al",
+ "sw-ke",
+ "zh-tw"
+ ],
"in": "query",
"name": "lang",
"type": "string",
- "x-example": "en-US"
+ "x-example": "en-us"
},
{
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "description": "Preset time filter: any, day, week, month, year, or custom",
+ "enum": [
+ "any",
+ "day",
+ "week",
+ "month",
+ "year",
+ "custom"
+ ],
"in": "query",
- "name": "country",
+ "name": "time_range",
+ "type": "string"
+ },
+ {
+ "description": "Custom start date in YYYY-MM-DD; requires date_to",
+ "in": "query",
+ "name": "date_from",
"type": "string",
- "x-example": "US"
+ "x-example": "2026-03-01"
+ },
+ {
+ "description": "Custom end date in YYYY-MM-DD; requires date_from",
+ "in": "query",
+ "name": "date_to",
+ "type": "string",
+ "x-example": "2026-03-30"
}
],
"produces": [
@@ -204129,17 +233026,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.guidesLookupResponseDoc"
+ "$ref": "#/definitions/brave.searchResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "No results found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -204150,56 +233059,106 @@
"ApiKeyAuth": []
}
],
- "summary": "Resolve up to 20 Apple Guide ids to guide summaries",
+ "summary": "Search Brave",
"tags": [
- "Apple Maps"
+ "Brave"
]
}
},
- "/apple-maps/guides/nearby": {
+ "/brave/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the guides Apple suggests for the area around a coordinate (\"Guides We Love\" for that location) as guide summaries, plus the Apple Guides city the area belongs to (with the city id the guides home endpoint takes). A coordinate outside any guides city returns an empty list.",
- "operationId": "apple-maps-guides-nearby",
+ "description": "Returns Brave autosuggest query completions for a query prefix. Locale defaults to country=us and lang=en-us. Suggestions are fetched from public Brave Search suggest JSON and trimmed to the requested count.",
+ "operationId": "brave-suggest",
"parameters": [
{
- "description": "Latitude of the area",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7749
- },
- {
- "description": "Longitude of the area",
+ "description": "Search query prefix",
"in": "query",
- "name": "longitude",
+ "name": "q",
"required": true,
- "type": "number",
- "x-example": -122.4194
+ "type": "string",
+ "x-example": "openai"
},
{
- "description": "Viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5.",
+ "description": "Suggestions to return; defaults to 10, clamped to 1..12",
"in": "query",
- "name": "span",
- "type": "number",
- "x-example": 0.05
+ "maximum": 12,
+ "minimum": 1,
+ "name": "count",
+ "type": "integer",
+ "x-example": 10
},
{
- "description": "Display language as a BCP 47 tag. Defaults to en-US.",
+ "description": "Brave result country; defaults to us",
+ "enum": [
+ "all",
+ "ar",
+ "at",
+ "au",
+ "be",
+ "br",
+ "ca",
+ "ch",
+ "cl",
+ "cn",
+ "de",
+ "dk",
+ "es",
+ "fi",
+ "fr",
+ "gb",
+ "gr",
+ "hk",
+ "id",
+ "in",
+ "it",
+ "jp",
+ "kr",
+ "mx",
+ "my",
+ "nl",
+ "no",
+ "nz",
+ "ph",
+ "pl",
+ "pt",
+ "ru",
+ "sa",
+ "se",
+ "sg",
+ "tr",
+ "tw",
+ "us",
+ "za"
+ ],
"in": "query",
- "name": "lang",
+ "name": "country",
"type": "string",
- "x-example": "en-US"
+ "x-example": "us"
},
{
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "description": "Brave UI language; defaults to en-us",
+ "enum": [
+ "de-de",
+ "en-ca",
+ "en-gb",
+ "en-in",
+ "en-us",
+ "fi-fi",
+ "fr-ca",
+ "fr-fr",
+ "ja-jp",
+ "pt-br",
+ "sq-al",
+ "sw-ke",
+ "zh-tw"
+ ],
"in": "query",
- "name": "country",
+ "name": "lang",
"type": "string",
- "x-example": "US"
+ "x-example": "en-us"
}
],
"produces": [
@@ -204209,17 +233168,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.guidesNearbyResponseDoc"
+ "$ref": "#/definitions/brave.suggestResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Brave upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -204230,48 +233201,142 @@
"ApiKeyAuth": []
}
],
- "summary": "Get the Apple Guides curated for the area around a coordinate",
+ "summary": "Suggest Brave search queries",
"tags": [
- "Apple Maps"
+ "Brave"
]
}
},
- "/apple-maps/guides/publisher": {
+ "/brave/videos": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Apple Guides publisher by id: name, subtitle, website, guide count, the cities the publisher offers as filters, and its guides (each with id, title, description, last-modified time, place count, cover photo, and source link). Pass one of the publisher's own city ids as city_id to return only the guides for that city.",
- "operationId": "apple-maps-guides-publisher",
+ "description": "Returns normalized Brave video search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Brave Search video HTML and return 503 when Brave serves a challenge page or unusable HTML.",
+ "operationId": "brave-videos",
"parameters": [
{
- "description": "Publisher id: from the guides home or publishers list, a guide's publisher.id, or the publisher= value in a maps.apple.com/guides URL",
+ "description": "Search query",
"in": "query",
- "name": "publisher_id",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "1706564968711360917"
+ "x-example": "openai"
},
{
- "description": "Restrict to one city: an id from this publisher's own cities list",
+ "description": "Zero-based Brave result page; defaults to 0",
"in": "query",
- "name": "city_id",
+ "minimum": 0,
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
+ },
+ {
+ "description": "Results to return; defaults to 10, clamped to 1..50",
+ "in": "query",
+ "maximum": 50,
+ "minimum": 1,
+ "name": "count",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Brave result country; defaults to us",
+ "enum": [
+ "all",
+ "ar",
+ "at",
+ "au",
+ "be",
+ "br",
+ "ca",
+ "ch",
+ "cl",
+ "cn",
+ "de",
+ "dk",
+ "es",
+ "fi",
+ "fr",
+ "gb",
+ "gr",
+ "hk",
+ "id",
+ "in",
+ "it",
+ "jp",
+ "kr",
+ "mx",
+ "my",
+ "nl",
+ "no",
+ "nz",
+ "ph",
+ "pl",
+ "pt",
+ "ru",
+ "sa",
+ "se",
+ "sg",
+ "tr",
+ "tw",
+ "us",
+ "za"
+ ],
+ "in": "query",
+ "name": "country",
"type": "string",
- "x-example": "18366846785603624515"
+ "x-example": "us"
},
{
- "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Defaults to en-US.",
+ "description": "Brave UI language; defaults to en-us",
+ "enum": [
+ "de-de",
+ "en-ca",
+ "en-gb",
+ "en-in",
+ "en-us",
+ "fi-fi",
+ "fr-ca",
+ "fr-fr",
+ "ja-jp",
+ "pt-br",
+ "sq-al",
+ "sw-ke",
+ "zh-tw"
+ ],
"in": "query",
"name": "lang",
"type": "string",
- "x-example": "en-US"
+ "x-example": "en-us"
},
{
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "description": "Preset time filter: any, day, week, month, year, or custom",
+ "enum": [
+ "any",
+ "day",
+ "week",
+ "month",
+ "year",
+ "custom"
+ ],
"in": "query",
- "name": "country",
+ "name": "time_range",
+ "type": "string"
+ },
+ {
+ "description": "Custom start date in YYYY-MM-DD; requires date_to",
+ "in": "query",
+ "name": "date_from",
"type": "string",
- "x-example": "US"
+ "x-example": "2026-03-01"
+ },
+ {
+ "description": "Custom end date in YYYY-MM-DD; requires date_from",
+ "in": "query",
+ "name": "date_to",
+ "type": "string",
+ "x-example": "2026-03-30"
}
],
"produces": [
@@ -204281,23 +233346,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.publisherResponseDoc"
+ "$ref": "#/definitions/brave.videosResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Not Found",
+ "description": "No results found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Brave upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -204308,40 +233385,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Apple Guides publisher and its guides",
+ "summary": "Search Brave video results",
"tags": [
- "Apple Maps"
+ "Brave"
]
}
},
- "/apple-maps/guides/publishers": {
+ "/breitbart/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the Apple Guides \"Browse by Publisher\" list for the Worldwide scope or one city, sorted by name: each publisher's id (the value the publisher endpoint takes), name, subtitle, website, and number of guides. With no city_id this is the complete enumeration of every publisher Apple lists, usable as the id lookup table for the publisher endpoint.",
- "operationId": "apple-maps-guides-publishers",
+ "description": "Returns public Breitbart article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "breitbart-article",
"parameters": [
{
- "description": "City id from /apple-maps/guides/cities. Omit for the Worldwide publisher list.",
- "in": "query",
- "name": "city_id",
- "type": "string",
- "x-example": "8077516530309122779"
- },
- {
- "description": "Display language as a BCP 47 tag, e.g. en-US, fr-FR. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
+ "description": "Canonical Breitbart article URL",
"in": "query",
- "name": "country",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "US"
+ "x-example": "https://www.breitbart.com/politics/2026/09/22/example-story/"
}
],
"produces": [
@@ -204351,7 +233412,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.guidesPublishersResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -204378,41 +233439,37 @@
"ApiKeyAuth": []
}
],
- "summary": "List Apple Guides publishers worldwide or for one city",
+ "summary": "Get Breitbart article content",
"tags": [
- "Apple Maps"
+ "Breitbart"
]
}
},
- "/apple-maps/place": {
+ "/breitbart/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Apple Maps place by its place ID: name, type, category taxonomy, coordinates, formatted and structured address, phone numbers, website, rating and review count, price level, weekly opening hours, amenities (payment, accessibility, parking, and similar yes/no attributes), photos, review snippets (text, rating, time, and source link, without reviewer identity), the business-claim link, and the IDs of Apple Guides that include the place. Accepts either the external place ID (starts with I, the place-id= value in a maps.apple.com/place URL) or the numeric ID from a search result.",
- "operationId": "apple-maps-place",
+ "description": "Returns one Breitbart author/contributor's public profile: name, a short bio/role line when the page carries one, and their recent articles.",
+ "operationId": "breitbart-author",
"parameters": [
{
- "description": "Apple place ID: external form (I594FECA0B369D14A) or numeric id from a search result",
+ "description": "Author slug, e.g. joshua-klein",
"in": "query",
- "name": "place_id",
- "required": true,
+ "name": "slug",
"type": "string",
- "x-example": "I594FECA0B369D14A"
+ "x-example": "joshua-klein"
},
{
- "description": "Display language as a BCP 47 tag, e.g. en-US, ja-JP, de-DE. Defaults to en-US.",
+ "description": "Canonical breitbart.com/author// URL, optionally with a /page// segment; alternative to slug",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en-US"
+ "x-example": "https://www.breitbart.com/author/joshua-klein/"
},
{
- "description": "Two-letter ISO 3166-1 country code selecting Apple's regional catalog. Defaults to US.",
+ "description": "1-based page of articles to return; defaults to 1",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -204422,7 +233479,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.placeResponseDoc"
+ "$ref": "#/definitions/publicnews.breitbartAuthorResponseDoc"
}
},
"400": {
@@ -204449,41 +233506,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Apple Maps place's full detail",
+ "summary": "Get a Breitbart author profile",
"tags": [
- "Apple Maps"
+ "Breitbart"
]
}
},
- "/apple-maps/place/photos": {
+ "/breitbart/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns all of a place's photos (the place endpoint caps at 20): the business cover photo first when present, then the hero photo, then every categorized photo with its category (Food & Drink, Interior, Exterior, ...), width and height.",
- "operationId": "apple-maps-place-photos",
+ "description": "Returns fresh headlines from one public Breitbart section hub page.",
+ "operationId": "breitbart-headlines",
"parameters": [
{
- "description": "Apple place ID (external I... form or numeric id)",
+ "description": "Breitbart section slug",
+ "enum": [
+ "politics",
+ "economy",
+ "border",
+ "immigration",
+ "national-security",
+ "entertainment",
+ "sports",
+ "tech",
+ "the-media",
+ "radio",
+ "clips",
+ "faith",
+ "world-news",
+ "europe",
+ "middle-east",
+ "africa",
+ "asia",
+ "latin-america",
+ "america250",
+ "on-the-hill-exclusive-video",
+ "news"
+ ],
"in": "query",
- "name": "place_id",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "I594FECA0B369D14A"
- },
- {
- "description": "Display language as a BCP 47 tag, e.g. en-US. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
+ "x-example": "politics"
}
],
"produces": [
@@ -204493,7 +233556,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.placePhotosResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -204502,12 +233565,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -204520,43 +233577,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List every photo Apple Maps carries for a place",
+ "summary": "Get Breitbart section headlines",
"tags": [
- "Apple Maps"
+ "Breitbart"
]
}
},
- "/apple-maps/places": {
+ "/breitbart/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the same full detail as the place endpoint for up to 20 place IDs in a single upstream call, plus the list of requested IDs Apple did not return. Accepts the external I... form and the numeric id interchangeably.",
- "operationId": "apple-maps-places",
- "parameters": [
- {
- "description": "Comma-separated Apple place ids, 1 to 20",
- "in": "query",
- "name": "place_ids",
- "required": true,
- "type": "string",
- "x-example": "I594FECA0B369D14A,243355970509228267"
- },
- {
- "description": "Display language as a BCP 47 tag. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
- }
- ],
+ "description": "Returns fresh Breitbart top stories from its public RSS feed.",
+ "operationId": "breitbart-news",
"produces": [
"application/json"
],
@@ -204564,11 +233594,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.placesResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -204585,49 +233615,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get full detail for up to 20 Apple Maps places in one call",
+ "summary": "Get Breitbart top stories",
"tags": [
- "Apple Maps"
+ "Breitbart"
]
}
},
- "/apple-maps/reverse-geocode": {
+ "/breitbart/sections": {
"get": {
- "consumes": [
+ "description": "Returns the live-verified public Breitbart editorial section inventory used by the headlines endpoint.",
+ "operationId": "breitbart-sections",
+ "produces": [
"application/json"
],
- "description": "Returns Apple Maps' address record for a coordinate: the matched place name and type (an address, street, or area of interest such as a neighborhood), the formatted and structured address, the matched center, the IANA timezone, and the display region.",
- "operationId": "apple-maps-reverse-geocode",
- "parameters": [
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
{
- "description": "Latitude to reverse-geocode",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7749
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Breitbart sections",
+ "tags": [
+ "Breitbart"
+ ]
+ }
+ },
+ "/brisbanetimes/article": {
+ "get": {
+ "description": "Returns one Brisbane Times article's metadata and the exact body paragraphs served by one anonymous page request, with the publisher's is_accessible_for_free, paywalled, and is_truncated flags. No paywall is bypassed or hidden content fetched.",
+ "operationId": "brisbanetimes-article",
+ "parameters": [
{
- "description": "Longitude to reverse-geocode",
+ "description": "Canonical Brisbane Times article URL",
"in": "query",
- "name": "longitude",
+ "name": "url",
"required": true,
- "type": "number",
- "x-example": -122.4194
- },
- {
- "description": "Display language as a BCP 47 tag. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
"type": "string",
- "x-example": "US"
+ "x-example": "https://www.brisbanetimes.com.au/national/queensland/hospital-denies-gas-leak-forced-evacuation-surgery-delays-20260930-p611l9.html"
}
],
"produces": [
@@ -204637,7 +233668,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.reverseGeocodeResponseDoc"
+ "$ref": "#/definitions/publicnews.brisbanetimesArticleResponseDoc"
}
},
"400": {
@@ -204664,90 +233695,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Reverse-geocode a coordinate with Apple Maps",
+ "summary": "Get Brisbane Times article content",
"tags": [
- "Apple Maps"
+ "Brisbane Times"
]
}
},
- "/apple-maps/search": {
+ "/brisbanetimes/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Apple Maps places matching a keyword, business name, category, or street address near a coordinate. Each place carries its Apple place ID (the value the place endpoint takes), name, category, coordinates, formatted and structured address, phone, website, rating and review count, price level, weekly opening hours, and a hero photo. Apple returns a bounded set per viewport (around 25 places for the default span) with no pagination; widen the span or move the center to cover more area. When nothing matches near the center Apple may relocate the search to a default region, reported by relocated=true and the region bounds. The response's filters block lists the refinement chips Apple offers for this query and area (open now, top rated, in guides, cuisines, price bands, amenities, accolades, sort); pass their keys back as filters and sort to refine the same search.",
- "operationId": "apple-maps-search",
+ "description": "Returns one public Brisbane Times `/by/-` profile with its name, biography, headshot, contact links, and recent story cards.",
+ "operationId": "brisbanetimes-author",
"parameters": [
{
- "description": "Keyword, business name, category, or street address to search for",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "coffee"
- },
- {
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7749
- },
- {
- "description": "Search center longitude",
+ "description": "Canonical Brisbane Times journalist URL",
"in": "query",
- "name": "longitude",
+ "name": "url",
"required": true,
- "type": "number",
- "x-example": -122.4194
- },
- {
- "description": "Search viewport size in degrees of latitude/longitude around the center. Defaults to 0.05 (roughly a 5km box); minimum 0.001, maximum 5.",
- "in": "query",
- "name": "span",
- "type": "number",
- "x-example": 0.05
- },
- {
- "description": "Max places returned. Defaults to 25, maximum 100.",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 25
- },
- {
- "description": "Display language as a BCP 47 tag, e.g. en-US, ja-JP, de-DE. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code selecting Apple's regional catalog. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
- },
- {
- "description": "Comma-separated filter keys from the filters block of an unfiltered search for the same query and area, e.g. OPEN_NOW, TOP_RATED, FEATURED_IN_GUIDES, PRICE_RANGE_MODERATE, modern_pizza_restaurant, ACCEPTS_CREDIT_CARDS. Unknown keys return 400 listing the available keys. Costs a second upstream search.",
- "in": "query",
- "name": "filters",
- "type": "string",
- "x-example": "OPEN_NOW,modern_pizza_restaurant"
- },
- {
- "description": "Result order. Costs a second upstream search.",
- "enum": [
- "best_match",
- "distance",
- "ratings"
- ],
- "in": "query",
- "name": "sort",
"type": "string",
- "x-example": "ratings"
+ "x-example": "https://www.brisbanetimes.com.au/by/william-davis-p537k8"
}
],
"produces": [
@@ -204757,7 +233722,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.searchResponseDoc"
+ "$ref": "#/definitions/publicnews.brisbanetimesAuthorResponseDoc"
}
},
"400": {
@@ -204766,6 +233731,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -204778,41 +233749,130 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Apple Maps places near a coordinate",
+ "summary": "Get a Brisbane Times journalist profile",
"tags": [
- "Apple Maps"
+ "Brisbane Times"
]
}
},
- "/apple-maps/transit-departures": {
+ "/brisbanetimes/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a transit stop or station's systems (e.g. BART, Muni Metro), lines (name, shield, color), and the upcoming departures Apple Maps shows, each with the line, headsign, direction, scheduled and live times, and real-time status. Takes the stop's Apple place ID (find stops with the search endpoint, e.g. a station name). A place that is not a transit stop returns 404.",
- "operationId": "apple-maps-transit-departures",
+ "description": "Returns current story cards from one observed Brisbane Times server-rendered section or populated topic page. `section` must be one of the exact slugs from `/brisbanetimes/sections`; unsupported and unresolved linkless paths are rejected before an upstream request. Off-brand story links on Traveller are omitted.",
+ "operationId": "brisbanetimes-headlines",
"parameters": [
{
- "description": "Apple place ID of a transit stop or station (external I... form or numeric id)",
+ "description": "Section or topic slug from /brisbanetimes/sections",
+ "enum": [
+ "national/queensland",
+ "politics",
+ "business",
+ "world",
+ "goodfood",
+ "lifestyle",
+ "traveller",
+ "sport",
+ "brisbane-news",
+ "politics/federal",
+ "politics/queensland",
+ "politics/nsw",
+ "politics/victoria",
+ "politics/western-australia",
+ "business/companies",
+ "business/markets",
+ "business/bullsnbears",
+ "business/the-economy",
+ "business/banking-and-finance",
+ "business/small-business",
+ "business/workplace",
+ "world/north-america",
+ "world/europe",
+ "world/asia",
+ "world/middle-east",
+ "world/south-america",
+ "world/africa",
+ "national",
+ "national/nsw",
+ "national/victoria",
+ "national/western-australia",
+ "opinion",
+ "property",
+ "property/news",
+ "property/living",
+ "sport/nrl",
+ "sport/rugby-union",
+ "sport/afl",
+ "sport/cricket",
+ "sport/soccer",
+ "sport/racing",
+ "sport/tennis",
+ "sport/netball",
+ "sport/basketball",
+ "sport/motorsport",
+ "sport/golf",
+ "sport/nfl",
+ "sport/athletics",
+ "sport/swimming",
+ "sport/boxing",
+ "goodfood/recipes",
+ "goodfood/tips-and-advice",
+ "goodfood/brisbane-eating-out",
+ "goodfood/drinks",
+ "culture",
+ "culture/movies",
+ "culture/tv-and-radio",
+ "culture/music",
+ "culture/celebrity",
+ "culture/books",
+ "culture/comedy",
+ "culture/dance",
+ "culture/musicals",
+ "culture/opera",
+ "culture/theatre",
+ "culture/art-and-design",
+ "culture/live-reviews",
+ "lifestyle/health-and-wellness",
+ "lifestyle/fashion",
+ "lifestyle/life-and-relationships",
+ "lifestyle/beauty",
+ "traveller/inspiration/destination-guides",
+ "traveller/inspiration",
+ "traveller/reviews-and-advice",
+ "traveller/travel-news",
+ "good-weekend",
+ "sunday-life",
+ "money",
+ "money/super-and-retirement",
+ "money/investing",
+ "money/banking",
+ "money/borrowing",
+ "money/saving",
+ "money/tax",
+ "money/planning-and-budgeting",
+ "education",
+ "healthcare",
+ "environment",
+ "environment/conservation",
+ "environment/climate-change",
+ "environment/sustainability",
+ "environment/weather",
+ "technology",
+ "technology/video-games",
+ "australia-higher-education",
+ "topic/media-and-marketing-5z7",
+ "topic/auctions-1nq1",
+ "topic/financing-1nq2",
+ "topic/style-luxury-1nij",
+ "topic/horoscopes-5yc",
+ "topic/home-technology-hqq",
+ "topic/phones-5zt",
+ "topic/gadgets-hqp",
+ "topic/explainers-1lz9"
+ ],
"in": "query",
- "name": "place_id",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "5261664738367631956"
- },
- {
- "description": "Display language as a BCP 47 tag, e.g. en-US. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
+ "x-example": "brisbane-news"
}
],
"produces": [
@@ -204822,7 +233882,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.transitDeparturesResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -204831,12 +233891,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -204849,57 +233903,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a transit stop's lines and live departures from Apple Maps",
+ "summary": "Get Brisbane Times section or topic headlines",
"tags": [
- "Apple Maps"
+ "Brisbane Times"
]
}
},
- "/apple-maps/venue/browse": {
+ "/brisbanetimes/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns an indoor venue's directory (mall, airport, stadium: categories such as Clothes, Shoes, Food, All Shops with their subcategories and levels) and, when a category is given, the places inside the venue for that category with the same summary shape as search. Find venues with the search endpoint; a place without a directory returns 404, an unknown category returns 400 listing the available ones.",
- "operationId": "apple-maps-venue-browse",
- "parameters": [
- {
- "description": "Apple place ID of the venue (external I... form or numeric id)",
- "in": "query",
- "name": "place_id",
- "required": true,
- "type": "string",
- "x-example": "14643260860569849804"
- },
- {
- "description": "Directory category or subcategory to browse, by name (case-insensitive) or key from the venue's directory. Omit to list the directory only.",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "Clothes"
- },
- {
- "description": "Max places returned. Defaults to 25, maximum 100.",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 25
- },
- {
- "description": "Display language as a BCP 47 tag, e.g. en-US. Defaults to en-US.",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-US"
- },
- {
- "description": "Two-letter ISO 3166-1 country code. Defaults to US.",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "US"
- }
- ],
+ "description": "Returns Brisbane Times's current public Latest News RSS feed: story title, canonical URL, summary, author, publication time, and lead image.",
+ "operationId": "brisbanetimes-news",
"produces": [
"application/json"
],
@@ -204907,17 +233920,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applemaps.venueBrowseResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -204934,43 +233941,55 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse the stores and places inside a venue on Apple Maps",
+ "summary": "Get Brisbane Times top stories",
"tags": [
- "Apple Maps"
+ "Brisbane Times"
]
}
},
- "/apple-podcasts/charts": {
+ "/brisbanetimes/sections": {
+ "get": {
+ "description": "Lists the 104 accepted Brisbane Times editorial surfaces (95 article-bearing section pages and nine populated topic hubs), each with its exact path slug, menu label, and requested Brisbane Times URL. Three linkless surfaces with no explicit empty-state marker are excluded.",
+ "operationId": "brisbanetimes-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Brisbane Times editorial sections",
+ "tags": [
+ "Brisbane Times"
+ ]
+ }
+ },
+ "/brooklinen/collections": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Apple Podcasts show chart rankings from public iTunes RSS JSON feeds. Supported collections are `toppodcasts` and `topaudiopodcasts`.",
- "operationId": "apple-podcasts-charts",
+ "description": "Returns normalized collections from Brooklinen (https://www.brooklinen.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
+ "operationId": "brooklinen-collections",
"parameters": [
{
- "description": "Chart collection",
- "in": "query",
- "name": "collection",
- "type": "string",
- "x-example": "toppodcasts"
- },
- {
- "description": "Numeric Apple podcast genre ID",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "category",
+ "name": "page",
"type": "integer",
- "x-example": 1303
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "x-example": 1
},
{
- "description": "Number of chart items to return",
+ "description": "Maximum collections, defaults to 50 and supports up to 250",
"in": "query",
"name": "limit",
"type": "integer",
@@ -204984,23 +234003,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applepodcasts.chartsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205011,54 +234030,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Podcasts chart rankings",
+ "summary": "List Brooklinen collections",
"tags": [
- "ApplePodcasts"
+ "Brooklinen"
]
}
},
- "/apple-podcasts/charts/rankings": {
+ "/brooklinen/collections/{handle}/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Apple Podcasts chart rankings from the modern podcasts.apple.com charts page, covering chart algorithms (`top`, `top-subscriber`, `top-series`) crossed with entity types (`podcasts`, `podcast-episodes`, `podcast-channels`) and an optional genre filter. A richer, differently-sourced capability than the legacy RSS-based `/apple-podcasts/charts` endpoint.",
- "operationId": "apple-podcasts-charts-rankings",
+ "description": "Returns normalized products from one Brooklinen (https://www.brooklinen.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
+ "operationId": "brooklinen-collection-products",
"parameters": [
{
- "description": "Chart algorithm. Allowed values: `top`, `top-subscriber`, `top-series`. Default `top`.",
- "in": "query",
- "name": "chart",
- "type": "string",
- "x-example": "top"
- },
- {
- "description": "Entity type. Allowed values: `podcasts`, `podcast-episodes`, `podcast-channels`. Default `podcasts`.",
- "in": "query",
- "name": "type",
+ "description": "Collection handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
"type": "string",
- "x-example": "podcasts"
+ "x-example": "collection-handle"
},
{
- "description": "Optional Apple Podcasts genre ID to filter the chart, e.g. 1303 for Comedy",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "genre",
+ "name": "page",
"type": "integer",
- "x-example": 1303
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "x-example": 1
},
{
- "description": "Number of chart entries to return, default 24, max 200",
+ "description": "Maximum products, defaults to 50 and supports up to 250",
"in": "query",
"name": "limit",
"type": "integer",
- "x-example": 24
+ "x-example": 50
}
],
"produces": [
@@ -205068,23 +234074,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applepodcasts.chartRankingsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205095,55 +234107,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Podcasts chart rankings by algorithm, type, and genre",
+ "summary": "List Brooklinen collection products",
"tags": [
- "ApplePodcasts"
+ "Brooklinen"
]
}
},
- "/apple-podcasts/episodes/search": {
+ "/brooklinen/pages": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Apple Podcasts episodes from Apple's public iTunes Search API.",
- "operationId": "apple-podcasts-episodes-search",
+ "description": "Returns normalized static pages from Brooklinen (https://www.brooklinen.com). The storefront URL is fixed server-side.",
+ "operationId": "brooklinen-pages",
"parameters": [
{
- "description": "Search term",
- "in": "query",
- "name": "term",
- "required": true,
- "type": "string",
- "x-example": "hardcore history"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Number of episodes per page",
+ "description": "Maximum static pages, defaults to 50 and supports up to 250",
"in": "query",
"name": "limit",
"type": "integer",
"x-example": 50
- },
- {
- "description": "Search page number (1-based)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
}
],
"produces": [
@@ -205153,23 +234143,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applepodcasts.episodeSearchResponseDoc"
+ "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205180,26 +234170,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Apple Podcasts episodes",
+ "summary": "List Brooklinen static pages",
"tags": [
- "ApplePodcasts"
+ "Brooklinen"
]
}
},
- "/apple-podcasts/new": {
+ "/brooklinen/pages/{handle}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the curated editorial shelves from podcasts.apple.com/{country}/new (New Shows, New Seasons, New Trailers, Essentials, and other seasonal spotlights). Shelves that merely mirror a Charts Rankings query are omitted here since `/apple-podcasts/charts/rankings` already covers that data.",
- "operationId": "apple-podcasts-new",
+ "description": "Returns normalized static page detail for one Brooklinen (https://www.brooklinen.com) page handle. The storefront URL is fixed server-side.",
+ "operationId": "brooklinen-page",
"parameters": [
{
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
+ "description": "Page handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
"type": "string",
- "x-example": "us"
+ "x-example": "page-handle"
}
],
"produces": [
@@ -205209,17 +234200,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applepodcasts.newShelvesResponseDoc"
+ "$ref": "#/definitions/shopifybrands.pageResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205230,55 +234233,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Podcasts curated \"New\" editorial shelves",
+ "summary": "Get a Brooklinen static page",
"tags": [
- "ApplePodcasts"
+ "Brooklinen"
]
}
},
- "/apple-podcasts/search": {
+ "/brooklinen/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Apple Podcasts shows from Apple's public iTunes Search API.",
- "operationId": "apple-podcasts-search",
+ "description": "Returns normalized products from Brooklinen's (https://www.brooklinen.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
+ "operationId": "brooklinen-products",
"parameters": [
{
- "description": "Search term",
- "in": "query",
- "name": "term",
- "required": true,
- "type": "string",
- "x-example": "hardcore history"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Number of shows per page",
+ "description": "Maximum products, defaults to 50 and supports up to 250",
"in": "query",
"name": "limit",
"type": "integer",
"x-example": 50
- },
- {
- "description": "Search page number (1-based)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
}
],
"produces": [
@@ -205288,23 +234269,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applepodcasts.searchResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205315,41 +234296,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Apple Podcasts shows",
+ "summary": "List Brooklinen products",
"tags": [
- "ApplePodcasts"
+ "Brooklinen"
]
}
},
- "/apple-podcasts/show/{id}": {
+ "/brooklinen/products/{handle}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized show metadata from Apple's public iTunes Lookup API.",
- "operationId": "apple-podcasts-show",
+ "description": "Returns normalized product detail for one Brooklinen (https://www.brooklinen.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
+ "operationId": "brooklinen-product",
"parameters": [
{
- "description": "Apple Podcasts show ID",
+ "description": "Product handle",
"in": "path",
- "name": "id",
+ "name": "handle",
"required": true,
"type": "string",
- "x-example": "173001861"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "x-example": "product-handle"
}
],
"produces": [
@@ -205359,29 +234326,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applepodcasts.showResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Show not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205392,48 +234359,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Podcasts show details",
+ "summary": "Get a Brooklinen product",
"tags": [
- "ApplePodcasts"
+ "Brooklinen"
]
}
},
- "/apple-podcasts/show/{id}/episodes": {
+ "/brooklinen/products/{handle}/recommendations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a show and its public Apple Podcasts episodes from Apple's iTunes Lookup API.",
- "operationId": "apple-podcasts-show-episodes",
+ "description": "Returns normalized recommended products for one Brooklinen (https://www.brooklinen.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
+ "operationId": "brooklinen-product-recommendations",
"parameters": [
{
- "description": "Apple Podcasts show ID",
+ "description": "Product handle",
"in": "path",
- "name": "id",
+ "name": "handle",
"required": true,
"type": "string",
- "x-example": "173001861"
+ "x-example": "product-handle"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Maximum products, defaults to 10 and supports up to 20",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
},
{
- "description": "Result language tag",
+ "description": "Recommendation intent. Allowed values: related, complementary",
+ "enum": [
+ "related",
+ "complementary"
+ ],
"in": "query",
- "name": "lang",
+ "name": "intent",
"type": "string",
- "x-example": "en-us"
- },
- {
- "description": "Number of episodes to return",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "x-example": "related"
}
],
"produces": [
@@ -205443,29 +234407,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applepodcasts.showEpisodesResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Show not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205476,41 +234440,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Podcasts show episodes",
+ "summary": "List Brooklinen product recommendations",
"tags": [
- "ApplePodcasts"
+ "Brooklinen"
]
}
},
- "/apple-podcasts/show/{id}/related": {
+ "/brooklinen/search/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the \"You Might Also Like\" rail for a single show, sourced from the modern podcasts.apple.com show page's listener-cohort recommendation data.",
- "operationId": "apple-podcasts-show-related",
+ "description": "Returns products, collections, and query suggestions from Brooklinen's (https://www.brooklinen.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
+ "operationId": "brooklinen-search-suggest",
"parameters": [
{
- "description": "Apple Podcasts show ID",
- "in": "path",
- "name": "id",
+ "description": "Search query",
+ "in": "query",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "173001861"
+ "x-example": "wool"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
"in": "query",
- "name": "country",
+ "name": "types",
"type": "string",
- "x-example": "us"
+ "x-example": "product,collection,query"
},
{
- "description": "Number of related shows to return, default 20, max 50",
+ "description": "Maximum results per type, defaults to 10 and supports up to 20",
"in": "query",
"name": "limit",
"type": "integer",
- "x-example": 20
+ "x-example": 10
}
],
"produces": [
@@ -205520,29 +234484,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/applepodcasts.relatedShowsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Show not found",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205553,61 +234511,42 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Apple Podcasts \"You Might Also Like\" related shows",
+ "summary": "Get Brooklinen search suggestions",
"tags": [
- "ApplePodcasts"
+ "Brooklinen"
]
}
},
- "/appstore/app": {
+ "/brooklinen/sitemap/urls": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized app metadata from the App Store lookup API. Provide either `id` (numeric track ID) or `app_id` (bundle ID). `id`/`app_id` can identify an iPhone, iPad, or Mac App Store listing.",
- "operationId": "appstore-app",
+ "description": "Returns capped URL entries from Brooklinen's (https://www.brooklinen.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
+ "operationId": "brooklinen-sitemap-urls",
"parameters": [
{
- "description": "App Store numeric track ID (digits only)",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "553834731"
- },
- {
- "description": "App Store bundle ID",
- "in": "query",
- "name": "app_id",
- "type": "string",
- "x-example": "com.midasplayer.apps.candycrushsaga"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
+ "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
+ "enum": [
+ "all",
+ "products",
+ "collections",
+ "pages",
+ "blogs",
+ "agentic_discovery",
+ "other"
+ ],
"in": "query",
- "name": "lang",
+ "name": "type",
"type": "string",
- "x-example": "en-us"
- },
- {
- "default": false,
- "description": "Include ratings histogram",
- "in": "query",
- "name": "ratings",
- "type": "boolean"
+ "x-example": "products"
},
{
- "default": false,
- "description": "Include the full device-platform compatibility list (adds one extra upstream fetch)",
+ "description": "Maximum URL entries, defaults to 50 and supports up to 250",
"in": "query",
- "name": "platforms",
- "type": "boolean"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -205617,29 +234556,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.appDetailsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "App not found",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205650,19 +234583,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve full App Store app details",
+ "summary": "List Brooklinen sitemap URLs",
"tags": [
- "AppStore"
+ "Brooklinen"
]
}
},
- "/appstore/categories": {
+ "/brooklinen/sitemaps": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns every category ID and chart collection accepted by `/appstore/list`, including Games and Magazines & Newspapers subgenres with their parent ID. Collections carry their device platform (`phone`, `pad`, `mac`), chart type (`top_free`, `top_paid`, `top_grossing`, `top`, `new`), and whether the feed currently returns entries.",
- "operationId": "appstore-categories",
+ "description": "Returns child sitemap URLs from Brooklinen's (https://www.brooklinen.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
+ "operationId": "brooklinen-sitemaps",
"produces": [
"application/json"
],
@@ -205670,17 +234603,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.categoriesResponseDoc"
+ "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205691,43 +234630,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve App Store chart categories and collections",
+ "summary": "List Brooklinen sitemaps",
"tags": [
- "AppStore"
+ "Brooklinen"
]
}
},
- "/appstore/developer/{dev_id}": {
+ "/brooklinen/store": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns App Store apps associated with a specific developer artist ID.",
- "operationId": "appstore-developer",
- "parameters": [
- {
- "description": "Developer artist ID",
- "in": "path",
- "name": "dev_id",
- "required": true,
- "type": "string",
- "x-example": "284882218"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
- }
- ],
+ "description": "Returns normalized storefront metadata for Brooklinen (https://www.brooklinen.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
+ "operationId": "brooklinen-store",
"produces": [
"application/json"
],
@@ -205735,29 +234650,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.developerResponseDoc"
+ "$ref": "#/definitions/shopifybrands.storeResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Developer not found",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205768,59 +234677,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve apps by developer ID",
+ "summary": "Get Brooklinen store metadata",
"tags": [
- "AppStore"
+ "Brooklinen"
]
}
},
- "/appstore/editorial": {
+ "/burberry/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the curated editorial shelves from one of Apple's per-device App Store landing pages (the same content shown by apps.apple.com's device switcher). `device` enum: `iphone`, `ipad`, `mac`, `vision`, `watch`, `tv`. `section` enum: `main` (the device's Today/Discover/Apps & Games landing page), `arcade` (the device's Apple Arcade landing page). Watch has no Arcade page — `device=watch` with `section=arcade` returns `400`.",
- "operationId": "appstore-editorial",
+ "description": "Lists every department, section, and leaf category from Burberry's own site navigation, flattened with a breadcrumb-style path. Each entry's url is exactly what burberry-category's own category parameter accepts. Filter to one top-level department with department (e.g. Women, Men, Children, Gifts, Trench, Scarves, Bags, Beauty & Fragrances, Sale); omit for every department. See the response's own departments field for the live list.",
+ "operationId": "burberry-categories",
"parameters": [
{
- "description": "Apple device catalog",
- "enum": [
- "iphone",
- "ipad",
- "mac",
- "vision",
- "watch",
- "tv"
- ],
- "in": "query",
- "name": "device",
- "required": true,
- "type": "string"
- },
- {
- "default": "main",
- "description": "Editorial section within the device",
- "enum": [
- "main",
- "arcade"
- ],
- "in": "query",
- "name": "section",
- "type": "string"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
+ "description": "Top-level department to filter to, e.g. Women, Men, Children -- omit for every department",
"in": "query",
- "name": "lang",
+ "name": "department",
"type": "string",
- "x-example": "en-us"
+ "x-example": "Women"
}
],
"produces": [
@@ -205830,29 +234706,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.editorialResponseDoc"
+ "$ref": "#/definitions/burberry.categoriesResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Page not found",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205863,56 +234733,56 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve an App Store device or Arcade editorial landing page",
+ "summary": "List Burberry categories",
"tags": [
- "AppStore"
+ "Burberry"
]
}
},
- "/appstore/editorial/category": {
+ "/burberry/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the curated editorial shelves for one device category page (e.g. \"Entertainment Apps for Vision\"). `category_id` is a numeric, device-specific editorial page ID — not a static enum — discovered from an `appstore_editorial` response for the SAME `device`, in its \"Browse by Category\" shelf items' `destination_id` field. `device` enum: `iphone`, `ipad`, `mac`, `vision`, `watch`, `tv`.",
- "operationId": "appstore-editorial-category",
+ "description": "Returns one page (20 products) of a Burberry category/browse listing. category is the site-relative category path, e.g. /l/womens-clothing/new-arrivals/ -- use burberry-categories to discover every valid value instead of guessing from site URLs. offset paginates in increments of 20 (the upstream's own fixed page size). sort selects the result order. The response includes the upstream's own available filters (facets) with live per-option result counts; feed a selection back in via facets, a comma-separated list of property:value pairs taken from this same response's facets field (e.g. benefit:bags,dotcomreportingcolour:black -- see a live response for the values valid for that category). At most one value per facet property; an unmatched or invalid combination returns a well-formed empty result, not an error.",
+ "operationId": "burberry-category",
"parameters": [
{
- "description": "Apple device catalog",
- "enum": [
- "iphone",
- "ipad",
- "mac",
- "vision",
- "watch",
- "tv"
- ],
+ "description": "Site-relative category path -- see burberry-categories",
"in": "query",
- "name": "device",
+ "name": "category",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "/l/womens-clothing/new-arrivals/"
},
{
- "description": "Numeric App Store editorial page ID, discovered from appstore_editorial (same device)",
+ "default": 0,
+ "description": "Zero-based result offset, in increments of 20",
"in": "query",
- "name": "category_id",
- "required": true,
- "type": "string",
- "x-example": "6503709728"
+ "maximum": 100000,
+ "minimum": 0,
+ "name": "offset",
+ "type": "integer"
},
{
- "description": "Two-letter storefront country code",
+ "default": "default",
+ "description": "Sort order",
+ "enum": [
+ "default",
+ "price_asc",
+ "price_desc",
+ "newest"
+ ],
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Result language tag",
+ "description": "Comma-separated property:value facet filters, taken from this same response's own facets field, e.g. benefit:bags,dotcomreportingcolour:black -- at most one value per property",
"in": "query",
- "name": "lang",
+ "name": "facets",
"type": "string",
- "x-example": "en-us"
+ "x-example": "benefit:bags"
}
],
"produces": [
@@ -205922,29 +234792,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.editorialResponseDoc"
+ "$ref": "#/definitions/burberry.categoryResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Category page not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -205955,61 +234825,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve an App Store category-scoped editorial page",
+ "summary": "Browse a Burberry category",
"tags": [
- "AppStore"
+ "Burberry"
]
}
},
- "/appstore/list": {
+ "/burberry/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns ranked App Store apps from an iTunes RSS collection, optionally expanded to full lookup details. `collection` enum: `topfreeapplications`, `toppaidapplications`, `topgrossingapplications`, `topfreeipadapplications`, `toppaidipadapplications`, `topgrossingipadapplications`, `topmacapps`, `topfreemacapps`, `topgrossingmacapps`, `toppaidmacapps`, `newapplications`, `newfreeapplications`, `newpaidapplications`. Of the Mac collections, only `topfreemacapps` currently returns ranked apps — `topmacapps`, `topgrossingmacapps`, and `toppaidmacapps` are accepted but Apple's feed for them is currently empty. There is no separate Games `collection` — combine any collection with `category=6014` (or a Games subgenre ID, e.g. `7012` for Puzzle) to get its Games-only equivalent, e.g. Top Free Games. See the endpoint markdown for the full category ID table.",
- "operationId": "appstore-list",
+ "description": "Returns product detail for one Burberry product page: name, sku, colour, material, description, price, stock status, every product image, and every other purchasable colourway of the same style. url is the site-relative product path, e.g. /check-cashmere-cardigan-p81336111, as returned by burberry-search's or burberry-category's own products[].url field.",
+ "operationId": "burberry-product",
"parameters": [
{
- "description": "Chart collection slug, see description for the full enum",
- "in": "query",
- "name": "collection",
- "type": "string",
- "x-example": "topfreeapplications"
- },
- {
- "description": "Numeric App Store category ID, see description for the full enum; e.g. 6014 = Games, 7012 = Games/Puzzle",
- "in": "query",
- "name": "category",
- "type": "integer",
- "x-example": 6014
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
+ "description": "Site-relative product path, from a search or category result's url field",
"in": "query",
- "name": "lang",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "en-us"
- },
- {
- "description": "Number of apps to return",
- "in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 50
- },
- {
- "default": false,
- "description": "Expand each app via lookup API",
- "in": "query",
- "name": "full_detail",
- "type": "boolean"
+ "x-example": "/check-cashmere-cardigan-p81336111"
}
],
"produces": [
@@ -206019,23 +234855,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.listResultsResponseDoc"
+ "$ref": "#/definitions/burberry.productResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206046,41 +234888,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve App Store collection rankings",
+ "summary": "Get a Burberry product",
"tags": [
- "AppStore"
+ "Burberry"
]
}
},
- "/appstore/privacy/{id}": {
+ "/burberry/related": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the app privacy cards shown on the App Store page, including data categories and purposes.",
- "operationId": "appstore-privacy",
+ "description": "Returns the cross-sell surfaces a real Burberry product page itself loads for that product: similar_products (algorithmically similar items) and shop_the_look (other pieces in the same styled outfit, when the upstream has curated one -- most products have none, returned as a well-formed empty list, not an error). url is the site-relative product path, e.g. /check-cashmere-cardigan-p81336111, as returned by burberry-search's, burberry-category's, or burberry-product's own url field.",
+ "operationId": "burberry-related",
"parameters": [
{
- "description": "App Store numeric track ID (digits only)",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "324684580"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Result language tag",
+ "description": "Site-relative product path, from a search, category, or product result's url field",
"in": "query",
- "name": "lang",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "en-us"
+ "x-example": "/check-cashmere-cardigan-p81336111"
}
],
"produces": [
@@ -206090,29 +234918,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.privacyResponseDoc"
+ "$ref": "#/definitions/burberry.relatedResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "App not found",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206123,47 +234945,56 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve App Store privacy disclosures",
+ "summary": "Get related Burberry products",
"tags": [
- "AppStore"
+ "Burberry"
]
}
},
- "/appstore/ratings": {
+ "/burberry/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns total ratings count and the 1-5 star histogram shown on the App Store product page.",
- "operationId": "appstore-ratings",
+ "description": "Searches Burberry's product catalog by keyword. Returns normalized product summaries plus the upstream's own available filters (facets) with live per-option result counts. offset paginates in increments of 20 (the upstream's own fixed page size). sort selects the result order. facets applies a facet selection back, a comma-separated list of property:value pairs taken from this same response's facets field (e.g. benefit:bags,dotcomreportingcolour:black). A query with no matches, or a facet combination with no matches, returns a well-formed empty result, not an error. Unlike burberry-category, this response has no true grand-total result count -- only the current page's own count.",
+ "operationId": "burberry-search",
"parameters": [
{
- "description": "App Store numeric track ID (digits only)",
+ "description": "Search keyword",
"in": "query",
- "name": "id",
+ "name": "query",
+ "required": true,
"type": "string",
- "x-example": "553834731"
+ "x-example": "trench"
},
{
- "description": "App Store bundle ID",
+ "default": 0,
+ "description": "Zero-based result offset, in increments of 20",
"in": "query",
- "name": "app_id",
- "type": "string",
- "x-example": "com.midasplayer.apps.candycrushsaga"
+ "maximum": 100000,
+ "minimum": 0,
+ "name": "offset",
+ "type": "integer"
},
{
- "description": "Two-letter storefront country code",
+ "default": "default",
+ "description": "Sort order",
+ "enum": [
+ "default",
+ "price_asc",
+ "price_desc",
+ "newest"
+ ],
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Result language tag",
+ "description": "Comma-separated property:value facet filters, taken from this same response's own facets field, e.g. benefit:bags,dotcomreportingcolour:black -- at most one value per property",
"in": "query",
- "name": "lang",
+ "name": "facets",
"type": "string",
- "x-example": "en-us"
+ "x-example": "benefit:bags"
}
],
"produces": [
@@ -206173,29 +235004,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.ratingsResponseDoc"
+ "$ref": "#/definitions/burberry.searchResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "App not found",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206206,65 +235031,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve App Store ratings histogram",
+ "summary": "Search Burberry products",
"tags": [
- "AppStore"
+ "Burberry"
]
}
},
- "/appstore/reviews": {
+ "/burberry/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of customer reviews for an app. Provide either `id` (numeric track ID) or `app_id` (bundle ID).",
- "operationId": "appstore-reviews",
+ "description": "Returns Burberry's own search-box suggestions (typeahead) for a partial query: a flat list of suggested search phrases, each with its own live result count on the search index. Not product data.",
+ "operationId": "burberry-suggest",
"parameters": [
{
- "description": "App Store numeric track ID (digits only)",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "553834731"
- },
- {
- "description": "App Store bundle ID",
- "in": "query",
- "name": "app_id",
- "type": "string",
- "x-example": "com.midasplayer.apps.candycrushsaga"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Review page number (1-10)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "default": "mostRecent",
- "description": "Sort order",
- "enum": [
- "mostRecent",
- "mostHelpful"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Result language tag",
+ "description": "Partial search query",
"in": "query",
- "name": "lang",
+ "name": "query",
+ "required": true,
"type": "string",
- "x-example": "en-us"
+ "x-example": "trench"
}
],
"produces": [
@@ -206274,29 +235061,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.reviewsResponseDoc"
+ "$ref": "#/definitions/burberry.suggestResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "App not found, or not published in the requested storefront",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206307,74 +235088,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve App Store reviews",
+ "summary": "Get Burberry search-box suggestions",
"tags": [
- "AppStore"
+ "Burberry"
]
}
},
- "/appstore/search": {
+ "/burgerking/availability": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns App Store search results for a term. Set `ids_only=true` to return only app IDs. `platform` enum: `phone`, `pad`, `mac`.",
- "operationId": "appstore-search",
+ "description": "Returns one restaurant's live open/closed status per order channel (curbside, delivery, drive-thru, eat-in, mobile-order drive-thru, takeout), distinct from /burgerking/locations' published weekly schedule. Each channel carries whether it is taking orders right now, its current open window when open, and the following window's start/end -- a channel with no current or next window at all means this restaurant does not offer it, not merely that it is closed. Also returns the restaurant's own local time, timezone and an overall available flag. Setting forecast=true additionally returns a multi-day forward schedule per channel, including two catering-only channels not present in the current-status list.",
+ "operationId": "burgerking-availability",
"parameters": [
{
- "description": "Search term",
+ "description": "Burger King's numeric store id, from /burgerking/locations",
"in": "query",
- "name": "term",
+ "name": "store_id",
"required": true,
"type": "string",
- "x-example": "panda"
- },
- {
- "description": "Number of apps per page",
- "in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 50
- },
- {
- "description": "Search page number (1-based)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "x-example": "17871"
},
{
- "description": "Result language tag",
+ "description": "RBI market the store belongs to, one of `US`, `CA` (default `US`)",
"in": "query",
- "name": "lang",
+ "name": "market",
"type": "string",
- "x-example": "en-us"
- },
- {
- "default": false,
- "description": "Return only app IDs",
- "in": "query",
- "name": "ids_only",
- "type": "boolean"
+ "x-example": "US"
},
{
- "default": "phone",
- "description": "App Store catalog to search: phone, pad, mac",
- "enum": [
- "phone",
- "pad",
- "mac"
- ],
+ "description": "Include a multi-day forward schedule per channel (default false)",
"in": "query",
- "name": "platform",
- "type": "string"
+ "name": "forecast",
+ "type": "boolean",
+ "x-example": false
}
],
"produces": [
@@ -206384,23 +235132,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.searchResultsResponseDoc"
+ "$ref": "#/definitions/burgerking.availabilityResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206411,47 +235165,70 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the App Store",
+ "summary": "Get one Burger King restaurant's real-time fulfillment status",
"tags": [
- "AppStore"
+ "Burger King"
]
}
},
- "/appstore/similar": {
+ "/burgerking/locations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the related apps shown on the App Store product page. Provide either `id` (numeric track ID) or `app_id` (bundle ID).",
- "operationId": "appstore-similar",
+ "description": "Returns Burger King restaurants near a latitude/longitude. Each restaurant carries its internal id and numeric store id (the value /burgerking/menu and /burgerking/availability take), full address with coordinates, phone, the operating franchise group, amenity flags (breakfast, delivery, drive-thru, playground, takeout, wifi, halal, dark kitchen) and the full published week of hours for dining room, drive-thru, delivery and curbside separately. A coordinate with no nearby Burger King returns an empty list rather than an error. Setting include_availability=true additionally returns each restaurant's live per-channel open/closed status in one call, the same shape /burgerking/availability returns -- note that path is capped at a fixed page (up to 20 restaurants) rather than honoring max_results beyond that. Setting delivery_only=true instead restricts results to restaurants that Burger King's own delivery service actually considers deliverable to this coordinate -- a genuine delivery-zone match, not the same set as filtering has_delivery=true. include_availability and delivery_only cannot be combined.",
+ "operationId": "burgerking-locations",
"parameters": [
{
- "description": "App Store numeric track ID (digits only)",
+ "description": "Search center latitude",
"in": "query",
- "name": "id",
- "type": "string",
- "x-example": "553834731"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 40.7128
},
{
- "description": "App Store bundle ID",
+ "description": "Search center longitude",
"in": "query",
- "name": "app_id",
- "type": "string",
- "x-example": "com.midasplayer.apps.candycrushsaga"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -74.006
},
{
- "description": "Two-letter storefront country code",
+ "description": "Search radius in meters, 1-50000 (default 8000)",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "radius",
+ "type": "integer",
+ "x-example": 8000
},
{
- "description": "Result language tag",
+ "description": "Maximum restaurants to return, 1-50 (default 20)",
"in": "query",
- "name": "lang",
+ "name": "max_results",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "description": "RBI market to search, one of `US`, `CA` (default `US`)",
+ "in": "query",
+ "name": "market",
"type": "string",
- "x-example": "en-us"
+ "x-example": "US"
+ },
+ {
+ "description": "Include each restaurant's live per-channel open/closed status (default false)",
+ "in": "query",
+ "name": "include_availability",
+ "type": "boolean",
+ "x-example": false
+ },
+ {
+ "description": "Restrict to restaurants that actually deliver to this coordinate, a genuine delivery-zone match distinct from the has_delivery flag (default false)",
+ "in": "query",
+ "name": "delivery_only",
+ "type": "boolean",
+ "x-example": false
}
],
"produces": [
@@ -206461,29 +235238,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.similarResponseDoc"
+ "$ref": "#/definitions/burgerking.locationsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "App not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206494,34 +235271,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve \"You Might Also Like\" apps",
+ "summary": "Find Burger King restaurants near a location",
"tags": [
- "AppStore"
+ "Burger King"
]
}
},
- "/appstore/suggest/{term}": {
+ "/burgerking/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns suggested search terms for the given partial keyword.",
- "operationId": "appstore-suggest",
+ "description": "Returns one restaurant's full menu grouped into categories (e.g. \"Breakfast Sandwiches\", \"Flame Grilled Burgers\"). Every entry is an item, a combo, or a picker (a variant-choice product such as \"choose your drink size\") and carries a delivery and pickup price -- these genuinely differ -- plus calories, detailed nutrition facts and flagged allergens when Burger King publishes them, and an image. Prices and availability reflect this specific restaurant, not a national default.",
+ "operationId": "burgerking-menu",
"parameters": [
{
- "description": "Partial search term",
- "in": "path",
- "name": "term",
+ "description": "Burger King's numeric store id, from /burgerking/locations",
+ "in": "query",
+ "name": "store_id",
"required": true,
"type": "string",
- "x-example": "panda"
+ "x-example": "17871"
},
{
- "description": "Two-letter storefront country code",
+ "description": "RBI market the store belongs to, one of `US`, `CA` (default `US`)",
"in": "query",
- "name": "country",
+ "name": "market",
"type": "string",
- "x-example": "us"
+ "x-example": "US"
}
],
"produces": [
@@ -206531,23 +235308,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.suggestResponseDoc"
+ "$ref": "#/definitions/burgerking.menuResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206558,41 +235341,42 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve App Store search suggestions",
+ "summary": "Get one Burger King restaurant's full priced menu",
"tags": [
- "AppStore"
+ "Burger King"
]
}
},
- "/appstore/version-history/{id}": {
+ "/burgerking/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the version history entries shown in the App Store \"What's New\" section.",
- "operationId": "appstore-version-history",
+ "description": "Returns one menu entry's full detail (name, description, price, image, nutrition, allergens) plus its customization tree, when it has one -- a combo's courses and their swappable entree/side/drink choices, a picker's size/variant choices, or a customizable item's ingredient toggle groups (e.g. \"Bacon\": no/regular/extra) and their price deltas. Options recurses through the full upstream structure, so a combo's entree choice carries its own ingredient toggles too, not just the combo's own top-level courses. A plain, non-customizable item returns an empty options list.",
+ "operationId": "burgerking-product",
"parameters": [
{
- "description": "App Store numeric track ID (digits only)",
- "in": "path",
- "name": "id",
+ "description": "Burger King's numeric store id, from /burgerking/locations",
+ "in": "query",
+ "name": "store_id",
"required": true,
"type": "string",
- "x-example": "553834731"
+ "x-example": "17871"
},
{
- "description": "Two-letter storefront country code",
+ "description": "The item, combo, or picker id, from /burgerking/menu",
"in": "query",
- "name": "country",
+ "name": "item_id",
+ "required": true,
"type": "string",
- "x-example": "us"
+ "x-example": "item_26"
},
{
- "description": "Result language tag",
+ "description": "RBI market the store belongs to, one of `US`, `CA` (default `US`)",
"in": "query",
- "name": "lang",
+ "name": "market",
"type": "string",
- "x-example": "en-us"
+ "x-example": "US"
}
],
"produces": [
@@ -206602,29 +235386,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/appstore.versionHistoryResponseDoc"
+ "$ref": "#/definitions/burgerking.productResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "App not found",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206635,26 +235419,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve App Store version history",
+ "summary": "Get one Burger King item, combo, or picker's full detail and customization tree",
"tags": [
- "AppStore"
+ "Burger King"
]
}
},
- "/arbys/categories": {
+ "/businessinsider/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Arby's US menu's top-level categories -- Slow Roasted Beef, Crispy Juicy Chicken, Meals, Sides & Snacks, Beverages, Desserts, Kids Menu and others. Each entry's slug is the value GET /arbys/menu takes. store_id (optional, default 0) selects which pricing snapshot categories' item counts are read from; the default 0 is Arby's own reference catalog and carries no prices at all -- pass a store_id you already know (for example one you have seen on arbys.com after picking a location) to price GET /arbys/menu's items against a specific store. There is no location-lookup endpoint in this family.",
- "operationId": "arbys-categories",
+ "description": "Returns public Business Insider article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "businessinsider-article",
"parameters": [
{
- "description": "Optional. Store id to read the catalog from, default 0 (Arby's priceless national reference catalog).",
+ "description": "Canonical Business Insider article URL",
"in": "query",
- "name": "store_id",
- "type": "integer",
- "x-example": 0
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.businessinsider.com/markets/example-2026-09-21"
}
],
"produces": [
@@ -206664,7 +235446,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/arbys.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -206673,8 +235455,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206691,33 +235473,30 @@
"ApiKeyAuth": []
}
],
- "summary": "List Arby's menu categories",
+ "summary": "Get Business Insider article content",
"tags": [
- "Arbys"
+ "Business Insider"
]
}
},
- "/arbys/directory": {
+ "/businessinsider/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one level of Arby's US store directory: every state Arby's serves with its store count (no params), one state's cities (state given), or one city's stores (state and city given) -- id, address, and phone only, pair with GET /arbys/location for hours/amenities/status. Unlike GET /arbys/locations, this needs no coordinate; it is a plain browse of the whole ~3,200-store US chain.",
- "operationId": "arbys-directory",
+ "description": "Returns one Business Insider author's public profile: name, job title, bio, social accounts, and their recent articles.",
+ "operationId": "businessinsider-author",
"parameters": [
{
- "description": "Optional. Two-letter US state abbreviation. Omit to list every state.",
+ "description": "Author slug",
"in": "query",
- "name": "state",
+ "name": "slug",
"type": "string",
- "x-example": "OH"
+ "x-example": "peter-kafka"
},
{
- "description": "Optional. City name, requires state. Omit to list every city in the state.",
+ "description": "Canonical businessinsider.com/author/ URL; alternative to slug",
"in": "query",
- "name": "city",
+ "name": "url",
"type": "string",
- "x-example": "Youngstown"
+ "x-example": "https://www.businessinsider.com/author/peter-kafka"
}
],
"produces": [
@@ -206727,7 +235506,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/arbys.directoryResponseDoc"
+ "$ref": "#/definitions/publicnews.businessInsiderAuthorResponseDoc"
}
},
"400": {
@@ -206736,8 +235515,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -206754,27 +235533,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse Arby's US store directory by state and city",
+ "summary": "Get a Business Insider author profile",
"tags": [
- "Arbys"
+ "Business Insider"
]
}
},
- "/arbys/location": {
+ "/businessinsider/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Arby's restaurant directly by its store id (e.g. one found via GET /arbys/locations), with the same address, hours, amenities, and capability fields as that endpoint's results, minus distance (there is no search center for a direct lookup).",
- "operationId": "arbys-location",
+ "description": "Returns fresh headlines from one public Business Insider section.",
+ "operationId": "businessinsider-headlines",
"parameters": [
{
- "description": "A real Arby's store id, e.g. one returned by GET /arbys/locations",
+ "description": "Business Insider section slug",
+ "enum": [
+ "business",
+ "markets",
+ "technology",
+ "politics",
+ "strategy",
+ "finance",
+ "science",
+ "lifestyle",
+ "reviews"
+ ],
"in": "query",
- "name": "store_id",
+ "name": "section",
"required": true,
- "type": "integer",
- "x-example": 8725
+ "type": "string",
+ "x-example": "business"
}
],
"produces": [
@@ -206784,7 +235571,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/arbys.locationResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -206793,18 +235580,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -206817,58 +235592,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Look up one Arby's restaurant by store id",
+ "summary": "Get Business Insider section headlines",
"tags": [
- "Arbys"
+ "Business Insider"
]
}
},
- "/arbys/locations": {
+ "/businessinsider/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Arby's restaurants within a radius of a coordinate, nearest first, with address, phone, coordinates, distance, open/closed status, hours, amenities, and pickup/delivery capability flags. Each result's store_id also prices GET /arbys/menu and GET /arbys/categories. To search from a free-text address instead of coordinates, resolve it first with GET /geocoding/search.",
- "operationId": "arbys-locations",
- "parameters": [
- {
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 32.787706
- },
- {
- "description": "Search center longitude",
- "in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -96.79985
- },
- {
- "description": "Optional. Search radius in miles, 1-50, default 50. Upstream hard-blocks any radius over 50.",
- "in": "query",
- "name": "radius",
- "type": "integer",
- "x-example": 50
- },
- {
- "description": "Optional. Maximum stores per page, 1-50, default 10.",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Optional. Zero-based page index, default 0.",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 0
- }
- ],
+ "description": "Returns fresh Business Insider stories from the public RSS feed.",
+ "operationId": "businessinsider-news",
"produces": [
"application/json"
],
@@ -206876,19 +235609,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/arbys.nearbyResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"503": {
@@ -206903,36 +235624,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Find Arby's restaurants near a coordinate",
+ "summary": "Get Business Insider top stories",
"tags": [
- "Arbys"
+ "Business Insider"
]
}
},
- "/arbys/menu": {
+ "/businessinsider/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the items in one Arby's menu category, each with its stable product code, name, description, image, tags, availability, a full per-serving nutrition panel (calories, total and saturated fat, trans fat, cholesterol, sodium, carbohydrate, fiber, sugar, protein and serving weight), and a price when store_id resolves to a priced catalog. Category slugs come from GET /arbys/categories. store_id (optional, default 0) is Arby's own priceless national reference catalog; pass a store_id you already know to get that store's pricing instead -- there is no location-lookup endpoint in this family, so store_id is a passthrough value, not something this API can look up for you. A price of exactly 0 on an item is a genuine free add-on, distinct from the default catalog's complete absence of pricing.",
- "operationId": "arbys-menu",
- "parameters": [
- {
- "description": "Category slug from /arbys/categories",
- "in": "query",
- "name": "category",
- "required": true,
- "type": "string",
- "x-example": "slow-roasted-beef"
- },
- {
- "description": "Optional. Same store id semantics as /arbys/categories.",
- "in": "query",
- "name": "store_id",
- "type": "integer",
- "x-example": 0
- }
- ],
+ "description": "Returns the public Business Insider editorial section inventory.",
+ "operationId": "businessinsider-sections",
"produces": [
"application/json"
],
@@ -206940,31 +235641,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/arbys.menuResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -206973,24 +235650,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List one Arby's menu category's items with full nutrition and price",
+ "summary": "Get Business Insider sections",
"tags": [
- "Arbys"
+ "Business Insider"
]
}
},
- "/arstechnica/article": {
+ "/businessstandard/article": {
"get": {
- "description": "Returns public Ars Technica article metadata and body paragraphs from a canonical article URL. The service uses the configured production browser fleet when ordinary HTTP transport encounters Ars Technica's bot-verification challenge; it does not bypass authentication or access controls.",
- "operationId": "arstechnica-article",
+ "description": "Returns public Business Standard article metadata and body paragraphs from a canonical article URL. A story Business Standard marks premium (subscriber-only) returns a permission error instead of a body.",
+ "operationId": "businessstandard-article",
"parameters": [
{
- "description": "Canonical Ars Technica article URL",
+ "description": "Canonical Business Standard article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://arstechnica.com/gadgets/2026/09/example-story/"
+ "x-example": "https://www.business-standard.com/companies/news/example-article-slug-126092401169_1.html"
}
],
"produces": [
@@ -207009,6 +235686,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "403": {
+ "description": "Forbidden",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"404": {
"description": "Not Found",
"schema": {
@@ -207027,24 +235710,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Ars Technica article content",
+ "summary": "Get Business Standard article content",
"tags": [
- "Ars Technica"
+ "Business Standard"
]
}
},
- "/arstechnica/author": {
+ "/businessstandard/author": {
"get": {
- "description": "Returns an Ars Technica contributor's byline metadata (name, job title, headshot, contact email), biography, and recent articles from a canonical author URL. The service uses the configured production browser fleet when ordinary HTTP transport encounters Ars Technica's bot-verification challenge; it does not bypass authentication or access controls.",
- "operationId": "arstechnica-author",
+ "description": "Returns a Business Standard author's byline metadata, biography, social links, and recent stories from a canonical author profile URL.",
+ "operationId": "businessstandard-author",
"parameters": [
{
- "description": "Canonical Ars Technica contributor URL",
+ "description": "Canonical Business Standard author URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://arstechnica.com/author/example-writer/"
+ "x-example": "https://www.business-standard.com/author/sharleen-dsouza"
}
],
"produces": [
@@ -207054,7 +235737,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.arstechnicaAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.businessstandardAuthorResponseDoc"
}
},
"400": {
@@ -207081,40 +235764,51 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Ars Technica contributor profile",
+ "summary": "Get a Business Standard author profile",
"tags": [
- "Ars Technica"
+ "Business Standard"
]
}
},
- "/arstechnica/headlines": {
+ "/businessstandard/headlines": {
"get": {
- "description": "Returns fresh headlines from one Ars Technica section's public RSS feed.",
- "operationId": "arstechnica-headlines",
+ "description": "Returns fresh headlines from one public Business Standard section.",
+ "operationId": "businessstandard-headlines",
"parameters": [
{
- "description": "Ars Technica section slug",
+ "description": "Business Standard section slug",
"enum": [
- "ai",
- "apple",
- "cars",
- "culture",
- "features",
- "gadgets",
- "gaming",
+ "latest-news",
+ "companies",
+ "economy",
+ "finance",
+ "opinion",
+ "markets",
+ "technology",
+ "specials",
+ "budget",
+ "elections",
+ "politics",
+ "education",
"health",
- "information-technology",
- "reviews",
- "science",
- "security",
- "space",
- "staff",
- "tech-policy"
+ "sports",
+ "entertainment",
+ "lifestyle",
+ "india-news",
+ "industry",
+ "cricket",
+ "book",
+ "world-news",
+ "external-affairs-defence-security",
+ "immigration",
+ "blueprint-defence-magazine",
+ "todays-paper"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "latest-news"
}
],
"produces": [
@@ -207145,16 +235839,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Ars Technica section headlines",
+ "summary": "Get Business Standard section headlines",
"tags": [
- "Ars Technica"
+ "Business Standard"
]
}
},
- "/arstechnica/news": {
+ "/businessstandard/news": {
"get": {
- "description": "Returns fresh Ars Technica stories from its public RSS feed.",
- "operationId": "arstechnica-news",
+ "description": "Returns fresh Business Standard (business-standard.com) top stories from its public home-page feed.",
+ "operationId": "businessstandard-news",
"produces": [
"application/json"
],
@@ -207183,16 +235877,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Ars Technica top stories",
+ "summary": "Get Business Standard top stories",
"tags": [
- "Ars Technica"
+ "Business Standard"
]
}
},
- "/arstechnica/sections": {
+ "/businessstandard/sections": {
"get": {
- "description": "Returns the Ars Technica section inventory: the site's own current navigation and RSS-feed-directory sections (AI, Gadgets, Science, Security, Space, and others), each linking to its public RSS feed.",
- "operationId": "arstechnica-sections",
+ "description": "Returns the public Business Standard section inventory used by the headlines endpoint.",
+ "operationId": "businessstandard-sections",
"produces": [
"application/json"
],
@@ -207209,68 +235903,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Ars Technica sections",
- "tags": [
- "Ars Technica"
- ]
- }
- },
- "/audible/categories": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Audible's full genre/category tree (root genres with their subgenres), including the category ids accepted by GET /audible/search's category_id filter. Credential-free public catalog data from api.audible.com.",
- "operationId": "audible-categories",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/audible.categoriesResponseDoc"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Audible's genre/category tree",
+ "summary": "Get Business Standard sections",
"tags": [
- "Audible"
+ "Business Standard"
]
}
},
- "/audible/category/{id}": {
+ "/capterra/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Audible category node and its immediate children by id — cheaper than fetching the full tree from GET /audible/categories when only one node is needed. Credential-free public catalog data from api.audible.com.",
- "operationId": "audible-category",
+ "description": "Returns a normalized Capterra product profile: name, description, category, and aggregate rating. Credential-free public Capterra data, rendered from the product page through proxied browser renderers.",
+ "operationId": "capterra-product",
"parameters": [
{
- "description": "Audible category id from GET /audible/categories",
- "in": "path",
- "name": "id",
+ "description": "Capterra product id (the numeric id in a /p/{id}/{slug}/ URL)",
+ "in": "query",
+ "name": "product_id",
"required": true,
"type": "string",
- "x-example": "18580606011"
+ "x-example": "135003"
}
],
"produces": [
@@ -207280,7 +235933,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/audible.categoryResponseDoc"
+ "$ref": "#/definitions/capterra.productResponseDoc"
}
},
"400": {
@@ -207313,104 +235966,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Audible category node",
+ "summary": "Get a Capterra product",
"tags": [
- "Audible"
+ "Capterra"
]
}
},
- "/audible/charts": {
+ "/capterra/product/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of an Audible chart — a ranked list with real chart position, price, and rating that has no equivalent on api.audible.com's public JSON API. This is an HTML scrape of audible.com/charts, a different, less stable source class than the rest of this family, though its own filters (category, access level, language, duration, Audible-Originals-only) were individually verified to actually change results. category_id, access_level, and content_type=podcasts are mutually exclusive.",
- "operationId": "audible-charts",
+ "description": "Returns a page of normalized Capterra reviews (author, headline, rating) plus the product's aggregate rating. Credential-free public Capterra data, rendered from the reviews page through proxied browser renderers.",
+ "operationId": "capterra-reviews",
"parameters": [
{
- "description": "Chart type, default most_listened",
- "enum": [
- "most_listened",
- "bestselling"
- ],
- "in": "query",
- "name": "chart",
- "type": "string"
- },
- {
- "description": "Content type, default audiobooks",
- "enum": [
- "audiobooks",
- "podcasts"
- ],
- "in": "query",
- "name": "content_type",
- "type": "string"
- },
- {
- "description": "Restrict to a category id from GET /audible/categories",
- "in": "query",
- "name": "category_id",
- "type": "string"
- },
- {
- "description": "Membership access level, default all",
- "enum": [
- "all",
- "free",
- "plus",
- "premium"
- ],
- "in": "query",
- "name": "access_level",
- "type": "string"
- },
- {
- "description": "Language filter, default all",
- "enum": [
- "all",
- "danish",
- "english",
- "french",
- "german",
- "italian",
- "japanese",
- "polish",
- "portuguese",
- "russian",
- "spanish",
- "swedish"
- ],
- "in": "query",
- "name": "language",
- "type": "string"
- },
- {
- "description": "Runtime-length filter, default all",
- "enum": [
- "all",
- "oneHourLess",
- "oneToThreeHour",
- "threeToSixHour",
- "sixToTenHour",
- "tenToTwentyHour",
- "twentyHourMore"
- ],
- "in": "query",
- "name": "duration",
- "type": "string"
- },
- {
- "description": "Restrict to Audible Originals only",
+ "description": "Capterra product id (the numeric id in a /p/{id}/{slug}/ URL)",
"in": "query",
- "name": "originals_only",
- "type": "boolean"
+ "name": "product_id",
+ "required": true,
+ "type": "string",
+ "x-example": "135003"
},
{
- "description": "1-based result page, default 1, 20 results per page",
+ "description": "Page number (default 1)",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -207420,7 +236003,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/audible.chartsResponseDoc"
+ "$ref": "#/definitions/capterra.reviewsResponseDoc"
}
},
"400": {
@@ -207429,57 +236012,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get an Audible chart (audible.com/charts)",
- "tags": [
- "Audible"
- ]
- }
- },
- "/audible/charts/authors": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of Audible's public ranked author chart. This is a people-shaped HTML surface and exposes only rank, author identity, image metadata when available, and a canonical author URI; author detail remains outside the credential-free public surface.",
- "operationId": "audible-author-charts",
- "parameters": [
- {
- "description": "1-based result page, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/audible.authorChartsResponseDoc"
- }
},
- "400": {
- "description": "Bad Request",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -207496,31 +236036,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Audible's top-author chart",
+ "summary": "Get Capterra product reviews",
"tags": [
- "Audible"
+ "Capterra"
]
}
},
- "/audible/list/{list}": {
+ "/capterra/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one of Audible's hand-curated \"Popular Lists\" pages, normalized into its themed shelves (heading + ordered ASINs). This is an HTML scrape of a marketing/editorial page (audible.com), not api.audible.com's JSON API — pair an ASIN from any shelf with GET /audible/products (batch) or GET /audible/product/{asin} for full title/author/price/rating detail. \"Best of the Year\" is not covered — its layout has no consistent structure to parse.",
- "operationId": "audible-editorial-list",
+ "description": "Returns Capterra search-result products (id, name, url, description, rating). Credential-free public Capterra data, rendered from the search page through proxied browser renderers. Note: Capterra renders a fallback product list even for queries with no genuine match, rather than a distinct empty-results page, so callers should treat low-relevance results as an upstream characteristic, not a bug.",
+ "operationId": "capterra-search",
"parameters": [
{
- "description": "Editorial list slug",
- "enum": [
- "audiobooks",
- "booktok",
- "podcasts"
- ],
- "in": "path",
- "name": "list",
+ "description": "Search query",
+ "in": "query",
+ "name": "q",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "slack"
}
],
"produces": [
@@ -207530,7 +236066,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/audible.editorialListResponseDoc"
+ "$ref": "#/definitions/capterra.searchResponseDoc"
}
},
"400": {
@@ -207557,27 +236093,89 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Audible curated editorial list",
+ "summary": "Search Capterra products",
"tags": [
- "Audible"
+ "Capterra"
]
}
},
- "/audible/product/{asin}": {
+ "/carmax/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Audible audiobook: description, authors, narrators, series, category ladders, publisher, release date, runtime, language, sample audio URL, rating (overall/performance/story), and public list price. Credential-free public catalog data from api.audible.com.",
- "operationId": "audible-product",
+ "description": "Searches CarMax for used car listings, returning normalized vehicle summaries (make, model, trim, year, mileage, colors, engine, fuel economy, pricing, store, images), available search facets with live counts, and the total matching count. Credential-free public data sourced from CarMax's own mobile-app search API.",
+ "operationId": "carmax-search",
"parameters": [
{
- "description": "Audible ASIN",
- "in": "path",
- "name": "asin",
- "required": true,
+ "description": "CarMax make, e.g. honda, Toyota, BMW (case-insensitive)",
+ "in": "query",
+ "name": "make",
"type": "string",
- "x-example": "B08G9PRS1K"
+ "x-example": "honda"
+ },
+ {
+ "description": "CarMax model, e.g. civic (case-insensitive). Does not require make",
+ "in": "query",
+ "name": "model",
+ "type": "string",
+ "x-example": "civic"
+ },
+ {
+ "description": "5-digit US ZIP code to bias results toward CarMax's nearest store",
+ "in": "query",
+ "name": "zip",
+ "type": "string",
+ "x-example": "90210"
+ },
+ {
+ "description": "Sort order: bestmatch, distance-asc, price-asc, price-desc, mileage-asc, mileage-desc, year-desc, year-asc, newarrival. Defaults to bestmatch",
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "price-asc"
+ },
+ {
+ "description": "Minimum model year",
+ "in": "query",
+ "name": "min_year",
+ "type": "integer",
+ "x-example": 2020
+ },
+ {
+ "description": "Maximum model year",
+ "in": "query",
+ "name": "max_year",
+ "type": "integer",
+ "x-example": 2024
+ },
+ {
+ "description": "Minimum price in US dollars",
+ "in": "query",
+ "name": "min_price",
+ "type": "integer",
+ "x-example": 15000
+ },
+ {
+ "description": "Maximum price in US dollars",
+ "in": "query",
+ "name": "max_price",
+ "type": "integer",
+ "x-example": 30000
+ },
+ {
+ "description": "Maximum odometer mileage",
+ "in": "query",
+ "name": "max_mileage",
+ "type": "integer",
+ "x-example": 60000
+ },
+ {
+ "description": "1-indexed result page, defaults to 1. CarMax returns 48 results per page",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -207587,7 +236185,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/audible.productResponseDoc"
+ "$ref": "#/definitions/carmax.searchResponseDoc"
}
},
"400": {
@@ -207596,12 +236194,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -207620,47 +236212,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Audible audiobook",
+ "summary": "Search CarMax vehicle listings",
"tags": [
- "Audible"
+ "CarMax"
]
}
},
- "/audible/product/{asin}/related": {
+ "/carmax/search/suggestions": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Audible titles related to a given ASIN by a required relation type: same series, same narrator, same author, next in series, or raw upstream similarity. Credential-free public catalog data from api.audible.com.",
- "operationId": "audible-product-related",
+ "description": "Returns autocomplete suggestions for a partial search term (make/model/trim), typo-tolerant by default. Credential-free public data sourced from CarMax's own mobile-app API.",
+ "operationId": "carmax-search-suggestions",
"parameters": [
{
- "description": "Audible ASIN",
- "in": "path",
- "name": "asin",
- "required": true,
- "type": "string",
- "x-example": "B08G9PRS1K"
- },
- {
- "description": "How to relate titles to the given ASIN",
- "enum": [
- "InTheSameSeries",
- "ByTheSameNarrator",
- "RawSimilarities",
- "ByTheSameAuthor",
- "NextInSameSeries"
- ],
+ "description": "Free-text partial search term to get autocomplete suggestions for",
"in": "query",
- "name": "similarity_type",
+ "name": "search",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "civ"
},
{
- "description": "Max results, default 10, max 50",
+ "description": "Disable fuzzy/typo-tolerant matching -- require an exact prefix match. Defaults to false",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "exact_match",
+ "type": "boolean",
+ "x-example": false
}
],
"produces": [
@@ -207670,7 +236249,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/audible.relatedResponseDoc"
+ "$ref": "#/definitions/carmax.searchSuggestionsResponseDoc"
}
},
"400": {
@@ -207697,41 +236276,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Audible titles related to an audiobook",
+ "summary": "Get CarMax search autocomplete suggestions",
"tags": [
- "Audible"
+ "CarMax"
]
}
},
- "/audible/product/{asin}/reviews": {
+ "/carmax/shop-by-brand": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of an Audible audiobook's customer reviews (author, title, body, overall/performance/story ratings, helpful votes, submission date). Credential-free public catalog data from api.audible.com.",
- "operationId": "audible-product-reviews",
- "parameters": [
- {
- "description": "Audible ASIN",
- "in": "path",
- "name": "asin",
- "required": true,
- "type": "string",
- "x-example": "B08G9PRS1K"
- },
- {
- "description": "Zero-based result page, default 0",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Max reviews, default 10, max 50",
- "in": "query",
- "name": "limit",
- "type": "integer"
- }
- ],
+ "description": "Returns CarMax's full make taxonomy for browsing by brand: every make, a display image, and CarMax's own display order. Credential-free public data sourced from CarMax's own mobile-app API.",
+ "operationId": "carmax-shop-by-brand",
"produces": [
"application/json"
],
@@ -207739,13 +236296,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/audible.reviewsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/carmax.shopByBrandResponseDoc"
}
},
"500": {
@@ -207766,27 +236317,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Audible audiobook's customer reviews",
+ "summary": "Get CarMax's \"shop by brand\" make taxonomy",
"tags": [
- "Audible"
+ "CarMax"
]
}
},
- "/audible/products": {
+ "/carmax/store/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Audible audiobooks for up to 50 ASINs in a single request — the same fields as GET /audible/product/{asin}. Unrecognized ASINs are silently omitted rather than failing the whole batch. Credential-free public catalog data from api.audible.com.",
- "operationId": "audible-products",
+ "description": "Returns a normalized CarMax store: name, full address, phone numbers, coordinates, opening hours, and store-type flags (car buying center, microstore). Credential-free public data sourced from CarMax's own server-rendered store page.",
+ "operationId": "carmax-store",
"parameters": [
{
- "description": "Comma-separated Audible ASINs, up to 50",
- "in": "query",
- "name": "asins",
+ "description": "CarMax store id, the numeric path segment of a /stores/{id} URL",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "B08G9PRS1K,B002V1OF70"
+ "x-example": "7124"
}
],
"produces": [
@@ -207796,7 +236347,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/audible.productsResponseDoc"
+ "$ref": "#/definitions/carmax.StoreResponse"
}
},
"400": {
@@ -207805,6 +236356,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -207823,61 +236380,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Get multiple Audible audiobooks in one call",
+ "summary": "Get CarMax store (physical location) detail",
"tags": [
- "Audible"
+ "CarMax"
]
}
},
- "/audible/search": {
+ "/carmax/stores": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Audible's audiobook catalog by keyword, title, author, narrator, or category id. At least one filter is required. Credential-free public catalog data from api.audible.com.",
- "operationId": "audible-search",
+ "description": "Searches CarMax's physical store locations by ZIP code or free-text keyword, returning normalized stores with full address, every published phone number, opening hours, and (for a ZIP-based search) live driving distance in miles. Credential-free public data sourced from CarMax's own mobile-app store-locator API.",
+ "operationId": "carmax-stores",
"parameters": [
{
- "description": "Free-text query matched across title, subtitle, and author",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Match by title",
- "in": "query",
- "name": "title",
- "type": "string"
- },
- {
- "description": "Match by author name",
- "in": "query",
- "name": "author",
- "type": "string"
- },
- {
- "description": "Match by narrator name",
- "in": "query",
- "name": "narrator",
- "type": "string"
- },
- {
- "description": "Restrict to a category id from GET /audible/categories",
+ "description": "5-digit US ZIP code to search near. Triggers a live geo-distance sort. Provide this or keyword; zip takes precedence if both are given",
"in": "query",
- "name": "category_id",
- "type": "string"
+ "name": "zip",
+ "type": "string",
+ "x-example": "90210"
},
{
- "description": "Zero-based result page, default 0",
+ "description": "Free-text match against store name or city",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "keyword",
+ "type": "string",
+ "x-example": "Richmond"
},
{
- "description": "Max results, default 10, max 50",
+ "description": "Maximum number of stores to return, defaults to 10, capped at 300",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "take",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -207887,7 +236423,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/audible.searchResponseDoc"
+ "$ref": "#/definitions/carmax.storeSearchResponseDoc"
}
},
"400": {
@@ -207914,27 +236450,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Audible's catalog",
+ "summary": "Search CarMax store (physical location) locations",
"tags": [
- "Audible"
+ "CarMax"
]
}
},
- "/audible/series/{asin}": {
+ "/carmax/vehicle/{stock_number}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns an Audible series and every book in it, in series order. A series has its own ASIN distinct from any book in it — find one via a book's series[].asin field from GET /audible/product/{asin}. Credential-free public catalog data from api.audible.com.",
- "operationId": "audible-series",
+ "description": "Returns a normalized CarMax vehicle listing: full vehicle spec (make, model, trim, mileage, colors, engine, transmission, fuel economy, pricing), equipment features, labeled specifications, warranty coverage, accident/owner history, and CarMax's return guarantee terms. Credential-free public data sourced primarily from CarMax's own mobile-app API, backfilled with the website's server-rendered page for accident/owner history and warranty terms the mobile API doesn't expose.",
+ "operationId": "carmax-vehicle",
"parameters": [
{
- "description": "Audible series ASIN, from a product's series[].asin field",
+ "description": "CarMax stock number, the numeric path segment of a /car/{stock_number} URL",
"in": "path",
- "name": "asin",
+ "name": "stock_number",
"required": true,
"type": "string",
- "x-example": "B006W3V2B0"
+ "x-example": "28187774"
+ },
+ {
+ "description": "Optional CarMax store id for pricing/transfer-fee display context. Defaults to a fixed CarMax store when omitted",
+ "in": "query",
+ "name": "store_id",
+ "type": "string",
+ "x-example": "7124"
}
],
"produces": [
@@ -207944,7 +236487,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/audible.seriesResponseDoc"
+ "$ref": "#/definitions/carmax.VehicleResponse"
}
},
"400": {
@@ -207977,27 +236520,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Audible series' ordered book list",
+ "summary": "Get CarMax vehicle listing detail",
"tags": [
- "Audible"
+ "CarMax"
]
}
},
- "/autotrader/dealer/{id}": {
+ "/carmax/vehicle/{stock_number}/recommendations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Autotrader dealer profile (name, phone, address, rating, website) plus a first page of the dealer's own current inventory as normalized vehicle summaries and the dealer's total listing count. Credential-free public data sourced from Autotrader's own server-rendered dealer profile page.",
- "operationId": "autotrader-dealer",
+ "description": "Returns CarMax's own similar-vehicle recommendations for a listing: stock number, description, display mileage/price, store location, and image, for vehicles CarMax considers comparable. An empty list is a normal result, not an error. Credential-free public data sourced from CarMax's own mobile-app API.",
+ "operationId": "carmax-vehicle-recommendations",
"parameters": [
{
- "description": "Autotrader dealer/owner id, the numeric path segment of a /car-dealers/{id} URL",
+ "description": "CarMax stock number to find similar vehicles for, the numeric path segment of a /car/{stock_number} URL",
"in": "path",
- "name": "id",
+ "name": "stock_number",
"required": true,
"type": "string",
- "x-example": "64141623"
+ "x-example": "28187774"
+ },
+ {
+ "description": "CarMax store id used as the recommendation's location context. See any search/vehicle/store response's store id field",
+ "in": "query",
+ "name": "store_id",
+ "required": true,
+ "type": "string",
+ "x-example": "7124"
}
],
"produces": [
@@ -208007,7 +236558,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/autotrader.DealerResponse"
+ "$ref": "#/definitions/carmax.vehicleRecommendationsResponseDoc"
}
},
"400": {
@@ -208016,12 +236567,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -208040,27 +236585,20 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Autotrader dealer profile",
+ "summary": "Get CarMax \"similar vehicles\" recommendations for a listing",
"tags": [
- "Autotrader"
+ "CarMax"
]
}
},
- "/autotrader/search": {
+ "/carsdotcom/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Autotrader for new and used car listings, returning normalized vehicle summaries (make, model, trim, year, mileage, pricing, images) plus the total matching count. Credential-free public data sourced from Autotrader's own server-rendered search page.",
- "operationId": "autotrader-search",
+ "description": "Searches Cars.com for new and used car listings, returning normalized vehicle summaries (make, model, trim, year, mileage, exterior color, drivetrain, fuel type, pricing, seller, images) plus the total matching count. Credential-free public data sourced directly from Cars.com's own public search API.",
+ "operationId": "carsdotcom-search",
"parameters": [
- {
- "description": "Free-text keyword search",
- "in": "query",
- "name": "query",
- "type": "string",
- "x-example": "leather seats"
- },
{
"description": "5-digit US ZIP code to search around",
"in": "query",
@@ -208076,104 +236614,20 @@
"x-example": 50
},
{
- "description": "Autotrader make code, e.g. TOYOTA, HONDA, BMW",
- "in": "query",
- "name": "make",
- "type": "string",
- "x-example": "TOYOTA"
- },
- {
- "description": "Autotrader model code, e.g. CAMRY. Requires make",
- "in": "query",
- "name": "model",
- "type": "string",
- "x-example": "CAMRY"
- },
- {
- "description": "Autotrader trim code. Requires make and model",
- "in": "query",
- "name": "trim",
- "type": "string",
- "x-example": "LE"
- },
- {
- "description": "Listing condition. Allowed values: new, used, certified, 3p_cert",
+ "description": "Listing condition. Allowed values: new, used, cpo, all",
"enum": [
"new",
"used",
- "certified",
- "3p_cert"
+ "cpo",
+ "all"
],
"in": "query",
- "name": "condition",
+ "name": "stock_type",
"type": "string",
"x-example": "used"
},
{
- "description": "Body style. Allowed values: convertible, coupe, hatchback, sedan, suv, truck, van, wagon",
- "enum": [
- "convertible",
- "coupe",
- "hatchback",
- "sedan",
- "suv",
- "truck",
- "van",
- "wagon"
- ],
- "in": "query",
- "name": "body_style",
- "type": "string",
- "x-example": "suv"
- },
- {
- "description": "Seller type. Allowed values: dealer, private",
- "enum": [
- "dealer",
- "private"
- ],
- "in": "query",
- "name": "seller_type",
- "type": "string",
- "x-example": "dealer"
- },
- {
- "description": "Minimum model year",
- "in": "query",
- "name": "min_year",
- "type": "integer",
- "x-example": 2020
- },
- {
- "description": "Maximum model year",
- "in": "query",
- "name": "max_year",
- "type": "integer",
- "x-example": 2026
- },
- {
- "description": "Minimum price in US dollars",
- "in": "query",
- "name": "min_price",
- "type": "integer",
- "x-example": 10000
- },
- {
- "description": "Maximum price in US dollars",
- "in": "query",
- "name": "max_price",
- "type": "integer",
- "x-example": 40000
- },
- {
- "description": "Maximum odometer mileage",
- "in": "query",
- "name": "max_mileage",
- "type": "integer",
- "x-example": 60000
- },
- {
- "description": "1-indexed result page, defaults to 1. Autotrader returns 24 results per page",
+ "description": "1-indexed result page, defaults to 1. Cars.com returns 24 results per page",
"in": "query",
"name": "page",
"type": "integer",
@@ -208187,7 +236641,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/autotrader.searchResponseDoc"
+ "$ref": "#/definitions/carsdotcom.searchResponseDoc"
}
},
"400": {
@@ -208214,27 +236668,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Autotrader vehicle listings",
+ "summary": "Search Cars.com vehicle listings",
"tags": [
- "Autotrader"
+ "Cars.com"
]
}
},
- "/autotrader/vehicle/{id}": {
+ "/carsdotcom/vehicle/{listing_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Autotrader vehicle listing: full vehicle spec (make, model, trim, mileage, colors, transmission, fuel type, engine, images, pricing), the full listing description, and seller detail (dealership or private seller). Credential-free public data sourced from Autotrader's own server-rendered vehicle detail page.",
- "operationId": "autotrader-vehicle",
+ "description": "Returns a normalized Cars.com vehicle listing: full vehicle spec (make, model, trim, mileage, colors, engine, transmission, fuel economy, a key-specs table), Cars.com's own deal-fairness rating and predicted fair price, categorized equipment features, an AutoCheck-derived vehicle history report, Cars.com's own price-change history, the seller's notes, dealer detail (name, rating, address, website, phones, hours) or private-seller detail for a for-sale-by-owner listing, and certified-pre-owned/manufacturer-program detail when applicable. Credential-free public data sourced directly from Cars.com's own public GraphQL API.",
+ "operationId": "carsdotcom-vehicle",
"parameters": [
{
- "description": "Autotrader listing id, the numeric path segment of a /cars-for-sale/vehicle/{id} URL",
+ "description": "Cars.com listing id (a UUID), the path segment of a /vehicledetail/{listing_id}/ URL",
"in": "path",
- "name": "id",
+ "name": "listing_id",
"required": true,
"type": "string",
- "x-example": "754822172"
+ "x-example": "a6ea5d6f-0395-4f9d-94d5-724c4d7414de"
}
],
"produces": [
@@ -208244,7 +236698,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/autotrader.VehicleResponse"
+ "$ref": "#/definitions/carsdotcom.VehicleResponse"
}
},
"400": {
@@ -208277,24 +236731,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Autotrader vehicle listing detail",
+ "summary": "Get Cars.com vehicle listing detail",
"tags": [
- "Autotrader"
+ "Cars.com"
]
}
},
- "/axios/article": {
+ "/cbc/article": {
"get": {
- "description": "Returns a public Axios article's metadata and full body paragraphs from a canonical article URL. Subscriber-only stories with no free preview return a 403 permission error instead of an empty body.",
- "operationId": "axios-article",
+ "description": "Returns public CBC News or CBC Sports story metadata and body paragraphs from a canonical story URL. Live-updates pages are not supported.",
+ "operationId": "cbc-article",
"parameters": [
{
- "description": "Canonical www.axios.com article URL",
+ "description": "Canonical CBC News or CBC Sports story URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.axios.com/2026/09/19/google-safety-incidents-testing-hacks"
+ "x-example": "https://www.cbc.ca/news/politics/does-calling-an-early-election-work-9.7355667"
}
],
"produces": [
@@ -208304,7 +236758,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/axios.articleResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -208313,24 +236767,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "403": {
- "description": "Forbidden",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -208343,16 +236785,32 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Axios article content",
+ "summary": "Get CBC News article content",
"tags": [
- "Axios"
+ "CBC News"
]
}
},
- "/axios/categories": {
+ "/cbc/author": {
"get": {
- "description": "Returns Axios's full public topic and subtopic navigation tree. Use a subtopic's topic value directly as the topic parameter on axios-headlines.",
- "operationId": "axios-categories",
+ "description": "Returns one CBC journalist's public profile: name, job title, biography, photo, profile links, and their most recent articles.",
+ "operationId": "cbc-author",
+ "parameters": [
+ {
+ "description": "Author slug, e.g. darren-major-1.4462710",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "darren-major-1.4462710"
+ },
+ {
+ "description": "Canonical https://www.cbc.ca/author/ URL; alternative to slug",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.cbc.ca/author/darren-major-1.4462710"
+ }
+ ],
"produces": [
"application/json"
],
@@ -208360,11 +236818,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/axios.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.cbcAuthorResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -208381,24 +236845,61 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Axios topic navigation",
+ "summary": "Get a CBC journalist profile",
"tags": [
- "Axios"
+ "CBC News"
]
}
},
- "/axios/headlines": {
+ "/cbc/headlines": {
"get": {
- "description": "Returns the newest public Axios stories on one topic or subtopic page. topic is a topic slug (e.g. technology) or a topic/subtopic path (e.g. technology/automation-and-ai) -- see axios-categories for the full known value space.",
- "operationId": "axios-headlines",
+ "description": "Returns fresh CBC News or CBC Sports headlines from one public section RSS feed. Video, radio, and live-updates links are omitted.",
+ "operationId": "cbc-headlines",
"parameters": [
{
- "description": "Axios topic slug or topic/subtopic path",
+ "description": "CBC section slug",
+ "enum": [
+ "world",
+ "canada",
+ "politics",
+ "business",
+ "health",
+ "arts",
+ "technology",
+ "indigenous",
+ "british-columbia",
+ "calgary",
+ "edmonton",
+ "hamilton",
+ "kamloops",
+ "kitchener-waterloo",
+ "london",
+ "manitoba",
+ "montreal",
+ "new-brunswick",
+ "newfoundland-labrador",
+ "north",
+ "nova-scotia",
+ "ottawa",
+ "prince-edward-island",
+ "saskatchewan",
+ "saskatoon",
+ "sudbury",
+ "thunder-bay",
+ "toronto",
+ "windsor",
+ "sports",
+ "sports-golf",
+ "sports-nhl",
+ "sports-olympics",
+ "sports-soccer",
+ "sports-tennis"
+ ],
"in": "query",
- "name": "topic",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "technology"
+ "x-example": "world"
}
],
"produces": [
@@ -208408,7 +236909,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/axios.headlinesResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -208417,18 +236918,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -208441,19 +236930,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Axios topic headlines",
+ "summary": "Get CBC News section headlines",
"tags": [
- "Axios"
+ "CBC News"
]
}
},
- "/balenciaga/categories": {
+ "/cbc/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Balenciaga's live storefront navigation/category taxonomy. Each categories[].path is the exact value accepted by balenciaga-category's path parameter.",
- "operationId": "balenciaga-categories",
+ "description": "Returns fresh CBC News top stories from CBC's public Top Stories RSS feed. Live-updates pages are omitted.",
+ "operationId": "cbc-news",
"produces": [
"application/json"
],
@@ -208461,7 +236947,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/balenciaga.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -208482,60 +236968,50 @@
"ApiKeyAuth": []
}
],
- "summary": "List Balenciaga categories",
+ "summary": "Get CBC News top stories",
"tags": [
- "Balenciaga"
+ "CBC News"
]
}
},
- "/balenciaga/category": {
+ "/cbc/sections": {
"get": {
- "consumes": [
+ "description": "Returns the CBC News sections accepted by the headlines endpoint: national desks, regional newsrooms, and CBC Sports feeds.",
+ "operationId": "cbc-sections",
+ "produces": [
"application/json"
],
- "description": "Returns one Balenciaga category listing from the site's own Search-ShowAjax fragment. path comes from balenciaga-categories. sort accepts latest, price_ascending, or price_descending. filters is a comma-separated list of exact field:value pairs from the response's live facets; repeat a field to OR multiple values within that facet; omit it for an unfiltered listing.",
- "operationId": "balenciaga-category",
- "parameters": [
- {
- "description": "Category path from balenciaga-categories",
- "in": "query",
- "name": "path",
- "required": true,
- "type": "string",
- "x-example": "/en-en/women/bags-for-women/handbags"
- },
- {
- "description": "Sort order",
- "enum": [
- "latest",
- "price_ascending",
- "price_descending"
- ],
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "latest"
- },
- {
- "description": "One-based page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
{
- "description": "Products per page, defaults to 16, maximum 48",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 16
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get CBC News sections",
+ "tags": [
+ "CBC News"
+ ]
+ }
+ },
+ "/cbr/article": {
+ "get": {
+ "description": "Returns public CBR article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "cbr-article",
+ "parameters": [
{
- "description": "Comma-separated exact facet filters; repeat a field for OR values, for example akeneo_macroColor:BLACK,akeneo_macroColor:WHITE",
+ "description": "Canonical CBR article URL",
"in": "query",
- "name": "filters",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "akeneo_macroColor:BLACK"
+ "x-example": "https://www.cbr.com/star-trek-2-release-date-confirmed-cover-reveal/"
}
],
"produces": [
@@ -208545,7 +237021,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/balenciaga.listingResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -208578,27 +237054,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a Balenciaga category",
+ "summary": "Get CBR article content",
"tags": [
- "Balenciaga"
+ "CBR"
]
}
},
- "/balenciaga/product": {
+ "/cbr/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns structured product detail from Balenciaga's product page, including schema.org name/SKU/price/availability, images, color variants, and visible product details. url must be a product URL returned by balenciaga-category or balenciaga-search.",
- "operationId": "balenciaga-product",
+ "description": "Returns a CBR author's byline metadata, biography, social links, and recent articles from a canonical author URL.",
+ "operationId": "cbr-author",
"parameters": [
{
- "description": "Product URL from a Balenciaga listing",
+ "description": "Canonical CBR author URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "/en-en/hourglass-avenue-top-handle-bag-small-black-A007IH2ACT21000.html"
+ "x-example": "https://www.cbr.com/author/john-dodge/"
}
],
"produces": [
@@ -208608,7 +237081,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/balenciaga.productResponseDoc"
+ "$ref": "#/definitions/publicnews.cbrAuthorResponseDoc"
}
},
"400": {
@@ -208623,12 +237096,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -208641,27 +237108,54 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Balenciaga product",
+ "summary": "Get a CBR author profile",
"tags": [
- "Balenciaga"
+ "CBR"
]
}
},
- "/balenciaga/product/variants": {
+ "/cbr/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Balenciaga's live color/size variation matrix for a product, including variation ids, selection/sellability flags, care text, availability, and related product ids. url may be a product URL or a Product-Variation URL from balenciaga-product's colors[].url.",
- "operationId": "balenciaga-product-variants",
+ "description": "Returns fresh headlines from one public CBR RSS section. Video pages, if a section ever returns them, have type video and are not readable through the article endpoint.",
+ "operationId": "cbr-headlines",
"parameters": [
{
- "description": "Balenciaga product URL or Product-Variation URL",
+ "description": "CBR RSS section slug",
+ "enum": [
+ "movies",
+ "movie-features",
+ "news-movies",
+ "reviews-movies",
+ "movie-lists",
+ "tv",
+ "tv-features",
+ "news-tv",
+ "reviews-tv",
+ "tv-lists",
+ "comics",
+ "comics-features",
+ "comics/news",
+ "comics/reviews",
+ "comics-lists",
+ "anime",
+ "anime-features",
+ "anime-news",
+ "anime/reviews-anime",
+ "anime-lists",
+ "games",
+ "game-features",
+ "game-news",
+ "games/reviews-games",
+ "game-guides",
+ "game-lists",
+ "lists",
+ "cbr-exclusives"
+ ],
"in": "query",
- "name": "url",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "https://www.balenciaga.com/on/demandware.store/Sites-BAL-R-INTL-Site/en_ZW/Product-Variation?dwvar_A007IH2ACT21000_color=1000&dwvar_A007IH2ACT21000_size=U&pid=A007IH2ACT21000&quantity=1"
+ "x-example": "movies"
}
],
"produces": [
@@ -208671,7 +237165,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/balenciaga.productVariantsResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -208680,12 +237174,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -208704,55 +237192,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Balenciaga product variations",
+ "summary": "Get CBR section headlines",
"tags": [
- "Balenciaga"
+ "CBR"
]
}
},
- "/balenciaga/search": {
+ "/cbr/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Balenciaga's storefront by keyword using the site's own product-grid fragment. q is required; sort accepts latest, price_ascending, or price_descending; page is one-based with 12 products per page; and filters accepts comma-separated exact field:value pairs from live facets. Repeat a field to OR multiple values within that facet. A genuine no-result query returns an empty products list.",
- "operationId": "balenciaga-search",
- "parameters": [
- {
- "description": "Free-text search query",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "hourglass"
- },
- {
- "description": "Sort order",
- "enum": [
- "latest",
- "price_ascending",
- "price_descending"
- ],
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "latest"
- },
- {
- "description": "One-based page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Comma-separated exact facet filters; repeat a field for OR values, for example akeneo_macroColor:BLACK,akeneo_macroColor:WHITE",
- "in": "query",
- "name": "filters",
- "type": "string",
- "x-example": "akeneo_macroColor:BLACK"
- }
- ],
+ "description": "Returns fresh CBR top stories from its public RSS feed.",
+ "operationId": "cbr-news",
"produces": [
"application/json"
],
@@ -208760,19 +237209,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/balenciaga.listingResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -208793,19 +237230,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Balenciaga products",
+ "summary": "Get CBR top stories",
"tags": [
- "Balenciaga"
+ "CBR"
]
}
},
- "/balenciaga/store-countries": {
+ "/cbr/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns every country code accepted by balenciaga-stores, discovered from Balenciaga's own public store-locator form.",
- "operationId": "balenciaga-store-countries",
+ "description": "Returns the public CBR RSS section inventory used by the headlines endpoint.",
+ "operationId": "cbr-sections",
"produces": [
"application/json"
],
@@ -208813,7 +237247,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/balenciaga.storeCountriesResponseDoc"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
},
"429": {
@@ -208821,12 +237255,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -208834,61 +237262,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Balenciaga store-locator countries",
+ "summary": "Get CBR RSS sections",
"tags": [
- "Balenciaga"
+ "CBR"
]
}
},
- "/balenciaga/stores": {
+ "/cbsnews/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Balenciaga's public physical-store directory for one country, including addresses, coordinates, phone numbers, opening hours, and store-service flags. Use balenciaga-store-countries to discover the complete accepted country enum.",
- "operationId": "balenciaga-stores",
+ "description": "Returns public CBS News article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "cbsnews-article",
"parameters": [
{
- "description": "Two-letter country code",
- "enum": [
- "AE",
- "AT",
- "AU",
- "BE",
- "BR",
- "CA",
- "CN",
- "CZ",
- "DE",
- "DK",
- "ES",
- "FR",
- "GB",
- "HK",
- "IE",
- "IT",
- "JP",
- "KR",
- "KW",
- "MC",
- "MO",
- "MX",
- "MY",
- "NL",
- "NZ",
- "QA",
- "SA",
- "SG",
- "CH",
- "TH",
- "TW",
- "US"
- ],
+ "description": "Canonical CBS News article URL",
"in": "query",
- "name": "country",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "US"
+ "x-example": "https://www.cbsnews.com/news/example-article-slug/"
}
],
"produces": [
@@ -208898,7 +237289,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/balenciaga.storesResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -208907,8 +237298,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -208925,24 +237316,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Balenciaga stores",
+ "summary": "Get CBS News article content",
"tags": [
- "Balenciaga"
+ "CBS News"
]
}
},
- "/barrons/article": {
+ "/cbsnews/author": {
"get": {
- "description": "Returns one Barron's article's title, byline, section, publication time, word count, and body paragraphs, recovered from a public web-archive snapshot of the article. Barron's serves only the first paragraphs of an article at the origin, so an article is returned only when a full-text archive snapshot exists; an article without one returns 404.",
- "operationId": "barrons-article",
+ "description": "Returns one CBS News author's public team-page profile: name, biography, coverage topics, headshot (when the page has one), social links, and their recent articles.",
+ "operationId": "cbsnews-author",
"parameters": [
{
- "description": "Canonical Barron's article URL",
+ "description": "Canonical cbsnews.com/team/ author URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.barrons.com/articles/nvidia-stock-price-meta-ai-chips-rally-11911927"
+ "x-example": "https://www.cbsnews.com/team/margaret-brennan/"
}
],
"produces": [
@@ -208952,7 +237343,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/barrons.articleResponseDoc"
+ "$ref": "#/definitions/publicnews.cbsNewsAuthorResponseDoc"
}
},
"400": {
@@ -208961,24 +237352,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "403": {
- "description": "Forbidden",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -208991,32 +237370,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Barron's article's content",
+ "summary": "Get a CBS News author profile",
"tags": [
- "Barrons"
+ "CBS News"
]
}
},
- "/barrons/headlines": {
+ "/cbsnews/headlines": {
"get": {
- "description": "Returns one page of a Barron's topic's headlines: each story's title, canonical URL, summary, publication time, authors, and lead image. Section must be a slug returned by /barrons/topics.",
- "operationId": "barrons-headlines",
+ "description": "Returns fresh headlines from one public CBS News RSS section.",
+ "operationId": "cbsnews-headlines",
"parameters": [
{
- "description": "Barron's topic slug from /barrons/topics",
+ "description": "CBS News RSS section slug",
+ "enum": [
+ "main",
+ "us",
+ "world",
+ "politics",
+ "moneywatch",
+ "health",
+ "entertainment",
+ "science",
+ "technology",
+ "space"
+ ],
"in": "query",
"name": "section",
"required": true,
"type": "string",
- "x-example": "technology"
- },
- {
- "description": "Results page",
- "in": "query",
- "maximum": 200,
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "x-example": "main"
}
],
"produces": [
@@ -209026,7 +237409,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/barrons.headlinesResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -209035,18 +237418,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -209059,16 +237430,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get the latest stories in a Barron's topic",
+ "summary": "Get CBS News section headlines",
"tags": [
- "Barrons"
+ "CBS News"
]
}
},
- "/barrons/news": {
+ "/cbsnews/news": {
"get": {
- "description": "Returns Barron's current cross-section news feed: the newest stories across every section, each with its title, canonical URL, and publication time.",
- "operationId": "barrons-news",
+ "description": "Returns fresh CBS News top stories from its public RSS feed.",
+ "operationId": "cbsnews-news",
"produces": [
"application/json"
],
@@ -209076,7 +237447,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/barrons.newsResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -209097,16 +237468,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get the latest Barron's stories",
+ "summary": "Get CBS News top stories",
"tags": [
- "Barrons"
+ "CBS News"
]
}
},
- "/barrons/topics": {
+ "/cbsnews/sections": {
"get": {
- "description": "Lists every Barron's editorial topic accepted by /barrons/headlines' section parameter, with each topic's slug, display name, and landing-page URL.",
- "operationId": "barrons-topics",
+ "description": "Returns the live-verified public CBS News RSS section inventory used by cbsnews-headlines.",
+ "operationId": "cbsnews-sections",
"produces": [
"application/json"
],
@@ -209114,19 +237485,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/barrons.topicsResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -209135,27 +237494,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Barron's topics",
+ "summary": "Get CBS News sections",
"tags": [
- "Barrons"
+ "CBS News"
]
}
},
- "/bbb/business": {
+ "/cbssports/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a normalized bbb.org business profile: BBB rating letter grade and reasons, accreditation status and since-date, years in business, BBB file/incorporation dates, entity type, contact info, business categories, social media, and a short latest-reviews preview. Credential-free public Better Business Bureau data.",
- "operationId": "bbb-business",
+ "description": "Returns public CBS Sports article metadata and body paragraphs from a canonical cbssports.com//news/ URL.",
+ "operationId": "cbssports-article",
"parameters": [
{
- "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url",
+ "description": "Canonical CBS Sports article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803"
+ "x-example": "https://www.cbssports.com/college-football/news/president-trump-attending-texas-tennessee/"
}
],
"produces": [
@@ -209165,7 +237521,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbb.businessResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -209180,8 +237536,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -209198,27 +237554,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Better Business Bureau business profile",
+ "summary": "Get CBS Sports article content",
"tags": [
- "BBB"
+ "CBS Sports"
]
}
},
- "/bbb/business/complaints": {
+ "/cbssports/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a business's BBB complaint history: total complaint count, complaints closed in the last 12 months, and per-complaint detail (date, type, status, narrative text, and any business response / customer answer thread). A business with no filed complaints returns total_complaints 0 and an empty complaints list -- this is a normal result, not an error. Credential-free public Better Business Bureau data.",
- "operationId": "bbb-business-complaints",
+ "description": "Returns one CBS Sports writer's public profile: name, title, headshot, bio, X/Twitter link, and their recent articles.",
+ "operationId": "cbssports-author",
"parameters": [
{
- "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url",
+ "description": "Writer slug, e.g. david-cobb",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "david-cobb"
+ },
+ {
+ "description": "Canonical cbssports.com/writers// URL; alternative to slug",
"in": "query",
"name": "url",
- "required": true,
"type": "string",
- "x-example": "https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803"
+ "x-example": "https://www.cbssports.com/writers/david-cobb/"
}
],
"produces": [
@@ -209228,7 +237587,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbb.complaintsResponseDoc"
+ "$ref": "#/definitions/publicnews.cbsSportsAuthorResponseDoc"
}
},
"400": {
@@ -209243,8 +237602,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -209261,27 +237620,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Better Business Bureau business's complaint history",
+ "summary": "Get a CBS Sports writer profile",
"tags": [
- "BBB"
+ "CBS Sports"
]
}
},
- "/bbb/business/more-info": {
+ "/cbssports/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a business's full per-factor \"Reasons for Rating\" list and full service-area list, from the separate BBB business profile /more-info sub-page. The bbb-business endpoint's own rating_reasons field is read from the main profile page and typically holds only one generic boilerplate bullet regardless of actual rating; this endpoint fetches the richer, business-specific list instead. Service area is business-conditional -- some businesses render no service-area section at all, in which case service_areas is empty. Credential-free public Better Business Bureau data.",
- "operationId": "bbb-business-more-info",
+ "description": "Returns fresh headlines from one public CBS Sports per-sport RSS feed.",
+ "operationId": "cbssports-headlines",
"parameters": [
{
- "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url",
+ "description": "CBS Sports section slug",
+ "enum": [
+ "nfl",
+ "college-football",
+ "nba",
+ "college-basketball",
+ "womens-college-basketball",
+ "wnba",
+ "mlb",
+ "nhl",
+ "soccer",
+ "golf",
+ "tennis",
+ "ufc",
+ "mma",
+ "boxing",
+ "wwe",
+ "nascar",
+ "motor-sports",
+ "olympics",
+ "betting",
+ "prediction",
+ "general"
+ ],
"in": "query",
- "name": "url",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803"
+ "x-example": "nfl"
}
],
"produces": [
@@ -209291,7 +237670,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbb.moreInfoResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -209300,14 +237679,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -209324,35 +237697,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Better Business Bureau business's full rating reasons and service area",
+ "summary": "Get CBS Sports section headlines",
"tags": [
- "BBB"
+ "CBS Sports"
]
}
},
- "/bbb/business/reviews": {
+ "/cbssports/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a business's full customer-review list (author, star rating, date, text, and any business response thread), paginated 10 per page, plus the average star rating and total review count. Credential-free public Better Business Bureau data. Unlike the other bbb-business-* endpoints, this one is fetched with browser impersonation rather than plain direct HTTP -- see the family's maintenance note for why.",
- "operationId": "bbb-business-reviews",
- "parameters": [
- {
- "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url",
- "in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803"
- },
- {
- "description": "Result page (10 per page), default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- }
- ],
+ "description": "Returns fresh CBS Sports top stories from its public headlines RSS feed.",
+ "operationId": "cbssports-news",
"produces": [
"application/json"
],
@@ -209360,17 +237714,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbb.reviewsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -209387,35 +237735,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Better Business Bureau business's customer reviews",
+ "summary": "Get CBS Sports top stories",
"tags": [
- "BBB"
+ "CBS Sports"
]
}
},
- "/bbb/category": {
+ "/cbssports/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Browses bbb.org businesses by category and location directly, without a free-text search query. Returns the same normalized business-result shape as bbb-search. Credential-free public Better Business Bureau data.",
- "operationId": "bbb-category",
- "parameters": [
- {
- "description": "BBB category browse URL, from a bbb-search result's related_categories",
- "in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.bbb.org/us/tx/austin/category/plumber"
- },
- {
- "description": "Result page, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- }
- ],
+ "description": "Returns the live-verified public CBS Sports per-sport RSS feed inventory used by cbssports-headlines.",
+ "operationId": "cbssports-sections",
"produces": [
"application/json"
],
@@ -209423,25 +237752,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbb.categoryResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -209450,119 +237761,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a Better Business Bureau category",
+ "summary": "Get CBS Sports sections",
"tags": [
- "BBB"
+ "CBS Sports"
]
}
},
- "/bbb/scamtracker/search": {
+ "/chewy/brands": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches bbb.org Scam Tracker's consumer-reported-scam database by free-text query, scam category, targeted-victim state/province, reported-scammer state/province, report-date range, and/or dollar-loss range, paginated 10 results/page. Omit every filter to browse the most-recent-first feed. Credential-free public Better Business Bureau data. This is a separate BBB dataset from the bbb-search/bbb-business/bbb-business-complaints business-rating family -- consumer-reported scam incidents, not business ratings.",
- "operationId": "bbb-scamtracker-search",
+ "description": "Returns one page of Chewy's full brand directory -- roughly 7,600 brands -- with each brand's id, name, Chewy's own written description, image, parent-catalog group, and its child brands where a brand umbrellas others (Purina lists 27). This is the whole catalog of brands, unlike chewy_facets, which only reports the brands present in one category's listing. Pass name to look up a single brand by exact name, case-insensitive; it is an exact match upstream, not a search, so \"Purina\" matches while \"purina pro\" does not. To filter products by a brand, pass the brand's NAME to chewy_category or chewy_search as filter=brand_facet: -- facet_id is the join key onto chewy_facets' own option ids and is not accepted by the filter parameter.",
+ "operationId": "chewy-brands",
"parameters": [
{
- "description": "Free-text search (phone number, website, email, business name, scam ID, description). Omit to browse the most-recent feed",
- "in": "query",
- "name": "query",
- "type": "string",
- "x-example": "amazon"
- },
- {
- "description": "Scam category filter",
- "enum": [
- "Advance Fee Loan",
- "Bank/Credit Card Company Imposter",
- "Business Email Compromise",
- "Charity",
- "Counterfeit Product",
- "COVID-19",
- "Credit Cards",
- "Credit Repair/Debt Relief",
- "CryptoCurrency",
- "Debt Collections",
- "Employment",
- "Fake Check/Money Order",
- "Fake Invoice/Supplier Bill",
- "Family/Friend Emergency",
- "Foreign Money Exchange",
- "Government Agency Imposter",
- "Government Grant",
- "Healthcare/Medicaid/Medicare",
- "Home Improvement",
- "Identity Theft",
- "Investment",
- "Moving",
- "Online Purchase",
- "Other",
- "Phishing",
- "Rental",
- "Retail Business",
- "Romance",
- "Scholarship",
- "Sweepstakes/Lottery/Prizes",
- "Tax Collection",
- "Tech Support",
- "Travel/Vacation/Timeshare",
- "Utility",
- "Vanity Award",
- "Worthless Problem-solving Service",
- "Yellow Pages/Directories"
- ],
- "in": "query",
- "name": "scam_type",
- "type": "string"
- },
- {
- "description": "Optional 2-letter targeted-victim state/province code (US state or Canadian province)",
- "in": "query",
- "name": "state",
- "type": "string",
- "x-example": "TX"
- },
- {
- "description": "Optional 2-letter reported-scammer state/province code (US state or Canadian province) -- where the scammer is reported to be, not the victim",
- "in": "query",
- "name": "scammer_state",
- "type": "string",
- "x-example": "NY"
- },
- {
- "description": "Optional report-date range start (YYYY-MM-DD), inclusive. Must be set together with date_to",
- "in": "query",
- "name": "date_from",
- "type": "string",
- "x-example": "2026-01-01"
- },
- {
- "description": "Optional report-date range end (YYYY-MM-DD), inclusive. Must be set together with date_from",
- "in": "query",
- "name": "date_to",
- "type": "string",
- "x-example": "2026-01-31"
- },
- {
- "description": "Optional minimum reported dollar loss. Must be set together with max_dollars_lost",
+ "description": "Page number, 1-based (default 1).",
"in": "query",
- "name": "min_dollars_lost",
+ "name": "page",
"type": "integer",
- "x-example": 500000
+ "x-example": 1
},
{
- "description": "Optional maximum reported dollar loss. Must be set together with min_dollars_lost",
+ "description": "Brands per page, 1 to 500 (default 100).",
"in": "query",
- "name": "max_dollars_lost",
+ "name": "limit",
"type": "integer",
- "x-example": 1000000
+ "x-example": 100
},
{
- "description": "Result page (10 per page), default 1",
+ "description": "Return only the brand with this exact name, case-insensitive. Exact match, not a search.",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "name",
+ "type": "string",
+ "x-example": "ACANA"
}
],
"produces": [
@@ -209572,7 +237804,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbbscamtracker.searchResponseDoc"
+ "$ref": "#/definitions/chewy.brandsResponseDoc"
}
},
"400": {
@@ -209581,8 +237813,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -209599,31 +237831,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Better Business Bureau Scam Tracker reports",
+ "summary": "List Chewy's brand directory",
"tags": [
- "BBB"
+ "Chewy"
]
}
},
- "/bbb/scamtracker/state-stats": {
+ "/chewy/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns aggregate scam-report stats per US state and Canadian province for a given time window: report counts, dollar losses, per-capita rates, year-over-year change, and top scam-type breakdown. This calls the same JSON API the BBB Scam Tracker heatmap dashboard's own frontend uses -- not an HTML scrape. Credential-free public Better Business Bureau data.",
- "operationId": "bbb-scamtracker-state-stats",
+ "description": "Returns Chewy's category taxonomy tree: how to discover group_id values for chewy_category, not the products within a category. Omitting group_id returns all top-level departments (Dog, Cat, Horse, Bird, Fish, Reptile, Small Pet, Farm and Livestock Supplies, Wild Bird and Wildlife Supplies, Pharmacy, Pet Parents); a group_id expands that specific group's own subtree instead. depth controls how many levels of subcategories are expanded in one call.",
+ "operationId": "chewy-categories",
"parameters": [
{
- "description": "Aggregation window, default 90",
- "enum": [
- "30",
- "90",
- "365",
- "all"
- ],
+ "description": "Chewy category group id to expand, e.g. 332 for Dog Food. Omit for the full top-level department tree.",
"in": "query",
- "name": "period",
- "type": "string"
+ "name": "group_id",
+ "type": "string",
+ "x-example": "332"
+ },
+ {
+ "description": "How many levels of subcategories to expand, 1 to 3 (default 2)",
+ "in": "query",
+ "name": "depth",
+ "type": "integer",
+ "x-example": 2
}
],
"produces": [
@@ -209633,7 +237867,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbbscamtracker.stateStatsResponseDoc"
+ "$ref": "#/definitions/chewy.categoriesResponseDoc"
}
},
"400": {
@@ -209642,8 +237876,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -209660,27 +237894,68 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Better Business Bureau Scam Tracker state/province aggregate stats",
+ "summary": "Browse Chewy's category taxonomy tree",
"tags": [
- "BBB"
+ "Chewy"
]
}
},
- "/bbb/scamtracker/{id}": {
+ "/chewy/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one normalized BBB Scam Tracker consumer scam report: description, dollars lost, targeted person's location, scammer location/email/phone/URL (when known), scam type, business name used, and date reported. Credential-free public Better Business Bureau data.",
- "operationId": "bbb-scamtracker-detail",
+ "description": "Returns one page (36 products) of a Chewy category/browse listing's product grid (price, autoship price/discount, stock, rating, images), plus embedded facets and breadcrumbs. group_id is Chewy's own numeric category id -- the trailing id segment of a chewy.com/b/- browse URL, e.g. 294 for /b/dry-food-294. Every breadcrumbs[].group_id and facets[].options[].value in a response is a ready-to-use group_id for a follow-up call, so a caller can discover the full category taxonomy starting from a known category. A group_id Chewy does not recognize returns a 404 rather than an unfiltered listing. sort and filter narrow/reorder the listing; every facets[].value paired with one of that facet's options[].value from any prior response is a valid filter key:value pair (e.g. brand, breed size, flavor, price range, customer rating -- whichever facets that category exposes). Set include_content to also return the category's curated editorial content -- Chewy's own FAQ question/answer pairs, the rich category description, and the SEO page title and meta description; it costs no extra upstream call and is omitted entirely when not requested. A keyword search carries none of this content, so it is a category-only addition.",
+ "operationId": "chewy-category",
"parameters": [
{
- "description": "BBB Scam Tracker report id, from a bbb-scamtracker-search result's id or url",
- "in": "path",
- "name": "id",
+ "description": "Chewy's numeric category id, e.g. \\",
+ "in": "query",
+ "name": "group_id",
"required": true,
"type": "string",
- "x-example": "1397968"
+ "x-example": "294"
+ },
+ {
+ "description": "Page number, 36 products per page (default 1)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Sort order. One of byRelevance, byNewest, byPopularity, byLowestPrice, byHighestPrice, byRating, byRatingCount. Defaults to Chewy's own relevance ordering when omitted.",
+ "enum": [
+ "byRelevance",
+ "byNewest",
+ "byPopularity",
+ "byLowestPrice",
+ "byHighestPrice",
+ "byRating",
+ "byRatingCount"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "byRating"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Repeatable, up to 10. Each value is \\",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "filter",
+ "type": "array",
+ "x-example": "brand_facet:ACANA"
+ },
+ {
+ "description": "Also return the category's curated editorial content -- Chewy's own FAQ question/answer pairs, the rich category description, and the SEO page title/meta description. Costs no extra upstream call. Omitted entirely when false (the default).",
+ "in": "query",
+ "name": "include_content",
+ "type": "boolean",
+ "x-example": true
}
],
"produces": [
@@ -209690,7 +237965,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbbscamtracker.detailResponseDoc"
+ "$ref": "#/definitions/chewy.categoryResponseDoc"
}
},
"400": {
@@ -209705,8 +237980,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -209723,41 +237998,44 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Better Business Bureau Scam Tracker report",
+ "summary": "Browse a Chewy category listing",
"tags": [
- "BBB"
+ "Chewy"
]
}
},
- "/bbb/search": {
+ "/chewy/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches bbb.org for businesses by name or category near a location. Returns each business's BBB rating letter grade, accreditation status, categories, service areas, contact info, and profile URL. Credential-free public Better Business Bureau data.",
- "operationId": "bbb-search",
+ "description": "Returns the full set of refinement options (facets) a Chewy category or keyword search can be narrowed by -- brand, sub-category, lifestage, food form, breed size, special diet, health feature, flavor, ingredient, packaging type, price band, customer rating, and whichever other dimensions that listing exposes -- with each option's product count. No products are returned, so this is a much smaller call than chewy_category/chewy_search when only the option set is wanted. The Brand dimension is effectively Chewy's brand directory for the requested listing: each brand option carries its product count and, where Chewy publishes one, its own chewy.com/brands/- landing-page slug in seo_hvf_slug. Exactly one of group_id or q is required. Every facets[].value paired with one of that facet's options[].value is a ready-to-use filter key:value pair for this endpoint, chewy_category, and chewy_search alike; passing filter here narrows the listing first, so the returned counts describe the already-narrowed result set. A group_id Chewy does not recognize returns a 404 rather than an empty option set.",
+ "operationId": "chewy-facets",
"parameters": [
{
- "description": "Business name or category/service keyword",
+ "description": "Chewy's numeric category id, e.g. \\",
"in": "query",
- "name": "query",
- "required": true,
+ "name": "group_id",
"type": "string",
- "x-example": "plumber"
+ "x-example": "294"
},
{
- "description": "City and state (e.g. 'Austin, TX') or a ZIP code",
+ "description": "Free-text search keywords to return refinement options for, e.g. \\",
"in": "query",
- "name": "location",
- "required": true,
+ "name": "q",
"type": "string",
- "x-example": "Austin, TX"
+ "x-example": "salmon dog food"
},
{
- "description": "Result page, default 1",
+ "collectionFormat": "csv",
+ "description": "Repeatable, up to 10. Each value is \\",
"in": "query",
- "name": "page",
- "type": "integer"
+ "items": {
+ "type": "string"
+ },
+ "name": "filter",
+ "type": "array",
+ "x-example": "brand_facet:ACANA"
}
],
"produces": [
@@ -209767,7 +238045,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbb.searchResponseDoc"
+ "$ref": "#/definitions/chewy.facetsResponseDoc"
}
},
"400": {
@@ -209776,8 +238054,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -209794,24 +238078,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Better Business Bureau businesses",
+ "summary": "List a Chewy category or search's refinement options",
"tags": [
- "BBB"
+ "Chewy"
]
}
},
- "/bbc/article": {
+ "/chewy/gtin-lookup": {
"get": {
- "description": "Returns a BBC News article's public metadata and body paragraphs from a canonical article URL. Live pages are not supported.",
- "operationId": "bbc-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Resolves a batch of up to 20 GTIN/UPC barcodes to their Chewy part numbers in one call. gtins is a comma-separated list of barcodes, e.g. \"192268541316\". A barcode Chewy does not recognize is omitted from part_numbers and listed in not_found rather than causing the whole call to fail. The resolved part_numbers values feed directly into chewy_product/chewy_products.",
+ "operationId": "chewy-gtin-lookup",
"parameters": [
{
- "description": "Canonical BBC News article URL",
+ "description": "Comma-separated GTIN/UPC barcodes, up to 20",
"in": "query",
- "name": "url",
+ "name": "gtins",
"required": true,
"type": "string",
- "x-example": "https://www.bbc.co.uk/news/articles/cd68q3wynnqo"
+ "x-example": "192268541316"
}
],
"produces": [
@@ -209821,7 +238108,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbc.articleResponseDoc"
+ "$ref": "#/definitions/chewy.gtinLookupResponseDoc"
}
},
"400": {
@@ -209830,12 +238117,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -209854,24 +238135,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get BBC News article content",
+ "summary": "Resolve Chewy GTIN/UPC barcodes to part numbers",
"tags": [
- "BBC"
+ "Chewy"
]
}
},
- "/bbc/author": {
+ "/chewy/inventory": {
"get": {
- "description": "Returns a BBC News correspondent's public profile: name, short bio, and their recent articles.",
- "operationId": "bbc-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Chewy's live warehouse inventory position for up to 20 products in one call, keyed by part number: the availability status, total units on hand, units inbound/in progress, units already reserved against unshipped orders, and the quantity actually available to the storefront. This is the only Chewy surface that carries real quantities -- every other endpoint in this family reports stock as a single boolean, so \"36 units left\" and \"84,386 units left\" are indistinguishable there. Quantities are live and move between calls. Part numbers Chewy does not return inventory for are reported in not_found; if none resolve the response is a 404.",
+ "operationId": "chewy-inventory",
"parameters": [
{
- "description": "Canonical BBC News correspondent URL",
+ "description": "Comma-separated Chewy part numbers, up to 20 per request, e.g. \\",
"in": "query",
- "name": "url",
+ "name": "part_numbers",
"required": true,
"type": "string",
- "x-example": "https://www.bbc.co.uk/news/correspondents/jonnydymond"
+ "x-example": "101143,52448"
}
],
"produces": [
@@ -209881,7 +238165,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbc.authorResponseDoc"
+ "$ref": "#/definitions/chewy.inventoryResponseDoc"
}
},
"400": {
@@ -209914,33 +238198,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a BBC News correspondent's profile",
+ "summary": "Look up live warehouse inventory for a batch of Chewy products",
"tags": [
- "BBC"
+ "Chewy"
]
}
},
- "/bbc/headlines": {
+ "/chewy/item-attributes": {
"get": {
- "description": "Returns fresh headlines from a public BBC News RSS section. section defaults to world.",
- "operationId": "bbc-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Chewy's own specification table for up to 20 products in one call, keyed by part number -- the structured attribute list (lifestage, pet type, product type, material, made-in country, packaging type, flavor, defining size, plus long-form key-benefits and cautions copy), together with the handling and compliance flags that govern how an item ships (pharmaceutical, prescription vet-diet, frozen, refrigerated, single-tablet, gift card), its bundle structure and component SKUs, its autoship eligibility/discount and preset reorder cadence, its merchandising classification path, and the numeric category group ids it belongs to (each usable directly as chewy_category's group_id). This complements rather than repeats chewy_products and chewy_product: price, rating, images, reviews, and descriptions stay on those endpoints, and the attribute table is not available from either. Use the group parameter to return a single attribute group. Part numbers Chewy does not recognize are reported in not_found; if none of them resolve the response is a 404.",
+ "operationId": "chewy-item-attributes",
"parameters": [
{
- "description": "BBC News RSS section, defaults to world",
+ "description": "Comma-separated Chewy part numbers, up to 20 per request, e.g. \\",
+ "in": "query",
+ "name": "part_numbers",
+ "required": true,
+ "type": "string",
+ "x-example": "52448,101143"
+ },
+ {
+ "description": "Return only attributes in one group. One of DEFINING, STANDARD, EXTENDED, HIDDEN. Omit for every group.",
"enum": [
- "all",
- "world",
- "uk",
- "politics",
- "business",
- "health",
- "science_and_environment",
- "technology",
- "entertainment_and_arts"
+ "DEFINING",
+ "STANDARD",
+ "EXTENDED",
+ "HIDDEN"
],
"in": "query",
- "name": "section",
- "type": "string"
+ "name": "group",
+ "type": "string",
+ "x-example": "STANDARD"
}
],
"produces": [
@@ -209950,7 +238241,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbc.headlinesResponseDoc"
+ "$ref": "#/definitions/chewy.itemAttributesResponseDoc"
}
},
"400": {
@@ -209983,24 +238274,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get BBC News section headlines",
+ "summary": "Look up a batch of Chewy products' structured attributes and handling flags",
"tags": [
- "BBC"
+ "Chewy"
]
}
},
- "/bbc/live": {
+ "/chewy/product": {
"get": {
- "description": "Returns the current server-rendered text updates from one canonical BBC News live URL. It does not subscribe to updates or return broadcast, player, or stream data.",
- "operationId": "bbc-live",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Chewy product's full normalized detail: name, brand, description, images, price, stock, rating and its star-count breakdown, category breadcrumbs, customer questions and answers, and customer reviews. id is the numeric id from a chewy.com PDP URL, e.g. 185468 from https://www.chewy.com/frisco-lion-mane-dog-cat-costume/dp/185468 -- also the same value a chewy_category response's products[].part_number field carries for that product's own default variant. The response also carries the item's shipping weight and package dimensions as Chewy states them, its per-order purchase limit, and any promotions currently attached to it (each with a type such as \"Spend $X\" or \"BOGO\", plus short and long descriptions).",
+ "operationId": "chewy-product",
"parameters": [
{
- "description": "Canonical BBC News live URL",
+ "description": "Numeric id from a chewy.com PDP URL",
"in": "query",
- "name": "url",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "https://www.bbc.co.uk/news/live/c6y8mjmnpxv0t"
+ "x-example": "185468"
}
],
"produces": [
@@ -210010,7 +238304,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbc.liveResponseDoc"
+ "$ref": "#/definitions/chewy.productResponseDoc"
}
},
"400": {
@@ -210043,32 +238337,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a BBC News live-page text snapshot",
+ "summary": "Get a Chewy product's detail",
"tags": [
- "BBC"
+ "Chewy"
]
}
},
- "/bbc/search": {
+ "/chewy/product-questions": {
"get": {
- "description": "Returns a bounded page of public BBC search-result metadata: title, URL, standfirst summary, display date, and a type of article, video, audio, live, topic, or page. Topic items are BBC topic hub pages rather than articles and carry no published_at. Media entries link only to their BBC landing pages; streams, downloads, and transcripts are not returned.",
- "operationId": "bbc-search",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one page of a Chewy product's customer questions, each with its answers (text, author, date, staff flag, helpful count). chewy_product embeds only the first 20 questions with no way to page past them; this endpoint reaches the whole set. id is the numeric id from any chewy.com PDP URL, and questions are shared across a product's variants, so any variant's id returns the same set. Each question reports answers_total alongside its answers array, so a caller can tell when answers were truncated by answer_limit. Chewy offers no sort or filter on questions, so this endpoint deliberately exposes paging only.",
+ "operationId": "chewy-product-questions",
"parameters": [
{
- "description": "Search query, up to 120 characters",
+ "description": "The numeric id from a chewy.com PDP URL, e.g. \\",
"in": "query",
- "name": "q",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "climate"
+ "x-example": "767806"
},
{
- "description": "Results page, defaults to 1",
+ "description": "Page number, 1-based (default 1).",
"in": "query",
- "maximum": 10,
- "minimum": 1,
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Questions per page, 1 to 50 (default 20).",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "description": "Answers to return per question, 1 to 20 (default 10). Each question also reports answers_total.",
+ "in": "query",
+ "name": "answer_limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -210078,7 +238388,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bbc.searchResponseDoc"
+ "$ref": "#/definitions/chewy.questionsResponseDoc"
}
},
"400": {
@@ -210111,19 +238421,69 @@
"ApiKeyAuth": []
}
],
- "summary": "Search public BBC pages",
+ "summary": "List a Chewy product's customer questions and answers, paginated",
"tags": [
- "BBC"
+ "Chewy"
]
}
},
- "/bestbuy/brands": {
+ "/chewy/product-reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Best Buy's full brand directory (name, category id, url), sourced from the site's own \"Name Brands\" page. Each id is directly usable as bestbuy_category's category_id input.",
- "operationId": "bestbuy-brands",
+ "description": "Returns one page of a Chewy product's customer reviews -- rating, title, body, author, submission date, helpful count, incentivized flag, and contributor badge -- with sorting and positive/negative filtering. chewy_product embeds only the first 20 reviews with no way to page past them; this endpoint reaches the whole set (products routinely carry thousands). id is the numeric id from any chewy.com PDP URL, and reviews are shared across a product's variants, so any variant's id returns the same set. total is the count for the current filter, so it drops when filter is applied, while rating_count stays the product's overall rating tally.",
+ "operationId": "chewy-product-reviews",
+ "parameters": [
+ {
+ "description": "The numeric id from a chewy.com PDP URL, e.g. \\",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "767806"
+ },
+ {
+ "description": "Page number, 1-based (default 1).",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Reviews per page, 1 to 50 (default 20).",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "description": "Sort order. One of MOST_RELEVANT, NEWEST, OLDEST, HIGHEST_RATING, LOWEST_RATING, PHOTOS. Defaults to Chewy's own ordering when omitted.",
+ "enum": [
+ "MOST_RELEVANT",
+ "NEWEST",
+ "OLDEST",
+ "HIGHEST_RATING",
+ "LOWEST_RATING",
+ "PHOTOS"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "NEWEST"
+ },
+ {
+ "description": "Restrict to POSITIVE (4-5 star) or NEGATIVE (1-3 star) reviews. Omit for all.",
+ "enum": [
+ "POSITIVE",
+ "NEGATIVE"
+ ],
+ "in": "query",
+ "name": "filter",
+ "type": "string",
+ "x-example": "POSITIVE"
+ }
+ ],
"produces": [
"application/json"
],
@@ -210131,49 +238491,20 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.brandsResponseDoc"
+ "$ref": "#/definitions/chewy.reviewsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Best Buy's full brand directory",
- "tags": [
- "Best Buy"
- ]
- }
- },
- "/bestbuy/categories": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Best Buy's top-level shopping departments (name, category id, url), sourced from the homepage's own category carousel. Each id is directly usable as bestbuy_category's category_id input.",
- "operationId": "bestbuy-categories",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/bestbuy.categoriesResponseDoc"
- }
},
"429": {
"description": "Too Many Requests",
@@ -210193,19 +238524,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Best Buy's top-level shopping departments",
+ "summary": "List a Chewy product's customer reviews, paginated",
"tags": [
- "Best Buy"
+ "Chewy"
]
}
},
- "/bestbuy/categories/trending": {
+ "/chewy/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Best Buy's fine-grained, often deeply-nested product-type categories (e.g. \"Windows Laptops\", \"55-Inch TVs (55 - 64 in)\", \"PS5 Consoles\") sourced from the homepage's own \"Best Selling\" section -- much more specific than bestbuy_categories' ~25 top-level departments. Each id is directly usable as bestbuy_category's category_id input.",
- "operationId": "bestbuy-categories-trending",
+ "description": "Returns a batch of up to 20 Chewy products' lightweight summaries (price, rating, stock, images) in one call. part_numbers is a comma-separated list of Chewy part numbers, e.g. \"52448,767758\" -- the same value chewy_product returns as part_number/parent_part_number, and chewy_category/chewy_search return as products[].part_number. A part number Chewy does not recognize is omitted from products and listed in not_found rather than causing the whole call to fail.",
+ "operationId": "chewy-products",
+ "parameters": [
+ {
+ "description": "Comma-separated Chewy part numbers, up to 20",
+ "in": "query",
+ "name": "part_numbers",
+ "required": true,
+ "type": "string",
+ "x-example": "52448,767758"
+ }
+ ],
"produces": [
"application/json"
],
@@ -210213,7 +238554,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.trendingCategoriesResponseDoc"
+ "$ref": "#/definitions/chewy.productsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -210234,34 +238581,61 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Best Buy's fine-grained trending product-type categories",
+ "summary": "Get a batch of Chewy products' lightweight summaries",
"tags": [
- "Best Buy"
+ "Chewy"
]
}
},
- "/bestbuy/category": {
+ "/chewy/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page (up to 24) of one Best Buy category's normalized product listing (sku, title, url, image, price, rating, review count). category_id is a Best Buy category id, e.g. pcmcat138500050001, found in a category page URL's trailing .c?id= segment. page is the optional 1-indexed page number (defaults to 1); requesting a page past the last one returns an empty products list, not an error.",
- "operationId": "bestbuy-category",
+ "description": "Returns one page of a Chewy keyword search's normalized product listing (price, autoship price/discount, stock, rating, images), plus embedded facets. q is free-text search keywords, e.g. \"salmon dog food\". A generic query that strongly matches one of Chewy's own categories (e.g. \"dog food\", \"cat litter\", \"leash\") is transparently redirected to that category's listing, the same real results a chewy.com visitor would see -- source_url reflects the actual listing fetched. sort and filter narrow/reorder the listing; every facets[].value paired with one of that facet's options[].value from any prior response is a valid filter key:value pair.",
+ "operationId": "chewy-search",
"parameters": [
{
- "description": "Best Buy category id",
+ "description": "Free-text search keywords",
"in": "query",
- "name": "category_id",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "pcmcat138500050001"
+ "x-example": "salmon dog food"
},
{
- "description": "1-indexed page number, defaults to 1",
+ "description": "Page number, 36 products per page (default 1)",
"in": "query",
"name": "page",
"type": "integer",
"x-example": 1
+ },
+ {
+ "description": "Sort order. One of byRelevance, byNewest, byPopularity, byLowestPrice, byHighestPrice, byRating, byRatingCount. Defaults to Chewy's own relevance ordering when omitted.",
+ "enum": [
+ "byRelevance",
+ "byNewest",
+ "byPopularity",
+ "byLowestPrice",
+ "byHighestPrice",
+ "byRating",
+ "byRatingCount"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "byRating"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Repeatable, up to 10. Each value is \\",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "filter",
+ "type": "array",
+ "x-example": "brand_facet:ACANA"
}
],
"produces": [
@@ -210271,7 +238645,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.categoryResponseDoc"
+ "$ref": "#/definitions/chewy.searchResponseDoc"
}
},
"400": {
@@ -210280,12 +238654,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -210304,27 +238672,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Best Buy category's product listing",
+ "summary": "Search Chewy by keyword",
"tags": [
- "Best Buy"
+ "Chewy"
]
}
},
- "/bestbuy/category/subcategories": {
+ "/chewy/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Best Buy category's own sibling/child category set (name, category id, url), sourced from that category page's own \"Category\" filter facet. Each id is directly usable as bestbuy_category's category_id input. category_id is a Best Buy category id, e.g. pcmcat138500050001, found in a category page URL's trailing .c?id= segment. A leaf category with no siblings returns an empty list, not an error.",
- "operationId": "bestbuy-category-subcategories",
+ "description": "Returns Chewy's own search-box typeahead result for a partial query term: search-term suggestions (some resolving directly to a category/brand browse URL via their own url field) plus a handful of educational-content article suggestions. term is a partial query, e.g. \"salmon dog\" or \"blue buff\". Omit term entirely to get what Chewy shows on an empty search box instead: its current Popular Searches (each resolving to a category or brand listing) and Popular Articles.",
+ "operationId": "chewy-suggest",
"parameters": [
{
- "description": "Best Buy category id",
+ "description": "Partial search text, e.g. \\",
"in": "query",
- "name": "category_id",
- "required": true,
+ "name": "term",
"type": "string",
- "x-example": "pcmcat138500050001"
+ "x-example": "salmon dog"
}
],
"produces": [
@@ -210334,7 +238701,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.subcategoriesResponseDoc"
+ "$ref": "#/definitions/chewy.suggestResponseDoc"
}
},
"400": {
@@ -210361,27 +238728,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Best Buy category's own sibling/child categories",
+ "summary": "Chewy search-box typeahead suggestions",
"tags": [
- "Best Buy"
+ "Chewy"
]
}
},
- "/bestbuy/product": {
+ "/chewy/variants": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Best Buy product's normalized detail (name, brand, model, color, price, availability, rating, images, breadcrumbs), sourced from the product page's own schema.org Product structured-data block. sku is the numeric Best Buy SKU shown on bestbuy.com product pages and URLs.",
- "operationId": "bestbuy-product",
+ "description": "Returns the full roster of purchasable variants for the product a given item belongs to -- every size, flavor, or color Chewy sells it in -- with each variant's own part number, price, Autoship price, stock, images, and the defining option that distinguishes it (e.g. Size = Medium). id is the numeric id from any chewy.com PDP URL; passing any one variant's id returns that variant's whole family, and the variant you asked for is flagged with is_requested. This answers a question chewy_product cannot: chewy_product describes only the single variant it was given and names its parent, but never lists the siblings or their prices. Only the defining option is returned, not the full attribute table -- use chewy_item_attributes for that.",
+ "operationId": "chewy-variants",
"parameters": [
{
- "description": "Numeric Best Buy SKU",
+ "description": "The numeric id from a chewy.com PDP URL, e.g. \\",
"in": "query",
- "name": "sku",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "6673590"
+ "x-example": "185468"
}
],
"produces": [
@@ -210391,7 +238758,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.productResponseDoc"
+ "$ref": "#/definitions/chewy.variantsResponseDoc"
}
},
"400": {
@@ -210400,6 +238767,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -210418,27 +238791,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Best Buy product's detail",
+ "summary": "List every size/flavor variant of a Chewy product",
"tags": [
- "Best Buy"
+ "Chewy"
]
}
},
- "/bestbuy/product/questions": {
+ "/chicagotribune/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the customer questions (with answers, when present) Best Buy embeds directly on a product's page: question text, answer text, who answered, and when. sku is the numeric Best Buy SKU shown on bestbuy.com product pages and URLs. A product with no questions asked yet returns an empty list, not an error.",
- "operationId": "bestbuy-product-questions",
+ "description": "Returns public Chicago Tribune article metadata and body paragraphs from a canonical article URL. For subscriber-only articles the response carries the free lead-in with paywalled set to true.",
+ "operationId": "chicagotribune-article",
"parameters": [
{
- "description": "Numeric Best Buy SKU",
+ "description": "Canonical Chicago Tribune article URL",
"in": "query",
- "name": "sku",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "6673590"
+ "x-example": "https://www.chicagotribune.com/2026/09/24/gov-jb-pritzker-illinois-lawmakers-data-centers/"
}
],
"produces": [
@@ -210448,7 +238818,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.productQuestionsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -210457,8 +238827,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -210475,27 +238845,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Best Buy product's customer questions and answers",
+ "summary": "Get Chicago Tribune article content",
"tags": [
- "Best Buy"
+ "Chicago Tribune"
]
}
},
- "/bestbuy/product/related": {
+ "/chicagotribune/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the organic (non-sponsored) related products Best Buy embeds in a product page's own comparison table (sku, name, url, image, price). sku is the numeric Best Buy SKU shown on bestbuy.com product pages and URLs. A product page with no comparison table returns an empty list, not an error.",
- "operationId": "bestbuy-product-related",
+ "description": "Returns one Chicago Tribune author's public profile: name, job title when listed, bio, public email and X/Twitter handle, and their recent articles.",
+ "operationId": "chicagotribune-author",
"parameters": [
{
- "description": "Numeric Best Buy SKU",
+ "description": "Author slug, e.g. olivia-olander",
"in": "query",
- "name": "sku",
- "required": true,
+ "name": "slug",
"type": "string",
- "x-example": "6673590"
+ "x-example": "olivia-olander"
+ },
+ {
+ "description": "Canonical chicagotribune.com/author// URL; alternative to slug",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.chicagotribune.com/author/olivia-olander/"
}
],
"produces": [
@@ -210505,7 +238878,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.productRelatedResponseDoc"
+ "$ref": "#/definitions/publicnews.chicagoTribuneAuthorResponseDoc"
}
},
"400": {
@@ -210514,8 +238887,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -210532,27 +238905,86 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Best Buy product's related products",
+ "summary": "Get a Chicago Tribune author profile",
"tags": [
- "Best Buy"
+ "Chicago Tribune"
]
}
},
- "/bestbuy/product/reviews": {
+ "/chicagotribune/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns page 1 (up to 20) of one Best Buy product's normalized customer reviews (rating, title, text, author, posted date, tags such as Verified Purchaser, recommended flag, helpful/unhelpful counts), sourced from the product's dedicated reviews page. sku is the numeric Best Buy SKU shown on bestbuy.com product pages and URLs.",
- "operationId": "bestbuy-product-reviews",
+ "description": "Returns fresh headlines from one public Chicago Tribune section page.",
+ "operationId": "chicagotribune-headlines",
"parameters": [
{
- "description": "Numeric Best Buy SKU",
+ "description": "Chicago Tribune section slug",
+ "enum": [
+ "news",
+ "local-news",
+ "crime-public-safety",
+ "politics",
+ "elections",
+ "immigration",
+ "investigations",
+ "education",
+ "environment",
+ "health",
+ "history",
+ "marijuana",
+ "national",
+ "news-obituaries",
+ "science",
+ "weather",
+ "world",
+ "business",
+ "real-estate",
+ "transportation",
+ "technology",
+ "aurora-beacon-news",
+ "daily-southtown",
+ "elgin-courier-news",
+ "lake-county-news-sun",
+ "naperville-sun",
+ "post-tribune",
+ "opinion",
+ "columnists",
+ "commentary",
+ "editorials",
+ "letters-to-the-editor",
+ "sports",
+ "college-sports",
+ "mlb",
+ "chicago-cubs",
+ "chicago-white-sox",
+ "nfl",
+ "chicago-bears",
+ "nba",
+ "chicago-bulls",
+ "nhl",
+ "chicago-blackhawks",
+ "soccer",
+ "wnba",
+ "chicago-sky",
+ "things-to-do",
+ "arts",
+ "books",
+ "entertainment",
+ "home-garden",
+ "movies",
+ "music-concerts",
+ "restaurants-food-drink",
+ "theater",
+ "travel",
+ "tv-streaming",
+ "fitness",
+ "advice",
+ "best-reviews"
+ ],
"in": "query",
- "name": "sku",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "6673590"
+ "x-example": "news"
}
],
"produces": [
@@ -210562,7 +238994,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.productReviewsResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -210571,11 +239003,37 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Chicago Tribune section headlines",
+ "tags": [
+ "Chicago Tribune"
+ ]
+ }
+ },
+ "/chicagotribune/news": {
+ "get": {
+ "description": "Returns the current Chicago Tribune top stories from the public homepage.",
+ "operationId": "chicagotribune-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
"503": {
"description": "Service Unavailable",
@@ -210589,34 +239047,88 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Best Buy product's customer reviews",
+ "summary": "Get Chicago Tribune top stories",
"tags": [
- "Best Buy"
+ "Chicago Tribune"
]
}
},
- "/bestbuy/search": {
+ "/chicagotribune/sections": {
+ "get": {
+ "description": "Returns the public Chicago Tribune editorial section inventory.",
+ "operationId": "chicagotribune-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Chicago Tribune sections",
+ "tags": [
+ "Chicago Tribune"
+ ]
+ }
+ },
+ "/chick-fil-a/content": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page (up to 24) of one Best Buy keyword search's normalized product listing (sku, title, url, image, price, rating, review count). q is free-text search keywords, e.g. \"laptop\". page is the optional 1-indexed page number (defaults to 1); requesting a page past the last one returns an empty products list, not an error.",
- "operationId": "bestbuy-search",
+ "description": "Returns one page of a Chick-fil-A editorial corpus. `type` selects which: `press-room` (289 press releases), `story` (189 blog articles), `page` (147 standalone corporate pages such as hunger relief and community programmes), `legal` (28 terms, policies and promotion rules) or `downloadable-asset` (45 press-kit media entries, which carry a title and link only and never a body). Between them these are every content-bearing corpus Chick-fil-A publishes outside the menu and restaurant catalogs. Article bodies are opt-in via include_body because a single press release runs to roughly 22KB, so a default-on page of 20 would be several hundred KB; without it the endpoint returns titles, links, publish dates and excerpts.",
+ "operationId": "chick-fil-a-content",
"parameters": [
{
- "description": "Search keywords",
+ "description": "Which corpus. One of press-room, story, page, legal, downloadable-asset.",
+ "enum": [
+ "press-room",
+ "story",
+ "page",
+ "legal",
+ "downloadable-asset"
+ ],
"in": "query",
- "name": "q",
+ "name": "type",
"required": true,
"type": "string",
- "x-example": "laptop"
+ "x-example": "press-room"
},
{
- "description": "1-indexed page number, defaults to 1",
+ "description": "Free-text filter. Results are relevance-ranked when present; otherwise newest first.",
+ "in": "query",
+ "name": "search",
+ "type": "string",
+ "x-example": "community"
+ },
+ {
+ "description": "1-based page number (default 1)",
"in": "query",
"name": "page",
"type": "integer",
"x-example": 1
+ },
+ {
+ "description": "Entries per page, 1-100 (default 20)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "description": "Include the full article body (default false -- bodies are large)",
+ "in": "query",
+ "name": "include_body",
+ "type": "boolean",
+ "x-example": false
}
],
"produces": [
@@ -210626,7 +239138,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.searchResponseDoc"
+ "$ref": "#/definitions/chickfila.contentResponseDoc"
}
},
"400": {
@@ -210659,35 +239171,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Best Buy's product catalog",
+ "summary": "Browse Chick-fil-A press releases, legal documents and press-kit assets",
"tags": [
- "Best Buy"
+ "Chick-fil-A"
]
}
},
- "/bestbuy/stores": {
+ "/chick-fil-a/content-taxonomy": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Best Buy's physical store locations in one city (name, address, phone, coordinates, rating, hours), sourced from Best Buy's own SEO store directory. state is one of the 50 US state codes plus dc and pr: `al`, `ak`, `az`, `ar`, `ca`, `co`, `ct`, `de`, `dc`, `fl`, `ga`, `hi`, `id`, `il`, `in`, `ia`, `ks`, `ky`, `la`, `me`, `md`, `ma`, `mi`, `mn`, `ms`, `mo`, `mt`, `ne`, `nv`, `nh`, `nj`, `nm`, `ny`, `nc`, `nd`, `oh`, `ok`, `or`, `pa`, `pr`, `ri`, `sc`, `sd`, `tn`, `tx`, `ut`, `vt`, `va`, `wa`, `wv`, `wi`, `wy`. city is free text matched case-insensitively against that state's own directory (e.g. \"Chicago\").",
- "operationId": "bestbuy-stores",
+ "description": "Returns one page of a content taxonomy's terms, each with its id, name, slug, parent and the number of entries carrying it. Every id is a ready-to-use `category` or `tag` filter value on GET /chick-fil-a/content, which is what makes the editorial corpora navigable rather than only pageable. `taxonomy` selects the vocabulary: `press_category` (16 terms) and `press_tag` (96) classify press releases, `story_category` (9) and `story_tag` (74) classify blog stories, `legal_category` (8) and `downloadable_asset_category` (7) classify those corpora, and `campaign` (9) is applied across several at once. Terms are ordered by name.",
+ "operationId": "chick-fil-a-content-taxonomy",
"parameters": [
{
- "description": "Two-letter state/territory code",
+ "description": "Which vocabulary. One of press_category, press_tag, story_category, story_tag, legal_category, downloadable_asset_category, campaign.",
+ "enum": [
+ "press_category",
+ "press_tag",
+ "story_category",
+ "story_tag",
+ "legal_category",
+ "downloadable_asset_category",
+ "campaign"
+ ],
"in": "query",
- "name": "state",
+ "name": "taxonomy",
"required": true,
"type": "string",
- "x-example": "il"
+ "x-example": "press_category"
},
{
- "description": "City name",
+ "description": "1-based page number (default 1)",
"in": "query",
- "name": "city",
- "required": true,
- "type": "string",
- "x-example": "Chicago"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Terms per page, 1-100 (default 20)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer",
+ "x-example": 100
}
],
"produces": [
@@ -210697,7 +239224,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bestbuy.storesResponseDoc"
+ "$ref": "#/definitions/chickfila.contentTaxonomyResponseDoc"
}
},
"400": {
@@ -210730,35 +239257,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Best Buy's physical stores in one city",
+ "summary": "List the category and tag vocabularies Chick-fil-A classifies its content under",
"tags": [
- "Best Buy"
+ "Chick-fil-A"
]
}
},
- "/bigcommerce/category": {
+ "/chick-fil-a/faq": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one normalized product-listing page from a public BigCommerce storefront category page. url must be the full public category-page URL. page is 1-indexed and defaults to 1.",
- "operationId": "bigcommerce-category",
+ "description": "Returns one page of Chick-fil-A's published customer FAQ corpus (522 entries at time of writing) across 30 categories -- Chick-fil-A One membership, points and rewards, digital ordering and payment, delivery support, sweepstakes terms, and more. Each entry carries the question, the answer as plain text, the answer's original HTML (a fair number of answers use links, lists and tables that plain text loses), and its resolved categories. Every categories[].id is a ready-to-use value for the category filter. search matches over question and answer text and is relevance-ranked; without it entries come back alphabetically so a caller can page through the whole corpus deterministically.",
+ "operationId": "chick-fil-a-faq",
"parameters": [
{
- "description": "Full public BigCommerce category page URL",
+ "description": "Free-text filter over question and answer text. Results are relevance-ranked when present.",
"in": "query",
- "name": "url",
- "required": true,
+ "name": "search",
"type": "string",
- "x-example": "https://www.bulkapothecary.com/melt-and-pour-soap-bases/"
+ "x-example": "delivery"
},
{
- "description": "1-indexed category page, defaults to 1",
+ "description": "Comma-separated faq_category term ids, up to 20, from any prior response's categories[].id",
+ "in": "query",
+ "name": "category",
+ "type": "string",
+ "x-example": "58"
+ },
+ {
+ "description": "1-based page number (default 1)",
"in": "query",
- "minimum": 1,
"name": "page",
"type": "integer",
"x-example": 1
+ },
+ {
+ "description": "Entries per page, 1-100 (default 20)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer",
+ "x-example": 20
}
],
"produces": [
@@ -210768,7 +239307,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bigcommerce.categoryResponseDoc"
+ "$ref": "#/definitions/chickfila.faqResponseDoc"
}
},
"400": {
@@ -210801,27 +239340,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a BigCommerce storefront category",
+ "summary": "Browse Chick-fil-A customer FAQs",
"tags": [
- "BigCommerce"
+ "Chick-fil-A"
]
}
},
- "/bigcommerce/product": {
+ "/chick-fil-a/location": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized product detail from a public BigCommerce storefront product page. url must be the full public product-page URL for a BigCommerce Stencil storefront.",
- "operationId": "bigcommerce-product",
+ "description": "Returns one Chick-fil-A restaurant's street address, opening hours, cuisine description and photo, selected by either its numeric id or its slug (supply exactly one of the two -- passing both is rejected). opening_hours carries one entry per day; a day Chick-fil-A publishes as closed (notably every Sunday, and every day for a seasonal or food-truck location that is not currently operating) comes back with closed=true and empty opens/closes rather than a placeholder time. This response carries a postal address but no latitude/longitude -- Chick-fil-A does not publish coordinates for its restaurants, and this endpoint does not synthesize them.",
+ "operationId": "chick-fil-a-location",
"parameters": [
{
- "description": "Full public BigCommerce product page URL",
+ "description": "Numeric WordPress post id. Supply either id or slug, not both.",
"in": "query",
- "name": "url",
- "required": true,
+ "name": "id",
+ "type": "integer",
+ "x-example": 53696
+ },
+ {
+ "description": "Restaurant slug, e.g. from a directory response. Supply either id or slug, not both.",
+ "in": "query",
+ "name": "slug",
"type": "string",
- "x-example": "https://www.bulkapothecary.com/goat-milk-sfic-all-natural-glycerin-melt-and-pour-soap-base/"
+ "x-example": "branson-food-truck"
}
],
"produces": [
@@ -210831,7 +239376,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bigcommerce.productResponseDoc"
+ "$ref": "#/definitions/chickfila.locationResponseDoc"
}
},
"400": {
@@ -210864,43 +239409,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a BigCommerce storefront product",
+ "summary": "Get one Chick-fil-A restaurant's address and hours",
"tags": [
- "BigCommerce"
+ "Chick-fil-A"
]
}
},
- "/bigcommerce/search": {
+ "/chick-fil-a/locations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one normalized product-search page from a public BigCommerce storefront. url must be the public storefront origin; an optional caller path or query is ignored. q is required search text. page is 1-indexed and defaults to 1.",
- "operationId": "bigcommerce-search",
+ "description": "Returns one page of Chick-fil-A's restaurant directory (3,467 restaurants at time of writing): each restaurant's id, slug, name, US state and its page URL. search filters by free text over restaurant names and is relevance-ranked; without it restaurants come back alphabetically so a caller can page through the whole directory deterministically. This index deliberately carries no address or hours -- Chick-fil-A does not expose them on the directory listing. Pass a slug from here to GET /chick-fil-a/location to get street address and opening hours for one restaurant.",
+ "operationId": "chick-fil-a-locations",
"parameters": [
{
- "description": "Public BigCommerce storefront origin",
+ "description": "Free-text filter over restaurant names. Results are relevance-ranked when present.",
"in": "query",
- "name": "url",
- "required": true,
+ "name": "search",
"type": "string",
- "x-example": "https://www.bulkapothecary.com"
+ "x-example": "branson"
},
{
- "description": "Search text",
+ "description": "1-based page number (default 1)",
"in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "lavender"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "1-indexed search page, defaults to 1",
+ "description": "Restaurants per page, 1-100 (default 20)",
"in": "query",
- "minimum": 1,
- "name": "page",
+ "name": "per_page",
"type": "integer",
- "x-example": 1
+ "x-example": 20
}
],
"produces": [
@@ -210910,7 +239452,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bigcommerce.searchResponseDoc"
+ "$ref": "#/definitions/chickfila.locationsResponseDoc"
}
},
"400": {
@@ -210943,19 +239485,70 @@
"ApiKeyAuth": []
}
],
- "summary": "Search a BigCommerce storefront",
+ "summary": "Browse Chick-fil-A restaurant locations",
"tags": [
- "BigCommerce"
+ "Chick-fil-A"
]
}
},
- "/bilibili/anime-home": {
+ "/chick-fil-a/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the anonymous anime homepage's featured titles, latest updates, schedule, popular ranking, and new recommendations. Personalized rotating feed items are excluded.",
- "operationId": "bilibili-anime-home",
+ "description": "Returns one page of Chick-fil-A's published menu catalog (567 items at time of writing): item name, slug, Chick-fil-A's own item tag, an ordering deep link, and the taxonomy term ids the item belongs to. Every id in a response's menu_taxonomy_ids, menu_item_type_ids, menu_item_group_ids and nutrition_table_menu_ids is a ready-to-use filter value for a follow-up call, and GET /chick-fil-a/menu-taxonomy lists each taxonomy's terms with their names. search filters by free text and is ranked by relevance; without it items come back alphabetically so a caller can page through the whole catalog deterministically. Note this catalog carries no prices or nutrition values -- Chick-fil-A does not publish either through this source.",
+ "operationId": "chick-fil-a-menu",
+ "parameters": [
+ {
+ "description": "Free-text filter over item names. Results are relevance-ranked when present.",
+ "in": "query",
+ "name": "search",
+ "type": "string",
+ "x-example": "nuggets"
+ },
+ {
+ "description": "Comma-separated menu_taxonomy term ids (menu section, e.g. Breakfast, Beverages), up to 20",
+ "in": "query",
+ "name": "menu_taxonomy",
+ "type": "string",
+ "x-example": "265"
+ },
+ {
+ "description": "Comma-separated menu_item_type term ids (ITEM, ITEM_GROUPING, MODIFIER), up to 20",
+ "in": "query",
+ "name": "menu_item_type",
+ "type": "string",
+ "x-example": "431"
+ },
+ {
+ "description": "Comma-separated menu_item_group term ids (the grouping a variant belongs to), up to 20",
+ "in": "query",
+ "name": "menu_item_group",
+ "type": "string",
+ "x-example": "899"
+ },
+ {
+ "description": "Comma-separated nutrition_table_menu term ids (published nutrition-table grouping), up to 20",
+ "in": "query",
+ "name": "nutrition_table_menu",
+ "type": "string",
+ "x-example": "368"
+ },
+ {
+ "description": "1-based page number (default 1)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Items per page, 1-100 (default 20)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer",
+ "x-example": 20
+ }
+ ],
"produces": [
"application/json"
],
@@ -210963,17 +239556,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bilibili.animeHomeResponseDoc"
+ "$ref": "#/definitions/chickfila.menuResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -210990,27 +239589,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Bilibili anime home sections",
+ "summary": "Browse the Chick-fil-A menu",
"tags": [
- "Bilibili"
+ "Chick-fil-A"
]
}
},
- "/bilibili/autocomplete": {
+ "/chick-fil-a/menu-item": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Bilibili search-box query suggestions for partial text. An empty suggestion list is a valid response when nothing matches.",
- "operationId": "bilibili-autocomplete",
+ "description": "Returns one Chick-fil-A menu item, selected by either its numeric id or its slug (supply exactly one of the two -- passing both is rejected). Unlike the listing endpoint, this resolves the item's taxonomy term ids to names, so menu_sections, item_types, item_groups and nutrition_tables each come back as {id, name, slug} triples rather than bare ids. Term resolution is best-effort: if the taxonomy lookups fail the item is still returned with ids and empty names rather than failing the whole call. This item detail carries no price and no nutrition values -- Chick-fil-A does not publish either through this source.",
+ "operationId": "chick-fil-a-menu-item",
"parameters": [
{
- "description": "Partial search text",
+ "description": "Numeric WordPress post id. Supply either id or slug, not both.",
"in": "query",
- "name": "q",
- "required": true,
+ "name": "id",
+ "type": "integer",
+ "x-example": 10613
+ },
+ {
+ "description": "Item slug, e.g. from a listing response. Supply either id or slug, not both.",
+ "in": "query",
+ "name": "slug",
"type": "string",
- "x-example": "原神"
+ "x-example": "chick-fil-a-filet"
}
],
"produces": [
@@ -211020,7 +239625,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bilibili.autocompleteResponseDoc"
+ "$ref": "#/definitions/chickfila.menuItemResponseDoc"
}
},
"400": {
@@ -211029,14 +239634,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -211053,19 +239658,49 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Bilibili search suggestions",
+ "summary": "Get one Chick-fil-A menu item",
"tags": [
- "Bilibili"
+ "Chick-fil-A"
]
}
},
- "/bilibili/guochuang-home": {
+ "/chick-fil-a/menu-taxonomy": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the anonymous Chinese-animation homepage's featured titles, latest updates, schedule, popular ranking, and new recommendations. Personalized rotating feed items are excluded.",
- "operationId": "bilibili-guochuang-home",
+ "description": "Returns one page of terms for a single Chick-fil-A menu taxonomy, with each term's id, name, slug, parent and how many menu items carry it. This is how to discover the filter ids GET /chick-fil-a/menu accepts. taxonomy must be one of `menu_taxonomy` (customer-facing menu section -- Breakfast, Beverages, Catering Entrées, ... 36 terms), `menu_item_type` (`ITEM`, `ITEM_GROUPING`, `MODIFIER` -- 3 terms), `menu_item_group` (the grouping a variant belongs to, e.g. \"Bacon, Egg & Cheese Biscuit\" -- 100+ terms), or `nutrition_table_menu` (the grouping used by Chick-fil-A's published nutrition tables -- 18 terms). Terms come back alphabetically.",
+ "operationId": "chick-fil-a-menu-taxonomy",
+ "parameters": [
+ {
+ "description": "Which taxonomy to list. One of menu_taxonomy, menu_item_type, menu_item_group, nutrition_table_menu.",
+ "enum": [
+ "menu_taxonomy",
+ "menu_item_type",
+ "menu_item_group",
+ "nutrition_table_menu"
+ ],
+ "in": "query",
+ "name": "taxonomy",
+ "required": true,
+ "type": "string",
+ "x-example": "menu_taxonomy"
+ },
+ {
+ "description": "1-based page number (default 1)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Terms per page, 1-100 (default 20)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer",
+ "x-example": 100
+ }
+ ],
"produces": [
"application/json"
],
@@ -211073,55 +239708,20 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bilibili.guochuangHomeResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/chickfila.menuTaxonomyResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Bilibili Chinese-animation home sections",
- "tags": [
- "Bilibili"
- ]
- }
- },
- "/bilibili/must-watch": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Bilibili's curated must-watch collection, separated into established classics and the latest additions.",
- "operationId": "bilibili-must-watch",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/bilibili.mustWatchResponseDoc"
- }
},
"429": {
"description": "Too Many Requests",
@@ -211129,12 +239729,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -211147,28 +239741,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Bilibili's curated must-watch videos",
+ "summary": "List one Chick-fil-A menu taxonomy's terms",
"tags": [
- "Bilibili"
+ "Chick-fil-A"
]
}
},
- "/bilibili/popular": {
+ "/chipotle/ingredients": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Bilibili's current popular-video feed in upstream order. Pass next_cursor back as cursor to continue to the next batch.",
- "operationId": "bilibili-popular",
+ "description": "Returns Chipotle's raw-ingredient content pages -- sourcing story, marketing copy, imagery -- and the per-item recipe breakdown. ingredients[] has one entry per raw ingredient (Avocado, Yellow Onion, ...), each with its facts/sourcing copy and the menu_item_ids it appears in. ingredient_groups[] is the reverse view: one entry per recipe category (proteins, rice and beans, ...) listing each item's exact ingredient_keys, joinable against ingredients[].key for the human-readable name. Nothing else in this family exposes either ingredient content or recipe-level composition.",
+ "operationId": "chipotle-ingredients",
"parameters": [
{
- "description": "Upstream cursor from the previous response; defaults to 0",
+ "description": "Ordering surface. One of web, web-mobile. Default web-mobile.",
+ "enum": [
+ "web",
+ "web-mobile"
+ ],
"in": "query",
- "maximum": 10000000,
- "minimum": 0,
- "name": "cursor",
- "type": "integer",
- "x-example": 0
+ "name": "channel",
+ "type": "string",
+ "x-example": "web-mobile"
+ },
+ {
+ "description": "Country catalog. One of US, CA. Default US.",
+ "enum": [
+ "US",
+ "CA"
+ ],
+ "in": "query",
+ "name": "region",
+ "type": "string",
+ "x-example": "US"
}
],
"produces": [
@@ -211178,7 +239785,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bilibili.popularResponseDoc"
+ "$ref": "#/definitions/chipotle.ingredientsResponseDoc"
}
},
"400": {
@@ -211193,12 +239800,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -211211,19 +239812,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get current popular Bilibili videos",
+ "summary": "Get Chipotle's ingredient content catalog",
"tags": [
- "Bilibili"
+ "Chipotle"
]
}
},
- "/bilibili/ranking": {
+ "/chipotle/meals": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the current official all-site ranking with video engagement, category, and creator metadata in rank order.",
- "operationId": "bilibili-ranking",
+ "description": "Returns Chipotle's preset meal definitions -- the named combinations its ordering flow offers (Build-Your-Own Chicken and similar), each with an id, name, type and a description listing what the meal contains. Takes no parameters.",
+ "operationId": "chipotle-meals",
"produces": [
"application/json"
],
@@ -211231,7 +239832,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bilibili.rankingResponseDoc"
+ "$ref": "#/definitions/chipotle.mealsResponseDoc"
}
},
"429": {
@@ -211240,12 +239841,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -211258,35 +239853,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get the current Bilibili all-site ranking",
+ "summary": "Get Chipotle's preset meal definitions",
"tags": [
- "Bilibili"
+ "Chipotle"
]
}
},
- "/bilibili/vertical-home": {
+ "/chipotle/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns stable server-rendered editorial sections for one Bilibili vertical. Allowed category values: documentary, movie, tv, variety. Rotating feeds, pagination, account state, and streaming URLs are excluded.",
- "operationId": "bilibili-vertical-home",
- "parameters": [
- {
- "description": "Vertical: documentary, movie, tv, variety",
- "enum": [
- "documentary",
- "movie",
- "tv",
- "variety"
- ],
- "in": "query",
- "name": "category",
- "required": true,
- "type": "string",
- "x-example": "documentary"
- }
- ],
+ "description": "Returns Chipotle's restaurant-independent menu catalog -- every item it sells nationally, split into entrees, sides and drinks, with each item's category, type, primary filling and full customization tree. Takes no parameters. Prices are deliberately omitted from this response: Chipotle prices per restaurant, so the upstream returns every price as zero here, and surfacing a field of zeros would read as \"free\" rather than \"unpriced\". Use GET /chipotle/restaurant/menu for real prices.",
+ "operationId": "chipotle-menu",
"produces": [
"application/json"
],
@@ -211294,13 +239873,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bilibili.verticalHomeResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/chipotle.nationalMenuResponseDoc"
}
},
"429": {
@@ -211309,12 +239882,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -211327,28 +239894,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Bilibili documentary, movie, TV, or variety home sections",
+ "summary": "Get Chipotle's national menu catalog",
"tags": [
- "Bilibili"
+ "Chipotle"
]
}
},
- "/bilibili/weekly": {
+ "/chipotle/menu/metadata": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one issue from Bilibili's weekly selected-video archive. Omit number to resolve and return the latest issue.",
- "operationId": "bilibili-weekly",
+ "description": "Returns Chipotle's menu presentation metadata -- the data no other Chipotle endpoint carries. Categories are the menu nav sections (Burrito, Bowl, Salad, ...) with their own description, imagery and the customization sections each offers. Items carry per-item nutrition (calories and portion) and dietary tag codes. Item sections and item groups describe the customization pick-groups and shared item aliases (e.g. cauliflower rice offered as both an entree side and a taco filling). Dietary tag groups are the full tag taxonomy (Plant Based, Lifestyle, I'm Avoiding, ...) that item dietary tag codes join against for a human-readable name and badge. Join on item_id against /chipotle/menu or /chipotle/restaurant/menu for prices; this endpoint has none.",
+ "operationId": "chipotle-menu-metadata",
"parameters": [
{
- "description": "Positive issue number; omit for the latest issue",
+ "description": "Ordering surface. One of web, web-mobile. Default web-mobile.",
+ "enum": [
+ "web",
+ "web-mobile"
+ ],
"in": "query",
- "maximum": 1000000,
- "minimum": 1,
- "name": "number",
- "type": "integer",
- "x-example": 387
+ "name": "channel",
+ "type": "string",
+ "x-example": "web-mobile"
+ },
+ {
+ "description": "Country catalog. One of US, CA. Default US.",
+ "enum": [
+ "US",
+ "CA"
+ ],
+ "in": "query",
+ "name": "region",
+ "type": "string",
+ "x-example": "US"
}
],
"produces": [
@@ -211358,7 +239938,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bilibili.weeklyResponseDoc"
+ "$ref": "#/definitions/chipotle.menuMetadataResponseDoc"
}
},
"400": {
@@ -211367,24 +239947,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -211397,24 +239965,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Bilibili weekly selected-video issue",
+ "summary": "Get Chipotle's menu presentation metadata",
"tags": [
- "Bilibili"
+ "Chipotle"
]
}
},
- "/billboard/article": {
+ "/chipotle/restaurant": {
"get": {
- "description": "Returns public Billboard article metadata and body paragraphs from a canonical article URL. Billboard Pro articles are returned in full when the public page serves the full body; a teaser-only page is flagged paywalled.",
- "operationId": "billboard-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Chipotle restaurant by its numeric restaurant number. Note this single-restaurant route returns a leaner record than GET /chipotle/restaurants: the proximity search accepts an embeds parameter that pulls in hours and capability flags, and no such parameter exists here, so those fields may be absent. If you need the full record for a known restaurant, call /chipotle/restaurants with a tight radius around it instead.",
+ "operationId": "chipotle-restaurant",
"parameters": [
{
- "description": "Canonical Billboard article URL",
+ "description": "Chipotle's numeric restaurant id",
"in": "query",
- "name": "url",
+ "name": "restaurant_number",
"required": true,
"type": "string",
- "x-example": "https://www.billboard.com/music/latin/stray-kids-like-bts-younger-mexican-president-confirm-visit-1236346530/"
+ "x-example": "3982"
}
],
"produces": [
@@ -211424,7 +239995,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/chipotle.restaurantResponseDoc"
}
},
"400": {
@@ -211439,6 +240010,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -211451,24 +240028,39 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Billboard article content",
+ "summary": "Get one Chipotle restaurant",
"tags": [
- "Billboard"
+ "Chipotle"
]
}
},
- "/billboard/author": {
+ "/chipotle/restaurant/meals": {
"get": {
- "description": "Returns a Billboard author's byline metadata, biography, and recent articles (sourced from the author's own public RSS feed) from a canonical author URL.",
- "operationId": "billboard-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the preset meals one Chipotle restaurant sells -- group Build-Your-Own packs, the High Protein line and limited-time Influencer meals -- each with its dine-in and delivery price at that restaurant, calorie label, dietary and macro tags, the components that make it up, merchandising tags and images. Prices are genuinely restaurant-specific: the same Build-Your-Own Chicken pack is priced differently from one location to another, so this is the endpoint to use for real pricing rather than /chipotle/meals, which lists the national meal definitions with no prices at all. Calorie labels are a range for build-your-own meals and a single figure for fixed ones, so they are returned as strings. Restaurant numbers come from GET /chipotle/restaurants.",
+ "operationId": "chipotle-restaurant-meals",
"parameters": [
{
- "description": "Canonical Billboard author URL",
+ "description": "Chipotle's numeric restaurant id, from /chipotle/restaurants",
"in": "query",
- "name": "url",
+ "name": "restaurant_number",
"required": true,
"type": "string",
- "x-example": "https://www.billboard.com/author/gil-kaufman/"
+ "x-example": "3982"
+ },
+ {
+ "description": "Filter to one meal family. One of BuildYourOwn, HighProtein, Influencer.",
+ "enum": [
+ "BuildYourOwn",
+ "HighProtein",
+ "Influencer"
+ ],
+ "in": "query",
+ "name": "meal_type",
+ "type": "string",
+ "x-example": "HighProtein"
}
],
"produces": [
@@ -211478,7 +240070,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.billboardAuthorResponseDoc"
+ "$ref": "#/definitions/chipotle.restaurantMealsResponseDoc"
}
},
"400": {
@@ -211493,6 +240085,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -211505,66 +240103,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Billboard author profile",
+ "summary": "List one Chipotle restaurant's preset meals with prices",
"tags": [
- "Billboard"
+ "Chipotle"
]
}
},
- "/billboard/headlines": {
+ "/chipotle/restaurant/menu": {
"get": {
- "description": "Returns fresh headlines from one public Billboard section.",
- "operationId": "billboard-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one restaurant's live online menu split into entrees, sides, drinks and non-food items. This is the only Chipotle endpoint that carries prices: every item has both a dine-in price and a delivery price, which genuinely differ. Each item also carries its full customization tree -- contents (the individual fillings, salsas and sides that make it up, each with their own price pair) and content_groups (how many picks each group allows). Prices are per-restaurant, so two restaurants will legitimately return different numbers for the same item.",
+ "operationId": "chipotle-restaurant-menu",
"parameters": [
- {
- "description": "Billboard section slug",
- "enum": [
- "music",
- "music-news",
- "chart-beat",
- "awards",
- "concerts",
- "country",
- "features",
- "latin",
- "lyrics",
- "pop",
- "rb-hip-hop",
- "reviews",
- "rock",
- "business",
- "business-news",
- "legal",
- "management",
- "publishing",
- "radio",
- "record-labels",
- "streaming",
- "tech",
- "touring",
- "culture",
- "events",
- "lifestyle",
- "politics",
- "pride",
- "product-recommendations",
- "tv-film",
- "media",
- "lists",
- "photos-media",
- "podcasts",
- "videos",
- "espanol",
- "cultura-entretenimiento",
- "musica",
- "negocios",
- "noticias",
- "pro"
- ],
+ {
+ "description": "Chipotle's numeric restaurant id",
"in": "query",
- "name": "section",
+ "name": "restaurant_number",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "3982"
+ },
+ {
+ "description": "Include items the restaurant currently has unavailable (default false)",
+ "in": "query",
+ "name": "include_unavailable",
+ "type": "boolean",
+ "x-example": true
}
],
"produces": [
@@ -211574,7 +240140,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/chipotle.restaurantMenuResponseDoc"
}
},
"400": {
@@ -211583,6 +240149,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -211595,16 +240173,58 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Billboard section headlines",
+ "summary": "Get one Chipotle restaurant's menu with prices",
"tags": [
- "Billboard"
+ "Chipotle"
]
}
},
- "/billboard/news": {
+ "/chipotle/restaurants": {
"get": {
- "description": "Returns fresh Billboard top stories from its public RSS feed.",
- "operationId": "billboard-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Chipotle restaurants near a latitude/longitude, ordered by distance. Each restaurant carries its number (the id every other Chipotle endpoint takes), name, status, full postal address with coordinates, published open/close hours per day, nearest cross streets, timezone, and capability flags (Chipotlane pickup, online ordering, catering, curbside pickup, dining room open, walk-up window). A coordinate with no Chipotle nearby returns an empty list rather than an error.",
+ "operationId": "chipotle-restaurants",
+ "parameters": [
+ {
+ "description": "Search center latitude",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 34.0522
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -118.2437
+ },
+ {
+ "description": "Search radius in meters, 1-80000 (default 8000)",
+ "in": "query",
+ "name": "radius",
+ "type": "integer",
+ "x-example": 8000
+ },
+ {
+ "description": "Restaurants per page, 1-50 (default 10)",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "0-based page index (default 0)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 0
+ }
+ ],
"produces": [
"application/json"
],
@@ -211612,7 +240232,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/chipotle.restaurantsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -211633,63 +240265,31 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Billboard top stories",
- "tags": [
- "Billboard"
- ]
- }
- },
- "/billboard/sections": {
- "get": {
- "description": "Returns the public Billboard section inventory: every music, business, culture, media and Spanish-language category plus Billboard Pro, each linking to its public RSS feed.",
- "operationId": "billboard-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Billboard sections",
+ "summary": "Find Chipotle restaurants near a location",
"tags": [
- "Billboard"
+ "Chipotle"
]
}
},
- "/billing/me": {
+ "/chromewebstore/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the authenticated user's current billing plan, period, included credits, used credits, remaining credits, overage status, and any downgrade scheduled for the next renewal.",
- "operationId": "billing-me",
+ "description": "Returns the reference taxonomy for the list endpoints: extension category groups and their subcategory slugs, the top-chart identifiers, and known curated collection slugs.",
+ "operationId": "chromewebstore-categories",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "Current billing state",
- "schema": {
- "$ref": "#/definitions/billing.billingStateResponseDoc"
- }
- },
- "401": {
- "description": "Authentication required",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/chromewebstore.categoriesResponseDoc"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -211700,28 +240300,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Get current billing state",
+ "summary": "List Chrome Web Store categories and collections",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/checkout": {
- "post": {
+ "/chromewebstore/category": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Creates a Stripe Checkout session for the authenticated user's selected paid billing plan. The created subscription is tagged with the local user id and plan so Stripe webhooks can link the customer and activate the plan after payment.",
- "operationId": "billing-me-checkout",
+ "description": "Returns the item cards listed under an extensions category slug (e.g. `productivity/tools`, `lifestyle/shopping`, `make_chrome_yours/privacy`). Use /chromewebstore/categories for the reference taxonomy. Defaults: `num=50`, `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-category",
"parameters": [
{
- "description": "Checkout request",
- "in": "body",
- "name": "request",
+ "description": "Category slug under extensions",
+ "in": "query",
+ "name": "category",
"required": true,
- "schema": {
- "$ref": "#/definitions/billing.stripeCheckoutRequestDoc"
- }
+ "type": "string",
+ "x-example": "productivity/tools"
+ },
+ {
+ "description": "Maximum number of items",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 50
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -211729,25 +240349,25 @@
],
"responses": {
"200": {
- "description": "Stripe checkout session",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/billing.stripeSessionResponseDoc"
+ "$ref": "#/definitions/chromewebstore.listResponseDoc"
}
},
"400": {
- "description": "Invalid request or plan",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "401": {
- "description": "Authentication required",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -211758,73 +240378,52 @@
"ApiKeyAuth": []
}
],
- "summary": "Create Stripe checkout session",
+ "summary": "List items in a Chrome Web Store category",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/events": {
+ "/chromewebstore/charts": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns recent billing audit events for the authenticated user, with optional filters for time range, endpoint, request id, event status, and billable flag. Invalid event_status values and reversed time ranges return invalid params.",
- "operationId": "billing-me-events",
+ "description": "Returns the item cards in a store top chart. `chart` accepts `trending`, `popular`, or `notable`. Defaults: `chart=popular`, `num=50`, `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-charts",
"parameters": [
{
- "description": "Maximum records to return. Defaults to 50 and clamps to 100.",
- "in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "limit",
- "type": "integer"
- },
- {
- "description": "Created-at lower bound in RFC3339 format",
+ "default": "popular",
+ "description": "Top chart to list",
+ "enum": [
+ "trending",
+ "popular",
+ "notable"
+ ],
"in": "query",
- "name": "from",
- "type": "string",
- "x-example": "2026-04-01T00:00:00Z"
+ "name": "chart",
+ "type": "string"
},
{
- "description": "Created-at upper bound in RFC3339 format",
+ "description": "Maximum number of items",
"in": "query",
- "name": "to",
- "type": "string",
- "x-example": "2026-04-16T00:00:00Z"
+ "name": "num",
+ "type": "integer",
+ "x-example": 50
},
{
- "description": "Normalized endpoint or API path",
+ "description": "Two-letter storefront country code",
"in": "query",
- "name": "endpoint",
+ "name": "country",
"type": "string",
- "x-example": "google/search"
+ "x-example": "us"
},
{
- "description": "Request id to inspect",
+ "description": "Two-letter language code",
"in": "query",
- "name": "request_id",
+ "name": "lang",
"type": "string",
- "x-example": "req-1"
- },
- {
- "description": "Billing event status",
- "enum": [
- "reserved",
- "charged",
- "non_billable",
- "failed"
- ],
- "in": "query",
- "name": "event_status",
- "type": "string"
- },
- {
- "description": "Filter billable or non-billable events",
- "in": "query",
- "name": "billable",
- "type": "boolean"
+ "x-example": "en"
}
],
"produces": [
@@ -211832,25 +240431,25 @@
],
"responses": {
"200": {
- "description": "Billing events",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/billing.billingEventsResponseDoc"
+ "$ref": "#/definitions/chromewebstore.listResponseDoc"
}
},
"400": {
- "description": "Invalid query parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "401": {
- "description": "Authentication required",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -211861,27 +240460,48 @@
"ApiKeyAuth": []
}
],
- "summary": "List current user's billing events",
+ "summary": "List a Chrome Web Store top chart",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/periods": {
+ "/chromewebstore/collection": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns recent local billing period ledgers for the authenticated user. Period ledgers are local reconciliation records built from billing events and are not charged credits.",
- "operationId": "billing-me-periods",
+ "description": "Returns the item cards in a curated store collection slug (e.g. `editors_picks_extensions`, `dark_mode`, `ai_productivity`). Use /chromewebstore/categories for known collection slugs. Defaults: `num=50`, `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-collection",
"parameters": [
{
- "description": "Maximum periods to return. Defaults to 12 and clamps to 24.",
+ "description": "Curated collection slug",
"in": "query",
- "maximum": 24,
- "minimum": 1,
- "name": "limit",
- "type": "integer"
+ "name": "collection",
+ "required": true,
+ "type": "string",
+ "x-example": "editors_picks_extensions"
+ },
+ {
+ "description": "Maximum number of items",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 50
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -211889,19 +240509,25 @@
],
"responses": {
"200": {
- "description": "Billing period ledgers",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/billing.billingPeriodLedgersResponseDoc"
+ "$ref": "#/definitions/chromewebstore.listResponseDoc"
}
},
- "401": {
- "description": "Authentication required",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -211912,27 +240538,48 @@
"ApiKeyAuth": []
}
],
- "summary": "List current user's billing period ledgers",
+ "summary": "List items in a curated Chrome Web Store collection",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/periods/{period_key}": {
+ "/chromewebstore/developer": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one billing period ledger for the authenticated user. If the ledger has not been materialized yet, it is rebuilt from billing events and stored locally. The period key must use YYYY-MM format.",
- "operationId": "billing-me-period",
+ "description": "Returns a Chrome Web Store publisher (developer) by publisher id, including the disclosed trader details — legal name, email, phone, address, website, and D-U-N-S number — plus the publisher's listed items (\"More from ...\"). Trader fields are only present for publishers that identify as EU traders. Defaults: `num=50`, `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-developer",
"parameters": [
{
- "description": "Billing period key in YYYY-MM format",
- "in": "path",
- "name": "period_key",
+ "description": "Chrome Web Store publisher id (u + 32 hex chars)",
+ "in": "query",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "2026-04"
+ "x-example": "u63f06aecfdc45d32c13ccc24f56c3d2d"
+ },
+ {
+ "description": "Maximum number of items",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 50
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -211940,25 +240587,31 @@
],
"responses": {
"200": {
- "description": "Billing period ledger",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/billing.billingPeriodLedgerResponseDoc"
+ "$ref": "#/definitions/chromewebstore.developerResponseDoc"
}
},
"400": {
- "description": "Invalid period key",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "401": {
- "description": "Authentication required",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -211969,41 +240622,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get current user's billing period ledger",
+ "summary": "Retrieve a Chrome Web Store publisher and their items",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/periods/{period_key}/statement": {
+ "/chromewebstore/item": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a customer-safe JSON statement for one billing period, combining the local ledger, endpoint breakdown, optional billing events, and Stripe invoice evidence. Closed periods normally return a pre-frozen snapshot created during period close; historical closed periods without a snapshot are lazily frozen on read. Internal repair errors and raw webhook audit details are not exposed.",
- "operationId": "billing-me-period-statement",
+ "description": "Returns normalized detail for a Chrome Web Store extension or theme, including name, rating, rating count, user count, version, last-updated date, size, supported languages, developer, category, screenshots, and privacy links. Defaults: `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-item",
"parameters": [
{
- "description": "Billing period key in YYYY-MM format",
- "in": "path",
- "name": "period_key",
+ "description": "Chrome Web Store item id (32-character extension/theme id)",
+ "in": "query",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "2026-04"
+ "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
},
{
- "description": "Include recent billing events. Defaults to true.",
+ "description": "Two-letter storefront country code",
"in": "query",
- "name": "include_events",
- "type": "boolean"
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
},
{
- "description": "Maximum billing events to include. Defaults to 100 and clamps to 500.",
+ "description": "Two-letter language code",
"in": "query",
- "maximum": 500,
- "minimum": 1,
- "name": "event_limit",
- "type": "integer"
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -212011,25 +240664,31 @@
],
"responses": {
"200": {
- "description": "Billing period statement",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/billing.billingPeriodStatementResponseDoc"
+ "$ref": "#/definitions/chromewebstore.itemResponseDoc"
}
},
"400": {
- "description": "Invalid period key or query parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "401": {
- "description": "Authentication required",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212040,27 +240699,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get current user's billing period statement",
+ "summary": "Retrieve Chrome Web Store item details",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/periods/{period_key}/statement/download": {
+ "/chromewebstore/permissions": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the exact customer-safe canonical JSON for a closed billing period statement snapshot. Closed periods are normally frozen during period close; if a historical closed period is missing a snapshot, the snapshot is lazily created before download. The raw response body is JSON, not the standard app envelope.",
- "operationId": "billing-me-period-statement-download",
+ "description": "Returns the permissions a Chrome Web Store extension declares in its manifest: `permissions`, `optional_permissions`, `host_permissions`, `optional_host_permissions`, plus `manifest_version` and `min_browser_version`. Useful for security and supply-chain review. Defaults: `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-permissions",
"parameters": [
{
- "description": "Billing period key in YYYY-MM format",
- "in": "path",
- "name": "period_key",
+ "description": "Chrome Web Store item id (32-character extension id)",
+ "in": "query",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "2026-04"
+ "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -212068,25 +240741,31 @@
],
"responses": {
"200": {
- "description": "Raw frozen customer statement JSON",
+ "description": "OK",
"schema": {
- "type": "string"
+ "$ref": "#/definitions/chromewebstore.permissionsResponseDoc"
}
},
"400": {
- "description": "Invalid period key or open billing period",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "401": {
- "description": "Authentication required",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212097,28 +240776,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Download current user's frozen billing period statement",
+ "summary": "Retrieve a Chrome Web Store item's declared permissions",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/portal": {
- "post": {
+ "/chromewebstore/privacy": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Creates a Stripe customer portal session for the authenticated user's linked Stripe customer so they can manage payment method, invoices, and subscription state.",
- "operationId": "billing-me-portal",
+ "description": "Returns an extension's privacy disclosures as the store renders them: the developer's data-use statement, whether it collects data, the standard data-handling declarations, and the privacy-policy link. Defaults: `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-privacy",
"parameters": [
{
- "description": "Portal request",
- "in": "body",
- "name": "request",
+ "description": "Chrome Web Store item id (32-character extension/theme id)",
+ "in": "query",
+ "name": "id",
"required": true,
- "schema": {
- "$ref": "#/definitions/billing.stripePortalRequestDoc"
- }
+ "type": "string",
+ "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -212126,66 +240818,31 @@
],
"responses": {
"200": {
- "description": "Stripe portal session",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/billing.stripeSessionResponseDoc"
+ "$ref": "#/definitions/chromewebstore.privacyResponseDoc"
}
},
"400": {
- "description": "Invalid request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "401": {
- "description": "Authentication required",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Create Stripe billing portal session",
- "tags": [
- "Billing"
- ]
- }
- },
- "/billing/me/rejections": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the authenticated user's own tally of pre-handler billing rejections (HTTP 402 quota / 429 rate-limit), summed over the last two UTC days (today and yesterday — the full retention window). These blocks never reach the request-usage index or the billing-events log, so this is the only way for a caller to see their own throttling.",
- "operationId": "billing-me-rejections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "Caller's own rejection tally",
- "schema": {
- "$ref": "#/definitions/billing.myRejectionsResponseDoc"
- }
},
- "401": {
- "description": "Authentication required",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212196,28 +240853,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Caller's own blocked-request tally",
+ "summary": "Retrieve a Chrome Web Store item's privacy disclosures",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/subscription/change": {
- "post": {
+ "/chromewebstore/reviews": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Applies an immediate, prorated upgrade after Stripe payment succeeds, or schedules a downgrade for the next renewal. The unused legacy metered item is removed as part of an immediate upgrade.",
- "operationId": "billing-me-subscription-change",
+ "description": "Returns the reviews the store renders on an item's reviews page, each with author, star rating, text, posted/edited dates and reviewed version. Defaults: `num=20`, `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-reviews",
"parameters": [
{
- "description": "Subscription change request",
- "in": "body",
- "name": "request",
+ "description": "Chrome Web Store item id (32-character extension/theme id)",
+ "in": "query",
+ "name": "id",
"required": true,
- "schema": {
- "$ref": "#/definitions/billing.stripeSubscriptionChangeRequestDoc"
- }
+ "type": "string",
+ "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
+ },
+ {
+ "description": "Maximum number of reviews",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 100
+ },
+ {
+ "default": "recent",
+ "description": "Review sort order",
+ "enum": [
+ "recent",
+ "helpful"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -212225,25 +240913,31 @@
],
"responses": {
"200": {
- "description": "Subscription change result",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/billing.stripeSubscriptionChangeResultResponseDoc"
+ "$ref": "#/definitions/chromewebstore.reviewsResponseDoc"
}
},
"400": {
- "description": "Invalid plan, stale preview, or idempotency key",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "401": {
- "description": "Authentication required",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212254,43 +240948,74 @@
"ApiKeyAuth": []
}
],
- "summary": "Apply a subscription plan change",
+ "summary": "Retrieve Chrome Web Store item reviews",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/subscription/change/cancel": {
- "post": {
+ "/chromewebstore/search": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Releases the authenticated user's pending downgrade schedule and keeps the current plan active through renewal.",
- "operationId": "billing-me-subscription-change-cancel",
+ "description": "Returns Chrome Web Store search result cards for a keyword, each with id, name, rating, user count, publisher and detail URL. Defaults: `num=30`, `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-search",
+ "parameters": [
+ {
+ "description": "Search keyword",
+ "in": "query",
+ "name": "term",
+ "required": true,
+ "type": "string",
+ "x-example": "vpn"
+ },
+ {
+ "description": "Maximum number of results",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 30
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
+ }
+ ],
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "Subscription change cancellation result",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/billing.stripeSubscriptionChangeResultResponseDoc"
+ "$ref": "#/definitions/chromewebstore.searchResponseDoc"
}
},
"400": {
- "description": "Invalid subscription state",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "401": {
- "description": "Authentication required",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212301,28 +241026,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Cancel a scheduled subscription downgrade",
+ "summary": "Search Chrome Web Store items",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/billing/me/subscription/preview": {
- "post": {
+ "/chromewebstore/similar": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Previews an authenticated user's immediate upgrade or next-renewal downgrade. Stripe calculates the upgrade proration; downgrades keep the current plan and credits active until the current period ends.",
- "operationId": "billing-me-subscription-preview",
+ "description": "Returns the related-items shelf the store renders on an item's detail page. Defaults: `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-similar",
"parameters": [
{
- "description": "Subscription change preview request",
- "in": "body",
- "name": "request",
+ "description": "Chrome Web Store item id (32-character extension/theme id)",
+ "in": "query",
+ "name": "id",
"required": true,
- "schema": {
- "$ref": "#/definitions/billing.stripeSubscriptionChangeRequestDoc"
- }
+ "type": "string",
+ "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -212330,25 +241068,31 @@
],
"responses": {
"200": {
- "description": "Subscription change preview",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/billing.stripeSubscriptionChangePreviewResponseDoc"
+ "$ref": "#/definitions/chromewebstore.similarResponseDoc"
}
},
"400": {
- "description": "Invalid plan or subscription change",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "401": {
- "description": "Authentication required",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212359,58 +241103,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Preview a subscription plan change",
+ "summary": "Retrieve related Chrome Web Store items",
"tags": [
- "Billing"
+ "ChromeWebStore"
]
}
},
- "/bing/images": {
+ "/chromewebstore/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Bing image search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Bing image HTML/async pages and return 503 when Bing serves a challenge page or unusable HTML.",
- "operationId": "bing-images",
+ "description": "Returns item-name suggestions for a search prefix, drawn from the top store-search results. Defaults: `num=8`, `country=us`, `lang=en`.",
+ "operationId": "chromewebstore-suggest",
"parameters": [
{
- "description": "Search query",
+ "description": "Search prefix to autocomplete",
"in": "query",
- "name": "q",
+ "name": "term",
"required": true,
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "1-based page number; defaults to 1",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "ad blo"
},
{
- "description": "Results per page; defaults to 10, clamped to 1..50",
+ "description": "Maximum number of suggestions",
"in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "count",
+ "name": "num",
"type": "integer",
- "x-example": 10
+ "x-example": 8
},
{
- "description": "Two-letter country code; defaults to us",
+ "description": "Two-letter storefront country code",
"in": "query",
"name": "country",
"type": "string",
"x-example": "us"
},
{
- "description": "Bing UI language; defaults to en-us",
+ "description": "Two-letter language code",
"in": "query",
"name": "lang",
"type": "string",
- "x-example": "en-us"
+ "x-example": "en"
}
],
"produces": [
@@ -212420,35 +241154,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bing.imagesResponseDoc"
+ "$ref": "#/definitions/chromewebstore.suggestResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "No results found",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Bing upstream request failed",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212459,58 +241181,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Bing image results",
+ "summary": "Suggest Chrome Web Store search terms",
"tags": [
- "Bing"
+ "ChromeWebStore"
]
}
},
- "/bing/news": {
+ "/chrono24/autocomplete": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Bing news search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Bing news HTML/async pages and return 503 when Bing serves a challenge page or unusable HTML.",
- "operationId": "bing-news",
+ "description": "Fetches Chrono24's own search-box typeahead suggestions for a partial query: each suggested phrase with its own live result count, plus the Chrono24 search URL it resolves to. Useful for building a search box against chrono24-search without guessing a full query.",
+ "operationId": "chrono24-autocomplete",
"parameters": [
{
- "description": "Search query",
+ "description": "Partial search text, e.g. \\",
"in": "query",
- "name": "q",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "1-based page number; defaults to 1",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Results per page; defaults to 10, clamped to 1..50",
- "in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Two-letter country code; defaults to us",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Bing UI language; defaults to en-us",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "x-example": "submar"
}
],
"produces": [
@@ -212520,35 +241211,64 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bing.newsResponseDoc"
+ "$ref": "#/definitions/chrono24.autocompleteResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "No results found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Chrono24 search-box suggestions",
+ "tags": [
+ "Chrono24"
+ ]
+ }
+ },
+ "/chrono24/brands": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Chrono24's full watch-brand index: every brand name and the slug identifying it, usable as the brand parameter on chrono24-models and chrono24-search. This is the discovery endpoint for that parameter, so every accepted value is obtainable from this API rather than by reading the website.",
+ "operationId": "chrono24-brands",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/chrono24.brandsResponseDoc"
+ }
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Bing upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212559,58 +241279,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Bing news results",
+ "summary": "List Chrono24 watch brands",
"tags": [
- "Bing"
+ "Chrono24"
]
}
},
- "/bing/search": {
+ "/chrono24/dealer": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Bing web search results for a query string, including organic results, optional context panel data, related queries, people-also-ask questions, news modules, video modules, and page-based pagination. Empty optional blocks are omitted from the JSON response. Locale defaults to country=us and lang=en-us. Results are fetched with a Chrome-impersonated request client and return 503 on a genuine transport failure or challenge page. Bing occasionally serves a well-formed page whose results share no significant term with the query; when every hedged attempt hits this, the response is still returned as 200 with data.low_confidence set to true (and the X-Low-Confidence header) instead of being withheld, so callers get Bing's real answer plus an honest signal to double-check it rather than nothing. Queries that use the site: operator (for example site:gov.hu) are not supported: Bing serves a bot-verification challenge for them, so they are rejected with 400 before any request is made. Use the DuckDuckGo (/api/v1/duckduckgo/search), Brave (/api/v1/brave/search), or Yahoo (/api/v1/yahoo-search/search) search endpoints for domain-restricted searches instead.",
- "operationId": "bing-search",
+ "description": "Fetches one Chrono24 dealer/seller's public storefront page: business description, trust badge, average buyer rating and review count, lifetime watches-sold count, and their current listed inventory in the same shape chrono24-search returns. slug is found in a chrono24-search or chrono24-listing result's seller link; there is no separate dealer-discovery endpoint since dealer slugs are not a closed set Chrono24 publishes an index of.",
+ "operationId": "chrono24-dealer",
"parameters": [
{
- "description": "Search query",
+ "description": "Dealer slug from a listing's seller link",
"in": "query",
- "name": "q",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "1-based page number; defaults to 1",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Results per page; defaults to 10, clamped to 1..50",
- "in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Two-letter country code; defaults to us",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Bing UI language; defaults to en-us",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "x-example": "thetimelords"
}
],
"produces": [
@@ -212618,37 +241307,31 @@
],
"responses": {
"200": {
- "description": "data.low_confidence is true when Bing's results shared no significant term with the query (see the field's description); the data is still exactly what Bing returned",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/bing.searchResponseDoc"
+ "$ref": "#/definitions/chrono24.dealerResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "No results found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Bing upstream request failed (transport failure, challenge page, or every hedge attempt rejected -- see data.low_confidence for the case where Bing did answer but every attempt looked unrelated to the query)",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212659,50 +241342,66 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Bing web results",
+ "summary": "Get a Chrono24 dealer's storefront",
"tags": [
- "Bing"
+ "Chrono24"
]
}
},
- "/bing/suggest": {
+ "/chrono24/dealer/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Bing autosuggest query completions for a query prefix. Locale defaults to country=us and lang=en-us. Suggestions are fetched from public Bing suggest endpoints and trimmed to the requested count.",
- "operationId": "bing-suggest",
+ "description": "Fetches one page of a Chrono24 dealer/seller's buyer reviews: reviewer name and country, review date, star-rating breakdown (shipping/description/communication), whether the buyer recommends the seller, their free-text comment, and the dealer's own reply when present. slug is the same dealer slug chrono24-dealer takes.",
+ "operationId": "chrono24-dealer-reviews",
"parameters": [
{
- "description": "Search query prefix",
+ "description": "Dealer slug from a listing's seller link",
"in": "query",
- "name": "q",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "openai"
+ "x-example": "thetimelords"
},
{
- "description": "Suggestions to return; defaults to 10, clamped to 1..12",
+ "default": 1,
+ "description": "One-based result page",
"in": "query",
- "maximum": 12,
"minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
+ "name": "page",
+ "type": "integer"
},
{
- "description": "Two-letter country code; defaults to us",
+ "default": 10,
+ "description": "Reviews per page, 1-50",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "maximum": 50,
+ "minimum": 1,
+ "name": "page_size",
+ "type": "integer"
+ },
+ {
+ "default": 0,
+ "description": "Keep only reviews rating the dealer at least this many stars, 0-5. 0 returns every review",
+ "in": "query",
+ "maximum": 5,
+ "minimum": 0,
+ "name": "min_stars",
+ "type": "integer"
},
{
- "description": "Bing UI language; defaults to en-us",
+ "default": "relevance",
+ "description": "Result order. One of: relevance, newest, with_recommendation, without_recommendation",
+ "enum": [
+ "relevance",
+ "newest",
+ "with_recommendation",
+ "without_recommendation"
+ ],
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "name": "sort",
+ "type": "string"
}
],
"produces": [
@@ -212712,29 +241411,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bing.suggestResponseDoc"
+ "$ref": "#/definitions/chrono24.dealerReviewsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Bing upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212745,58 +241444,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Suggest Bing search queries",
+ "summary": "Get a Chrono24 dealer's buyer reviews",
"tags": [
- "Bing"
+ "Chrono24"
]
}
},
- "/bing/videos": {
+ "/chrono24/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Bing video search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Bing video HTML/async pages and return 503 when Bing serves a challenge page or unusable HTML.",
- "operationId": "bing-videos",
+ "description": "Fetches every value Chrono24 accepts for one of chrono24-search's advanced-search filter params, each with its own live listing count: the discovery endpoint for condition, used_or_new, case_material, dial_color, bracelet_material, movement_type, gender, watch_type and stock_info.",
+ "operationId": "chrono24-facets",
"parameters": [
{
- "description": "Search query",
+ "description": "Filter to list values for",
+ "enum": [
+ "condition",
+ "usedOrNew",
+ "caseMaterial",
+ "dialColor",
+ "braceletMaterial",
+ "movementType",
+ "gender",
+ "watchType",
+ "stockInfo"
+ ],
"in": "query",
- "name": "q",
+ "name": "group",
"required": true,
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "1-based page number; defaults to 1",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Results per page; defaults to 10, clamped to 1..50",
- "in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Two-letter country code; defaults to us",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Bing UI language; defaults to en-us",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "x-example": "condition"
}
],
"produces": [
@@ -212806,35 +241485,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bing.videosResponseDoc"
+ "$ref": "#/definitions/chrono24.facetsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "No results found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Bing upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212845,24 +241512,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Bing video results",
+ "summary": "Get a Chrono24 search filter's accepted values",
"tags": [
- "Bing"
+ "Chrono24"
]
}
},
- "/birminghammail/article": {
+ "/chrono24/listing": {
"get": {
- "description": "Returns public Birmingham Mail article metadata (including the section) and body paragraphs from a canonical article URL. Photo-gallery URLs are rejected.",
- "operationId": "birminghammail-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Fetches one Chrono24 listing's full detail page: brand, model, reference number, price with currency and negotiability, condition, year of production, movement, case material and diameter, bracelet material, location, availability, seller type, photos, and the complete raw spec table Chrono24 itself shows (grouped by section: Basic Info, Caliber, Case, Bracelet/strap, Functions). path is the listing URL from a chrono24-search result's url field; Chrono24 has no lookup by numeric id alone.",
+ "operationId": "chrono24-listing",
"parameters": [
{
- "description": "Canonical Birmingham Mail article URL",
+ "description": "Listing URL or path from a chrono24-search result's url field",
"in": "query",
- "name": "url",
+ "name": "path",
"required": true,
"type": "string",
- "x-example": "https://www.birminghammail.co.uk/news/midlands-news/birmingham-road-six-cars-towed-34668610"
+ "x-example": "https://www.chrono24.com/rolex/datejust-36--id40700313.htm"
}
],
"produces": [
@@ -212872,7 +241542,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/chrono24.listingResponseDoc"
}
},
"400": {
@@ -212887,8 +241557,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212905,37 +241575,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Birmingham Mail article content",
+ "summary": "Get a Chrono24 watch listing's detail",
"tags": [
- "Birmingham Mail"
+ "Chrono24"
]
}
},
- "/birminghammail/author": {
+ "/chrono24/models": {
"get": {
- "description": "Returns one Birmingham Mail author's public profile: name, job title, bio, email, X/Twitter handle, and one page of their recent articles.",
- "operationId": "birminghammail-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns every model/collection Chrono24 lists for one watch brand (e.g. Rolex Submariner, Rolex Datejust), each with the slug identifying it, usable as the model parameter on chrono24-search. This is the discovery endpoint for that parameter, so every accepted value for a brand is obtainable from this API rather than by reading the website.",
+ "operationId": "chrono24-models",
"parameters": [
{
- "description": "Author slug, e.g. stephanie-balloo",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "stephanie-balloo"
- },
- {
- "description": "Canonical birminghammail.co.uk/authors// URL; alternative to slug",
+ "description": "Brand slug from chrono24-brands",
"in": "query",
- "name": "url",
+ "name": "brand",
+ "required": true,
"type": "string",
- "x-example": "https://www.birminghammail.co.uk/authors/stephanie-balloo/"
- },
- {
- "default": 1,
- "description": "1-based page number of the author's article list (1 to 100); overrides any pageNumber in url",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "x-example": "rolex"
}
],
"produces": [
@@ -212945,7 +241605,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.reachAuthorResponseDoc"
+ "$ref": "#/definitions/chrono24.modelsResponseDoc"
}
},
"400": {
@@ -212954,14 +241614,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -212978,47 +241632,231 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Birmingham Mail author profile",
+ "summary": "List Chrono24 models for a brand",
"tags": [
- "Birmingham Mail"
+ "Chrono24"
]
}
},
- "/birminghammail/headlines": {
+ "/chrono24/search": {
"get": {
- "description": "Returns fresh headlines from one public Birmingham Mail section. Photo galleries are omitted because they have no readable article body.",
- "operationId": "birminghammail-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Chrono24's luxury-watch marketplace by free-text keyword, or browses one brand's (optionally narrowed to one model's) current listings, returning normalized result cards: title, price with currency, seller type, seller country, promotional badge, image, and the listing URL to pass to chrono24-listing. At least one of query or brand is required. Optional advanced-search filters (condition, used_or_new, case_material, dial_color, bracelet_material, movement_type, gender, watch_type, stock_info) narrow results further; each filter's accepted values are discoverable from chrono24-facets and echoed back in the response's filters field.",
+ "operationId": "chrono24-search",
"parameters": [
{
- "description": "Birmingham Mail section slug",
+ "description": "Free-text keyword search, e.g. \\",
+ "in": "query",
+ "name": "query",
+ "type": "string",
+ "x-example": "rolex submariner"
+ },
+ {
+ "description": "Brand slug from chrono24-brands. At least one of query or brand is required",
+ "in": "query",
+ "name": "brand",
+ "type": "string",
+ "x-example": "rolex"
+ },
+ {
+ "description": "Model slug from chrono24-models (requires brand)",
+ "in": "query",
+ "name": "model",
+ "type": "string",
+ "x-example": "submariner--mod1"
+ },
+ {
+ "default": "relevance",
+ "description": "Result order. One of: relevance, price_asc, price_desc, newest, popularity",
"enum": [
- "news",
- "news/midlands-news",
- "news/uk-news",
- "news/world-news",
- "news/showbiz-tv",
- "news/cost-of-living",
- "news/money",
- "news/health",
- "black-country",
- "motoring",
- "motoring/motoring-news",
- "sport",
- "sport/football",
- "sport/football/football-news",
- "sport/football/transfer-news",
- "whats-on",
- "whats-on/whats-on-news",
- "whats-on/family-kids-news",
- "whats-on/food-drink-news",
- "whats-on/music-nightlife-news",
- "whats-on/shopping",
- "travel",
- "special-features"
+ "relevance",
+ "price_asc",
+ "price_desc",
+ "newest",
+ "popularity"
],
"in": "query",
- "name": "section",
- "required": true,
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "default": 1,
+ "description": "One-based result page",
+ "in": "query",
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Results per page. Chrono24's own UI offers 30, 60 or 120; defaults to Chrono24's own default",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 60
+ },
+ {
+ "description": "Advanced-search filter, values from chrono24-facets group=condition",
+ "enum": [
+ "new",
+ "like_new_unworn",
+ "very_good",
+ "good",
+ "fair",
+ "incomplete",
+ "no_details"
+ ],
+ "in": "query",
+ "name": "condition",
+ "type": "string"
+ },
+ {
+ "description": "Advanced-search filter, values from chrono24-facets group=usedOrNew",
+ "enum": [
+ "new",
+ "used",
+ "no_details"
+ ],
+ "in": "query",
+ "name": "used_or_new",
+ "type": "string"
+ },
+ {
+ "description": "Advanced-search filter, values from chrono24-facets group=caseMaterial",
+ "enum": [
+ "aluminum",
+ "brass",
+ "bronze",
+ "carbon",
+ "ceramic",
+ "gold_steel",
+ "gold_plated",
+ "palladium",
+ "plastic",
+ "platinum",
+ "rose_gold",
+ "sapphire_crystal",
+ "silver",
+ "steel",
+ "tantalum",
+ "titanium",
+ "tungsten",
+ "white_gold",
+ "yellow_gold",
+ "no_details"
+ ],
+ "in": "query",
+ "name": "case_material",
+ "type": "string"
+ },
+ {
+ "description": "Advanced-search filter, values from chrono24-facets group=dialColor",
+ "enum": [
+ "black",
+ "blue",
+ "bordeaux",
+ "bronze",
+ "brown",
+ "champagne",
+ "gold",
+ "green",
+ "grey",
+ "meteorite",
+ "mother_of_pearl",
+ "orange",
+ "pink",
+ "purple",
+ "red",
+ "silver",
+ "skeletonized",
+ "turquoise",
+ "white",
+ "yellow",
+ "no_details"
+ ],
+ "in": "query",
+ "name": "dial_color",
+ "type": "string"
+ },
+ {
+ "description": "Advanced-search filter, values from chrono24-facets group=braceletMaterial",
+ "enum": [
+ "alligator_skin",
+ "aluminium",
+ "brass",
+ "calf_skin",
+ "ceramic",
+ "crocodile_skin",
+ "gold_steel",
+ "gold_plated",
+ "leather",
+ "lizard_skin",
+ "ostrich_skin",
+ "plastic",
+ "platinum",
+ "red_gold",
+ "rose_gold",
+ "rubber",
+ "satin",
+ "shark_skin",
+ "silicon",
+ "silver",
+ "snake_skin",
+ "steel",
+ "textile",
+ "titanium",
+ "white_gold",
+ "yellow_gold",
+ "no_details"
+ ],
+ "in": "query",
+ "name": "bracelet_material",
+ "type": "string"
+ },
+ {
+ "description": "Advanced-search filter, values from chrono24-facets group=movementType",
+ "enum": [
+ "automatic",
+ "manual_winding",
+ "quartz",
+ "solar",
+ "smartwatch",
+ "no_details"
+ ],
+ "in": "query",
+ "name": "movement_type",
+ "type": "string"
+ },
+ {
+ "description": "Advanced-search filter, values from chrono24-facets group=gender",
+ "enum": [
+ "mens_unisex",
+ "womens"
+ ],
+ "in": "query",
+ "name": "gender",
+ "type": "string"
+ },
+ {
+ "description": "Advanced-search filter, values from chrono24-facets group=watchType",
+ "enum": [
+ "watches",
+ "parts_accessories"
+ ],
+ "in": "query",
+ "name": "watch_type",
+ "type": "string"
+ },
+ {
+ "description": "Advanced-search filter, values from chrono24-facets group=stockInfo",
+ "enum": [
+ "in_stock",
+ "on_order",
+ "on_request"
+ ],
+ "in": "query",
+ "name": "stock_info",
"type": "string"
}
],
@@ -213029,7 +241867,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/chrono24.searchResponseDoc"
}
},
"400": {
@@ -213038,8 +241876,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -213056,16 +241894,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Birmingham Mail section headlines",
+ "summary": "Search Chrono24 watch listings",
"tags": [
- "Birmingham Mail"
+ "Chrono24"
]
}
},
- "/birminghammail/news": {
+ "/clevelandcom/news": {
"get": {
- "description": "Returns fresh Birmingham Mail top stories from the public home RSS feed. Photo galleries are omitted because they have no readable article body.",
- "operationId": "birminghammail-news",
+ "description": "Returns Cleveland.com's 50-item public top-stories RSS feed. Summaries and encoded content are publisher teasers; this endpoint does not claim to return full article text. Editorial section inventory and article pages could not be reliably verified due to upstream DataDome blocking.",
+ "operationId": "clevelandcom-news",
"produces": [
"application/json"
],
@@ -213094,50 +241932,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Birmingham Mail top stories",
- "tags": [
- "Birmingham Mail"
- ]
- }
- },
- "/birminghammail/sections": {
- "get": {
- "description": "Returns the public Birmingham Mail editorial section inventory used by birminghammail-headlines.",
- "operationId": "birminghammail-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Birmingham Mail sections",
+ "summary": "Get Cleveland.com top stories",
"tags": [
- "Birmingham Mail"
+ "Cleveland.com"
]
}
},
- "/bleacherreport/article": {
+ "/cna/article": {
"get": {
- "description": "Returns public Bleacher Report article metadata and body paragraphs from a canonical article URL. Bleacher Report serves full articles to anonymous readers, so no article is paywalled.",
- "operationId": "bleacherreport-article",
+ "description": "Returns public CNA article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "cna-article",
"parameters": [
{
- "description": "Canonical Bleacher Report article URL",
+ "description": "Canonical CNA article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://bleacherreport.com/articles/25502441-vladimir-guerrero-jr-drops-viral-quote-2026-slump-after-signing-500m-blue-jays-contract"
+ "x-example": "https://www.channelnewsasia.com/singapore/national-arts-council-nac-seeks-operator-new-1000-seat-tanglin-theatre-6408051"
}
],
"produces": [
@@ -213174,30 +241986,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Bleacher Report article content",
+ "summary": "Get CNA article content",
"tags": [
- "Bleacher Report"
+ "CNA"
]
}
},
- "/bleacherreport/author": {
+ "/cna/author": {
"get": {
- "description": "Returns one Bleacher Report writer's public profile: name, role, biography, photo, and the latest stories listed on the page.",
- "operationId": "bleacherreport-author",
+ "description": "Returns one CNA correspondent's or contributor's public profile: name, job title, biography, contact email, and their recent bylined articles.",
+ "operationId": "cna-author",
"parameters": [
{
- "description": "Writer slug, e.g. scott-polacek",
+ "description": "Author slug, e.g. aqil-haziq-mahmud",
"in": "query",
"name": "slug",
"type": "string",
- "x-example": "scott-polacek"
+ "x-example": "aqil-haziq-mahmud"
},
{
- "description": "Canonical bleacherreport.com/writers/ URL; alternative to slug",
+ "description": "Canonical channelnewsasia.com/author/ URL; alternative to slug",
"in": "query",
"name": "url",
"type": "string",
- "x-example": "https://bleacherreport.com/writers/scott-polacek"
+ "x-example": "https://www.channelnewsasia.com/author/aqil-haziq-mahmud"
}
],
"produces": [
@@ -213207,7 +242019,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.bleacherreportAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.cnaAuthorResponseDoc"
}
},
"400": {
@@ -213234,55 +242046,31 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Bleacher Report writer profile",
+ "summary": "Get a CNA author profile",
"tags": [
- "Bleacher Report"
+ "CNA"
]
}
},
- "/bleacherreport/headlines": {
+ "/cna/headlines": {
"get": {
- "description": "Returns current Bleacher Report headlines from one public league or league sub-hub page.",
- "operationId": "bleacherreport-headlines",
+ "description": "Returns fresh headlines from one public CNA section.",
+ "operationId": "cna-headlines",
"parameters": [
{
- "description": "Bleacher Report section slug",
+ "description": "CNA section slug",
"enum": [
- "nba",
- "nfl",
- "mlb",
- "nhl",
- "wnba",
- "college-football",
- "college-basketball",
- "womens-college-basketball",
- "world-football",
- "tennis",
- "golf",
- "nascar",
- "formula-1",
- "mma",
- "boxing",
- "wwe",
- "all-elite-wrestling",
- "olympics",
- "nba-rumors",
- "nba-draft",
- "nfl-rumors",
- "nfl-draft",
- "fantasy-football",
- "mlb-rumors",
- "mlb-prospects",
- "nhl-rumors",
- "nhl-draft",
- "recruiting",
- "college-basketball-recruiting",
- "bracketology"
+ "asia",
+ "business",
+ "singapore",
+ "sport",
+ "world"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "asia"
}
],
"produces": [
@@ -213313,16 +242101,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Bleacher Report section headlines",
+ "summary": "Get CNA section headlines",
"tags": [
- "Bleacher Report"
+ "CNA"
]
}
},
- "/bleacherreport/news": {
+ "/cna/news": {
"get": {
- "description": "Returns fresh Bleacher Report top sports stories from the public news sitemap.",
- "operationId": "bleacherreport-news",
+ "description": "Returns fresh CNA (Channel NewsAsia) top stories from its public RSS feed.",
+ "operationId": "cna-news",
"produces": [
"application/json"
],
@@ -213333,12 +242121,6 @@
"$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -213351,16 +242133,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Bleacher Report top stories",
+ "summary": "Get CNA top stories",
"tags": [
- "Bleacher Report"
+ "CNA"
]
}
},
- "/bleacherreport/sections": {
+ "/cna/sections": {
"get": {
- "description": "Returns the public Bleacher Report league and league sub-hub sections accepted by the headlines endpoint.",
- "operationId": "bleacherreport-sections",
+ "description": "Returns the public CNA editorial section inventory used by the headlines endpoint.",
+ "operationId": "cna-sections",
"produces": [
"application/json"
],
@@ -213370,18 +242152,6 @@
"schema": {
"$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -213389,24 +242159,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Bleacher Report sections",
+ "summary": "Get CNA sections",
"tags": [
- "Bleacher Report"
+ "CNA"
]
}
},
- "/bloomberg/article": {
+ "/cnbc/article": {
"get": {
- "description": "Returns one public Bloomberg article's metadata and body paragraphs from a canonical article URL. Subscriber-only articles are not available.",
- "operationId": "bloomberg-article",
+ "description": "Returns public CNBC article metadata and server-rendered body paragraphs. Provide a canonical dated cnbc.com article URL; account-gated content is not bypassed.",
+ "operationId": "cnbc-article",
"parameters": [
{
- "description": "Canonical Bloomberg article URL",
+ "description": "Canonical cnbc.com article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.bloomberg.com/news/articles/2026-09-20/example-slug"
+ "x-example": "https://www.cnbc.com/2026/09/21/iran-us-oil-prices-crude-saudi-arabia-.html"
}
],
"produces": [
@@ -213416,7 +242186,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bloomberg.articleResponseDoc"
+ "$ref": "#/definitions/cnbc.articleResponseDoc"
}
},
"400": {
@@ -213425,12 +242195,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "403": {
- "description": "Forbidden",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"404": {
"description": "Not Found",
"schema": {
@@ -213443,6 +242207,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -213455,24 +242225,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Bloomberg article's content",
+ "summary": "CNBC article content",
"tags": [
- "Bloomberg"
+ "CNBC"
]
}
},
- "/bloomberg/author": {
+ "/cnbc/author": {
"get": {
- "description": "Returns one public Bloomberg author's profile (name, title, bio) and their recent-content feed from a canonical author URL.",
- "operationId": "bloomberg-author",
+ "description": "Returns one CNBC author's public bio page: name, job title, biography, social links, and their most recent articles. Provide either the author's slug (the last path segment of their cnbc.com bio page) or the full bio page URL.",
+ "operationId": "cnbc-author",
"parameters": [
{
- "description": "Canonical Bloomberg author URL",
+ "description": "CNBC author slug, e.g. jeff-cox",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "jeff-cox"
+ },
+ {
+ "description": "Canonical https://www.cnbc.com// author page URL, as an alternative to slug",
"in": "query",
"name": "url",
- "required": true,
"type": "string",
- "x-example": "https://www.bloomberg.com/authors/AXSztklFffk/bernard-goyder"
+ "x-example": "https://www.cnbc.com/jeff-cox/"
}
],
"produces": [
@@ -213482,7 +242258,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bloomberg.authorResponseDoc"
+ "$ref": "#/definitions/cnbc.authorResponseDoc"
}
},
"400": {
@@ -213503,6 +242279,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -213515,16 +242297,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Bloomberg author's profile",
+ "summary": "CNBC author profile",
"tags": [
- "Bloomberg"
+ "CNBC"
]
}
},
- "/bloomberg/categories": {
+ "/cnbc/categories": {
"get": {
- "description": "Lists Bloomberg's public editorial navigation categories discovered from its embedded navigation state. Each returned section slug is accepted by /bloomberg/headlines; product, account, newsletter, and sponsored-content links are excluded.",
- "operationId": "bloomberg-categories",
+ "description": "Lists the public CNBC editorial sections accepted by /cnbc/headlines, including market, investing, business, technology, and policy subsections, with each section's slug, display name, and landing-page URL.",
+ "operationId": "cnbc-categories",
"produces": [
"application/json"
],
@@ -213532,7 +242314,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bloomberg.categoriesResponseDoc"
+ "$ref": "#/definitions/cnbc.categoriesResponseDoc"
}
},
"429": {
@@ -213541,6 +242323,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -213553,19 +242341,19 @@
"ApiKeyAuth": []
}
],
- "summary": "List Bloomberg editorial categories",
+ "summary": "CNBC editorial sections",
"tags": [
- "Bloomberg"
+ "CNBC"
]
}
},
- "/bloomberg/headlines": {
+ "/cnbc/headlines": {
"get": {
- "description": "Returns Bloomberg story cards from one editorial section. Section must be a slug returned by /bloomberg/categories.",
- "operationId": "bloomberg-headlines",
+ "description": "Returns current server-rendered CNBC headlines for one public editorial section, including title, article URL, and card metadata when available. Use /cnbc/categories to discover the supported section slugs.",
+ "operationId": "cnbc-headlines",
"parameters": [
{
- "description": "Section slug from /bloomberg/categories",
+ "description": "Public CNBC editorial section slug from /cnbc/categories",
"in": "query",
"name": "section",
"required": true,
@@ -213580,7 +242368,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bloomberg.headlinesResponseDoc"
+ "$ref": "#/definitions/cnbc.headlinesResponseDoc"
}
},
"400": {
@@ -213595,6 +242383,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -213607,16 +242401,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Get the latest stories in a Bloomberg section",
+ "summary": "CNBC section headlines",
"tags": [
- "Bloomberg"
+ "CNBC"
]
}
},
- "/bloomberg/news": {
+ "/cnet/article": {
"get": {
- "description": "Returns Bloomberg's current news feed: the newest stories across all sections, each with its title, canonical URL, and publication time.",
- "operationId": "bloomberg-news",
+ "description": "Returns public CNET article metadata and body paragraphs from a canonical article URL. CNET articles are freely readable; video-only pages and pages without an article body are reported as upstream errors rather than returned empty.",
+ "operationId": "cnet-article",
+ "parameters": [
+ {
+ "description": "Canonical CNET article URL",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.cnet.com/tech/mobile/meta-connect-new-glasses-muse-ai-hearing-assistance-ray-bans-more/"
+ }
+ ],
"produces": [
"application/json"
],
@@ -213624,7 +242428,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bloomberg.newsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -213633,46 +242437,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get the latest Bloomberg stories",
- "tags": [
- "Bloomberg"
- ]
- }
- },
- "/bloomberg/news-sitemaps": {
- "get": {
- "description": "Returns Bloomberg's public monthly news-sitemap index so callers can discover historical news feeds beyond the rolling latest feed.",
- "operationId": "bloomberg-news-sitemaps",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/bloomberg.newsSitemapsResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -213689,40 +242455,37 @@
"ApiKeyAuth": []
}
],
- "summary": "List Bloomberg monthly news sitemaps",
+ "summary": "Get CNET article content",
"tags": [
- "Bloomberg"
+ "CNET"
]
}
},
- "/bluesky/author-feed": {
+ "/cnet/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
- "operationId": "bluesky-author-feed",
+ "description": "Returns one CNET author's public profile: name, role, biography, areas of expertise, social links, and one page of their recent articles.",
+ "operationId": "cnet-author",
"parameters": [
{
- "description": "A handle (e.g. bsky.app) or DID",
+ "description": "Author slug, e.g. scottstein8",
"in": "query",
- "name": "actor",
- "required": true,
+ "name": "slug",
"type": "string",
- "x-example": "bsky.app"
+ "x-example": "scottstein8"
},
{
- "description": "Page size, 1-100",
+ "description": "Canonical cnet.com/profiles/ URL, optionally with a /page// segment; alternative to slug",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 25
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.cnet.com/profiles/scottstein8/"
},
{
- "description": "Pagination cursor from a previous response's cursor field",
+ "default": 1,
+ "description": "1-based page number; overrides any page number in url",
"in": "query",
- "name": "cursor",
- "type": "string"
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -213732,7 +242495,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.authorFeedResponseDoc"
+ "$ref": "#/definitions/publicnews.cnetAuthorResponseDoc"
}
},
"400": {
@@ -213747,18 +242510,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -213771,40 +242522,77 @@
"ApiKeyAuth": []
}
],
- "summary": "A Bluesky account's posts",
+ "summary": "Get a CNET author profile",
"tags": [
- "Bluesky"
+ "CNET"
]
}
},
- "/bluesky/followers": {
+ "/cnet/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a page of a Bluesky account's followers. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
- "operationId": "bluesky-followers",
+ "description": "Returns fresh CNET headlines from one public topic feed.",
+ "operationId": "cnet-headlines",
"parameters": [
{
- "description": "A handle (e.g. bsky.app) or DID",
+ "description": "CNET topic slug",
+ "enum": [
+ "ai",
+ "aircraft",
+ "auto-tech",
+ "automobiles",
+ "biology",
+ "car-accessories",
+ "car-apps",
+ "car-industry",
+ "car-news",
+ "climate",
+ "computing",
+ "culture",
+ "deals",
+ "electric-vehicles",
+ "energy-and-utilities",
+ "entertainment",
+ "fashion",
+ "fitness",
+ "gaming",
+ "health",
+ "home",
+ "home-entertainment",
+ "internet",
+ "kitchen-and-household",
+ "live-blog",
+ "medical",
+ "mental",
+ "mobile",
+ "motorcycles",
+ "news",
+ "nutrition",
+ "parenting",
+ "personal-care",
+ "personal-finance",
+ "personal-mobility",
+ "privacy",
+ "rideshare",
+ "roadshow",
+ "science",
+ "security",
+ "services-and-software",
+ "sleep",
+ "smart-home",
+ "social-media",
+ "space",
+ "sports",
+ "tech",
+ "tech-industry",
+ "tv-and-movies",
+ "watercraft",
+ "yard-and-outdoors"
+ ],
"in": "query",
- "name": "actor",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "bsky.app"
- },
- {
- "description": "Page size, 1-100",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 25
- },
- {
- "description": "Pagination cursor from a previous response's cursor field",
- "in": "query",
- "name": "cursor",
- "type": "string"
+ "x-example": "ai"
}
],
"produces": [
@@ -213814,7 +242602,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.followersResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -213823,24 +242611,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -213853,42 +242623,16 @@
"ApiKeyAuth": []
}
],
- "summary": "A Bluesky account's followers",
+ "summary": "Get CNET section headlines",
"tags": [
- "Bluesky"
+ "CNET"
]
}
},
- "/bluesky/follows": {
+ "/cnet/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a page of the accounts a Bluesky account follows. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
- "operationId": "bluesky-follows",
- "parameters": [
- {
- "description": "A handle (e.g. bsky.app) or DID",
- "in": "query",
- "name": "actor",
- "required": true,
- "type": "string",
- "x-example": "bsky.app"
- },
- {
- "description": "Page size, 1-100",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 25
- },
- {
- "description": "Pagination cursor from a previous response's cursor field",
- "in": "query",
- "name": "cursor",
- "type": "string"
- }
- ],
+ "description": "Returns fresh CNET top stories from the public news feed.",
+ "operationId": "cnet-news",
"produces": [
"application/json"
],
@@ -213896,19 +242640,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.followsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -213917,12 +242649,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -213935,38 +242661,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Accounts a Bluesky account follows",
+ "summary": "Get CNET top stories",
"tags": [
- "Bluesky"
+ "CNET"
]
}
},
- "/bluesky/post-likes": {
+ "/cnet/sections": {
"get": {
- "description": "Returns public actors who liked a post, with an optional cursor for pagination.",
- "operationId": "bluesky-post-likes",
- "parameters": [
- {
- "description": "The post's at:// URI",
- "in": "query",
- "name": "uri",
- "required": true,
- "type": "string"
- },
- {
- "default": 25,
- "description": "Page size, 1-100",
- "in": "query",
- "name": "limit",
- "type": "integer"
- },
- {
- "description": "Pagination cursor",
- "in": "query",
- "name": "cursor",
- "type": "string"
- }
- ],
+ "description": "Returns the public CNET topic taxonomy accepted by the headlines endpoint.",
+ "operationId": "cnet-sections",
"produces": [
"application/json"
],
@@ -213974,37 +242678,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.postActorsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -214013,36 +242687,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List actors who liked a Bluesky post",
+ "summary": "Get CNET sections",
"tags": [
- "Bluesky"
+ "CNET"
]
}
},
- "/bluesky/post-quotes": {
+ "/cnn/article": {
"get": {
- "description": "Returns public posts that quote the specified post, with an optional cursor for pagination.",
- "operationId": "bluesky-post-quotes",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a CNN article's headline, description, author, publication and update times, section, image, and body paragraphs. Provide a canonical cnn.com article URL.",
+ "operationId": "cnn-article",
"parameters": [
{
- "description": "The quoted post's at:// URI",
+ "description": "Canonical cnn.com article URL",
"in": "query",
- "name": "uri",
+ "name": "url",
"required": true,
- "type": "string"
- },
- {
- "default": 25,
- "description": "Page size, 1-100",
- "in": "query",
- "name": "limit",
- "type": "integer"
- },
- {
- "description": "Pagination cursor",
- "in": "query",
- "name": "cursor",
- "type": "string"
+ "type": "string",
+ "x-example": "https://www.cnn.com/2026/08/19/africa/kenya-helicopter-crash-latam-intl"
}
],
"produces": [
@@ -214052,7 +242717,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.postQuotesResponseDoc"
+ "$ref": "#/definitions/cnn.articleResponseDoc"
}
},
"400": {
@@ -214091,36 +242756,33 @@
"ApiKeyAuth": []
}
],
- "summary": "List quotes of a Bluesky post",
+ "summary": "CNN article content",
"tags": [
- "Bluesky"
+ "CNN"
]
}
},
- "/bluesky/post-reposted-by": {
+ "/cnn/author": {
"get": {
- "description": "Returns public actors who reposted a post, with an optional cursor for pagination.",
- "operationId": "bluesky-post-reposted-by",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one CNN profile's byline metadata (name and title), bio paragraphs, social accounts, and recent articles/videos. Provide either a profile slug or a canonical cnn.com/profiles/ URL.",
+ "operationId": "cnn-author",
"parameters": [
{
- "description": "The post's at:// URI",
- "in": "query",
- "name": "uri",
- "required": true,
- "type": "string"
- },
- {
- "default": 25,
- "description": "Page size, 1-100",
+ "description": "CNN profile slug, e.g. jake-tapper-profile (a slug without the -profile suffix is tried with it first, then as-is)",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "slug",
+ "type": "string",
+ "x-example": "jake-tapper-profile"
},
{
- "description": "Pagination cursor",
+ "description": "Canonical cnn.com/profiles/ URL, as an alternative to slug",
"in": "query",
- "name": "cursor",
- "type": "string"
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.cnn.com/profiles/jake-tapper-profile"
}
],
"produces": [
@@ -214130,7 +242792,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.postActorsResponseDoc"
+ "$ref": "#/definitions/cnn.authorResponseDoc"
}
},
"400": {
@@ -214169,34 +242831,41 @@
"ApiKeyAuth": []
}
],
- "summary": "List actors who reposted a Bluesky post",
+ "summary": "CNN profile page",
"tags": [
- "Bluesky"
+ "CNN"
]
}
},
- "/bluesky/post-thread": {
+ "/cnn/headlines": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Bluesky post along with its nested replies (and, when the post is itself a reply, its parent chain), up to `depth` levels deep. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
- "operationId": "bluesky-post-thread",
+ "description": "Returns the current CNN headline stream for one section, including title, article URL, description, publication time, and image when available.",
+ "operationId": "cnn-headlines",
"parameters": [
{
- "description": "The post's at:// URI, e.g. from an author-feed or search-actors result's post uri field",
- "in": "query",
- "name": "uri",
- "required": true,
- "type": "string",
- "x-example": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"
- },
- {
- "description": "Reply-tree depth, 1-10",
+ "default": "world",
+ "description": "CNN section. Allowed values: world, us, politics, business, health, entertainment, style, travel, sports, science, climate, weather, opinion. Default world.",
+ "enum": [
+ "world",
+ "us",
+ "politics",
+ "business",
+ "health",
+ "entertainment",
+ "style",
+ "travel",
+ "sports",
+ "science",
+ "climate",
+ "weather",
+ "opinion"
+ ],
"in": "query",
- "name": "depth",
- "type": "integer",
- "x-example": 6
+ "name": "section",
+ "type": "string"
}
],
"produces": [
@@ -214206,7 +242875,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.postThreadResponseDoc"
+ "$ref": "#/definitions/cnn.headlinesResponseDoc"
}
},
"400": {
@@ -214215,12 +242884,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -214245,27 +242908,27 @@
"ApiKeyAuth": []
}
],
- "summary": "A Bluesky post and its reply tree",
+ "summary": "CNN section headlines",
"tags": [
- "Bluesky"
+ "CNN"
]
}
},
- "/bluesky/posts": {
+ "/cnn/live-story": {
"get": {
- "description": "Returns public Bluesky posts for 1-25 at:// post URIs. Missing, deleted, or blocked posts are omitted when the public AppView omits them.",
- "operationId": "bluesky-posts",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a CNN live story's title, description, update time, and chronological post updates. Provide a canonical cnn.com live-news URL.",
+ "operationId": "cnn-live-story",
"parameters": [
{
- "collectionFormat": "csv",
- "description": "One or more at:// post URIs (1-25); repeat the parameter for multiple URIs",
+ "description": "Canonical cnn.com live-news URL",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "uris",
+ "name": "url",
"required": true,
- "type": "array"
+ "type": "string",
+ "x-example": "https://www.cnn.com/2026/08/26/world/live-news/iran-war-trump"
}
],
"produces": [
@@ -214275,7 +242938,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.postsResponseDoc"
+ "$ref": "#/definitions/cnn.liveStoryResponseDoc"
}
},
"400": {
@@ -214284,6 +242947,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -214308,27 +242977,96 @@
"ApiKeyAuth": []
}
],
- "summary": "Look up Bluesky posts in a batch",
+ "summary": "CNN live story updates",
"tags": [
- "Bluesky"
+ "CNN"
]
}
},
- "/bluesky/profile": {
+ "/coingecko/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Bluesky account's public profile: display name, description, avatar/banner images, and follower/follows/posts counts. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
- "operationId": "bluesky-profile",
+ "description": "Returns normalized CoinGecko category rows from the public categories page. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-categories",
"parameters": [
{
- "description": "A handle (e.g. bsky.app) or DID (e.g. did:plc:z72i7hdynmk6r22z27h6tvur)",
+ "description": "Rows to return, default 100, max 100",
"in": "query",
- "name": "actor",
- "required": true,
- "type": "string",
- "x-example": "bsky.app"
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
+ "in": "query",
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -214338,7 +243076,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.profileResponseDoc"
+ "$ref": "#/definitions/coingecko.categoriesResponseDoc"
}
},
"400": {
@@ -214347,18 +243085,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -214377,39 +243103,109 @@
"ApiKeyAuth": []
}
],
- "summary": "A Bluesky account's full public profile",
+ "summary": "CoinGecko categories",
"tags": [
- "Bluesky"
+ "CoinGecko"
]
}
},
- "/bluesky/search-actors": {
+ "/coingecko/category/{slug}/coins": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Bluesky accounts matching a query against display name, handle, and profile description. Public data, sourced from the AT Protocol's public, credential-free AppView API.",
- "operationId": "bluesky-search-actors",
+ "description": "Returns normalized coin rows from a CoinGecko public category page. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-category-coins",
"parameters": [
{
- "description": "Search text",
- "in": "query",
- "name": "q",
+ "description": "CoinGecko category slug such as stablecoins",
+ "in": "path",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "news"
+ "x-example": "stablecoins"
},
{
- "description": "Page size, 1-100",
+ "description": "Page number, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Rows to return, default 100, max 100",
"in": "query",
"name": "limit",
- "type": "integer",
- "x-example": 25
+ "type": "integer"
},
{
- "description": "Pagination cursor from a previous response's cursor field",
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
"in": "query",
- "name": "cursor",
+ "name": "vs_currency",
"type": "string"
}
],
@@ -214420,7 +243216,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.searchActorsResponseDoc"
+ "$ref": "#/definitions/coingecko.categoryCoinsResponseDoc"
}
},
"400": {
@@ -214429,8 +243225,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -214453,19 +243249,98 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Bluesky accounts",
+ "summary": "CoinGecko category coins",
"tags": [
- "Bluesky"
+ "CoinGecko"
]
}
},
- "/bluesky/trending-topics": {
+ "/coingecko/chains": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Bluesky's current trending topics and suggested feeds, each with a link to its feed. Public data, sourced from the AT Protocol's public, credential-free AppView API. This surface is less stable than the rest of this family -- Bluesky may change its shape without notice.",
- "operationId": "bluesky-trending-topics",
+ "description": "Returns normalized chain rows from the CoinGecko public website chains table. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-chains",
+ "parameters": [
+ {
+ "description": "Rows to return, default 100, max 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
+ "in": "query",
+ "name": "vs_currency",
+ "type": "string"
+ }
+ ],
"produces": [
"application/json"
],
@@ -214473,11 +243348,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bluesky.trendingTopicsResponseDoc"
+ "$ref": "#/definitions/coingecko.chainsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -214500,84 +243375,104 @@
"ApiKeyAuth": []
}
],
- "summary": "Bluesky's current trending topics",
+ "summary": "CoinGecko chains",
"tags": [
- "Bluesky"
+ "CoinGecko"
]
}
},
- "/bonhams/auctions/search": {
+ "/coingecko/chains/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches and filters Bonhams' auctions. Default status \"upcoming\" excludes ended auctions, matching bonhams.com's own default; \"past\" browses Bonhams' full historical auction archive instead. Credential-free public data from bonhams.com's own search API.",
- "operationId": "bonhams-auction-search",
+ "description": "Returns normalized sections from a CoinGecko public chain detail page. Sections are omitted when not present. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-chain",
"parameters": [
{
- "description": "Free-text search across auction title and department names",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "Home & Interiors"
- },
- {
- "description": "Comma-separated country names (not a fixed enum -- live facet)",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "United Kingdom"
- },
- {
- "description": "Comma-separated categories. Allowed values: 20th & 21st Century Art, Asian Art, Books, History & Science, Classic Art, Decorative Arts & Furniture, Handbags, Jewels & Watches, Motoring, Popular Culture, Wine & Whisky.",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "Asian Art"
- },
- {
- "description": "Comma-separated month-and-year values, e.g. \\",
- "in": "query",
- "name": "month",
+ "description": "CoinGecko chain id such as ethereum",
+ "in": "path",
+ "name": "id",
+ "required": true,
"type": "string",
- "x-example": "September 2026"
+ "x-example": "ethereum"
},
{
- "description": "Comma-separated auction types",
- "enum": [
- "ONLINE",
- "PUBLIC",
- "EXHIBITION",
- "OTHER"
- ],
+ "description": "Rows per section to return, default 20, max 100",
"in": "query",
- "name": "auction_type",
- "type": "string",
- "x-example": "ONLINE"
+ "name": "limit",
+ "type": "integer"
},
{
- "description": "Filters by bidding/completion status, default upcoming",
+ "description": "Quote currency",
"enum": [
- "upcoming",
- "past",
- "all"
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
],
"in": "query",
- "name": "status",
- "type": "string",
- "x-example": "upcoming"
- },
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page, default 24, max 100",
- "in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -214587,7 +243482,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bonhams.auctionSearchResponseDoc"
+ "$ref": "#/definitions/coingecko.chainDetailResponseDoc"
}
},
"400": {
@@ -214596,6 +243491,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -214614,27 +243515,98 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Bonhams auctions",
+ "summary": "CoinGecko chain detail",
"tags": [
- "Bonhams"
+ "CoinGecko"
]
}
},
- "/bonhams/auctions/{id}": {
+ "/coingecko/coin/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Bonhams auction's normalized facts by id: title, category, department, country, currency, sale dates, and lot count. Unlike the search endpoint, this is not restricted to upcoming/live auctions -- a historical/ended auction id resolves too. Credential-free public data from bonhams.com's own search API.",
- "operationId": "bonhams-auction-detail",
+ "description": "Returns normalized CoinGecko profile, market stats, links, and categories for one coin id. This endpoint supports the documented `vs_currency` enum and is not intended for real-time trading.",
+ "operationId": "coingecko-coin",
"parameters": [
{
- "description": "Bonhams auction id",
+ "description": "CoinGecko coin id such as bitcoin",
"in": "path",
"name": "id",
"required": true,
"type": "string",
- "x-example": "32001"
+ "x-example": "bitcoin"
+ },
+ {
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
+ "in": "query",
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -214644,7 +243616,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bonhams.auctionDetailResponseDoc"
+ "$ref": "#/definitions/coingecko.coinResponseDoc"
}
},
"400": {
@@ -214677,53 +243649,114 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Bonhams auction's normalized facts",
+ "summary": "CoinGecko coin profile",
"tags": [
- "Bonhams"
+ "CoinGecko"
]
}
},
- "/bonhams/auctions/{id}/lots": {
+ "/coingecko/coin/{id}/analysis": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the normalized lot listing for one Bonhams auction, optionally filtered by department and/or a free-text query. Credential-free public data from bonhams.com's own search API.",
- "operationId": "bonhams-auction-lots",
+ "description": "Returns derived price-chart metrics from CoinGecko public chart JSON. This endpoint supports the documented `vs_currency` enum and is not investment advice or real-time trading data.",
+ "operationId": "coingecko-coin-analysis",
"parameters": [
{
- "description": "Bonhams auction id",
+ "description": "CoinGecko coin id such as bitcoin",
"in": "path",
"name": "id",
"required": true,
"type": "string",
- "x-example": "32001"
- },
- {
- "description": "Free-text search across lot title, catalog description, and footnotes",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "candelabra"
+ "x-example": "bitcoin"
},
{
- "description": "Comma-separated department names (not a fixed enum -- varies per auction)",
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
"in": "query",
- "name": "department",
- "type": "string",
- "x-example": "Silver"
+ "name": "vs_currency",
+ "type": "string"
},
{
- "description": "1-based page number, default 1",
+ "description": "Chart range",
+ "enum": [
+ "24h",
+ "max"
+ ],
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "range",
+ "type": "string"
},
{
- "description": "Results per page, default 48, max 100",
+ "description": "Fetch optional CoinGecko chart annotations",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "include_annotations",
+ "type": "boolean"
}
],
"produces": [
@@ -214733,7 +243766,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bonhams.auctionLotsResponseDoc"
+ "$ref": "#/definitions/coingecko.analysisResponseDoc"
}
},
"400": {
@@ -214742,6 +243775,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -214760,77 +243799,104 @@
"ApiKeyAuth": []
}
],
- "summary": "List the lots in a Bonhams auction",
+ "summary": "CoinGecko coin chart analysis",
"tags": [
- "Bonhams"
+ "CoinGecko"
]
}
},
- "/bonhams/lots/search": {
+ "/coingecko/exchange/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Bonhams lots across every auction, current and historical -- including sold/prices-realized lots -- optionally filtered by department, country, a GBP-normalized estimate price range, and/or a free-text query, in a caller-selected sort order. Without a query and without an explicit sort, results are ordered by most recently active sale date first. Credential-free public data from bonhams.com's own search API.",
- "operationId": "bonhams-lot-search",
+ "description": "Returns normalized profile stats and market rows from a CoinGecko public exchange page. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-exchange",
"parameters": [
{
- "description": "Free-text search across lot title, catalog description, and footnotes",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "Rolex Submariner"
- },
- {
- "description": "Comma-separated department names (not a fixed enum -- large, changes over time)",
- "in": "query",
- "name": "department",
- "type": "string",
- "x-example": "Watches"
- },
- {
- "description": "Comma-separated country names (not a fixed enum -- live facet)",
- "in": "query",
- "name": "country",
+ "description": "CoinGecko exchange id such as binance",
+ "in": "path",
+ "name": "id",
+ "required": true,
"type": "string",
- "x-example": "United States"
- },
- {
- "description": "Minimum estimate, in GBP (converted from each lot's own sale currency), inclusive. Omit or 0 for no minimum.",
- "in": "query",
- "name": "min_price_gbp",
- "type": "number"
+ "x-example": "binance"
},
{
- "description": "Maximum estimate, in GBP (converted from each lot's own sale currency), inclusive. Omit or 0 for no maximum.",
+ "description": "Rows to return, default 100, max 100",
"in": "query",
- "name": "max_price_gbp",
- "type": "number"
+ "name": "limit",
+ "type": "integer"
},
{
- "description": "Result order. Default: Typesense relevance ranking when q is set, otherwise recency (most recently active sale date first).",
+ "description": "Quote currency",
"enum": [
- "relevance",
- "recency",
- "price_high",
- "price_low",
- "lot_number"
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
],
"in": "query",
- "name": "sort",
+ "name": "vs_currency",
"type": "string"
- },
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page, default 48, max 100",
- "in": "query",
- "name": "per_page",
- "type": "integer"
}
],
"produces": [
@@ -214840,7 +243906,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bonhams.lotSearchResponseDoc"
+ "$ref": "#/definitions/coingecko.exchangeDetailResponseDoc"
}
},
"400": {
@@ -214849,6 +243915,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -214867,35 +243939,114 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Bonhams lots across every auction",
+ "summary": "CoinGecko exchange detail",
"tags": [
- "Bonhams"
+ "CoinGecko"
]
}
},
- "/bonhams/lots/{auctionId}/{lotNumber}": {
+ "/coingecko/exchanges": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Bonhams lot's normalized facts: title, estimate range, hammer/realized price (once sold), sale date, category, department, and lot number. Full lot description prose, condition-report text, and additional images are not reproduced -- see the response fields. Credential-free public data from bonhams.com's own search API.",
- "operationId": "bonhams-lot-detail",
+ "description": "Returns normalized exchange rows from CoinGecko public website exchange tables. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-exchanges",
"parameters": [
{
- "description": "Bonhams auction id",
- "in": "path",
- "name": "auctionId",
- "required": true,
- "type": "string",
- "x-example": "32001"
+ "description": "Exchange table kind, default spot",
+ "enum": [
+ "spot",
+ "dex",
+ "derivatives",
+ "perp_dex"
+ ],
+ "in": "query",
+ "name": "kind",
+ "type": "string"
},
{
- "description": "Bonhams lot number",
- "in": "path",
- "name": "lotNumber",
- "required": true,
- "type": "string",
- "x-example": "2"
+ "description": "Page number, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Rows to return, default 100, max 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
+ "in": "query",
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -214905,7 +244056,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/bonhams.lotDetailResponseDoc"
+ "$ref": "#/definitions/coingecko.exchangesResponseDoc"
}
},
"400": {
@@ -214914,12 +244065,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -214938,27 +244083,96 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Bonhams lot's normalized facts",
+ "summary": "CoinGecko exchanges",
"tags": [
- "Bonhams"
+ "CoinGecko"
]
}
},
- "/booking-attractions/detail": {
+ "/coingecko/gainers-losers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Booking.com attraction's detail page.",
- "operationId": "booking-attractions-detail",
+ "description": "Returns normalized rows from CoinGecko's public crypto gainers and losers table. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-gainers-losers",
"parameters": [
{
- "description": "Attraction slug, from a prior attraction search result",
+ "description": "Rows per section to return, default 20, max 100",
"in": "query",
- "name": "slug",
- "required": true,
- "type": "string",
- "x-example": "pre4ksvwxdrd-seine-river-sightseeing-cruise"
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
+ "in": "query",
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -214968,7 +244182,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/booking.bookingAttractionDetailResponseDoc"
+ "$ref": "#/definitions/coingecko.gainersLosersResponseDoc"
}
},
"400": {
@@ -214977,14 +244191,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -215001,43 +244209,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Booking.com attraction detail",
+ "summary": "CoinGecko crypto gainers and losers",
"tags": [
- "Booking"
+ "CoinGecko"
]
}
},
- "/booking-attractions/reviews": {
+ "/coingecko/global": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized guest reviews for a Booking.com attraction.",
- "operationId": "booking-attractions-reviews",
- "parameters": [
- {
- "description": "Attraction product id, from a prior attraction search result",
- "in": "query",
- "name": "product_id",
- "required": true,
- "type": "string",
- "x-example": "PRe4kSVWXdrD"
- },
- {
- "description": "1-based result page, default 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Reviews per page, 1-50, default 10",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- }
- ],
+ "description": "Returns normalized global market metrics from CoinGecko's public charts page.",
+ "operationId": "coingecko-global",
"produces": [
"application/json"
],
@@ -215045,7 +244229,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/booking.bookingAttractionReviewsResponseDoc"
+ "$ref": "#/definitions/coingecko.globalResponseDoc"
}
},
"400": {
@@ -215054,14 +244238,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -215078,70 +244256,52 @@
"ApiKeyAuth": []
}
],
- "summary": "Booking.com attraction reviews",
+ "summary": "CoinGecko global market snapshot",
"tags": [
- "Booking"
+ "CoinGecko"
]
}
},
- "/booking-attractions/search": {
+ "/coingecko/global/charts": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Booking.com attractions/things-to-do search results for a destination and date range, with an optional category/subcategory filter and a discoverable category taxonomy.",
- "operationId": "booking-attractions-search",
+ "description": "Returns normalized global chart series from public CoinGecko website JSON endpoints.",
+ "operationId": "coingecko-global-charts",
"parameters": [
{
- "description": "Destination name or city",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "Paris"
- },
- {
- "description": "Availability start date, YYYY-MM-DD",
- "in": "query",
- "name": "start_date",
- "required": true,
- "type": "string",
- "x-example": "2026-09-15"
- },
- {
- "description": "Availability end date, YYYY-MM-DD, defaults to start_date",
+ "description": "Chart kind, default total_market_cap",
+ "enum": [
+ "total_market_cap",
+ "bitcoin_dominance",
+ "altcoin_market_cap",
+ "defi_market_cap"
+ ],
"in": "query",
- "name": "end_date",
- "type": "string",
- "x-example": "2026-09-15"
+ "name": "kind",
+ "type": "string"
},
{
- "description": "1-based result page, default 1",
+ "description": "Chart range, default 90d",
+ "enum": [
+ "24h",
+ "7d",
+ "14d",
+ "30d",
+ "90d",
+ "1y",
+ "max"
+ ],
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "range",
+ "type": "string"
},
{
- "description": "Results per page, 1-30, default 15",
+ "description": "Rows per series to return, default 120, max 500",
"in": "query",
"name": "limit",
- "type": "integer",
- "x-example": 15
- },
- {
- "description": "Optional top-level category tagname filter, from a prior response's categories",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "PTCMCcodv3rh"
- },
- {
- "description": "Optional subcategory tagname filter, from a prior response's categories",
- "in": "query",
- "name": "subcategory",
- "type": "string",
- "x-example": "PTCMCfzh93xC"
+ "type": "integer"
}
],
"produces": [
@@ -215151,7 +244311,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/booking.bookingAttractionSearchResponseDoc"
+ "$ref": "#/definitions/coingecko.globalChartsResponseDoc"
}
},
"400": {
@@ -215160,14 +244320,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -215184,51 +244338,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Booking.com attractions",
+ "summary": "CoinGecko global chart series",
"tags": [
- "Booking"
+ "CoinGecko"
]
}
},
- "/booking-flights/autocomplete": {
+ "/coingecko/learn/articles": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Booking.com flight-search location suggestions (airports/cities) for a query string.",
- "operationId": "booking-flights-autocomplete",
+ "description": "Returns normalized article cards from CoinGecko Learn public pages.",
+ "operationId": "coingecko-learn-articles",
"parameters": [
{
- "description": "City or airport name/code to search",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "Chengdu"
- },
- {
- "description": "Location role, default to",
+ "description": "Learn category, default all",
"enum": [
- "to",
- "from"
+ "all",
+ "latest",
+ "airdrop-guides",
+ "coins-and-tokens",
+ "guides",
+ "wallets-and-bridges",
+ "api",
+ "reviews"
],
"in": "query",
- "name": "type",
+ "name": "category",
"type": "string"
},
{
- "description": "Optional origin location code, biases results by proximity",
- "in": "query",
- "name": "origin",
- "type": "string",
- "x-example": "SGN"
- },
- {
- "description": "Origin location type",
+ "description": "Rows to return, default 20, max 50",
"in": "query",
- "name": "origin_type",
- "type": "string",
- "x-example": "AIRPORT"
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -215238,7 +244382,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/booking.bookingFlightAutocompleteResponseDoc"
+ "$ref": "#/definitions/coingecko.learnArticlesResponseDoc"
}
},
"400": {
@@ -215247,14 +244391,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -215271,102 +244409,102 @@
"ApiKeyAuth": []
}
],
- "summary": "Booking.com flight autocomplete",
+ "summary": "CoinGecko Learn articles",
"tags": [
- "Booking"
+ "CoinGecko"
]
}
},
- "/booking-flights/search": {
+ "/coingecko/markets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized round-trip or one-way flight offers between two Booking.com flight-search locations.",
- "operationId": "booking-flights-search",
+ "description": "Returns normalized cryptocurrency market rows from CoinGecko public pages. This endpoint supports the documented `vs_currency` enum and is not intended for real-time trading.",
+ "operationId": "coingecko-markets",
"parameters": [
{
- "description": "Trip type, default ROUNDTRIP",
- "enum": [
- "ROUNDTRIP",
- "ONEWAY"
- ],
- "in": "query",
- "name": "type",
- "type": "string"
- },
- {
- "description": "Origin location id, e.g. SGN.AIRPORT, from a prior autocomplete result",
- "in": "query",
- "name": "from",
- "required": true,
- "type": "string",
- "x-example": "SGN.AIRPORT"
- },
- {
- "description": "Destination location id, same composite format as from",
- "in": "query",
- "name": "to",
- "required": true,
- "type": "string",
- "x-example": "CTU.CITY"
- },
- {
- "description": "Origin country code",
- "in": "query",
- "name": "from_country",
- "type": "string",
- "x-example": "VN"
- },
- {
- "description": "Destination country code",
- "in": "query",
- "name": "to_country",
- "type": "string",
- "x-example": "CN"
- },
- {
- "description": "Departure date, YYYY-MM-DD",
- "in": "query",
- "name": "depart",
- "required": true,
- "type": "string",
- "x-example": "2026-09-05"
- },
- {
- "description": "Return date, YYYY-MM-DD, required when type is ROUNDTRIP",
- "in": "query",
- "name": "return",
- "type": "string",
- "x-example": "2026-09-12"
- },
- {
- "description": "Number of adults, 1-9, default 1",
- "in": "query",
- "name": "adults",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Number of children, 0-9",
+ "description": "Page number, default 1",
"in": "query",
- "name": "children",
- "type": "integer",
- "x-example": 0
+ "name": "page",
+ "type": "integer"
},
{
- "description": "Cabin class, default ECONOMY",
+ "description": "Rows to return, default 100, max 100",
"in": "query",
- "name": "cabin_class",
- "type": "string",
- "x-example": "ECONOMY"
+ "name": "limit",
+ "type": "integer"
},
{
- "description": "Result sort order, default BEST",
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
"in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "BEST"
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -215376,7 +244514,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/booking.bookingFlightSearchResponseDoc"
+ "$ref": "#/definitions/coingecko.marketsResponseDoc"
}
},
"400": {
@@ -215391,8 +244529,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -215409,27 +244547,102 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Booking.com flights",
+ "summary": "CoinGecko markets",
"tags": [
- "Booking"
+ "CoinGecko"
]
}
},
- "/booking/hotel-detail": {
+ "/coingecko/new-coins": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Booking.com hotel's core detail page: rating, facilities, highlights, house rules, cover photos, and rooms with their own photos.",
- "operationId": "booking-hotel-detail",
+ "description": "Returns normalized rows from CoinGecko's public new cryptocurrencies table. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-new-coins",
"parameters": [
{
- "description": "Booking.com hotel id, from a prior search's property id",
+ "description": "Page number, default 1",
"in": "query",
- "name": "hotel_id",
- "required": true,
- "type": "integer",
- "x-example": 2845972
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Rows to return, default 100, max 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
+ "in": "query",
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -215439,7 +244652,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/booking.bookingHotelDetailResponseDoc"
+ "$ref": "#/definitions/coingecko.newCoinsResponseDoc"
}
},
"400": {
@@ -215448,14 +244661,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -215472,70 +244679,25 @@
"ApiKeyAuth": []
}
],
- "summary": "Booking.com hotel detail",
+ "summary": "CoinGecko new cryptocurrencies",
"tags": [
- "Booking"
+ "CoinGecko"
]
}
},
- "/booking/reviews": {
+ "/coingecko/news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized guest reviews for a Booking.com hotel, with an optional free-text search over review content.",
- "operationId": "booking-reviews",
+ "description": "Returns normalized article cards from CoinGecko's public news page.",
+ "operationId": "coingecko-news",
"parameters": [
{
- "description": "Booking.com hotel id, from a prior search's property id",
- "in": "query",
- "name": "hotel_id",
- "required": true,
- "type": "integer",
- "x-example": 2845972
- },
- {
- "description": "Destination id (ufi), from a prior search response",
- "in": "query",
- "name": "destination_id",
- "type": "integer",
- "x-example": -1456928
- },
- {
- "description": "Hotel's country code, from a prior search response",
- "in": "query",
- "name": "hotel_country_code",
- "required": true,
- "type": "string",
- "x-example": "fr"
- },
- {
- "description": "Hotel's overall review score",
- "in": "query",
- "name": "hotel_score",
- "type": "number",
- "x-example": 8.2
- },
- {
- "description": "Optional free-text search over review content",
- "in": "query",
- "name": "search_text",
- "type": "string",
- "x-example": "elevator"
- },
- {
- "description": "1-based result page, default 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Reviews per page, 1-25, default 10",
+ "description": "Rows to return, default 20, max 50",
"in": "query",
"name": "limit",
- "type": "integer",
- "x-example": 10
+ "type": "integer"
}
],
"produces": [
@@ -215545,7 +244707,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/booking.bookingReviewsResponseDoc"
+ "$ref": "#/definitions/coingecko.newsResponseDoc"
}
},
"400": {
@@ -215554,14 +244716,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -215578,71 +244734,110 @@
"ApiKeyAuth": []
}
],
- "summary": "Booking.com hotel reviews",
+ "summary": "CoinGecko news cards",
"tags": [
- "Booking"
+ "CoinGecko"
]
}
},
- "/booking/search": {
+ "/coingecko/nft/category/{slug}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Booking.com hotel search results for a destination and date range.",
- "operationId": "booking-search",
+ "description": "Returns normalized NFT collection rows from a CoinGecko public NFT category page. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-nft-category",
"parameters": [
{
- "description": "Destination name or city",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "Paris"
- },
- {
- "description": "Check-in date, YYYY-MM-DD",
- "in": "query",
- "name": "checkin",
- "required": true,
- "type": "string",
- "x-example": "2026-09-15"
- },
- {
- "description": "Check-out date, YYYY-MM-DD",
- "in": "query",
- "name": "checkout",
+ "description": "CoinGecko NFT category slug such as metaverse",
+ "in": "path",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "2026-09-17"
- },
- {
- "description": "Number of adults, 1-9, default 2",
- "in": "query",
- "name": "adults",
- "type": "integer",
- "x-example": 2
+ "x-example": "metaverse"
},
{
- "description": "Number of rooms, 1-8, default 1",
+ "description": "Page number, default 1",
"in": "query",
- "name": "rooms",
- "type": "integer",
- "x-example": 1
+ "name": "page",
+ "type": "integer"
},
{
- "description": "Number of children, 0-9",
+ "description": "Rows to return, default 100, max 100",
"in": "query",
- "name": "children",
- "type": "integer",
- "x-example": 0
+ "name": "limit",
+ "type": "integer"
},
{
- "description": "1-based result page, default 1",
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -215652,7 +244847,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/booking.bookingSearchResponseDoc"
+ "$ref": "#/definitions/coingecko.nftCategoryResponseDoc"
}
},
"400": {
@@ -215667,8 +244862,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -215685,195 +244880,104 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Booking.com hotels",
+ "summary": "CoinGecko NFT category",
"tags": [
- "Booking"
+ "CoinGecko"
]
}
},
- "/boots/search": {
+ "/coingecko/nfts": {
"get": {
- "description": "Returns one page of Boots UK's public product catalog, including product cards and live facets. Supply `q`, one or more hierarchical `category` keys, or both. Use repeatable `filter=facet_key:option_key` values from that response's dynamic facets, plus the dedicated price and stock controls. `sort` accepts `relevance`, `price_low_to_high`, `price_high_to_low`, `top_rated`, `best_seller`, or `newest`.",
- "operationId": "boots-search",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized NFT collection rows from the CoinGecko public website NFT table. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-nfts",
"parameters": [
{
- "description": "Free-text product query; required unless category is supplied",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "vitamin c"
- },
- {
- "collectionFormat": "multi",
- "description": "Repeat the exact category hierarchy keys from root through the desired leaf; required unless q is supplied",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "category",
- "type": "array",
- "x-example": "health & pharmacy"
- },
- {
- "collectionFormat": "multi",
- "description": "Repeat a dynamic facet filter as facet_key:option_key, using key/option values returned in facets; category, currentPrice, and inStock use their dedicated parameters",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "filter",
- "type": "array",
- "x-example": "brand:No7"
- },
- {
- "description": "Inclusive minimum GBP price; may be combined with price_max",
- "in": "query",
- "name": "price_min",
- "type": "number",
- "x-example": 45
- },
- {
- "description": "Inclusive maximum GBP price; may be combined with price_min",
- "in": "query",
- "name": "price_max",
- "type": "number",
- "x-example": 100
- },
- {
- "description": "true hides out-of-stock items; false leaves stock unfiltered",
- "in": "query",
- "name": "in_stock",
- "type": "boolean",
- "x-example": true
- },
- {
- "default": 1,
- "description": "Page from 1 through 1000",
+ "description": "Page number, default 1",
"in": "query",
"name": "page",
"type": "integer"
},
{
- "default": 48,
- "description": "Results per page from 1 through 48",
+ "description": "Rows to return, default 100, max 100",
"in": "query",
- "name": "page_size",
+ "name": "limit",
"type": "integer"
},
{
- "default": "relevance",
- "description": "Sort: relevance, price_low_to_high, price_high_to_low, top_rated, best_seller, or newest",
+ "description": "Quote currency",
"enum": [
- "relevance",
- "price_low_to_high",
- "price_high_to_low",
- "top_rated",
- "best_seller",
- "newest"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/boots.searchResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Search Boots UK products and categories",
- "tags": [
- "Boots"
- ]
- }
- },
- "/boots/suggest": {
- "get": {
- "description": "Returns Boots UK's own public typeahead phrases for a partial product query. The suggestions are search terms only; pass one to boots-search's q parameter for product cards and live facets.",
- "operationId": "boots-suggest",
- "parameters": [
- {
- "description": "Partial product query",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "vitamin c"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/boots.suggestResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
+ "in": "query",
+ "name": "vs_currency",
+ "type": "string"
}
],
- "summary": "Get Boots UK search-box suggestions",
- "tags": [
- "Boots"
- ]
- }
- },
- "/bostonglobe/news": {
- "get": {
- "description": "Returns recent Boston Globe story metadata and RSS summaries from its public Arc feed. The feed also carries content:encoded article prose, which this endpoint intentionally omits. Article bodies, sections, headlines-by-section, and author profiles are not exposed because the public contracts are not fully verified and some stories require a subscription.",
- "operationId": "bostonglobe-news",
"produces": [
"application/json"
],
@@ -215881,11 +244985,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/coingecko.nftsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -215902,70 +245012,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Boston Globe top stories",
+ "summary": "CoinGecko NFT collections",
"tags": [
- "Boston Globe"
+ "CoinGecko"
]
}
},
- "/boxofficemojo/brand": {
+ "/coingecko/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized release rows from a public Box Office Mojo brand page. Pass exactly one of `id`, `path`, or `url`.",
- "operationId": "boxofficemojo-brand",
+ "description": "Returns normalized CoinGecko search sections from the public website search JSON. Empty valid searches return empty arrays.",
+ "operationId": "coingecko-search",
"parameters": [
{
- "description": "Box Office Mojo brand id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "bn3732077058"
- },
- {
- "description": "Box Office Mojo brand path",
- "in": "query",
- "name": "path",
- "type": "string",
- "x-example": "/brand/bn3732077058/"
- },
- {
- "description": "Absolute https://www.boxofficemojo.com brand URL",
+ "description": "Search query",
"in": "query",
- "name": "url",
+ "name": "q",
+ "required": true,
"type": "string",
- "x-example": "https://www.boxofficemojo.com/brand/bn3732077058/"
- },
- {
- "description": "Sort field",
- "enum": [
- "grossToDate",
- "maxNumTheaters",
- "openingWeekendGross",
- "openingNumTheaters",
- "releaseDate"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort direction",
- "enum": [
- "asc",
- "desc"
- ],
- "in": "query",
- "name": "sortDir",
- "type": "string"
+ "x-example": "bitcoin"
},
{
- "description": "Row offset for pagination (page size 100)",
+ "description": "Rows per section to return, default 10, max 50",
"in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -215975,7 +245048,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.taxonomyDetailResponseDoc"
+ "$ref": "#/definitions/coingecko.searchResponseDoc"
}
},
"400": {
@@ -215984,18 +245057,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -216014,40 +245075,25 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo brand detail",
+ "summary": "CoinGecko discovery search",
"tags": [
- "Box Office Mojo"
+ "CoinGecko"
]
}
},
- "/boxofficemojo/brands": {
+ "/coingecko/token-unlocks": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized rows from Box Office Mojo's public brand chart.",
- "operationId": "boxofficemojo-brands",
+ "description": "Returns normalized rows from CoinGecko's public incoming token unlocks page.",
+ "operationId": "coingecko-token-unlocks",
"parameters": [
{
- "description": "Sort field",
- "enum": [
- "totalGross",
- "numReleases",
- "grossToDate"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort direction",
- "enum": [
- "asc",
- "desc"
- ],
+ "description": "Rows to return, default 100, max 100",
"in": "query",
- "name": "sortDir",
- "type": "string"
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -216057,7 +245103,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.taxonomyListResponseDoc"
+ "$ref": "#/definitions/coingecko.tokenUnlocksResponseDoc"
}
},
"400": {
@@ -216066,12 +245112,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -216090,35 +245130,122 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo brand chart",
+ "summary": "CoinGecko incoming token unlocks",
"tags": [
- "Box Office Mojo"
+ "CoinGecko"
]
}
},
- "/boxofficemojo/calendar": {
+ "/coingecko/treasuries": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized grouped rows from Box Office Mojo's public domestic release schedule. Provide `year` and `month`.",
- "operationId": "boxofficemojo-calendar",
+ "description": "Returns normalized entity rows from CoinGecko's public crypto treasuries tables. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-treasuries",
"parameters": [
{
- "description": "Calendar year, from 1921 through 2100",
+ "description": "Treasury asset filter, default all",
+ "enum": [
+ "all",
+ "bitcoin",
+ "ethereum",
+ "solana",
+ "bnb",
+ "xrp",
+ "tron"
+ ],
"in": "query",
- "name": "year",
- "required": true,
- "type": "integer",
- "x-example": 2026
+ "name": "asset",
+ "type": "string"
},
{
- "description": "Calendar month, 1 through 12",
+ "description": "Treasury holder type filter, default all",
+ "enum": [
+ "all",
+ "companies",
+ "governments"
+ ],
"in": "query",
- "name": "month",
- "required": true,
- "type": "integer",
- "x-example": 9
+ "name": "holder_type",
+ "type": "string"
+ },
+ {
+ "description": "Rows to return, default 100, max 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
+ "in": "query",
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -216128,7 +245255,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.calendarResponseDoc"
+ "$ref": "#/definitions/coingecko.treasuriesResponseDoc"
}
},
"400": {
@@ -216137,12 +245264,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -216161,26 +245282,96 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo domestic release schedule",
+ "summary": "CoinGecko crypto treasuries",
"tags": [
- "Box Office Mojo"
+ "CoinGecko"
]
}
},
- "/boxofficemojo/calendar/changes": {
+ "/coingecko/trending": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized grouped rows from Box Office Mojo's public domestic release-schedule changes page.",
- "operationId": "boxofficemojo-calendar-changes",
+ "description": "Returns deduped trending coins and categories from the public CoinGecko highlights page. This endpoint supports the documented `vs_currency` enum.",
+ "operationId": "coingecko-trending",
"parameters": [
{
- "description": "Changes page offset. Allowed values: 0, 30, 60, ... 780",
+ "description": "Rows per section to return, default 20, max 50",
"in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Quote currency",
+ "enum": [
+ "btc",
+ "eth",
+ "ltc",
+ "bch",
+ "bnb",
+ "eos",
+ "xrp",
+ "xlm",
+ "link",
+ "dot",
+ "yfi",
+ "sol",
+ "usd",
+ "aed",
+ "ars",
+ "aud",
+ "bdt",
+ "bhd",
+ "bmd",
+ "brl",
+ "cad",
+ "chf",
+ "clp",
+ "cny",
+ "czk",
+ "dkk",
+ "eur",
+ "gbp",
+ "gel",
+ "hkd",
+ "huf",
+ "idr",
+ "ils",
+ "inr",
+ "jpy",
+ "krw",
+ "kwd",
+ "lkr",
+ "mmk",
+ "mxn",
+ "myr",
+ "ngn",
+ "nok",
+ "nzd",
+ "php",
+ "pkr",
+ "pln",
+ "rub",
+ "sar",
+ "sek",
+ "sgd",
+ "thb",
+ "try",
+ "twd",
+ "uah",
+ "vef",
+ "vnd",
+ "zar",
+ "xdr",
+ "xag",
+ "xau",
+ "bits",
+ "sats"
+ ],
+ "in": "query",
+ "name": "vs_currency",
+ "type": "string"
}
],
"produces": [
@@ -216190,7 +245381,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.calendarChangesResponseDoc"
+ "$ref": "#/definitions/coingecko.trendingResponseDoc"
}
},
"400": {
@@ -216199,12 +245390,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -216223,27 +245408,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo domestic release schedule changes",
+ "summary": "CoinGecko trending highlights",
"tags": [
- "Box Office Mojo"
+ "CoinGecko"
]
}
},
- "/boxofficemojo/calendar/date": {
+ "/colehaan/collections": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized release rows for one public Box Office Mojo domestic release-schedule date.",
- "operationId": "boxofficemojo-calendar-date",
+ "description": "Returns normalized collections from Cole Haan (https://www.colehaan.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
+ "operationId": "colehaan-collections",
"parameters": [
{
- "description": "Calendar date in YYYY-MM-DD format",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "date",
- "required": true,
- "type": "string",
- "x-example": "2026-09-04"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Maximum collections, defaults to 50 and supports up to 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -216253,7 +245444,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.calendarDateResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
}
},
"400": {
@@ -216262,24 +245453,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -216292,27 +245471,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo domestic release schedule date",
+ "summary": "List Cole Haan collections",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/date/domestic": {
+ "/colehaan/collections/{handle}/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized rows from Box Office Mojo's public domestic daily chart. Empty upstream daily pages return a typed not-found error rather than an empty success.",
- "operationId": "boxofficemojo-date-domestic",
+ "description": "Returns normalized products from one Cole Haan (https://www.colehaan.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
+ "operationId": "colehaan-collection-products",
"parameters": [
{
- "description": "Domestic box office date in YYYY-MM-DD format",
- "in": "query",
- "name": "date",
+ "description": "Collection handle",
+ "in": "path",
+ "name": "handle",
"required": true,
"type": "string",
- "x-example": "2025-12-25"
+ "x-example": "collection-handle"
+ },
+ {
+ "description": "1-based page, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Maximum products, defaults to 50 and supports up to 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -216322,7 +245515,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.domesticDateResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
}
},
"400": {
@@ -216343,12 +245536,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -216361,70 +245548,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo domestic daily box office",
+ "summary": "List Cole Haan collection products",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/franchise": {
+ "/colehaan/pages": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized release rows from a public Box Office Mojo franchise page. Pass exactly one of `id`, `path`, or `url`.",
- "operationId": "boxofficemojo-franchise",
+ "description": "Returns normalized static pages from Cole Haan (https://www.colehaan.com). The storefront URL is fixed server-side.",
+ "operationId": "colehaan-pages",
"parameters": [
{
- "description": "Box Office Mojo franchise id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "fr541495045"
- },
- {
- "description": "Box Office Mojo franchise path",
- "in": "query",
- "name": "path",
- "type": "string",
- "x-example": "/franchise/fr541495045/"
- },
- {
- "description": "Absolute https://www.boxofficemojo.com franchise URL",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.boxofficemojo.com/franchise/fr541495045/"
- },
- {
- "description": "Sort field",
- "enum": [
- "grossToDate",
- "maxNumTheaters",
- "openingWeekendGross",
- "openingNumTheaters",
- "releaseDate"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort direction",
- "enum": [
- "asc",
- "desc"
- ],
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "sortDir",
- "type": "string"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Row offset for pagination (page size 100)",
+ "description": "Maximum static pages, defaults to 50 and supports up to 250",
"in": "query",
- "name": "offset",
+ "name": "limit",
"type": "integer",
- "x-example": 0
+ "x-example": 50
}
],
"produces": [
@@ -216434,7 +245584,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.taxonomyDetailResponseDoc"
+ "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
}
},
"400": {
@@ -216443,24 +245593,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -216473,40 +245611,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo franchise detail",
+ "summary": "List Cole Haan static pages",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/franchises": {
+ "/colehaan/pages/{handle}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized rows from Box Office Mojo's public franchise chart.",
- "operationId": "boxofficemojo-franchises",
+ "description": "Returns normalized static page detail for one Cole Haan (https://www.colehaan.com) page handle. The storefront URL is fixed server-side.",
+ "operationId": "colehaan-page",
"parameters": [
{
- "description": "Sort field",
- "enum": [
- "totalGross",
- "numReleases",
- "grossToDate"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort direction",
- "enum": [
- "asc",
- "desc"
- ],
- "in": "query",
- "name": "sortDir",
- "type": "string"
+ "description": "Page handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
+ "type": "string",
+ "x-example": "page-handle"
}
],
"produces": [
@@ -216516,7 +245641,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.taxonomyListResponseDoc"
+ "$ref": "#/definitions/shopifybrands.pageResponseDoc"
}
},
"400": {
@@ -216525,14 +245650,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -216549,70 +245674,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo franchise chart",
+ "summary": "Get a Cole Haan static page",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/genre": {
+ "/colehaan/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized release rows from a public Box Office Mojo genre page. Pass exactly one of `id`, `path`, or `url`.",
- "operationId": "boxofficemojo-genre",
+ "description": "Returns normalized products from Cole Haan's (https://www.colehaan.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
+ "operationId": "colehaan-products",
"parameters": [
{
- "description": "Box Office Mojo genre id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "sg3621777665"
- },
- {
- "description": "Box Office Mojo genre path",
- "in": "query",
- "name": "path",
- "type": "string",
- "x-example": "/genre/sg3621777665/"
- },
- {
- "description": "Absolute https://www.boxofficemojo.com genre URL",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.boxofficemojo.com/genre/sg3621777665/"
- },
- {
- "description": "Sort field",
- "enum": [
- "grossToDate",
- "maxNumTheaters",
- "openingWeekendGross",
- "openingNumTheaters",
- "releaseDate"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort direction",
- "enum": [
- "asc",
- "desc"
- ],
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "sortDir",
- "type": "string"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Row offset for pagination (page size 100)",
+ "description": "Maximum products, defaults to 50 and supports up to 250",
"in": "query",
- "name": "offset",
+ "name": "limit",
"type": "integer",
- "x-example": 0
+ "x-example": 50
}
],
"produces": [
@@ -216622,7 +245710,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.taxonomyDetailResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productsResponseDoc"
}
},
"400": {
@@ -216631,24 +245719,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -216661,40 +245737,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo genre detail",
+ "summary": "List Cole Haan products",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/genres": {
+ "/colehaan/products/{handle}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized rows from Box Office Mojo's public genre chart.",
- "operationId": "boxofficemojo-genres",
+ "description": "Returns normalized product detail for one Cole Haan (https://www.colehaan.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
+ "operationId": "colehaan-product",
"parameters": [
{
- "description": "Sort field",
- "enum": [
- "totalGross",
- "numTitles",
- "grossToDate"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort direction",
- "enum": [
- "asc",
- "desc"
- ],
- "in": "query",
- "name": "sortDir",
- "type": "string"
+ "description": "Product handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
+ "type": "string",
+ "x-example": "product-handle"
}
],
"produces": [
@@ -216704,7 +245767,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.taxonomyListResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productResponseDoc"
}
},
"400": {
@@ -216713,14 +245776,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -216737,37 +245800,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo genre chart",
+ "summary": "Get a Cole Haan product",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/lifetime-grosses": {
+ "/colehaan/products/{handle}/recommendations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized rows from Box Office Mojo's credential-free lifetime gross chart. `area` values: `worldwide`, `domestic`.",
- "operationId": "boxofficemojo-lifetime-grosses",
+ "description": "Returns normalized recommended products for one Cole Haan (https://www.colehaan.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
+ "operationId": "colehaan-product-recommendations",
"parameters": [
{
- "description": "Chart area. Allowed values: worldwide, domestic",
- "enum": [
- "worldwide",
- "domestic"
- ],
- "in": "query",
- "name": "area",
+ "description": "Product handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
"type": "string",
- "x-example": "worldwide"
+ "x-example": "product-handle"
},
{
- "description": "Chart page offset. Allowed values: 0, 200, 400, 600, 800",
+ "description": "Maximum products, defaults to 10 and supports up to 20",
"in": "query",
- "name": "offset",
+ "name": "limit",
"type": "integer",
- "x-example": 0
+ "x-example": 10
+ },
+ {
+ "description": "Recommendation intent. Allowed values: related, complementary",
+ "enum": [
+ "related",
+ "complementary"
+ ],
+ "in": "query",
+ "name": "intent",
+ "type": "string",
+ "x-example": "related"
}
],
"produces": [
@@ -216777,7 +245848,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.lifetimeGrossesResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
}
},
"400": {
@@ -216786,14 +245857,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -216810,40 +245881,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo lifetime gross chart",
+ "summary": "List Cole Haan product recommendations",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/release": {
+ "/colehaan/search/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Box Office Mojo release summary fields and domestic daily rows from a public release page. Pass exactly one of `id`, `path`, or `url`.",
- "operationId": "boxofficemojo-release",
+ "description": "Returns products, collections, and query suggestions from Cole Haan's (https://www.colehaan.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
+ "operationId": "colehaan-search-suggest",
"parameters": [
{
- "description": "Box Office Mojo release id",
+ "description": "Search query",
"in": "query",
- "name": "id",
+ "name": "q",
+ "required": true,
"type": "string",
- "x-example": "rl3389031937"
+ "x-example": "wool"
},
{
- "description": "Box Office Mojo release path",
+ "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
"in": "query",
- "name": "path",
+ "name": "types",
"type": "string",
- "x-example": "/release/rl3389031937/"
+ "x-example": "product,collection,query"
},
{
- "description": "Absolute https://www.boxofficemojo.com release URL",
+ "description": "Maximum results per type, defaults to 10 and supports up to 20",
"in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.boxofficemojo.com/release/rl3389031937/"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -216853,7 +245925,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.releaseResponseDoc"
+ "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
}
},
"400": {
@@ -216862,24 +245934,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -216892,40 +245952,42 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo release detail",
+ "summary": "Get Cole Haan search suggestions",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/release-group": {
+ "/colehaan/sitemap/urls": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized market release rows grouped by region from a public Box Office Mojo release-group page. Pass exactly one of `id`, `path`, or `url`.",
- "operationId": "boxofficemojo-release-group",
+ "description": "Returns capped URL entries from Cole Haan's (https://www.colehaan.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
+ "operationId": "colehaan-sitemap-urls",
"parameters": [
{
- "description": "Box Office Mojo release-group id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "gr3486798341"
- },
- {
- "description": "Box Office Mojo release-group path",
+ "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
+ "enum": [
+ "all",
+ "products",
+ "collections",
+ "pages",
+ "blogs",
+ "agentic_discovery",
+ "other"
+ ],
"in": "query",
- "name": "path",
+ "name": "type",
"type": "string",
- "x-example": "/releasegroup/gr3486798341/"
+ "x-example": "products"
},
{
- "description": "Absolute https://www.boxofficemojo.com release-group URL",
+ "description": "Maximum URL entries, defaults to 50 and supports up to 250",
"in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.boxofficemojo.com/releasegroup/gr3486798341/"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -216935,7 +245997,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.releaseGroupResponseDoc"
+ "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
}
},
"400": {
@@ -216944,24 +246006,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -216974,42 +246024,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo release group detail",
+ "summary": "List Cole Haan sitemap URLs",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/showdown": {
+ "/colehaan/sitemaps": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized release comparison metrics from a public Box Office Mojo showdown page. Pass exactly one of `id`, `path`, or `url`.",
- "operationId": "boxofficemojo-showdown",
- "parameters": [
- {
- "description": "Box Office Mojo showdown id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "sd943519236"
- },
- {
- "description": "Box Office Mojo showdown path",
- "in": "query",
- "name": "path",
- "type": "string",
- "x-example": "/showdown/sd943519236/"
- },
- {
- "description": "Absolute https://www.boxofficemojo.com showdown URL",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.boxofficemojo.com/showdown/sd943519236/"
- }
- ],
+ "description": "Returns child sitemap URLs from Cole Haan's (https://www.colehaan.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
+ "operationId": "colehaan-sitemaps",
"produces": [
"application/json"
],
@@ -217017,7 +246044,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.showdownResponseDoc"
+ "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
}
},
"400": {
@@ -217026,24 +246053,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -217056,19 +246071,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo showdown detail",
+ "summary": "List Cole Haan sitemaps",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/showdowns": {
+ "/colehaan/store": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized comparison rows from Box Office Mojo's public showdowns page.",
- "operationId": "boxofficemojo-showdowns",
+ "description": "Returns normalized storefront metadata for Cole Haan (https://www.colehaan.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
+ "operationId": "colehaan-store",
"produces": [
"application/json"
],
@@ -217076,17 +246091,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.showdownsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.storeResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -217103,40 +246118,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo showdowns",
+ "summary": "Get Cole Haan store metadata",
"tags": [
- "Box Office Mojo"
+ "Cole Haan"
]
}
},
- "/boxofficemojo/title": {
+ "/collider/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Box Office Mojo title release-group and market-gross tables from a public title page. Pass exactly one of `id`, `path`, or `url`.",
- "operationId": "boxofficemojo-title",
+ "description": "Returns public Collider article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "collider-article",
"parameters": [
{
- "description": "Box Office Mojo title id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "tt0499549"
- },
- {
- "description": "Box Office Mojo title path",
- "in": "query",
- "name": "path",
- "type": "string",
- "x-example": "/title/tt0499549/"
- },
- {
- "description": "Absolute https://www.boxofficemojo.com title URL",
+ "description": "Canonical Collider article URL",
"in": "query",
"name": "url",
+ "required": true,
"type": "string",
- "x-example": "https://www.boxofficemojo.com/title/tt0499549/"
+ "x-example": "https://collider.com/saw-new-movie-mike-p-nelson-director/"
}
],
"produces": [
@@ -217146,7 +246145,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.titleResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -217167,12 +246166,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -217185,35 +246178,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo title detail",
+ "summary": "Get Collider article content",
"tags": [
- "Box Office Mojo"
+ "Collider"
]
}
},
- "/boxofficemojo/weekend/domestic": {
+ "/collider/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized rows from Box Office Mojo's public domestic weekend chart. Empty upstream weekend pages return a typed not-found error rather than an empty success.",
- "operationId": "boxofficemojo-weekend-domestic",
+ "description": "Returns a Collider author's byline metadata, biography, social links, and recent articles from a canonical author URL.",
+ "operationId": "collider-author",
"parameters": [
{
- "description": "Domestic weekend year, from 1982 through 2100",
- "in": "query",
- "name": "year",
- "required": true,
- "type": "integer",
- "x-example": 2025
- },
- {
- "description": "Weekend number, 1 through 53",
+ "description": "Canonical Collider author URL",
"in": "query",
- "name": "week",
+ "name": "url",
"required": true,
- "type": "integer",
- "x-example": 52
+ "type": "string",
+ "x-example": "https://collider.com/author/hannah-hunt/"
}
],
"produces": [
@@ -217223,7 +246205,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.domesticWeekendResponseDoc"
+ "$ref": "#/definitions/publicnews.colliderAuthorResponseDoc"
}
},
"400": {
@@ -217238,18 +246220,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -217262,35 +246232,74 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo domestic weekend box office",
+ "summary": "Get a Collider author profile",
"tags": [
- "Box Office Mojo"
+ "Collider"
]
}
},
- "/boxofficemojo/weekend/domestic/by-distributor": {
+ "/collider/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized distributor rows from Box Office Mojo's public domestic weekend by-distributor chart. Empty upstream weekend pages return a typed not-found error rather than an empty success.",
- "operationId": "boxofficemojo-weekend-domestic-by-distributor",
+ "description": "Returns fresh headlines from one public Collider RSS section. Items from video categories have type video and are not readable through the article endpoint.",
+ "operationId": "collider-headlines",
"parameters": [
{
- "description": "Domestic weekend year, from 1982 through 2100",
- "in": "query",
- "name": "year",
- "required": true,
- "type": "integer",
- "x-example": 2025
- },
- {
- "description": "Weekend number, 1 through 53",
+ "description": "Collider RSS section slug",
+ "enum": [
+ "movie-tv-news",
+ "tv-movie-news",
+ "movies",
+ "movie-news",
+ "movie-features",
+ "movie-reviews",
+ "movie-trailers",
+ "tv",
+ "tv-news",
+ "tv-features",
+ "tv-reviews",
+ "tv-trailers",
+ "all-reviews",
+ "trailers",
+ "features",
+ "exclusives",
+ "interviews",
+ "fyc",
+ "what-to-watch",
+ "streaming-guides",
+ "other-streaming-guides",
+ "netflix",
+ "amazon",
+ "disney",
+ "max",
+ "hulu",
+ "apple-tv-plus",
+ "reality-tv",
+ "music",
+ "horror",
+ "animation",
+ "video-games",
+ "gaming-news",
+ "collectibles",
+ "screening",
+ "collider-signature",
+ "authority",
+ "collider-rewind",
+ "collider-quiz",
+ "podcasts",
+ "cl-originals",
+ "videos",
+ "latest-videos",
+ "video-originals",
+ "video-interviews",
+ "interview-videos",
+ "exclusive-videos",
+ "list-videos"
+ ],
"in": "query",
- "name": "week",
+ "name": "section",
"required": true,
- "type": "integer",
- "x-example": 52
+ "type": "string",
+ "x-example": "movie-tv-news"
}
],
"produces": [
@@ -217300,7 +246309,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.weekendDistributorResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -217309,24 +246318,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -217339,37 +246336,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo domestic weekend by distributor",
+ "summary": "Get Collider section headlines",
"tags": [
- "Box Office Mojo"
+ "Collider"
]
}
},
- "/boxofficemojo/weekend/domestic/estimates": {
+ "/collider/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized estimate-vs-actual rows from Box Office Mojo's public domestic weekend estimates chart. Empty upstream weekend pages return a typed not-found error rather than an empty success.",
- "operationId": "boxofficemojo-weekend-domestic-estimates",
- "parameters": [
- {
- "description": "Domestic weekend year, from 1982 through 2100",
- "in": "query",
- "name": "year",
- "required": true,
- "type": "integer",
- "x-example": 2025
- },
- {
- "description": "Weekend number, 1 through 53",
- "in": "query",
- "name": "week",
- "required": true,
- "type": "integer",
- "x-example": 52
- }
- ],
+ "description": "Returns fresh Collider top stories from its public RSS feed.",
+ "operationId": "collider-news",
"produces": [
"application/json"
],
@@ -217377,19 +246353,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.weekendEstimatesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -217398,12 +246362,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -217416,29 +246374,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo domestic weekend estimates",
+ "summary": "Get Collider top stories",
"tags": [
- "Box Office Mojo"
+ "Collider"
]
}
},
- "/boxofficemojo/year/domestic": {
+ "/collider/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized release rows from Box Office Mojo's public domestic yearly calendar-grosses chart.",
- "operationId": "boxofficemojo-year-domestic",
- "parameters": [
- {
- "description": "Domestic box office year, from 1977 through 2100",
- "in": "query",
- "name": "year",
- "required": true,
- "type": "integer",
- "x-example": 2025
- }
- ],
+ "description": "Returns the public Collider RSS section inventory used by the headlines endpoint.",
+ "operationId": "collider-sections",
"produces": [
"application/json"
],
@@ -217446,13 +246391,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.domesticYearResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
},
"429": {
@@ -217460,18 +246399,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -217479,29 +246406,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo domestic yearly box office",
+ "summary": "Get Collider RSS sections",
"tags": [
- "Box Office Mojo"
+ "Collider"
]
}
},
- "/boxofficemojo/year/worldwide": {
+ "/comc/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized release-group rows from Box Office Mojo's public worldwide yearly chart.",
- "operationId": "boxofficemojo-year-worldwide",
- "parameters": [
- {
- "description": "Box office year, from 1977 through 2100",
- "in": "query",
- "name": "year",
- "required": true,
- "type": "integer",
- "x-example": 2025
- }
- ],
+ "description": "Returns COMC's (comc.com) closed, top-level category/sport taxonomy -- the discovery endpoint for the search endpoint's `category` param. Every slug is the exact path segment comc.com's own site uses.",
+ "operationId": "comc-categories",
"produces": [
"application/json"
],
@@ -217509,13 +246426,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/boxofficemojo.worldwideYearResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/comc.categoriesResponseDoc"
}
},
"429": {
@@ -217524,12 +246435,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -217542,50 +246447,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Box Office Mojo worldwide yearly box office",
+ "summary": "List COMC categories",
"tags": [
- "Box Office Mojo"
+ "COMC"
]
}
},
- "/brand/retrieve": {
+ "/comc/listing": {
"get": {
"consumes": [
"application/json"
],
- "description": "Fetches a domain's homepage and Web App Manifest and extracts a normalized brand profile (title, description, brand colors normalized to hex, logos and icons ranked best-first, backdrops, socials, links, and any schema.org organization data). Enrichment-only fields that are not present in the page markup are returned as null.",
- "operationId": "brand-retrieve",
+ "description": "Returns one card+grade combination's full detail from COMC (comc.com): card identity and every seller's individual for-sale copy (owner, item id, price). handle is the value returned by comc_search's CardSummary.handle field (or the equivalent comc.com card URL path).",
+ "operationId": "comc-listing",
"parameters": [
{
- "description": "Domain to retrieve brand data for, e.g. context.dev",
+ "description": "Required. The handle from a comc_search result (or the equivalent comc.com card URL path).",
"in": "query",
- "name": "domain",
+ "name": "handle",
"required": true,
- "type": "string"
- },
- {
- "description": "Accepted for compatibility; not applied in HTML-only mode",
- "in": "query",
- "name": "force_language",
- "type": "string"
- },
- {
- "description": "Optimize for speed by skipping schema.org and footer-link extraction",
- "in": "query",
- "name": "maxSpeed",
- "type": "boolean"
- },
- {
- "description": "Cache freshness window in milliseconds, clamps to 1 day..1 year",
- "in": "query",
- "name": "maxAgeMs",
- "type": "integer"
- },
- {
- "description": "Upstream fetch timeout in milliseconds, clamps to 1000..300000",
- "in": "query",
- "name": "timeoutMS",
- "type": "integer"
+ "type": "string",
+ "x-example": "Cards/Football/2021/Panini_Absolute_-_Base_-_Red/36/Josh_Allen/17779360"
}
],
"produces": [
@@ -217595,7 +246477,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/brand.retrieveResponseDoc"
+ "$ref": "#/definitions/comc.listingResponseDoc"
}
},
"400": {
@@ -217604,18 +246486,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "408": {
- "description": "Request Timeout",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -217634,114 +246504,106 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve brand data by domain",
+ "summary": "Get COMC card listing detail",
"tags": [
- "Brand"
+ "COMC"
]
}
},
- "/brave/images": {
+ "/comc/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Brave image search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Brave Search image HTML and return 503 when Brave serves a challenge page or unusable HTML.",
- "operationId": "brave-images",
+ "description": "Searches or browses COMC's (comc.com) live consignment marketplace for graded and ungraded trading cards. Each result row is a distinct card+grade combination (COMC's own category/search grid aggregates every seller's copy under one row); chain a row's handle into the listing endpoint for the per-seller breakdown. At least one of category or query is typically useful, but both are optional -- omitting both searches all categories.",
+ "operationId": "comc-search",
"parameters": [
{
- "description": "Search query",
+ "description": "Optional. One of comc_categories' slug values. Omit to search all categories.",
"in": "query",
- "name": "q",
- "required": true,
+ "name": "category",
"type": "string",
- "x-example": "openai"
+ "x-example": "Baseball"
},
{
- "description": "Zero-based Brave result page; defaults to 0",
+ "description": "Optional free-text search query.",
"in": "query",
- "minimum": 0,
- "name": "offset",
- "type": "integer",
- "x-example": 0
+ "name": "query",
+ "type": "string",
+ "x-example": "mike trout"
},
{
- "description": "Results to return; defaults to 10, clamped to 1..50",
+ "description": "Optional. Allowed values: r (Recently Added, default), c (Card #), o (Oldest), n (Newest), b (Highest SRP), h (Highest Price), l (Lowest Price), d (Biggest Discount), p (Highest Percent Off), q (Print Run), s (Least in Stock), m (Most in Stock), e (Ending Soonest).",
+ "enum": [
+ "r",
+ "c",
+ "o",
+ "n",
+ "b",
+ "h",
+ "l",
+ "d",
+ "p",
+ "q",
+ "s",
+ "m",
+ "e"
+ ],
"in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
+ "name": "sort",
+ "type": "string",
+ "x-example": "r"
},
{
- "description": "Brave result country; defaults to us",
+ "description": "Optional, comma-separated. Allowed values: AUTO (Autographed), HOF (Hall of Fame), MEM (Memorabilia), PRC (Pre-Rookie Card), RC (Rookie Card), RR (Rookie Related), RY (Rookie Year), SN (Serial Numbered).",
+ "in": "query",
+ "name": "attributes",
+ "type": "string",
+ "x-example": "RC,AUTO"
+ },
+ {
+ "description": "Optional. Allowed values: aUngraded (Ungraded), aGraded (Graded), aAftermarketAuto (Aftermarket Auto), aAfterAutoGraded (Aftermarket Auto Graded).",
"enum": [
- "all",
- "ar",
- "at",
- "au",
- "be",
- "br",
- "ca",
- "ch",
- "cl",
- "cn",
- "de",
- "dk",
- "es",
- "fi",
- "fr",
- "gb",
- "gr",
- "hk",
- "id",
- "in",
- "it",
- "jp",
- "kr",
- "mx",
- "my",
- "nl",
- "no",
- "nz",
- "ph",
- "pl",
- "pt",
- "ru",
- "sa",
- "se",
- "sg",
- "tr",
- "tw",
- "us",
- "za"
+ "aUngraded",
+ "aGraded",
+ "aAftermarketAuto",
+ "aAfterAutoGraded"
],
"in": "query",
- "name": "country",
+ "name": "condition",
"type": "string",
- "x-example": "us"
+ "x-example": "aGraded"
},
{
- "description": "Brave UI language; defaults to en-us",
+ "description": "1-based page, default 1.",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Optional. Allowed values: 6, 8, 10, 12, 14, 15, 16, 18, 20, 24, 30, 40, 50, 64, 100. Omit to use COMC's own default.",
"enum": [
- "de-de",
- "en-ca",
- "en-gb",
- "en-in",
- "en-us",
- "fi-fi",
- "fr-ca",
- "fr-fr",
- "ja-jp",
- "pt-br",
- "sq-al",
- "sw-ke",
- "zh-tw"
+ 6,
+ 8,
+ 10,
+ 12,
+ 14,
+ 15,
+ 16,
+ 18,
+ 20,
+ 24,
+ 30,
+ 40,
+ 50,
+ 64,
+ 100
],
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 20
}
],
"produces": [
@@ -217751,35 +246613,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/brave.imagesResponseDoc"
+ "$ref": "#/definitions/comc.searchResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "No results found",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Brave upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -217790,142 +246640,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Brave image results",
+ "summary": "Search COMC card listings",
"tags": [
- "Brave"
+ "COMC"
]
}
},
- "/brave/news": {
+ "/congress/report": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Brave news search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Brave Search news HTML and return 503 when Brave serves a challenge page or unusable HTML.",
- "operationId": "brave-news",
+ "description": "Fetch a single disclosure report by its filing_url (as returned by",
+ "operationId": "congress-report",
"parameters": [
{
- "description": "Search query",
+ "description": "Filing URL, as returned by congress-stock-disclosures' filing_url field. Must be an efdsearch.senate.gov /search/view/annual/..., /search/view/ptr/..., or /search/view/extension-notice/regular/... URL.",
"in": "query",
- "name": "q",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "Zero-based Brave result page; defaults to 0",
- "in": "query",
- "minimum": 0,
- "name": "offset",
- "type": "integer",
- "x-example": 0
- },
- {
- "description": "Results to return; defaults to 10, clamped to 1..50",
- "in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Brave result country; defaults to us",
- "enum": [
- "all",
- "ar",
- "at",
- "au",
- "be",
- "br",
- "ca",
- "ch",
- "cl",
- "cn",
- "de",
- "dk",
- "es",
- "fi",
- "fr",
- "gb",
- "gr",
- "hk",
- "id",
- "in",
- "it",
- "jp",
- "kr",
- "mx",
- "my",
- "nl",
- "no",
- "nz",
- "ph",
- "pl",
- "pt",
- "ru",
- "sa",
- "se",
- "sg",
- "tr",
- "tw",
- "us",
- "za"
- ],
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Brave UI language; defaults to en-us",
- "enum": [
- "de-de",
- "en-ca",
- "en-gb",
- "en-in",
- "en-us",
- "fi-fi",
- "fr-ca",
- "fr-fr",
- "ja-jp",
- "pt-br",
- "sq-al",
- "sw-ke",
- "zh-tw"
- ],
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
- },
- {
- "description": "Preset time filter: any, day, week, month, year, or custom",
- "enum": [
- "any",
- "day",
- "week",
- "month",
- "year",
- "custom"
- ],
- "in": "query",
- "name": "time_range",
- "type": "string"
- },
- {
- "description": "Custom start date in YYYY-MM-DD; requires date_to",
- "in": "query",
- "name": "date_from",
- "type": "string",
- "x-example": "2026-03-01"
- },
- {
- "description": "Custom end date in YYYY-MM-DD; requires date_from",
- "in": "query",
- "name": "date_to",
- "type": "string",
- "x-example": "2026-03-30"
+ "x-example": "https://efdsearch.senate.gov/search/view/annual/cc198326-0f50-4f47-8b03-a5c6440f400f/"
}
],
"produces": [
@@ -217935,35 +246670,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/brave.newsResponseDoc"
+ "$ref": "#/definitions/congress.reportResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "No results found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Brave upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -217974,275 +246703,346 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Brave news results",
+ "summary": "Fetch and parse a congressional disclosure report",
"tags": [
- "Brave"
+ "Congress"
]
}
},
- "/brave/search": {
+ "/congress/stock-disclosures": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized web search results from Brave Search for a query string, along with offset-based pagination, related queries, discussions, videos, and the right-side knowledge card when Brave includes one. Use time_range for preset ranges or date_from/date_to for a custom YYYY-MM-DD range. Locale defaults to country=us and lang=en-us.",
- "operationId": "brave-search",
+ "description": "Search public congressional stock disclosure filings (House or Senate)",
+ "operationId": "congress-stock-disclosures",
"parameters": [
{
- "description": "Search query",
+ "description": "Chamber filter. Allowed values: house, senate.",
+ "enum": [
+ "house",
+ "senate"
+ ],
"in": "query",
- "name": "q",
- "required": true,
+ "name": "chamber",
"type": "string",
- "x-example": "openai"
+ "x-example": "house"
},
{
- "description": "Zero-based Brave result page",
+ "description": "Member name. Required for House. For Senate, this backward-compatible shorthand maps one word to last_name and maps the first word plus the complete remaining surname to first_name/last_name; it cannot be combined with either exact name field.",
"in": "query",
- "minimum": 0,
- "name": "offset",
- "type": "integer",
- "x-example": 1
+ "name": "member",
+ "type": "string"
},
{
- "description": "Brave result country; defaults to us",
+ "description": "Senate filer first-name prefix (Senate only; cannot be combined with member).",
+ "in": "query",
+ "name": "first_name",
+ "type": "string",
+ "x-example": "Elizabeth"
+ },
+ {
+ "description": "Senate filer last-name prefix (Senate only; cannot be combined with member).",
+ "in": "query",
+ "name": "last_name",
+ "type": "string",
+ "x-example": "Warren"
+ },
+ {
+ "description": "Deprecated unsupported parameter; any non-empty value returns a validation error and the parameter is planned for removal.",
+ "in": "query",
+ "name": "ticker",
+ "type": "string"
+ },
+ {
+ "description": "State or territory filter (2-letter code). For Senate this backward-compatible shorthand applies to both Senator and Candidate states and cannot be combined with senator_state or candidate_state.",
"enum": [
- "all",
- "ar",
- "at",
- "au",
- "be",
- "br",
- "ca",
- "ch",
- "cl",
- "cn",
- "de",
- "dk",
- "es",
- "fi",
- "fr",
- "gb",
- "gr",
- "hk",
- "id",
- "in",
- "it",
- "jp",
- "kr",
- "mx",
- "my",
- "nl",
- "no",
- "nz",
- "ph",
- "pl",
- "pt",
- "ru",
- "sa",
- "se",
- "sg",
- "tr",
- "tw",
- "us",
- "za"
+ "AK",
+ "AL",
+ "AR",
+ "AS",
+ "AZ",
+ "CA",
+ "CO",
+ "CT",
+ "DC",
+ "DE",
+ "FL",
+ "FM",
+ "GA",
+ "GU",
+ "HI",
+ "IA",
+ "ID",
+ "IL",
+ "IN",
+ "KS",
+ "KY",
+ "LA",
+ "MA",
+ "MD",
+ "ME",
+ "MH",
+ "MI",
+ "MN",
+ "MO",
+ "MP",
+ "MS",
+ "MT",
+ "NC",
+ "ND",
+ "NE",
+ "NH",
+ "NJ",
+ "NM",
+ "NV",
+ "NY",
+ "OH",
+ "OK",
+ "OR",
+ "PA",
+ "PR",
+ "PW",
+ "RI",
+ "SC",
+ "SD",
+ "TN",
+ "TX",
+ "UT",
+ "VA",
+ "VI",
+ "VT",
+ "WA",
+ "WI",
+ "WV",
+ "WY"
],
"in": "query",
- "name": "country",
+ "name": "state",
"type": "string",
- "x-example": "us"
+ "x-example": "CA"
},
{
- "description": "Brave UI language; defaults to en-us",
+ "description": "Senator state filter (Senate only, 2-letter code).",
"enum": [
- "de-de",
- "en-ca",
- "en-gb",
- "en-in",
- "en-us",
- "fi-fi",
- "fr-ca",
- "fr-fr",
- "ja-jp",
- "pt-br",
- "sq-al",
- "sw-ke",
- "zh-tw"
+ "AK",
+ "AL",
+ "AR",
+ "AS",
+ "AZ",
+ "CA",
+ "CO",
+ "CT",
+ "DC",
+ "DE",
+ "FL",
+ "FM",
+ "GA",
+ "GU",
+ "HI",
+ "IA",
+ "ID",
+ "IL",
+ "IN",
+ "KS",
+ "KY",
+ "LA",
+ "MA",
+ "MD",
+ "ME",
+ "MH",
+ "MI",
+ "MN",
+ "MO",
+ "MP",
+ "MS",
+ "MT",
+ "NC",
+ "ND",
+ "NE",
+ "NH",
+ "NJ",
+ "NM",
+ "NV",
+ "NY",
+ "OH",
+ "OK",
+ "OR",
+ "PA",
+ "PR",
+ "PW",
+ "RI",
+ "SC",
+ "SD",
+ "TN",
+ "TX",
+ "UT",
+ "VA",
+ "VI",
+ "VT",
+ "WA",
+ "WI",
+ "WV",
+ "WY"
],
"in": "query",
- "name": "lang",
+ "name": "senator_state",
"type": "string",
- "x-example": "en-us"
+ "x-example": "MA"
},
{
- "description": "Preset time filter: any, day, week, month, year, or custom",
+ "description": "Candidate state filter (Senate only, 2-letter code).",
"enum": [
- "any",
- "day",
- "week",
- "month",
- "year",
- "custom"
+ "AK",
+ "AL",
+ "AR",
+ "AS",
+ "AZ",
+ "CA",
+ "CO",
+ "CT",
+ "DC",
+ "DE",
+ "FL",
+ "FM",
+ "GA",
+ "GU",
+ "HI",
+ "IA",
+ "ID",
+ "IL",
+ "IN",
+ "KS",
+ "KY",
+ "LA",
+ "MA",
+ "MD",
+ "ME",
+ "MH",
+ "MI",
+ "MN",
+ "MO",
+ "MP",
+ "MS",
+ "MT",
+ "NC",
+ "ND",
+ "NE",
+ "NH",
+ "NJ",
+ "NM",
+ "NV",
+ "NY",
+ "OH",
+ "OK",
+ "OR",
+ "PA",
+ "PR",
+ "PW",
+ "RI",
+ "SC",
+ "SD",
+ "TN",
+ "TX",
+ "UT",
+ "VA",
+ "VI",
+ "VT",
+ "WA",
+ "WI",
+ "WV",
+ "WY"
],
"in": "query",
- "name": "time_range",
+ "name": "candidate_state",
+ "type": "string",
+ "x-example": "TX"
+ },
+ {
+ "description": "House district filter (House only).",
+ "in": "query",
+ "name": "district",
"type": "string"
},
{
- "description": "Custom start date in YYYY-MM-DD; requires date_to",
+ "description": "Filer-type filter, meaning differs by chamber. House: member (default) or candidate. Senate: comma-separated senator, candidate, former_senator, or the standalone all value. Defaults to senator when omitted.",
+ "enum": [
+ "member",
+ "candidate",
+ "all",
+ "senator",
+ "former_senator"
+ ],
"in": "query",
- "name": "date_from",
+ "name": "filer_type",
"type": "string",
- "x-example": "2026-03-01"
+ "x-example": "candidate"
},
{
- "description": "Custom end date in YYYY-MM-DD; requires date_from",
+ "description": "House candidate-search election year filter (requires filer_type=candidate).",
"in": "query",
- "name": "date_to",
+ "name": "election_year",
"type": "string",
- "x-example": "2026-03-30"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/brave.searchResponseDoc"
- }
- },
- "400": {
- "description": "Missing or invalid query",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "No results found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ "x-example": "2024"
},
- "500": {
- "description": "Internal server error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Search Brave",
- "tags": [
- "Brave"
- ]
- }
- },
- "/brave/suggest": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Brave autosuggest query completions for a query prefix. Locale defaults to country=us and lang=en-us. Suggestions are fetched from public Brave Search suggest JSON and trimmed to the requested count.",
- "operationId": "brave-suggest",
- "parameters": [
{
- "description": "Search query prefix",
+ "description": "Comma-separated Senate report-type filter (Senate only). Allowed values: annual, periodic_transaction, due_date_extension, blind_trust, other. Defaults to all types when omitted.",
+ "enum": [
+ "annual",
+ "periodic_transaction",
+ "due_date_extension",
+ "blind_trust",
+ "other"
+ ],
"in": "query",
- "name": "q",
- "required": true,
+ "name": "report_type",
"type": "string",
- "x-example": "openai"
+ "x-example": "annual,periodic_transaction"
},
{
- "description": "Suggestions to return; defaults to 10, clamped to 1..12",
+ "description": "Minimum filing date. House accepts YYYY. Senate accepts YYYY or MM/DD/YYYY and defaults to 2012 when omitted.",
"in": "query",
- "maximum": 12,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
+ "name": "from",
+ "type": "string",
+ "x-example": "01/01/2024"
},
{
- "description": "Brave result country; defaults to us",
- "enum": [
- "all",
- "ar",
- "at",
- "au",
- "be",
- "br",
- "ca",
- "ch",
- "cl",
- "cn",
- "de",
- "dk",
- "es",
- "fi",
- "fr",
- "gb",
- "gr",
- "hk",
- "id",
- "in",
- "it",
- "jp",
- "kr",
- "mx",
- "my",
- "nl",
- "no",
- "nz",
- "ph",
- "pl",
- "pt",
- "ru",
- "sa",
- "se",
- "sg",
- "tr",
- "tw",
- "us",
- "za"
- ],
+ "description": "Maximum filing date. House accepts YYYY. Senate accepts YYYY or MM/DD/YYYY.",
"in": "query",
- "name": "country",
+ "name": "to",
"type": "string",
- "x-example": "us"
+ "x-example": "12/31/2024"
},
{
- "description": "Brave UI language; defaults to en-us",
- "enum": [
- "de-de",
- "en-ca",
- "en-gb",
- "en-in",
- "en-us",
- "fi-fi",
- "fr-ca",
- "fr-fr",
- "ja-jp",
- "pt-br",
- "sq-al",
- "sw-ke",
- "zh-tw"
+ "description": "Sort key. Allowed values: name_asc, name_desc, office_asc, office_desc, filing_year_asc, filing_year_desc.",
+ "enum": [
+ "name_asc",
+ "name_desc",
+ "office_asc",
+ "office_desc",
+ "filing_year_asc",
+ "filing_year_desc"
],
"in": "query",
- "name": "lang",
+ "name": "sort",
"type": "string",
- "x-example": "en-us"
+ "x-example": "filing_year_desc"
+ },
+ {
+ "default": 1,
+ "description": "1-based result page (1-1000).",
+ "in": "query",
+ "maximum": 1000,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Max results (1-500).",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -218252,29 +247052,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/brave.suggestResponseDoc"
+ "$ref": "#/definitions/congress.stockDisclosuresResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Brave upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -218285,142 +247079,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Suggest Brave search queries",
+ "summary": "Search congressional stock-disclosure filings",
"tags": [
- "Brave"
+ "Congress"
]
}
},
- "/brave/videos": {
- "get": {
+ "/contact": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized Brave video search results for a query string. Locale defaults to country=us and lang=en-us. Results are fetched from public Brave Search video HTML and return 503 when Brave serves a challenge page or unusable HTML.",
- "operationId": "brave-videos",
+ "description": "Crawls a public website URL (homepage plus contact/about/team/imprint pages) and returns its public business contact details: emails — each tagged with a verification `status` (`verified`, `risky`, `unverified`, `invalid`) and a `type` (`generic`, `role`, `personal`) — plus social-media profiles and phone numbers. Intended for authorized public-business data only.",
+ "operationId": "contact",
"parameters": [
{
- "description": "Search query",
- "in": "query",
- "name": "q",
+ "description": "Website URL payload",
+ "in": "body",
+ "name": "option",
"required": true,
- "type": "string",
- "x-example": "openai"
- },
- {
- "description": "Zero-based Brave result page; defaults to 0",
- "in": "query",
- "minimum": 0,
- "name": "offset",
- "type": "integer",
- "x-example": 0
- },
- {
- "description": "Results to return; defaults to 10, clamped to 1..50",
- "in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Brave result country; defaults to us",
- "enum": [
- "all",
- "ar",
- "at",
- "au",
- "be",
- "br",
- "ca",
- "ch",
- "cl",
- "cn",
- "de",
- "dk",
- "es",
- "fi",
- "fr",
- "gb",
- "gr",
- "hk",
- "id",
- "in",
- "it",
- "jp",
- "kr",
- "mx",
- "my",
- "nl",
- "no",
- "nz",
- "ph",
- "pl",
- "pt",
- "ru",
- "sa",
- "se",
- "sg",
- "tr",
- "tw",
- "us",
- "za"
- ],
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Brave UI language; defaults to en-us",
- "enum": [
- "de-de",
- "en-ca",
- "en-gb",
- "en-in",
- "en-us",
- "fi-fi",
- "fr-ca",
- "fr-fr",
- "ja-jp",
- "pt-br",
- "sq-al",
- "sw-ke",
- "zh-tw"
- ],
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en-us"
- },
- {
- "description": "Preset time filter: any, day, week, month, year, or custom",
- "enum": [
- "any",
- "day",
- "week",
- "month",
- "year",
- "custom"
- ],
- "in": "query",
- "name": "time_range",
- "type": "string"
- },
- {
- "description": "Custom start date in YYYY-MM-DD; requires date_to",
- "in": "query",
- "name": "date_from",
- "type": "string",
- "x-example": "2026-03-01"
- },
- {
- "description": "Custom end date in YYYY-MM-DD; requires date_from",
- "in": "query",
- "name": "date_to",
- "type": "string",
- "x-example": "2026-03-30"
+ "schema": {
+ "$ref": "#/definitions/contact.ContactRequest"
+ }
}
],
"produces": [
@@ -218430,17 +247110,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/brave.videosResponseDoc"
+ "$ref": "#/definitions/contact.contactResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "No results found",
+ "description": "Invalid input or missing URL",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -218452,13 +247126,7 @@
}
},
"500": {
- "description": "Internal server error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Brave upstream request failed",
+ "description": "Internal server error during contact extraction",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -218469,24 +247137,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Brave video results",
+ "summary": "Contact API — emails, socials and phones for a website",
"tags": [
- "Brave"
+ "Web"
]
}
},
- "/breitbart/article": {
+ "/costco/categories": {
"get": {
- "description": "Returns public Breitbart article metadata and body paragraphs from a canonical article URL.",
- "operationId": "breitbart-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Costco category slugs and product counts relevant to an optional search term, each slug usable directly with GET /costco/search's category filter. Public data sourced from Costco's own search backend.",
+ "operationId": "costco-categories",
"parameters": [
{
- "description": "Canonical Breitbart article URL",
+ "description": "Search text to scope the returned categories to, e.g. \\",
"in": "query",
- "name": "url",
- "required": true,
+ "name": "query",
"type": "string",
- "x-example": "https://www.breitbart.com/politics/2026/09/22/example-story/"
+ "x-example": "refrigerator"
}
],
"produces": [
@@ -218496,17 +247166,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/costco.categoriesResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -218523,37 +247187,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Breitbart article content",
+ "summary": "Get Costco category facets",
"tags": [
- "Breitbart"
+ "Costco"
]
}
},
- "/breitbart/author": {
+ "/costco/product/{id}": {
"get": {
- "description": "Returns one Breitbart author/contributor's public profile: name, a short bio/role line when the page carries one, and their recent articles.",
- "operationId": "breitbart-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a Costco product's detail: title, description, manufacturer, image, price, stock status, and rating. Public data sourced from Costco's own product backend.",
+ "operationId": "costco-product",
"parameters": [
{
- "description": "Author slug, e.g. joshua-klein",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "joshua-klein"
- },
- {
- "description": "Canonical breitbart.com/author// URL, optionally with a /page// segment; alternative to slug",
- "in": "query",
- "name": "url",
+ "description": "Costco product id, e.g. from a search result's id field or a product page URL's \\",
+ "in": "path",
+ "name": "id",
+ "required": true,
"type": "string",
- "x-example": "https://www.breitbart.com/author/joshua-klein/"
- },
- {
- "description": "1-based page of articles to return; defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "4000103922"
}
],
"produces": [
@@ -218563,7 +247217,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.breitbartAuthorResponseDoc"
+ "$ref": "#/definitions/costco.productResponseDoc"
}
},
"400": {
@@ -218578,6 +247232,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -218590,46 +247250,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Breitbart author profile",
+ "summary": "Get a Costco product's detail",
"tags": [
- "Breitbart"
+ "Costco"
]
}
},
- "/breitbart/headlines": {
+ "/costco/product/{id}/availability": {
"get": {
- "description": "Returns fresh headlines from one public Breitbart section hub page.",
- "operationId": "breitbart-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a Costco product's stock and estimated-delivery status for a delivery destination. Public data sourced from Costco's own fulfillment backend.",
+ "operationId": "costco-product-availability",
"parameters": [
{
- "description": "Breitbart section slug",
- "enum": [
- "politics",
- "economy",
- "border",
- "immigration",
- "national-security",
- "entertainment",
- "sports",
- "tech",
- "the-media",
- "radio",
- "clips",
- "faith",
- "world-news",
- "europe",
- "middle-east",
- "africa",
- "asia",
- "latin-america",
- "america250",
- "on-the-hill-exclusive-video",
- "news"
- ],
+ "description": "Costco product id",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "1942114"
+ },
+ {
+ "description": "US destination ZIP code",
"in": "query",
- "name": "section",
+ "name": "postal_code",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "98101"
+ },
+ {
+ "description": "US destination two-letter state code",
+ "in": "query",
+ "name": "state",
+ "required": true,
+ "type": "string",
+ "x-example": "WA"
}
],
"produces": [
@@ -218639,7 +247296,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/costco.productAvailabilityResponseDoc"
}
},
"400": {
@@ -218648,6 +247305,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -218660,16 +247323,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Breitbart section headlines",
+ "summary": "Get a Costco product's delivery estimate",
"tags": [
- "Breitbart"
+ "Costco"
]
}
},
- "/breitbart/news": {
+ "/costco/product/{id}/reviews": {
"get": {
- "description": "Returns fresh Breitbart top stories from its public RSS feed.",
- "operationId": "breitbart-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a page of a Costco product's reviews: title, text, rating, author, and recommendation for each. Public data sourced from Costco's own review platform.",
+ "operationId": "costco-product-reviews",
+ "parameters": [
+ {
+ "description": "Costco product id, e.g. from a search result's id field",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "4000354684"
+ }
+ ],
"produces": [
"application/json"
],
@@ -218677,45 +247353,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/costco.productReviewsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Breitbart top stories",
- "tags": [
- "Breitbart"
- ]
- }
- },
- "/breitbart/sections": {
- "get": {
- "description": "Returns the live-verified public Breitbart editorial section inventory used by the headlines endpoint.",
- "operationId": "breitbart-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -218724,33 +247380,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Breitbart sections",
+ "summary": "Get a Costco product's reviews",
"tags": [
- "Breitbart"
+ "Costco"
]
}
},
- "/brooklinen/collections": {
+ "/costco/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized collections from Brooklinen (https://www.brooklinen.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
- "operationId": "brooklinen-collections",
+ "description": "Returns public Costco products matching a text query and/or a category slug: title, brand, model, image, and rating for each result. Public data sourced from Costco's own search backend.",
+ "operationId": "costco-search",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Search text",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "query",
+ "type": "string",
+ "x-example": "refrigerator"
},
{
- "description": "Maximum collections, defaults to 50 and supports up to 250",
+ "description": "Costco category slug, e.g. the last path segment of a category page URL",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "category",
+ "type": "string",
+ "x-example": "refrigerators"
}
],
"produces": [
@@ -218760,7 +247416,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
+ "$ref": "#/definitions/costco.searchResponseDoc"
}
},
"400": {
@@ -218769,8 +247425,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -218787,41 +247443,35 @@
"ApiKeyAuth": []
}
],
- "summary": "List Brooklinen collections",
+ "summary": "Search Costco products",
"tags": [
- "Brooklinen"
+ "Costco"
]
}
},
- "/brooklinen/collections/{handle}/products": {
+ "/costco/warehouses": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from one Brooklinen (https://www.brooklinen.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
- "operationId": "brooklinen-collection-products",
+ "description": "Returns Costco warehouses near a latitude/longitude, sorted by distance: name, address, and distance for each. Public data sourced from Costco's own warehouse locator backend.",
+ "operationId": "costco-warehouses",
"parameters": [
{
- "description": "Collection handle",
- "in": "path",
- "name": "handle",
- "required": true,
- "type": "string",
- "x-example": "collection-handle"
- },
- {
- "description": "1-based page, defaults to 1",
+ "description": "Latitude",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 47.565
},
{
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Longitude",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.329
}
],
"produces": [
@@ -218831,7 +247481,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
+ "$ref": "#/definitions/costco.warehousesResponseDoc"
}
},
"400": {
@@ -218840,14 +247490,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -218864,33 +247508,35 @@
"ApiKeyAuth": []
}
],
- "summary": "List Brooklinen collection products",
+ "summary": "Find nearby Costco warehouses",
"tags": [
- "Brooklinen"
+ "Costco"
]
}
},
- "/brooklinen/pages": {
+ "/courtlistener/courts": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static pages from Brooklinen (https://www.brooklinen.com). The storefront URL is fixed server-side.",
- "operationId": "brooklinen-pages",
+ "description": "Lists CourtListener's anonymous public court directory. Provide court_id to retrieve one court. page is used only for directory browsing and is 1-indexed. The endpoint does not retrieve dockets, opinions, judges, or account data.",
+ "operationId": "courtlistener-courts",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "CourtListener court identifier",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "court_id",
+ "type": "string",
+ "x-example": "scotus"
},
{
- "description": "Maximum static pages, defaults to 50 and supports up to 250",
+ "default": 1,
+ "description": "Directory page, 1-indexed",
"in": "query",
- "name": "limit",
+ "minimum": 1,
+ "name": "page",
"type": "integer",
- "x-example": 50
+ "x-example": 1
}
],
"produces": [
@@ -218900,7 +247546,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
+ "$ref": "#/definitions/courtlistener.courtsResponseDoc"
}
},
"400": {
@@ -218915,6 +247561,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -218927,27 +247579,34 @@
"ApiKeyAuth": []
}
],
- "summary": "List Brooklinen static pages",
+ "summary": "Browse CourtListener courts",
"tags": [
- "Brooklinen"
+ "CourtListener"
]
}
},
- "/brooklinen/pages/{handle}": {
+ "/courtlistener/people": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static page detail for one Brooklinen (https://www.brooklinen.com) page handle. The storefront URL is fixed server-side.",
- "operationId": "brooklinen-page",
+ "description": "Lists CourtListener's anonymous public judicial-person directory. Provide person_id to retrieve one public person record. The response contains only public directory and position-summary metadata; sensitive biographical fields are excluded.",
+ "operationId": "courtlistener-people",
"parameters": [
{
- "description": "Page handle",
- "in": "path",
- "name": "handle",
- "required": true,
+ "description": "CourtListener person identifier",
+ "in": "query",
+ "minimum": 1,
+ "name": "person_id",
+ "type": "integer",
+ "x-example": 123
+ },
+ {
+ "description": "Cursor from a prior response's next_cursor field",
+ "in": "query",
+ "name": "cursor",
"type": "string",
- "x-example": "page-handle"
+ "x-example": "cD0yMDI2LTA4LTI3KzAwJTNBMDAlM0EwMC4wMDAwMDAlMkIwMCUzQTAw"
}
],
"produces": [
@@ -218957,7 +247616,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pageResponseDoc"
+ "$ref": "#/definitions/courtlistener.peopleResponseDoc"
}
},
"400": {
@@ -218978,6 +247637,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -218990,33 +247655,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Brooklinen static page",
+ "summary": "Browse CourtListener judicial people",
"tags": [
- "Brooklinen"
+ "CourtListener"
]
}
},
- "/brooklinen/products": {
+ "/courtlistener/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from Brooklinen's (https://www.brooklinen.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
- "operationId": "brooklinen-products",
+ "description": "Searches CourtListener's public opinion-search index by text and returns normalized opinion-result metadata with a cursor for the next page. The endpoint uses CourtListener's anonymous public search data and does not retrieve authenticated opinion detail, dockets, judges, alerts, or account data.",
+ "operationId": "courtlistener-search",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Opinion search text",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "\"qualified immunity\""
},
{
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Cursor from a prior response's next_cursor field",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "cursor",
+ "type": "string",
+ "x-example": "cD0yMDI2LTA4LTI3KzAwJTNBMDAlM0EwMC4wMDAwMDAlMkIwMCUzQTAw"
}
],
"produces": [
@@ -219026,7 +247692,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productsResponseDoc"
+ "$ref": "#/definitions/courtlistener.searchResponseDoc"
}
},
"400": {
@@ -219041,6 +247707,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -219053,29 +247725,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List Brooklinen products",
+ "summary": "Search CourtListener opinions",
"tags": [
- "Brooklinen"
+ "CourtListener"
]
}
},
- "/brooklinen/products/{handle}": {
+ "/cricinfo/calendar": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized product detail for one Brooklinen (https://www.brooklinen.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
- "operationId": "brooklinen-product",
- "parameters": [
- {
- "description": "Product handle",
- "in": "path",
- "name": "handle",
- "required": true,
- "type": "string",
- "x-example": "product-handle"
- }
- ],
+ "description": "Returns the dated international match calendar currently published by Cricinfo. It includes match-day names and the associated series labels.",
+ "operationId": "cricinfo-calendar",
"produces": [
"application/json"
],
@@ -219083,19 +247742,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/cricinfo.calendarResponseDoc"
}
},
"429": {
@@ -219116,45 +247763,31 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Brooklinen product",
+ "summary": "Get the Cricinfo international calendar",
"tags": [
- "Brooklinen"
+ "Cricinfo"
]
}
},
- "/brooklinen/products/{handle}/recommendations": {
+ "/cricinfo/commentary": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized recommended products for one Brooklinen (https://www.brooklinen.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
- "operationId": "brooklinen-product-recommendations",
+ "description": "Returns the latest ball-by-ball and editorial commentary embedded in a public Cricinfo match page. `url` may be a canonical full-scorecard or live-score URL.",
+ "operationId": "cricinfo-commentary",
"parameters": [
{
- "description": "Product handle",
- "in": "path",
- "name": "handle",
+ "description": "Canonical Cricinfo full-scorecard or live-score URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "product-handle"
+ "x-example": "https://www.cricinfo.com/series/ahmad-shah-abdali-4-day-tournament-2026-1551329/maiwand-champions-vs-mah-e-par-stars-1st-match-1551332/live-cricket-score"
},
{
- "description": "Maximum products, defaults to 10 and supports up to 20",
+ "description": "Maximum commentary entries returned, from 1 to 100",
"in": "query",
"name": "limit",
"type": "integer",
- "x-example": 10
- },
- {
- "description": "Recommendation intent. Allowed values: related, complementary",
- "enum": [
- "related",
- "complementary"
- ],
- "in": "query",
- "name": "intent",
- "type": "string",
- "x-example": "related"
+ "x-example": 50
}
],
"produces": [
@@ -219164,7 +247797,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
+ "$ref": "#/definitions/cricinfo.commentaryResponseDoc"
}
},
"400": {
@@ -219197,41 +247830,23 @@
"ApiKeyAuth": []
}
],
- "summary": "List Brooklinen product recommendations",
+ "summary": "Get Cricinfo match commentary",
"tags": [
- "Brooklinen"
+ "Cricinfo"
]
}
},
- "/brooklinen/search/suggest": {
+ "/cricinfo/grounds": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns products, collections, and query suggestions from Brooklinen's (https://www.brooklinen.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
- "operationId": "brooklinen-search-suggest",
+ "description": "Returns the featured public ground directory snapshot and the country index used to discover Cricinfo venue pages. Use the existing venue endpoint for detailed ground profiles.",
+ "operationId": "cricinfo-grounds",
"parameters": [
{
- "description": "Search query",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "wool"
- },
- {
- "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
- "in": "query",
- "name": "types",
- "type": "string",
- "x-example": "product,collection,query"
- },
- {
- "description": "Maximum results per type, defaults to 10 and supports up to 20",
+ "description": "Maximum featured grounds returned, from 1 to 100",
"in": "query",
"name": "limit",
"type": "integer",
- "x-example": 10
+ "x-example": 20
}
],
"produces": [
@@ -219241,7 +247856,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
+ "$ref": "#/definitions/cricinfo.groundsResponseDoc"
}
},
"400": {
@@ -219268,44 +247883,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Brooklinen search suggestions",
+ "summary": "List Cricinfo grounds",
"tags": [
- "Brooklinen"
+ "Cricinfo"
]
}
},
- "/brooklinen/sitemap/urls": {
+ "/cricinfo/live": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns capped URL entries from Brooklinen's (https://www.brooklinen.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
- "operationId": "brooklinen-sitemap-urls",
- "parameters": [
- {
- "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
- "enum": [
- "all",
- "products",
- "collections",
- "pages",
- "blogs",
- "agentic_discovery",
- "other"
- ],
- "in": "query",
- "name": "type",
- "type": "string",
- "x-example": "products"
- },
- {
- "description": "Maximum URL entries, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
- }
- ],
+ "description": "Returns the current public live-score feed, including live, upcoming, and recently completed match cards with their canonical scorecard URLs.",
+ "operationId": "cricinfo-live-matches",
"produces": [
"application/json"
],
@@ -219313,13 +247900,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/cricinfo.liveMatchesResponseDoc"
}
},
"429": {
@@ -219340,19 +247921,26 @@
"ApiKeyAuth": []
}
],
- "summary": "List Brooklinen sitemap URLs",
+ "summary": "Get Cricinfo live matches",
"tags": [
- "Brooklinen"
+ "Cricinfo"
]
}
},
- "/brooklinen/sitemaps": {
+ "/cricinfo/match": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns a public Cricinfo match scorecard with match state, team scores, and available innings totals and batter/bowler lines. Upcoming matches return an empty innings list. `url` must be a canonical `https://www.cricinfo.com/series/.../(full-scorecard|live-cricket-score)` URL; live-score URLs are normalized to the paired scorecard.",
+ "operationId": "cricinfo-match",
+ "parameters": [
+ {
+ "description": "Canonical Cricinfo full-scorecard or live-cricket-score URL",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.cricinfo.com/series/caribbean-premier-league-2026-1534175/trinbago-knight-riders-vs-barbados-tridents-19th-match-1534197/full-scorecard"
+ }
],
- "description": "Returns child sitemap URLs from Brooklinen's (https://www.brooklinen.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
- "operationId": "brooklinen-sitemaps",
"produces": [
"application/json"
],
@@ -219360,7 +247948,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
+ "$ref": "#/definitions/cricinfo.matchResponseDoc"
}
},
"400": {
@@ -219369,6 +247957,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -219387,19 +247981,25 @@
"ApiKeyAuth": []
}
],
- "summary": "List Brooklinen sitemaps",
+ "summary": "Get a Cricinfo match scorecard",
"tags": [
- "Brooklinen"
+ "Cricinfo"
]
}
},
- "/brooklinen/store": {
+ "/cricinfo/news": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns a bounded snapshot of Cricinfo's latest public stories, including titles, summaries, authors, genres, publication times, images, and associated match or series identifiers.",
+ "operationId": "cricinfo-news",
+ "parameters": [
+ {
+ "description": "Maximum stories returned, from 1 to 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ }
],
- "description": "Returns normalized storefront metadata for Brooklinen (https://www.brooklinen.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
- "operationId": "brooklinen-store",
"produces": [
"application/json"
],
@@ -219407,7 +248007,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.storeResponseDoc"
+ "$ref": "#/definitions/cricinfo.newsResponseDoc"
}
},
"400": {
@@ -219434,26 +248034,23 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Brooklinen store metadata",
+ "summary": "Get latest Cricinfo news",
"tags": [
- "Brooklinen"
+ "Cricinfo"
]
}
},
- "/burberry/categories": {
+ "/cricinfo/photos": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Lists every department, section, and leaf category from Burberry's own site navigation, flattened with a breadcrumb-style path. Each entry's url is exactly what burberry-category's own category parameter accepts. Filter to one top-level department with department (e.g. Women, Men, Children, Gifts, Trench, Scarves, Bags, Beauty & Fragrances, Sale); omit for every department. See the response's own departments field for the live list.",
- "operationId": "burberry-categories",
+ "description": "Returns bounded metadata for the latest public Cricinfo photos, including captions, credits, dimensions, dates, and image variants. Media files are not downloaded by the endpoint.",
+ "operationId": "cricinfo-photos",
"parameters": [
{
- "description": "Top-level department to filter to, e.g. Women, Men, Children -- omit for every department",
+ "description": "Maximum photos returned, from 1 to 100",
"in": "query",
- "name": "department",
- "type": "string",
- "x-example": "Women"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
}
],
"produces": [
@@ -219463,7 +248060,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burberry.categoriesResponseDoc"
+ "$ref": "#/definitions/cricinfo.photosResponseDoc"
}
},
"400": {
@@ -219490,56 +248087,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Burberry categories",
+ "summary": "Get latest Cricinfo photos",
"tags": [
- "Burberry"
+ "Cricinfo"
]
}
},
- "/burberry/category": {
+ "/cricinfo/rankings": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page (20 products) of a Burberry category/browse listing. category is the site-relative category path, e.g. /l/womens-clothing/new-arrivals/ -- use burberry-categories to discover every valid value instead of guessing from site URLs. offset paginates in increments of 20 (the upstream's own fixed page size). sort selects the result order. The response includes the upstream's own available filters (facets) with live per-option result counts; feed a selection back in via facets, a comma-separated list of property:value pairs taken from this same response's facets field (e.g. benefit:bags,dotcomreportingcolour:black -- see a live response for the values valid for that category). At most one value per facet property; an unmatched or invalid combination returns a well-formed empty result, not an error.",
- "operationId": "burberry-category",
+ "description": "Returns ICC rankings (team or player) from a Cricinfo rankings page. `url` must be a canonical `https://www.cricinfo.com/rankings/...` URL.",
+ "operationId": "cricinfo-rankings",
"parameters": [
{
- "description": "Site-relative category path -- see burberry-categories",
+ "description": "Canonical Cricinfo rankings URL",
"in": "query",
- "name": "category",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "/l/womens-clothing/new-arrivals/"
- },
- {
- "default": 0,
- "description": "Zero-based result offset, in increments of 20",
- "in": "query",
- "maximum": 100000,
- "minimum": 0,
- "name": "offset",
- "type": "integer"
- },
- {
- "default": "default",
- "description": "Sort order",
- "enum": [
- "default",
- "price_asc",
- "price_desc",
- "newest"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Comma-separated property:value facet filters, taken from this same response's own facets field, e.g. benefit:bags,dotcomreportingcolour:black -- at most one value per property",
- "in": "query",
- "name": "facets",
- "type": "string",
- "x-example": "benefit:bags"
+ "x-example": "https://www.cricinfo.com/rankings/content/page/211271.html"
}
],
"produces": [
@@ -219549,7 +248114,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burberry.categoryResponseDoc"
+ "$ref": "#/definitions/cricinfo.rankingsResponseDoc"
}
},
"400": {
@@ -219582,27 +248147,70 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a Burberry category",
+ "summary": "Get ICC rankings from Cricinfo",
"tags": [
- "Burberry"
+ "Cricinfo"
]
}
},
- "/burberry/product": {
+ "/cricinfo/records": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns product detail for one Burberry product page: name, sku, colour, material, description, price, stock status, every product image, and every other purchasable colourway of the same style. url is the site-relative product path, e.g. /check-cashmere-cardigan-p81336111, as returned by burberry-search's or burberry-category's own products[].url field.",
- "operationId": "burberry-product",
+ "description": "Returns a bounded normalized table from a public Cricinfo records page. `record` is a relative Statsguru record path such as `batting/most_runs_career.html`. `class` must be one of `1`, `2`, `3`, `4`, `5`, `6`, `8`, `9`, `10`, `11`, `12`, `20`, `21`, `22`, or `23`.",
+ "operationId": "cricinfo-records",
"parameters": [
{
- "description": "Site-relative product path, from a search or category result's url field",
+ "description": "Relative Statsguru record path",
"in": "query",
- "name": "url",
+ "name": "record",
"required": true,
"type": "string",
- "x-example": "/check-cashmere-cardigan-p81336111"
+ "x-example": "batting/most_runs_career.html"
+ },
+ {
+ "description": "Record match-class. Allowed values: 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 20, 21, 22, 23",
+ "enum": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 20,
+ 21,
+ 22,
+ 23
+ ],
+ "in": "query",
+ "name": "class",
+ "required": true,
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Numeric record subject identifier",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "6"
+ },
+ {
+ "description": "Record subject type",
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "team"
+ },
+ {
+ "description": "Record currentness selector",
+ "in": "query",
+ "name": "current",
+ "type": "string",
+ "x-example": "2"
}
],
"produces": [
@@ -219612,7 +248220,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burberry.productResponseDoc"
+ "$ref": "#/definitions/cricinfo.recordsResponseDoc"
}
},
"400": {
@@ -219645,29 +248253,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Burberry product",
+ "summary": "Get a Cricinfo record table",
"tags": [
- "Burberry"
+ "Cricinfo"
]
}
},
- "/burberry/related": {
+ "/cricinfo/records/index": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the cross-sell surfaces a real Burberry product page itself loads for that product: similar_products (algorithmically similar items) and shop_the_look (other pieces in the same styled outfit, when the upstream has curated one -- most products have none, returned as a well-formed empty list, not an error). url is the site-relative product path, e.g. /check-cashmere-cardigan-p81336111, as returned by burberry-search's, burberry-category's, or burberry-product's own url field.",
- "operationId": "burberry-related",
- "parameters": [
- {
- "description": "Site-relative product path, from a search, category, or product result's url field",
- "in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "/check-cashmere-cardigan-p81336111"
- }
- ],
+ "description": "Returns the public Cricinfo records catalog, including match classes, record categories, selectable teams or entities, and example suggestions. Use the existing records endpoint to retrieve a specific table.",
+ "operationId": "cricinfo-records-index",
"produces": [
"application/json"
],
@@ -219675,13 +248270,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burberry.relatedResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/cricinfo.recordsIndexResponseDoc"
}
},
"429": {
@@ -219702,58 +248291,70 @@
"ApiKeyAuth": []
}
],
- "summary": "Get related Burberry products",
+ "summary": "List Cricinfo records catalog",
"tags": [
- "Burberry"
+ "Cricinfo"
]
}
},
- "/burberry/search": {
+ "/cricinfo/rss": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Burberry's product catalog by keyword. Returns normalized product summaries plus the upstream's own available filters (facets) with live per-option result counts. offset paginates in increments of 20 (the upstream's own fixed page size). sort selects the result order. facets applies a facet selection back, a comma-separated list of property:value pairs taken from this same response's facets field (e.g. benefit:bags,dotcomreportingcolour:black). A query with no matches, or a facet combination with no matches, returns a well-formed empty result, not an error. Unlike burberry-category, this response has no true grand-total result count -- only the current page's own count.",
- "operationId": "burberry-search",
+ "description": "Returns a normalized public Cricinfo RSS feed. `url` must be one of Cricinfo's official news, live-score, country-story, or player-story RSS URLs.",
+ "operationId": "cricinfo-rss",
"parameters": [
{
- "description": "Search keyword",
+ "description": "Official Cricinfo RSS feed URL",
"in": "query",
- "name": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "trench"
+ "x-example": "https://www.cricinfo.com/rss/content/feeds/news/0.xml"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/cricinfo.rssResponseDoc"
+ }
},
- {
- "default": 0,
- "description": "Zero-based result offset, in increments of 20",
- "in": "query",
- "maximum": 100000,
- "minimum": 0,
- "name": "offset",
- "type": "integer"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "default": "default",
- "description": "Sort order",
- "enum": [
- "default",
- "price_asc",
- "price_desc",
- "newest"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Comma-separated property:value facet filters, taken from this same response's own facets field, e.g. benefit:bags,dotcomreportingcolour:black -- at most one value per property",
- "in": "query",
- "name": "facets",
- "type": "string",
- "x-example": "benefit:bags"
+ "ApiKeyAuth": []
}
],
+ "summary": "Read a Cricinfo RSS feed",
+ "tags": [
+ "Cricinfo"
+ ]
+ }
+ },
+ "/cricinfo/scores": {
+ "get": {
+ "description": "Returns the current match cards in Cricinfo's public homepage snapshot, including match state, scores, and canonical scorecard URLs. This is a point-in-time feed, not a fixture archive or streaming subscription.",
+ "operationId": "cricinfo-scores",
"produces": [
"application/json"
],
@@ -219761,13 +248362,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burberry.searchResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/cricinfo.scoresResponseDoc"
}
},
"429": {
@@ -219788,27 +248383,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Burberry products",
+ "summary": "Get current Cricinfo match scores",
"tags": [
- "Burberry"
+ "Cricinfo"
]
}
},
- "/burberry/suggest": {
+ "/cricinfo/series": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Burberry's own search-box suggestions (typeahead) for a partial query: a flat list of suggested search phrases, each with its own live result count on the search index. Not product data.",
- "operationId": "burberry-suggest",
+ "description": "Returns a series's match schedule and standings from its dedicated page. `series_id` must be the slug-and-ID portion of a canonical Cricinfo series URL, such as `indian-premier-league-2024-1410320`.",
+ "operationId": "cricinfo-series",
"parameters": [
{
- "description": "Partial search query",
+ "description": "Slug-and-ID portion of a canonical series URL",
"in": "query",
- "name": "query",
+ "name": "series_id",
"required": true,
"type": "string",
- "x-example": "trench"
+ "x-example": "indian-premier-league-2024-1410320"
}
],
"produces": [
@@ -219818,7 +248410,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burberry.suggestResponseDoc"
+ "$ref": "#/definitions/cricinfo.seriesResponseDoc"
}
},
"400": {
@@ -219827,6 +248419,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -219845,41 +248443,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Burberry search-box suggestions",
+ "summary": "Get a Cricinfo series schedule and standings",
"tags": [
- "Burberry"
+ "Cricinfo"
]
}
},
- "/burgerking/availability": {
+ "/cricinfo/squads": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one restaurant's live open/closed status per order channel (curbside, delivery, drive-thru, eat-in, mobile-order drive-thru, takeout), distinct from /burgerking/locations' published weekly schedule. Each channel carries whether it is taking orders right now, its current open window when open, and the following window's start/end -- a channel with no current or next window at all means this restaurant does not offer it, not merely that it is closed. Also returns the restaurant's own local time, timezone and an overall available flag. Setting forecast=true additionally returns a multi-day forward schedule per channel, including two catering-only channels not present in the current-status list.",
- "operationId": "burgerking-availability",
+ "description": "Returns recent public squad announcements and player rosters from a Cricinfo team profile, including player roles and withdrawal or overseas markers when published.",
+ "operationId": "cricinfo-squads",
"parameters": [
{
- "description": "Burger King's numeric store id, from /burgerking/locations",
+ "description": "Canonical Cricinfo team profile URL",
"in": "query",
- "name": "store_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "17871"
- },
- {
- "description": "RBI market the store belongs to, one of `US`, `CA` (default `US`)",
- "in": "query",
- "name": "market",
- "type": "string",
- "x-example": "US"
- },
- {
- "description": "Include a multi-day forward schedule per channel (default false)",
- "in": "query",
- "name": "forecast",
- "type": "boolean",
- "x-example": false
+ "x-example": "https://www.cricinfo.com/team/india-6"
}
],
"produces": [
@@ -219889,7 +248470,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burgerking.availabilityResponseDoc"
+ "$ref": "#/definitions/cricinfo.squadsResponseDoc"
}
},
"400": {
@@ -219922,70 +248503,153 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Burger King restaurant's real-time fulfillment status",
+ "summary": "Get a Cricinfo team squad",
"tags": [
- "Burger King"
+ "Cricinfo"
]
}
},
- "/burgerking/locations": {
+ "/cricinfo/stats": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Burger King restaurants near a latitude/longitude. Each restaurant carries its internal id and numeric store id (the value /burgerking/menu and /burgerking/availability take), full address with coordinates, phone, the operating franchise group, amenity flags (breakfast, delivery, drive-thru, playground, takeout, wifi, halal, dark kitchen) and the full published week of hours for dining room, drive-thru, delivery and curbside separately. A coordinate with no nearby Burger King returns an empty list rather than an error. Setting include_availability=true additionally returns each restaurant's live per-channel open/closed status in one call, the same shape /burgerking/availability returns -- note that path is capped at a fixed page (up to 20 restaurants) rather than honoring max_results beyond that. Setting delivery_only=true instead restricts results to restaurants that Burger King's own delivery service actually considers deliverable to this coordinate -- a genuine delivery-zone match, not the same set as filtering has_delivery=true. include_availability and delivery_only cannot be combined.",
- "operationId": "burgerking-locations",
+ "description": "Returns a bounded normalized Statsguru table. `class` must be one of `1`, `2`, `3`, `4`, `5`, `6`, `8`, `9`, `10`, `11`, `12`, `20`, `21`, `22`, or `23`; `type` must be one of `batting`, `bowling`, `fielding`, `allround`, `fow`, `team`, `official`, or `aggregate`; `view` may be `innings`, `match`, `series`, `ground`, `host`, `opposition`, `year`, or `season`.",
+ "operationId": "cricinfo-stats",
"parameters": [
{
- "description": "Search center latitude",
+ "description": "Statsguru match-class. Allowed values: 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 20, 21, 22, 23",
+ "enum": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 20,
+ 21,
+ 22,
+ 23
+ ],
"in": "query",
- "name": "latitude",
+ "name": "class",
"required": true,
- "type": "number",
- "x-example": 40.7128
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Search center longitude",
+ "description": "Statsguru statistic family",
+ "enum": [
+ "batting",
+ "bowling",
+ "fielding",
+ "allround",
+ "fow",
+ "team",
+ "official",
+ "aggregate"
+ ],
"in": "query",
- "name": "longitude",
+ "name": "type",
"required": true,
- "type": "number",
- "x-example": -74.006
+ "type": "string",
+ "x-example": "batting"
},
{
- "description": "Search radius in meters, 1-50000 (default 8000)",
+ "description": "Numeric Cricinfo player identifier",
"in": "query",
- "name": "radius",
- "type": "integer",
- "x-example": 8000
+ "name": "player",
+ "type": "string",
+ "x-example": "45789"
},
{
- "description": "Maximum restaurants to return, 1-50 (default 20)",
+ "description": "Numeric Cricinfo team identifier",
"in": "query",
- "name": "max_results",
- "type": "integer",
- "x-example": 20
+ "name": "team",
+ "type": "string",
+ "x-example": "6"
},
{
- "description": "RBI market to search, one of `US`, `CA` (default `US`)",
+ "description": "Numeric opposition team identifier",
"in": "query",
- "name": "market",
+ "name": "opposition",
"type": "string",
- "x-example": "US"
+ "x-example": "2"
},
{
- "description": "Include each restaurant's live per-channel open/closed status (default false)",
+ "description": "Numeric host-country identifier",
"in": "query",
- "name": "include_availability",
- "type": "boolean",
- "x-example": false
+ "name": "host",
+ "type": "string",
+ "x-example": "6"
},
{
- "description": "Restrict to restaurants that actually deliver to this coordinate, a genuine delivery-zone match distinct from the has_delivery flag (default false)",
+ "description": "Numeric ground identifier",
"in": "query",
- "name": "delivery_only",
+ "name": "ground",
+ "type": "string",
+ "x-example": "713"
+ },
+ {
+ "description": "Season formatted as YYYY or YYYY/YY",
+ "in": "query",
+ "name": "season",
+ "type": "string",
+ "x-example": "2025"
+ },
+ {
+ "description": "Statsguru starting date",
+ "in": "query",
+ "name": "span_min",
+ "type": "string",
+ "x-example": "01 Jan 2020"
+ },
+ {
+ "description": "Statsguru ending date",
+ "in": "query",
+ "name": "span_max",
+ "type": "string",
+ "x-example": "31 Dec 2025"
+ },
+ {
+ "description": "Statsguru table view",
+ "enum": [
+ "innings",
+ "match",
+ "series",
+ "ground",
+ "host",
+ "opposition",
+ "year",
+ "season"
+ ],
+ "in": "query",
+ "name": "view",
+ "type": "string",
+ "x-example": "innings"
+ },
+ {
+ "description": "Statsguru sort column",
+ "in": "query",
+ "name": "orderby",
+ "type": "string",
+ "x-example": "runs"
+ },
+ {
+ "description": "Sort descending when true",
+ "in": "query",
+ "name": "orderby_desc",
"type": "boolean",
- "x-example": false
+ "x-example": true
+ },
+ {
+ "description": "Maximum rows returned, from 1 to 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -219995,7 +248659,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burgerking.locationsResponseDoc"
+ "$ref": "#/definitions/cricinfo.statsResponseDoc"
}
},
"400": {
@@ -220004,12 +248668,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -220028,34 +248686,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Find Burger King restaurants near a location",
+ "summary": "Query Cricinfo Statsguru",
"tags": [
- "Burger King"
+ "Cricinfo"
]
}
},
- "/burgerking/menu": {
+ "/cricinfo/story": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one restaurant's full menu grouped into categories (e.g. \"Breakfast Sandwiches\", \"Flame Grilled Burgers\"). Every entry is an item, a combo, or a picker (a variant-choice product such as \"choose your drink size\") and carries a delivery and pickup price -- these genuinely differ -- plus calories, detailed nutrition facts and flagged allergens when Burger King publishes them, and an image. Prices and availability reflect this specific restaurant, not a national default.",
- "operationId": "burgerking-menu",
+ "description": "Returns a public Cricinfo news article, match report, preview, or live blog. The response includes stable story metadata, typed content blocks, live-blog entries when present, and related links.",
+ "operationId": "cricinfo-story",
"parameters": [
{
- "description": "Burger King's numeric store id, from /burgerking/locations",
+ "description": "Canonical Cricinfo story, report, preview, or live-blog URL",
"in": "query",
- "name": "store_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "17871"
- },
- {
- "description": "RBI market the store belongs to, one of `US`, `CA` (default `US`)",
- "in": "query",
- "name": "market",
- "type": "string",
- "x-example": "US"
+ "x-example": "https://www.cricinfo.com/story/lutho-sipamla-ruled-out-of-namibia-tri-series-with-hamstring-injury-1552225"
}
],
"produces": [
@@ -220065,7 +248713,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burgerking.menuResponseDoc"
+ "$ref": "#/definitions/cricinfo.storyResponseDoc"
}
},
"400": {
@@ -220098,42 +248746,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Burger King restaurant's full priced menu",
+ "summary": "Get a Cricinfo story",
"tags": [
- "Burger King"
+ "Cricinfo"
]
}
},
- "/burgerking/product": {
+ "/cricinfo/team": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one menu entry's full detail (name, description, price, image, nutrition, allergens) plus its customization tree, when it has one -- a combo's courses and their swappable entree/side/drink choices, a picker's size/variant choices, or a customizable item's ingredient toggle groups (e.g. \"Bacon\": no/regular/extra) and their price deltas. Options recurses through the full upstream structure, so a combo's entree choice carries its own ingredient toggles too, not just the combo's own top-level courses. A plain, non-customizable item returns an empty options list.",
- "operationId": "burgerking-product",
+ "description": "Returns public team identity, profile text, recent fixtures and results, and the rolling batting and bowling leaders shown on a Cricinfo team page.",
+ "operationId": "cricinfo-team",
"parameters": [
{
- "description": "Burger King's numeric store id, from /burgerking/locations",
- "in": "query",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "17871"
- },
- {
- "description": "The item, combo, or picker id, from /burgerking/menu",
+ "description": "Canonical Cricinfo team profile URL",
"in": "query",
- "name": "item_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "item_26"
- },
- {
- "description": "RBI market the store belongs to, one of `US`, `CA` (default `US`)",
- "in": "query",
- "name": "market",
- "type": "string",
- "x-example": "US"
+ "x-example": "https://www.cricinfo.com/team/india-6"
}
],
"produces": [
@@ -220143,7 +248773,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/burgerking.productResponseDoc"
+ "$ref": "#/definitions/cricinfo.teamProfileResponseDoc"
}
},
"400": {
@@ -220176,24 +248806,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Burger King item, combo, or picker's full detail and customization tree",
+ "summary": "Get a Cricinfo team profile",
"tags": [
- "Burger King"
+ "Cricinfo"
]
}
},
- "/businessinsider/article": {
+ "/cricinfo/team/schedule": {
"get": {
- "description": "Returns public Business Insider article metadata and body paragraphs from a canonical article URL.",
- "operationId": "businessinsider-article",
+ "description": "Returns a team's recent fixtures and results from its dedicated page. `url` must be a canonical `https://www.cricinfo.com/team/...` URL.",
+ "operationId": "cricinfo-team-schedule",
"parameters": [
{
- "description": "Canonical Business Insider article URL",
+ "description": "Canonical Cricinfo team URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.businessinsider.com/markets/example-2026-09-21"
+ "x-example": "https://www.cricinfo.com/team/india-6"
}
],
"produces": [
@@ -220203,7 +248833,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/cricinfo.teamScheduleResponseDoc"
}
},
"400": {
@@ -220218,6 +248848,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -220230,32 +248866,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Business Insider article content",
+ "summary": "Get a Cricinfo team match schedule",
"tags": [
- "Business Insider"
+ "Cricinfo"
]
}
},
- "/businessinsider/author": {
+ "/cricinfo/teams": {
"get": {
- "description": "Returns one Business Insider author's public profile: name, job title, bio, social accounts, and their recent articles.",
- "operationId": "businessinsider-author",
- "parameters": [
- {
- "description": "Author slug",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "peter-kafka"
- },
- {
- "description": "Canonical businessinsider.com/author/ URL; alternative to slug",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.businessinsider.com/author/peter-kafka"
- }
- ],
+ "description": "Returns Cricinfo's grouped public team directory, including international, domestic, and franchise team identities.",
+ "operationId": "cricinfo-teams",
"produces": [
"application/json"
],
@@ -220263,17 +248883,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.businessInsiderAuthorResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/cricinfo.teamsResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -220290,34 +248904,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Business Insider author profile",
+ "summary": "List Cricinfo teams",
"tags": [
- "Business Insider"
+ "Cricinfo"
]
}
},
- "/businessinsider/headlines": {
+ "/cricinfo/venue": {
"get": {
- "description": "Returns fresh headlines from one public Business Insider section.",
- "operationId": "businessinsider-headlines",
+ "description": "Returns structured metadata, associated home teams, and the editorial profile for a public Cricinfo cricket-ground page. `url` must be a canonical `https://www.cricinfo.com/cricket-grounds/...` or legacy `/ci/content/ground/...html` URL.",
+ "operationId": "cricinfo-venue",
"parameters": [
{
- "description": "Business Insider section slug",
- "enum": [
- "business",
- "markets",
- "technology",
- "politics",
- "strategy",
- "finance",
- "science",
- "lifestyle",
- "reviews"
- ],
+ "description": "Canonical Cricinfo cricket-ground URL",
"in": "query",
- "name": "section",
+ "name": "url",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "https://www.cricinfo.com/cricket-grounds/wankhede-stadium-mumbai-58324"
}
],
"produces": [
@@ -220327,7 +248931,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/cricinfo.venueResponseDoc"
}
},
"400": {
@@ -220336,6 +248940,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -220348,16 +248964,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Business Insider section headlines",
+ "summary": "Get a Cricinfo cricket-ground profile",
"tags": [
- "Business Insider"
+ "Cricinfo"
]
}
},
- "/businessinsider/news": {
+ "/cricinfo/venue/matches": {
"get": {
- "description": "Returns fresh Business Insider stories from the public RSS feed.",
- "operationId": "businessinsider-news",
+ "description": "Returns upcoming fixtures and recent results listed on a public Cricinfo ground page. `url` must be a canonical `https://www.cricinfo.com/cricket-grounds/...` URL.",
+ "operationId": "cricinfo-venue-matches",
+ "parameters": [
+ {
+ "description": "Canonical Cricinfo cricket-ground URL",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.cricinfo.com/cricket-grounds/wankhede-stadium-mumbai-58324"
+ }
+ ],
"produces": [
"application/json"
],
@@ -220365,7 +248991,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/cricinfo.venueMatchesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -220380,16 +249024,25 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Business Insider top stories",
+ "summary": "Get matches at a Cricinfo venue",
"tags": [
- "Business Insider"
+ "Cricinfo"
]
}
},
- "/businessinsider/sections": {
+ "/cricinfo/videos": {
"get": {
- "description": "Returns the public Business Insider editorial section inventory.",
- "operationId": "businessinsider-sections",
+ "description": "Returns a bounded snapshot of Cricinfo's public video hub, including curated, trending, and genre-associated video metadata. Media files are not downloaded by the endpoint.",
+ "operationId": "cricinfo-videos",
+ "parameters": [
+ {
+ "description": "Maximum videos returned, from 1 to 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ }
+ ],
"produces": [
"application/json"
],
@@ -220397,7 +249050,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/cricinfo.videosResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -220406,24 +249077,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Business Insider sections",
+ "summary": "Get Cricinfo videos",
"tags": [
- "Business Insider"
+ "Cricinfo"
]
}
},
- "/businessstandard/article": {
+ "/ctvnews/article": {
"get": {
- "description": "Returns public Business Standard article metadata and body paragraphs from a canonical article URL. A story Business Standard marks premium (subscriber-only) returns a permission error instead of a body.",
- "operationId": "businessstandard-article",
+ "description": "Returns public CTV News article metadata and body paragraphs from a canonical story URL (https://www.ctvnews.ca//article//). Video, photo-gallery and live-stream pages are not article pages.",
+ "operationId": "ctvnews-article",
"parameters": [
{
- "description": "Canonical Business Standard article URL",
+ "description": "Canonical CTV News article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.business-standard.com/companies/news/example-article-slug-126092401169_1.html"
+ "x-example": "https://www.ctvnews.ca/toronto/article/example-article-slug/"
}
],
"produces": [
@@ -220442,12 +249113,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "403": {
- "description": "Forbidden",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"404": {
"description": "Not Found",
"schema": {
@@ -220466,24 +249131,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Business Standard article content",
+ "summary": "Get CTV News article content",
"tags": [
- "Business Standard"
+ "CTV News"
]
}
},
- "/businessstandard/author": {
+ "/ctvnews/author": {
"get": {
- "description": "Returns a Business Standard author's byline metadata, biography, social links, and recent stories from a canonical author profile URL.",
- "operationId": "businessstandard-author",
+ "description": "Returns a CTV News byline profile from a canonical author URL: name, role, biography, photo, public contact address, and recent stories.",
+ "operationId": "ctvnews-author",
"parameters": [
{
- "description": "Canonical Business Standard author URL",
+ "description": "Canonical CTV News author URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.business-standard.com/author/sharleen-dsouza"
+ "x-example": "https://www.ctvnews.ca/about-us/team/the-associated-press/"
}
],
"produces": [
@@ -220493,7 +249158,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.businessstandardAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.ctvnewsAuthorResponseDoc"
}
},
"400": {
@@ -220520,50 +249185,53 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Business Standard author profile",
+ "summary": "Get a CTV News author profile",
"tags": [
- "Business Standard"
+ "CTV News"
]
}
},
- "/businessstandard/headlines": {
+ "/ctvnews/headlines": {
"get": {
- "description": "Returns fresh headlines from one public Business Standard section.",
- "operationId": "businessstandard-headlines",
+ "description": "Returns the current stories listed on one public CTV News section page, newest first, with headline, summary, byline, publication time and image.",
+ "operationId": "ctvnews-headlines",
"parameters": [
{
- "description": "Business Standard section slug",
+ "description": "CTV News section slug",
"enum": [
- "latest-news",
- "companies",
- "economy",
- "finance",
- "opinion",
- "markets",
- "technology",
- "specials",
- "budget",
- "elections",
+ "canada",
"politics",
- "education",
+ "world",
+ "business",
"health",
- "sports",
"entertainment",
"lifestyle",
- "india-news",
- "industry",
- "cricket",
- "book",
- "world-news",
- "external-affairs-defence-security",
- "immigration",
- "blueprint-defence-magazine",
- "todays-paper"
+ "climate-and-environment",
+ "sci-tech",
+ "sports",
+ "opinion",
+ "highly-engaged",
+ "atlantic",
+ "barrie",
+ "calgary",
+ "edmonton",
+ "kitchener",
+ "london",
+ "montreal",
+ "northern-ontario",
+ "ottawa",
+ "regina",
+ "saskatoon",
+ "toronto",
+ "vancouver",
+ "windsor",
+ "winnipeg"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "canada"
}
],
"produces": [
@@ -220594,16 +249262,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Business Standard section headlines",
+ "summary": "Get CTV News section headlines",
"tags": [
- "Business Standard"
+ "CTV News"
]
}
},
- "/businessstandard/news": {
+ "/ctvnews/news": {
"get": {
- "description": "Returns fresh Business Standard (business-standard.com) top stories from its public home-page feed.",
- "operationId": "businessstandard-news",
+ "description": "Returns the newest CTV News stories (about the last 24 hours, newest first) from its public news sitemap, each with headline, publication time and lead image.",
+ "operationId": "ctvnews-news",
"produces": [
"application/json"
],
@@ -220632,16 +249300,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Business Standard top stories",
+ "summary": "Get CTV News top stories",
"tags": [
- "Business Standard"
+ "CTV News"
]
}
},
- "/businessstandard/sections": {
+ "/ctvnews/sections": {
"get": {
- "description": "Returns the public Business Standard section inventory used by the headlines endpoint.",
- "operationId": "businessstandard-sections",
+ "description": "Returns the public CTV News section inventory (national topic sections and local newsroom sections) used by the headlines endpoint.",
+ "operationId": "ctvnews-sections",
"produces": [
"application/json"
],
@@ -220658,27 +249326,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Business Standard sections",
+ "summary": "Get CTV News sections",
"tags": [
- "Business Standard"
+ "CTV News"
]
}
},
- "/capterra/product": {
+ "/culvers/calendar": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Capterra product profile: name, description, category, and aggregate rating. Credential-free public Capterra data, rendered from the product page through proxied browser renderers.",
- "operationId": "capterra-product",
+ "description": "Returns the full published schedule for one Culver's restaurant: the flavor of the day for every upcoming calendar date, plus the soups served on each date. Culver's publishes roughly a two-month forward window, and the schedule is genuinely per-restaurant -- two restaurants on the same date routinely feature different soups. slug comes from GET /culvers/directory. GET /culvers/store returns only today's and tomorrow's flavor; use this endpoint for the whole calendar.",
+ "operationId": "culvers-calendar",
"parameters": [
{
- "description": "Capterra product id (the numeric id in a /p/{id}/{slug}/ URL)",
+ "description": "Restaurant slug from /culvers/directory",
"in": "query",
- "name": "product_id",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "135003"
+ "x-example": "waunakee"
}
],
"produces": [
@@ -220688,7 +249356,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/capterra.productResponseDoc"
+ "$ref": "#/definitions/culvers.calendarResponseDoc"
}
},
"400": {
@@ -220703,8 +249371,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -220721,36 +249389,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Capterra product",
+ "summary": "Get one Culver's restaurant's flavor-of-the-day and daily soup schedule",
"tags": [
- "Capterra"
+ "Culvers"
]
}
},
- "/capterra/product/reviews": {
+ "/culvers/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of normalized Capterra reviews (author, headline, rating) plus the product's aggregate rating. Credential-free public Capterra data, rendered from the reviews page through proxied browser renderers.",
- "operationId": "capterra-reviews",
- "parameters": [
- {
- "description": "Capterra product id (the numeric id in a /p/{id}/{slug}/ URL)",
- "in": "query",
- "name": "product_id",
- "required": true,
- "type": "string",
- "x-example": "135003"
- },
- {
- "description": "Page number (default 1)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- }
- ],
+ "description": "Returns Culver's national menu's category list -- ButterBurgers, Chicken, Fish & Seafood, Combos & Baskets, Sides, Frozen Custard, Beverages and others -- each with its slug (the value GET /culvers/menu takes), a featured flag, and sort order.",
+ "operationId": "culvers-categories",
"produces": [
"application/json"
],
@@ -220758,23 +249409,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/capterra.reviewsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/culvers.categoriesResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -220791,27 +249430,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Capterra product reviews",
+ "summary": "List Culver's national menu categories",
"tags": [
- "Capterra"
+ "Culvers"
]
}
},
- "/capterra/search": {
+ "/culvers/directory": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Capterra search-result products (id, name, url, description, rating). Credential-free public Capterra data, rendered from the search page through proxied browser renderers. Note: Capterra renders a fallback product list even for queries with no genuine match, rather than a distinct empty-results page, so callers should treat low-relevance results as an upstream characteristic, not a bug.",
- "operationId": "capterra-search",
+ "description": "Returns one page of Culver's own restaurant-URL sitemap (~1,121 restaurants). Each entry's slug is the value GET /culvers/store takes.",
+ "operationId": "culvers-directory",
"parameters": [
{
- "description": "Search query",
+ "description": "Optional. 1-based page, default 1.",
"in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "slack"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Optional. Entries per page, 1-500, default 100.",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 100
}
],
"produces": [
@@ -220821,17 +249466,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/capterra.searchResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/culvers.directoryResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -220848,89 +249487,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Capterra products",
+ "summary": "Browse Culver's restaurant-URL index",
"tags": [
- "Capterra"
+ "Culvers"
]
}
},
- "/carmax/search": {
+ "/culvers/flavor": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches CarMax for used car listings, returning normalized vehicle summaries (make, model, trim, year, mileage, colors, engine, fuel economy, pricing, store, images), available search facets with live counts, and the total matching count. Credential-free public data sourced from CarMax's own mobile-app search API.",
- "operationId": "carmax-search",
+ "description": "Returns one Fresh Frozen Custard flavor's full detail, including its declared allergens, a component-by-component ingredient breakdown, and Culver's own flavor-category labels. slug comes from GET /culvers/calendar (flavors[].slug) or GET /culvers/store (flavors_of_the_day[].slug).",
+ "operationId": "culvers-flavor",
"parameters": [
{
- "description": "CarMax make, e.g. honda, Toyota, BMW (case-insensitive)",
- "in": "query",
- "name": "make",
- "type": "string",
- "x-example": "honda"
- },
- {
- "description": "CarMax model, e.g. civic (case-insensitive). Does not require make",
- "in": "query",
- "name": "model",
- "type": "string",
- "x-example": "civic"
- },
- {
- "description": "5-digit US ZIP code to bias results toward CarMax's nearest store",
- "in": "query",
- "name": "zip",
- "type": "string",
- "x-example": "90210"
- },
- {
- "description": "Sort order: bestmatch, distance-asc, price-asc, price-desc, mileage-asc, mileage-desc, year-desc, year-asc, newarrival. Defaults to bestmatch",
+ "description": "Flavor slug from /culvers/calendar or /culvers/store",
"in": "query",
- "name": "sort",
+ "name": "slug",
+ "required": true,
"type": "string",
- "x-example": "price-asc"
- },
- {
- "description": "Minimum model year",
- "in": "query",
- "name": "min_year",
- "type": "integer",
- "x-example": 2020
- },
- {
- "description": "Maximum model year",
- "in": "query",
- "name": "max_year",
- "type": "integer",
- "x-example": 2024
- },
- {
- "description": "Minimum price in US dollars",
- "in": "query",
- "name": "min_price",
- "type": "integer",
- "x-example": 15000
- },
- {
- "description": "Maximum price in US dollars",
- "in": "query",
- "name": "max_price",
- "type": "integer",
- "x-example": 30000
- },
- {
- "description": "Maximum odometer mileage",
- "in": "query",
- "name": "max_mileage",
- "type": "integer",
- "x-example": 60000
- },
- {
- "description": "1-indexed result page, defaults to 1. CarMax returns 48 results per page",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "chocolate-covered-strawberry"
}
],
"produces": [
@@ -220940,7 +249517,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/carmax.searchResponseDoc"
+ "$ref": "#/definitions/culvers.flavorResponseDoc"
}
},
"400": {
@@ -220949,8 +249526,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -220967,34 +249550,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Search CarMax vehicle listings",
+ "summary": "Get one Culver's Fresh Frozen Custard flavor's detail",
"tags": [
- "CarMax"
+ "Culvers"
]
}
},
- "/carmax/search/suggestions": {
+ "/culvers/item": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns autocomplete suggestions for a partial search term (make/model/trim), typo-tolerant by default. Credential-free public data sourced from CarMax's own mobile-app API.",
- "operationId": "carmax-search-suggestions",
+ "description": "Returns one Culver's menu item's full detail, including its size/topping modifier tree with each option's own calories and nutrition link. category and item slugs come from GET /culvers/categories and GET /culvers/menu.",
+ "operationId": "culvers-item",
"parameters": [
{
- "description": "Free-text partial search term to get autocomplete suggestions for",
+ "description": "Category slug from /culvers/categories",
"in": "query",
- "name": "search",
+ "name": "category",
"required": true,
"type": "string",
- "x-example": "civ"
+ "x-example": "butterburgers"
},
{
- "description": "Disable fuzzy/typo-tolerant matching -- require an exact prefix match. Defaults to false",
+ "description": "Item slug from /culvers/menu",
"in": "query",
- "name": "exact_match",
- "type": "boolean",
- "x-example": false
+ "name": "item",
+ "required": true,
+ "type": "string",
+ "x-example": "butterburger-cheese"
}
],
"produces": [
@@ -221004,7 +249588,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/carmax.searchSuggestionsResponseDoc"
+ "$ref": "#/definitions/culvers.itemResponseDoc"
}
},
"400": {
@@ -221013,49 +249597,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CarMax search autocomplete suggestions",
- "tags": [
- "CarMax"
- ]
- }
- },
- "/carmax/shop-by-brand": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns CarMax's full make taxonomy for browsing by brand: every make, a display image, and CarMax's own display order. Credential-free public data sourced from CarMax's own mobile-app API.",
- "operationId": "carmax-shop-by-brand",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/carmax.shopByBrandResponseDoc"
- }
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -221072,27 +249621,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CarMax's \"shop by brand\" make taxonomy",
+ "summary": "Look up one Culver's menu item's full detail",
"tags": [
- "CarMax"
+ "Culvers"
]
}
},
- "/carmax/store/{id}": {
+ "/culvers/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized CarMax store: name, full address, phone numbers, coordinates, opening hours, and store-type flags (car buying center, microstore). Credential-free public data sourced from CarMax's own server-rendered store page.",
- "operationId": "carmax-store",
+ "description": "Returns the items in one Culver's menu category, each with name, description, image, and a link to Culver's nutrition guide. Category slugs come from GET /culvers/categories. Prices are not published on the national catalog -- Culver's only prices items once a specific restaurant is selected client-side, and no credential-free per-restaurant pricing source was found; see GET /culvers/item for full modifier/topping detail.",
+ "operationId": "culvers-menu",
"parameters": [
{
- "description": "CarMax store id, the numeric path segment of a /stores/{id} URL",
- "in": "path",
- "name": "id",
+ "description": "Category slug from /culvers/categories",
+ "in": "query",
+ "name": "category",
"required": true,
"type": "string",
- "x-example": "7124"
+ "x-example": "butterburgers"
}
],
"produces": [
@@ -221102,7 +249651,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/carmax.StoreResponse"
+ "$ref": "#/definitions/culvers.menuResponseDoc"
}
},
"400": {
@@ -221117,8 +249666,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -221135,40 +249684,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CarMax store (physical location) detail",
+ "summary": "List one Culver's menu category's items",
"tags": [
- "CarMax"
+ "Culvers"
]
}
},
- "/carmax/stores": {
+ "/culvers/store": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches CarMax's physical store locations by ZIP code or free-text keyword, returning normalized stores with full address, every published phone number, opening hours, and (for a ZIP-based search) live driving distance in miles. Credential-free public data sourced from CarMax's own mobile-app store-locator API.",
- "operationId": "carmax-stores",
+ "description": "Returns one Culver's restaurant's address, phone, coordinates, open/closed status, fulfillment hours, handoff options, online-order link, and today's flavor(s) of the day. slug comes from GET /culvers/directory.",
+ "operationId": "culvers-store",
"parameters": [
{
- "description": "5-digit US ZIP code to search near. Triggers a live geo-distance sort. Provide this or keyword; zip takes precedence if both are given",
- "in": "query",
- "name": "zip",
- "type": "string",
- "x-example": "90210"
- },
- {
- "description": "Free-text match against store name or city",
+ "description": "Restaurant slug from /culvers/directory",
"in": "query",
- "name": "keyword",
+ "name": "slug",
+ "required": true,
"type": "string",
- "x-example": "Richmond"
- },
- {
- "description": "Maximum number of stores to return, defaults to 10, capped at 300",
- "in": "query",
- "name": "take",
- "type": "integer",
- "x-example": 10
+ "x-example": "ann-arbor-mi-lohr-rd"
}
],
"produces": [
@@ -221178,7 +249714,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/carmax.storeSearchResponseDoc"
+ "$ref": "#/definitions/culvers.storeResponseDoc"
}
},
"400": {
@@ -221187,8 +249723,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -221205,36 +249747,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Search CarMax store (physical location) locations",
+ "summary": "Look up one Culver's restaurant by its directory slug",
"tags": [
- "CarMax"
+ "Culvers"
]
}
},
- "/carmax/vehicle/{stock_number}": {
+ "/cvs/brands": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized CarMax vehicle listing: full vehicle spec (make, model, trim, mileage, colors, engine, transmission, fuel economy, pricing), equipment features, labeled specifications, warranty coverage, accident/owner history, and CarMax's return guarantee terms. Credential-free public data sourced primarily from CarMax's own mobile-app API, backfilled with the website's server-rendered page for accident/owner history and warranty terms the mobile API doesn't expose.",
- "operationId": "carmax-vehicle",
- "parameters": [
- {
- "description": "CarMax stock number, the numeric path segment of a /car/{stock_number} URL",
- "in": "path",
- "name": "stock_number",
- "required": true,
- "type": "string",
- "x-example": "28187774"
- },
- {
- "description": "Optional CarMax store id for pricing/transfer-fee display context. Defaults to a fixed CarMax store when omitted",
- "in": "query",
- "name": "store_id",
- "type": "string",
- "x-example": "7124"
- }
- ],
+ "description": "Returns CVS.com's full brand directory (name and path). Each brand's path is directly usable as GET /cvs/category's path parameter to browse that brand's products.",
+ "operationId": "cvs-brands",
"produces": [
"application/json"
],
@@ -221242,23 +249767,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/carmax.VehicleResponse"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/cvs.brandsResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -221275,37 +249788,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CarMax vehicle listing detail",
+ "summary": "CVS brand directory",
"tags": [
- "CarMax"
+ "CVS"
]
}
},
- "/carmax/vehicle/{stock_number}/recommendations": {
+ "/cvs/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns CarMax's own similar-vehicle recommendations for a listing: stock number, description, display mileage/price, store location, and image, for vehicles CarMax considers comparable. An empty list is a normal result, not an error. Credential-free public data sourced from CarMax's own mobile-app API.",
- "operationId": "carmax-vehicle-recommendations",
- "parameters": [
- {
- "description": "CarMax stock number to find similar vehicles for, the numeric path segment of a /car/{stock_number} URL",
- "in": "path",
- "name": "stock_number",
- "required": true,
- "type": "string",
- "x-example": "28187774"
- },
- {
- "description": "CarMax store id used as the recommendation's location context. See any search/vehicle/store response's store id field",
- "in": "query",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "7124"
- }
- ],
+ "description": "Returns CVS.com's full category/subcategory navigation taxonomy (name and path, nested to whatever depth the upstream carries). Each node's path is directly usable as GET /cvs/category's path parameter.",
+ "operationId": "cvs-categories",
"produces": [
"application/json"
],
@@ -221313,17 +249808,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/carmax.vehicleRecommendationsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/cvs.categoriesResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -221340,53 +249829,49 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CarMax \"similar vehicles\" recommendations for a listing",
+ "summary": "CVS category taxonomy",
"tags": [
- "CarMax"
+ "CVS"
]
}
},
- "/carsdotcom/search": {
+ "/cvs/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Cars.com for new and used car listings, returning normalized vehicle summaries (make, model, trim, year, mileage, exterior color, drivetrain, fuel type, pricing, seller, images) plus the total matching count. Credential-free public data sourced directly from Cars.com's own public search API.",
- "operationId": "carsdotcom-search",
+ "description": "Returns one page of a CVS.com OTC (over-the-counter) retail category, subcategory, or brand page's product grid: normalized products with title, brand, image, current/original price, and sponsored/featured/new-product flags; the total result count; and the facets (brand, color, size, price range, and other category-specific attributes, each with its selectable values and result counts) available to filter the page further. Covers the non-prescription retail catalog only. path is the segment of a page URL after \"/shop/\", e.g. \"beauty\" (top-level category), \"health-medicine/allergy-sinus\" (subcategory), or \"brand-shop/s/safe-home\" (brand page); a full https://www.cvs.com/shop/... URL or a \"/shop/...\" path is also accepted. Any of these can also carry an optional facet-filter suffix in the site's own URL shape, e.g. \"beauty/makeup/eyes/q/CoverGirl/Black/brpc\" to filter to brand CoverGirl and color Black -- see the response's facets field for which values/type codes a given category supports; filter values are case-sensitive exactly as the site renders them. page is a 1-indexed page number (default 1). sort is an optional result order matching the site's own Sort By control. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
+ "operationId": "cvs-category",
"parameters": [
{
- "description": "5-digit US ZIP code to search around",
+ "description": "CVS category, subcategory, or brand-page URL path, optionally with a /q/{value}/{typeCode} facet-filter suffix, e.g. \\",
"in": "query",
- "name": "zip",
+ "name": "path",
+ "required": true,
"type": "string",
- "x-example": "90210"
+ "x-example": "beauty"
},
{
- "description": "Search radius in miles around zip",
+ "description": "1-indexed page number, default 1",
"in": "query",
- "name": "radius",
+ "name": "page",
"type": "integer",
- "x-example": 50
+ "x-example": 1
},
{
- "description": "Listing condition. Allowed values: new, used, cpo, all",
+ "description": "Result sort order, default the site's own relevance order. One of pa (Price Low to High), pd (Price High to Low), tr (Top Rated), rc (Most Reviewed), az (Name A-Z), za (Name Z-A)",
"enum": [
- "new",
- "used",
- "cpo",
- "all"
+ "pa",
+ "pd",
+ "tr",
+ "rc",
+ "az",
+ "za"
],
"in": "query",
- "name": "stock_type",
+ "name": "sort",
"type": "string",
- "x-example": "used"
- },
- {
- "description": "1-indexed result page, defaults to 1. Cars.com returns 24 results per page",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "pa"
}
],
"produces": [
@@ -221396,7 +249881,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/carsdotcom.searchResponseDoc"
+ "$ref": "#/definitions/cvs.categoryResponseDoc"
}
},
"400": {
@@ -221405,8 +249890,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -221423,27 +249908,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Cars.com vehicle listings",
+ "summary": "Browse a CVS OTC category page",
"tags": [
- "Cars.com"
+ "CVS"
]
}
},
- "/carsdotcom/vehicle/{listing_id}": {
+ "/cvs/product-ingredients/{slug}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Cars.com vehicle listing: full vehicle spec (make, model, trim, mileage, colors, engine, transmission, fuel economy, a key-specs table), Cars.com's own deal-fairness rating and predicted fair price, categorized equipment features, an AutoCheck-derived vehicle history report, Cars.com's own price-change history, the seller's notes, dealer detail (name, rating, address, website, phones, hours) or private-seller detail for a for-sale-by-owner listing, and certified-pre-owned/manufacturer-program detail when applicable. Credential-free public data sourced directly from Cars.com's own public GraphQL API.",
- "operationId": "carsdotcom-vehicle",
+ "description": "Returns one CVS.com OTC (over-the-counter) retail product's ingredient/label statement: active ingredients, inactive ingredients, and the vendor's full free-text ingredient paragraph (which, for OTC drug products, frequently also carries a Drug Facts-style purpose note). This is sourced from the product's own dedicated ingredients page, a separate page from the main product detail endpoint. Covers the non-prescription retail catalog only -- this does not cover prescription items, pharmacy ordering, or any patient-specific data. slug is the segment of a product page URL after \"/shop/\", e.g. \"e-l-f-16hr-camo-concealer-prodid-2370023\"; a full https://www.cvs.com/shop/... URL is also accepted. Some products (particularly non-consumable goods) may return empty ingredient fields -- this reflects upstream having no label data for that product, not an error. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
+ "operationId": "cvs-product-ingredients",
"parameters": [
{
- "description": "Cars.com listing id (a UUID), the path segment of a /vehicledetail/{listing_id}/ URL",
+ "description": "CVS product page URL slug, e.g. \\",
"in": "path",
- "name": "listing_id",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "a6ea5d6f-0395-4f9d-94d5-724c4d7414de"
+ "x-example": "e-l-f-16hr-camo-concealer-prodid-2370023"
}
],
"produces": [
@@ -221453,7 +249938,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/carsdotcom.VehicleResponse"
+ "$ref": "#/definitions/cvs.productIngredientsResponseDoc"
}
},
"400": {
@@ -221468,8 +249953,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -221486,24 +249971,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Cars.com vehicle listing detail",
+ "summary": "CVS OTC product ingredients",
"tags": [
- "Cars.com"
+ "CVS"
]
}
},
- "/cbc/article": {
+ "/cvs/product/{slug}": {
"get": {
- "description": "Returns public CBC News or CBC Sports story metadata and body paragraphs from a canonical story URL. Live-updates pages are not supported.",
- "operationId": "cbc-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one CVS.com OTC (over-the-counter) retail product's detail: name, description, brand, category, price, currency, online availability, image gallery, and aggregate rating. Covers the non-prescription retail catalog only -- this does not cover prescription items, pharmacy ordering, or any patient-specific data. slug is the segment of a product page URL after \"/shop/\", e.g. \"safe-home-premium-radon-test-kit-prodid-945948\"; a full https://www.cvs.com/shop/... URL is also accepted. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
+ "operationId": "cvs-product",
"parameters": [
{
- "description": "Canonical CBC News or CBC Sports story URL",
- "in": "query",
- "name": "url",
+ "description": "CVS product page URL slug, e.g. \\",
+ "in": "path",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "https://www.cbc.ca/news/politics/does-calling-an-early-election-work-9.7355667"
+ "x-example": "safe-home-premium-radon-test-kit-prodid-945948"
}
],
"produces": [
@@ -221513,7 +250001,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/cvs.productResponseDoc"
}
},
"400": {
@@ -221528,6 +250016,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -221540,30 +250034,49 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBC News article content",
+ "summary": "CVS OTC product detail",
"tags": [
- "CBC News"
+ "CVS"
]
}
},
- "/cbc/author": {
+ "/cvs/search": {
"get": {
- "description": "Returns one CBC journalist's public profile: name, job title, biography, photo, profile links, and their most recent articles.",
- "operationId": "cbc-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Performs a keyword search across CVS.com's non-prescription retail/OTC catalog and returns one page of results: normalized products with title, brand, image, current/original price, and sponsored/featured/new-product flags; the total result count; and the facets (brand, color, size, price range, and other attributes, each with its selectable values and result counts) available to filter the results further. This is the same product-search backend cvs-category reads, just reached by keyword instead of by category/brand path. Covers the non-prescription retail catalog only. q is the search keyword or phrase, required. page is a 1-indexed page number (default 1). sort is an optional result order matching cvs-category's own Sort By values. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
+ "operationId": "cvs-search",
"parameters": [
{
- "description": "Author slug, e.g. darren-major-1.4462710",
+ "description": "Search keyword or phrase",
"in": "query",
- "name": "slug",
+ "name": "q",
+ "required": true,
"type": "string",
- "x-example": "darren-major-1.4462710"
+ "x-example": "ibuprofen"
},
{
- "description": "Canonical https://www.cbc.ca/author/ URL; alternative to slug",
+ "description": "1-indexed page number, default 1",
"in": "query",
- "name": "url",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Result sort order, default relevance. One of pa (Price Low to High), pd (Price High to Low), tr (Top Rated), rc (Most Reviewed), az (Name A-Z), za (Name Z-A)",
+ "enum": [
+ "pa",
+ "pd",
+ "tr",
+ "rc",
+ "az",
+ "za"
+ ],
+ "in": "query",
+ "name": "sort",
"type": "string",
- "x-example": "https://www.cbc.ca/author/darren-major-1.4462710"
+ "x-example": "pa"
}
],
"produces": [
@@ -221573,7 +250086,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.cbcAuthorResponseDoc"
+ "$ref": "#/definitions/cvs.categoryResponseDoc"
}
},
"400": {
@@ -221582,8 +250095,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -221600,59 +250113,74 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a CBC journalist profile",
+ "summary": "Search CVS OTC products by keyword",
"tags": [
- "CBC News"
+ "CVS"
]
}
},
- "/cbc/headlines": {
+ "/cvs/store-locator": {
"get": {
- "description": "Returns fresh CBC News or CBC Sports headlines from one public section RSS feed. Video, radio, and live-updates links are omitted.",
- "operationId": "cbc-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns nearby CVS store locations for a ZIP code, a free-text address/city/state, or a latitude/longitude pair: address, phone, fax, distance, and retail store hours, plus a has_pharmacy existence flag and a list of general service indicators (e.g. photo, ATM, same-day delivery). Covers general store info only -- this does not return pharmacy hours, pharmacy phone, prescription data, or any patient-specific information. zip is a 5-digit US ZIP code; alternatively supply address (a free-text location such as a city, state, or street address) or latitude and longitude together. When more than one is supplied, zip wins, then address, then latitude/longitude. Optionally narrow results to stores carrying one specific service via the service param (the same code vocabulary the response's services field uses); only one service value is accepted per request. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
+ "operationId": "cvs-store-locator",
"parameters": [
{
- "description": "CBC section slug",
+ "description": "5-digit US ZIP code, e.g. \\",
+ "in": "query",
+ "name": "zip",
+ "type": "string",
+ "x-example": "90210"
+ },
+ {
+ "description": "Free-text location -- a city, state, or street address, e.g. \\",
+ "in": "query",
+ "name": "address",
+ "type": "string",
+ "x-example": "Beverly Hills, CA"
+ },
+ {
+ "description": "Latitude, used together with longitude when zip and address are not supplied",
+ "in": "query",
+ "name": "latitude",
+ "type": "number",
+ "x-example": 34.0901
+ },
+ {
+ "description": "Longitude, used together with latitude when zip and address are not supplied",
+ "in": "query",
+ "name": "longitude",
+ "type": "number",
+ "x-example": -118.4065
+ },
+ {
+ "description": "Narrow results to stores carrying one specific service",
"enum": [
- "world",
- "canada",
- "politics",
- "business",
- "health",
- "arts",
- "technology",
- "indigenous",
- "british-columbia",
- "calgary",
- "edmonton",
- "hamilton",
- "kamloops",
- "kitchener-waterloo",
- "london",
- "manitoba",
- "montreal",
- "new-brunswick",
- "newfoundland-labrador",
- "north",
- "nova-scotia",
- "ottawa",
- "prince-edward-island",
- "saskatchewan",
- "saskatoon",
- "sudbury",
- "thunder-bay",
- "toronto",
- "windsor",
- "sports",
- "sports-golf",
- "sports-nhl",
- "sports-olympics",
- "sports-soccer",
- "sports-tennis"
+ "HH_HealthHub_Ind",
+ "MC_MinuteClinic_Ind",
+ "HS_OakStreetHealth_Ind",
+ "IM_Immunization_Ind",
+ "RX_OTCH_Ind",
+ "IM_Covax_Ind",
+ "CL_CovidTest_Ind",
+ "RX_24Hours_Ind",
+ "RX_DriveThru_Ind",
+ "RX_Pharmacy_Ind",
+ "RX_DrugDisposal_Ind",
+ "RS_24Hours_Ind",
+ "PH_Photo_Ind",
+ "RS_AcceptsWic_Ind",
+ "RS_AcceptsSnap_Ind",
+ "GN_UPSAccessPoint_Ind",
+ "RS_BOPIS_Ind",
+ "GN_YMas_Ind",
+ "BT_BeautyIRL_Ind",
+ "GN_SmileDirectClub_Ind"
],
"in": "query",
- "name": "section",
- "required": true,
+ "name": "service",
"type": "string"
}
],
@@ -221663,7 +250191,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/cvs.storesResponseDoc"
}
},
"400": {
@@ -221672,37 +250200,11 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CBC News section headlines",
- "tags": [
- "CBC News"
- ]
- }
- },
- "/cbc/news": {
- "get": {
- "description": "Returns fresh CBC News top stories from CBC's public Top Stories RSS feed. Live-updates pages are omitted.",
- "operationId": "cbc-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
},
"429": {
"description": "Too Many Requests",
@@ -221722,50 +250224,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBC News top stories",
- "tags": [
- "CBC News"
- ]
- }
- },
- "/cbc/sections": {
- "get": {
- "description": "Returns the CBC News sections accepted by the headlines endpoint: national desks, regional newsrooms, and CBC Sports feeds.",
- "operationId": "cbc-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CBC News sections",
+ "summary": "CVS store locator",
"tags": [
- "CBC News"
+ "CVS"
]
}
},
- "/cbr/article": {
+ "/dailycaller/article": {
"get": {
- "description": "Returns public CBR article metadata and body paragraphs from a canonical article URL.",
- "operationId": "cbr-article",
+ "description": "Returns public The Daily Caller article metadata and body paragraphs from a canonical article URL. Patriots-only (premium) articles expose only a public teaser and are flagged paywalled.",
+ "operationId": "dailycaller-article",
"parameters": [
{
- "description": "Canonical CBR article URL",
+ "description": "Canonical The Daily Caller article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.cbr.com/star-trek-2-release-date-confirmed-cover-reveal/"
+ "x-example": "https://dailycaller.com/2026/09/23/example-article-slug"
}
],
"produces": [
@@ -221790,12 +250266,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -221808,24 +250278,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBR article content",
+ "summary": "Get The Daily Caller article content",
"tags": [
- "CBR"
+ "The Daily Caller"
]
}
},
- "/cbr/author": {
+ "/dailycaller/author": {
"get": {
- "description": "Returns a CBR author's byline metadata, biography, social links, and recent articles from a canonical author URL.",
- "operationId": "cbr-author",
+ "description": "Returns a The Daily Caller author's byline metadata, job title, optional biography, contact links, and newest articles from a canonical author URL.",
+ "operationId": "dailycaller-author",
"parameters": [
{
- "description": "Canonical CBR author URL",
+ "description": "Canonical The Daily Caller author URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.cbr.com/author/john-dodge/"
+ "x-example": "https://dailycaller.com/author/EmilyKopp/"
}
],
"produces": [
@@ -221835,7 +250305,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.cbrAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.dailycallerAuthorResponseDoc"
}
},
"400": {
@@ -221862,53 +250332,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a CBR author profile",
+ "summary": "Get a The Daily Caller author profile",
"tags": [
- "CBR"
+ "The Daily Caller"
]
}
},
- "/cbr/headlines": {
+ "/dailycaller/headlines": {
"get": {
- "description": "Returns fresh headlines from one public CBR RSS section. Video pages, if a section ever returns them, have type video and are not readable through the article endpoint.",
- "operationId": "cbr-headlines",
+ "description": "Returns the newest headlines listed on one public The Daily Caller section page.",
+ "operationId": "dailycaller-headlines",
"parameters": [
{
- "description": "CBR RSS section slug",
+ "description": "The Daily Caller section slug",
"enum": [
- "movies",
- "movie-features",
- "news-movies",
- "reviews-movies",
- "movie-lists",
- "tv",
- "tv-features",
- "news-tv",
- "reviews-tv",
- "tv-lists",
- "comics",
- "comics-features",
- "comics/news",
- "comics/reviews",
- "comics-lists",
- "anime",
- "anime-features",
- "anime-news",
- "anime/reviews-anime",
- "anime-lists",
- "games",
- "game-features",
- "game-news",
- "games/reviews-games",
- "game-guides",
- "game-lists",
- "lists",
- "cbr-exclusives"
+ "politics",
+ "us",
+ "world",
+ "national-security",
+ "elections",
+ "business",
+ "energy",
+ "education",
+ "health",
+ "tech",
+ "media",
+ "entertainment",
+ "sports",
+ "guns-and-gear",
+ "investigative-group",
+ "opinion",
+ "analysis",
+ "two-sides",
+ "big-tent-ideas",
+ "patriots",
+ "satire",
+ "video"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "politics"
}
],
"produces": [
@@ -221927,12 +250392,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -221945,16 +250404,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBR section headlines",
+ "summary": "Get The Daily Caller section headlines",
"tags": [
- "CBR"
+ "The Daily Caller"
]
}
},
- "/cbr/news": {
+ "/dailycaller/news": {
"get": {
- "description": "Returns fresh CBR top stories from its public RSS feed.",
- "operationId": "cbr-news",
+ "description": "Returns fresh The Daily Caller top stories from its public RSS feed.",
+ "operationId": "dailycaller-news",
"produces": [
"application/json"
],
@@ -221983,16 +250442,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBR top stories",
+ "summary": "Get The Daily Caller top stories",
"tags": [
- "CBR"
+ "The Daily Caller"
]
}
},
- "/cbr/sections": {
+ "/dailycaller/sections": {
"get": {
- "description": "Returns the public CBR RSS section inventory used by the headlines endpoint.",
- "operationId": "cbr-sections",
+ "description": "Returns the live-verified The Daily Caller section inventory used by the headlines endpoint.",
+ "operationId": "dailycaller-sections",
"produces": [
"application/json"
],
@@ -222002,12 +250461,6 @@
"schema": {
"$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -222015,24 +250468,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBR RSS sections",
+ "summary": "Get The Daily Caller sections",
"tags": [
- "CBR"
+ "The Daily Caller"
]
}
},
- "/cbsnews/article": {
+ "/dailyexpress/article": {
"get": {
- "description": "Returns public CBS News article metadata and body paragraphs from a canonical article URL.",
- "operationId": "cbsnews-article",
+ "description": "Returns public Daily Express article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "dailyexpress-article",
"parameters": [
{
- "description": "Canonical CBS News article URL",
+ "description": "Canonical Daily Express article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.cbsnews.com/news/example-article-slug/"
+ "x-example": "https://www.express.co.uk/news/123456/example"
}
],
"produces": [
@@ -222069,24 +250522,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBS News article content",
+ "summary": "Get Daily Express article content",
"tags": [
- "CBS News"
+ "Daily Express"
]
}
},
- "/cbsnews/author": {
+ "/dailyexpress/author": {
"get": {
- "description": "Returns one CBS News author's public team-page profile: name, biography, coverage topics, headshot (when the page has one), social links, and their recent articles.",
- "operationId": "cbsnews-author",
+ "description": "Returns one Daily Express journalist's public profile: name, job title, bio, and their recent articles, from a canonical journalist URL.",
+ "operationId": "dailyexpress-author",
"parameters": [
{
- "description": "Canonical cbsnews.com/team/ author URL",
+ "description": "Canonical Daily Express journalist URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.cbsnews.com/team/margaret-brennan/"
+ "x-example": "https://www.express.co.uk/journalist/123944/Rebecca-Russell"
}
],
"produces": [
@@ -222096,7 +250549,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.cbsNewsAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.dailyExpressAuthorResponseDoc"
}
},
"400": {
@@ -222123,35 +250576,55 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a CBS News author profile",
+ "summary": "Get a Daily Express journalist profile",
"tags": [
- "CBS News"
+ "Daily Express"
]
}
},
- "/cbsnews/headlines": {
+ "/dailyexpress/headlines": {
"get": {
- "description": "Returns fresh headlines from one public CBS News RSS section.",
- "operationId": "cbsnews-headlines",
+ "description": "Returns fresh headlines from one public Daily Express RSS section.",
+ "operationId": "dailyexpress-headlines",
"parameters": [
{
- "description": "CBS News RSS section slug",
+ "description": "Daily Express section slug",
"enum": [
- "main",
- "us",
+ "news",
+ "uk",
"world",
"politics",
- "moneywatch",
- "health",
- "entertainment",
+ "royal",
+ "us",
+ "weather",
"science",
- "technology",
- "space"
+ "history",
+ "weird",
+ "nature",
+ "obituaries",
+ "showbiz-tv",
+ "sport",
+ "football",
+ "tennis",
+ "formula-1",
+ "finance",
+ "city-business",
+ "personal-finance",
+ "retirement",
+ "travel",
+ "entertainment",
+ "gaming",
+ "lifestyle",
+ "health",
+ "property",
+ "cars",
+ "technology"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "news"
}
],
"produces": [
@@ -222182,16 +250655,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBS News section headlines",
+ "summary": "Get Daily Express section headlines",
"tags": [
- "CBS News"
+ "Daily Express"
]
}
},
- "/cbsnews/news": {
+ "/dailyexpress/news": {
"get": {
- "description": "Returns fresh CBS News top stories from its public RSS feed.",
- "operationId": "cbsnews-news",
+ "description": "Returns fresh Daily Express stories from the public News RSS feed.",
+ "operationId": "dailyexpress-news",
"produces": [
"application/json"
],
@@ -222202,12 +250675,6 @@
"$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -222220,16 +250687,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBS News top stories",
+ "summary": "Get Daily Express top stories",
"tags": [
- "CBS News"
+ "Daily Express"
]
}
},
- "/cbsnews/sections": {
+ "/dailyexpress/sections": {
"get": {
- "description": "Returns the live-verified public CBS News RSS section inventory used by cbsnews-headlines.",
- "operationId": "cbsnews-sections",
+ "description": "Returns the live public Daily Express RSS section inventory.",
+ "operationId": "dailyexpress-sections",
"produces": [
"application/json"
],
@@ -222246,24 +250713,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBS News sections",
+ "summary": "Get Daily Express sections",
"tags": [
- "CBS News"
+ "Daily Express"
]
}
},
- "/cbssports/article": {
+ "/dailykos/article": {
"get": {
- "description": "Returns public CBS Sports article metadata and body paragraphs from a canonical cbssports.com//news/ URL.",
- "operationId": "cbssports-article",
+ "description": "Returns metadata and text paragraphs from a canonical staff-authored Daily Kos /news/ story. Community stories and photographer-owned images are not included.",
+ "operationId": "dailykos-article",
"parameters": [
{
- "description": "Canonical CBS Sports article URL",
+ "description": "Canonical Daily Kos staff /news/ article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.cbssports.com/college-football/news/president-trump-attending-texas-tennessee/"
+ "x-example": "https://www.dailykos.com/stories/2026/9/28/800104871/news/yet-another-fbi-co-babysitter-bids-the-bureau-bye-bye/"
}
],
"produces": [
@@ -222288,78 +250755,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CBS Sports article content",
- "tags": [
- "CBS Sports"
- ]
- }
- },
- "/cbssports/author": {
- "get": {
- "description": "Returns one CBS Sports writer's public profile: name, title, headshot, bio, X/Twitter link, and their recent articles.",
- "operationId": "cbssports-author",
- "parameters": [
- {
- "description": "Writer slug, e.g. david-cobb",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "david-cobb"
- },
- {
- "description": "Canonical cbssports.com/writers// URL; alternative to slug",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.cbssports.com/writers/david-cobb/"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.cbsSportsAuthorResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -222372,46 +250767,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a CBS Sports writer profile",
+ "summary": "Get a Daily Kos staff article",
"tags": [
- "CBS Sports"
+ "Daily Kos"
]
}
},
- "/cbssports/headlines": {
+ "/dailykos/headlines": {
"get": {
- "description": "Returns fresh headlines from one public CBS Sports per-sport RSS feed.",
- "operationId": "cbssports-headlines",
+ "description": "Returns current stories from one verified Daily Kos category feed. Use dailykos-sections to discover the complete accepted category set.",
+ "operationId": "dailykos-headlines",
"parameters": [
{
- "description": "CBS Sports section slug",
+ "description": "Daily Kos category slug",
"enum": [
- "nfl",
- "college-football",
- "nba",
- "college-basketball",
- "womens-college-basketball",
- "wnba",
- "mlb",
- "nhl",
- "soccer",
- "golf",
- "tennis",
- "ufc",
- "mma",
- "boxing",
- "wwe",
- "nascar",
- "motor-sports",
- "olympics",
- "betting",
- "prediction",
- "general"
+ "announcements",
+ "cartoon",
+ "daily-kos",
+ "partnerhub",
+ "news",
+ "news/business-and-economy",
+ "news/congress",
+ "news/courts",
+ "news/culture",
+ "news/elections",
+ "news/environment",
+ "news/health",
+ "news/immigration",
+ "news/justice",
+ "news/media",
+ "news/media-and-culture",
+ "news/national",
+ "news/science",
+ "news/series",
+ "news/stateandlocal",
+ "news/tech",
+ "news/videos",
+ "news/whitehouse",
+ "news/world"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "announcements"
}
],
"produces": [
@@ -222430,12 +250829,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -222448,16 +250841,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBS Sports section headlines",
+ "summary": "Get Daily Kos category headlines",
"tags": [
- "CBS Sports"
+ "Daily Kos"
]
}
},
- "/cbssports/news": {
+ "/dailykos/news": {
"get": {
- "description": "Returns fresh CBS Sports top stories from its public headlines RSS feed.",
- "operationId": "cbssports-news",
+ "description": "Returns current staff-authored Daily Kos stories from its public RSS feed.",
+ "operationId": "dailykos-news",
"produces": [
"application/json"
],
@@ -222468,12 +250861,6 @@
"$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -222486,16 +250873,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBS Sports top stories",
+ "summary": "Get Daily Kos top stories",
"tags": [
- "CBS Sports"
+ "Daily Kos"
]
}
},
- "/cbssports/sections": {
+ "/dailykos/sections": {
"get": {
- "description": "Returns the live-verified public CBS Sports per-sport RSS feed inventory used by cbssports-headlines.",
- "operationId": "cbssports-sections",
+ "description": "Returns the 24 live-verified public WordPress categories accepted by dailykos-headlines.",
+ "operationId": "dailykos-sections",
"produces": [
"application/json"
],
@@ -222512,40 +250899,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CBS Sports sections",
+ "summary": "List Daily Kos categories",
"tags": [
- "CBS Sports"
+ "Daily Kos"
]
}
},
- "/chewy/brands": {
+ "/dailymail/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of Chewy's full brand directory -- roughly 7,600 brands -- with each brand's id, name, Chewy's own written description, image, parent-catalog group, and its child brands where a brand umbrellas others (Purina lists 27). This is the whole catalog of brands, unlike chewy_facets, which only reports the brands present in one category's listing. Pass name to look up a single brand by exact name, case-insensitive; it is an exact match upstream, not a search, so \"Purina\" matches while \"purina pro\" does not. To filter products by a brand, pass the brand's NAME to chewy_category or chewy_search as filter=brand_facet: -- facet_id is the join key onto chewy_facets' own option ids and is not accepted by the filter parameter.",
- "operationId": "chewy-brands",
+ "description": "Returns public Daily Mail article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "dailymail-article",
"parameters": [
{
- "description": "Page number, 1-based (default 1).",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Brands per page, 1 to 500 (default 100).",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 100
- },
- {
- "description": "Return only the brand with this exact name, case-insensitive. Exact match, not a search.",
+ "description": "Canonical Daily Mail article URL",
"in": "query",
- "name": "name",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "ACANA"
+ "x-example": "https://www.dailymail.co.uk/news/article-1234567/example.html"
}
],
"produces": [
@@ -222555,7 +250926,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.brandsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -222564,8 +250935,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -222582,33 +250953,31 @@
"ApiKeyAuth": []
}
],
- "summary": "List Chewy's brand directory",
+ "summary": "Get Daily Mail article content",
"tags": [
- "Chewy"
+ "Daily Mail"
]
}
},
- "/chewy/categories": {
+ "/dailymail/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Chewy's category taxonomy tree: how to discover group_id values for chewy_category, not the products within a category. Omitting group_id returns all top-level departments (Dog, Cat, Horse, Bird, Fish, Reptile, Small Pet, Farm and Livestock Supplies, Wild Bird and Wildlife Supplies, Pharmacy, Pet Parents); a group_id expands that specific group's own subtree instead. depth controls how many levels of subcategories are expanded in one call.",
- "operationId": "chewy-categories",
+ "description": "Returns one Daily Mail author's public profile: name, job title, bio, social accounts, and one page of their recent articles.",
+ "operationId": "dailymail-author",
"parameters": [
{
- "description": "Chewy category group id to expand, e.g. 332 for Dog Food. Omit for the full top-level department tree.",
+ "description": "Canonical dailymail.com/profile-/.html URL",
"in": "query",
- "name": "group_id",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "332"
+ "x-example": "https://www.dailymail.com/profile-1021/charliespiering.html"
},
{
- "description": "How many levels of subcategories to expand, 1 to 3 (default 2)",
+ "description": "1-based page of articles to return; defaults to 1",
"in": "query",
- "name": "depth",
+ "name": "page",
"type": "integer",
- "x-example": 2
+ "x-example": 1
}
],
"produces": [
@@ -222618,7 +250987,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.dailyMailAuthorResponseDoc"
}
},
"400": {
@@ -222627,8 +250996,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -222645,68 +251014,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse Chewy's category taxonomy tree",
+ "summary": "Get a Daily Mail author profile",
"tags": [
- "Chewy"
+ "Daily Mail"
]
}
},
- "/chewy/category": {
+ "/dailymail/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page (36 products) of a Chewy category/browse listing's product grid (price, autoship price/discount, stock, rating, images), plus embedded facets and breadcrumbs. group_id is Chewy's own numeric category id -- the trailing id segment of a chewy.com/b/- browse URL, e.g. 294 for /b/dry-food-294. Every breadcrumbs[].group_id and facets[].options[].value in a response is a ready-to-use group_id for a follow-up call, so a caller can discover the full category taxonomy starting from a known category. A group_id Chewy does not recognize returns a 404 rather than an unfiltered listing. sort and filter narrow/reorder the listing; every facets[].value paired with one of that facet's options[].value from any prior response is a valid filter key:value pair (e.g. brand, breed size, flavor, price range, customer rating -- whichever facets that category exposes). Set include_content to also return the category's curated editorial content -- Chewy's own FAQ question/answer pairs, the rich category description, and the SEO page title and meta description; it costs no extra upstream call and is omitted entirely when not requested. A keyword search carries none of this content, so it is a category-only addition.",
- "operationId": "chewy-category",
+ "description": "Returns fresh headlines from one public Daily Mail RSS section.",
+ "operationId": "dailymail-headlines",
"parameters": [
{
- "description": "Chewy's numeric category id, e.g. \\",
- "in": "query",
- "name": "group_id",
- "required": true,
- "type": "string",
- "x-example": "294"
- },
- {
- "description": "Page number, 36 products per page (default 1)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Sort order. One of byRelevance, byNewest, byPopularity, byLowestPrice, byHighestPrice, byRating, byRatingCount. Defaults to Chewy's own relevance ordering when omitted.",
+ "description": "Daily Mail RSS section slug",
"enum": [
- "byRelevance",
- "byNewest",
- "byPopularity",
- "byLowestPrice",
- "byHighestPrice",
- "byRating",
- "byRatingCount"
+ "home",
+ "news",
+ "sport",
+ "tvshowbiz",
+ "health",
+ "femail",
+ "travel",
+ "sciencetech",
+ "money",
+ "debate",
+ "us",
+ "australia"
],
"in": "query",
- "name": "sort",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "byRating"
- },
- {
- "collectionFormat": "csv",
- "description": "Repeatable, up to 10. Each value is \\",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "filter",
- "type": "array",
- "x-example": "brand_facet:ACANA"
- },
- {
- "description": "Also return the category's curated editorial content -- Chewy's own FAQ question/answer pairs, the rich category description, and the SEO page title/meta description. Costs no extra upstream call. Omitted entirely when false (the default).",
- "in": "query",
- "name": "include_content",
- "type": "boolean",
- "x-example": true
+ "x-example": "home"
}
],
"produces": [
@@ -222716,7 +251055,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.categoryResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -222725,11 +251064,37 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Daily Mail section headlines",
+ "tags": [
+ "Daily Mail"
+ ]
+ }
+ },
+ "/dailymail/news": {
+ "get": {
+ "description": "Returns fresh Daily Mail top stories from its public RSS feed.",
+ "operationId": "dailymail-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
"429": {
"description": "Too Many Requests",
@@ -222749,44 +251114,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a Chewy category listing",
+ "summary": "Get Daily Mail top stories",
"tags": [
- "Chewy"
+ "Daily Mail"
]
}
},
- "/chewy/facets": {
+ "/dailymail/sections": {
"get": {
- "consumes": [
+ "description": "Returns the live-verified public Daily Mail RSS section inventory.",
+ "operationId": "dailymail-sections",
+ "produces": [
"application/json"
],
- "description": "Returns the full set of refinement options (facets) a Chewy category or keyword search can be narrowed by -- brand, sub-category, lifestage, food form, breed size, special diet, health feature, flavor, ingredient, packaging type, price band, customer rating, and whichever other dimensions that listing exposes -- with each option's product count. No products are returned, so this is a much smaller call than chewy_category/chewy_search when only the option set is wanted. The Brand dimension is effectively Chewy's brand directory for the requested listing: each brand option carries its product count and, where Chewy publishes one, its own chewy.com/brands/- landing-page slug in seo_hvf_slug. Exactly one of group_id or q is required. Every facets[].value paired with one of that facet's options[].value is a ready-to-use filter key:value pair for this endpoint, chewy_category, and chewy_search alike; passing filter here narrows the listing first, so the returned counts describe the already-narrowed result set. A group_id Chewy does not recognize returns a 404 rather than an empty option set.",
- "operationId": "chewy-facets",
- "parameters": [
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
{
- "description": "Chewy's numeric category id, e.g. \\",
- "in": "query",
- "name": "group_id",
- "type": "string",
- "x-example": "294"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Daily Mail RSS sections",
+ "tags": [
+ "Daily Mail"
+ ]
+ }
+ },
+ "/dailymaverick/article": {
+ "get": {
+ "description": "Extracts the public article metadata and body paragraphs Daily Maverick serves to an anonymous visitor. The paywalled flag is set only when the page exposes the publisher's access-control marker.",
+ "operationId": "dailymaverick-article",
+ "parameters": [
{
- "description": "Free-text search keywords to return refinement options for, e.g. \\",
+ "description": "Canonical Daily Maverick article or opinionista URL",
"in": "query",
- "name": "q",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "salmon dog food"
- },
- {
- "collectionFormat": "csv",
- "description": "Repeatable, up to 10. Each value is \\",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "filter",
- "type": "array",
- "x-example": "brand_facet:ACANA"
+ "x-example": "https://www.dailymaverick.co.za/article/2026-09-29-nmb-flying-squad-get-two-cars-and-a-promise-of-more/"
}
],
"produces": [
@@ -222796,7 +251167,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.facetsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -222829,27 +251200,77 @@
"ApiKeyAuth": []
}
],
- "summary": "List a Chewy category or search's refinement options",
+ "summary": "Get a Daily Maverick article",
"tags": [
- "Chewy"
+ "Daily Maverick"
]
}
},
- "/chewy/gtin-lookup": {
+ "/dailymaverick/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Resolves a batch of up to 20 GTIN/UPC barcodes to their Chewy part numbers in one call. gtins is a comma-separated list of barcodes, e.g. \"192268541316\". A barcode Chewy does not recognize is omitted from part_numbers and listed in not_found rather than causing the whole call to fail. The resolved part_numbers values feed directly into chewy_product/chewy_products.",
- "operationId": "chewy-gtin-lookup",
+ "description": "Returns up to 21 current article cards from the public category JSON endpoint. Use dailymaverick-sections to discover valid slugs.",
+ "operationId": "dailymaverick-headlines",
"parameters": [
{
- "description": "Comma-separated GTIN/UPC barcodes, up to 20",
+ "description": "Daily Maverick category slug",
+ "enum": [
+ "2019-elections",
+ "2019-rugby-world-cup",
+ "africa",
+ "analysis",
+ "articles",
+ "blog",
+ "books",
+ "business-maverick",
+ "cartoons",
+ "companies",
+ "covid-19",
+ "crypto",
+ "culture",
+ "declassified-uk",
+ "dm168",
+ "economy",
+ "editorial",
+ "elections",
+ "fifa-world-cup-2026",
+ "international-finance",
+ "johannesburg",
+ "magazine",
+ "maverick-citizen",
+ "maverick-earth",
+ "maverick-insider",
+ "maverick-life",
+ "maverick-news",
+ "media",
+ "mining",
+ "motoring",
+ "multimedia",
+ "nelson-mandela-bay",
+ "op-eds",
+ "open-secrets",
+ "opinionistas",
+ "partner-content",
+ "people-of-the-year",
+ "personal-finance",
+ "podcasts",
+ "politics",
+ "sci-tech",
+ "scorpio",
+ "south-africa",
+ "sponsored-content",
+ "sport",
+ "tgifood",
+ "ukraine-crisis",
+ "webinars",
+ "weekend-wrap",
+ "world",
+ "world-cup-2018"
+ ],
"in": "query",
- "name": "gtins",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "192268541316"
+ "x-example": "2019-elections"
}
],
"produces": [
@@ -222859,7 +251280,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.gtinLookupResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -222886,29 +251307,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Resolve Chewy GTIN/UPC barcodes to part numbers",
+ "summary": "Get headlines from one Daily Maverick section",
"tags": [
- "Chewy"
+ "Daily Maverick"
]
}
},
- "/chewy/inventory": {
+ "/dailymaverick/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Chewy's live warehouse inventory position for up to 20 products in one call, keyed by part number: the availability status, total units on hand, units inbound/in progress, units already reserved against unshipped orders, and the quantity actually available to the storefront. This is the only Chewy surface that carries real quantities -- every other endpoint in this family reports stock as a single boolean, so \"36 units left\" and \"84,386 units left\" are indistinguishable there. Quantities are live and move between calls. Part numbers Chewy does not return inventory for are reported in not_found; if none resolve the response is a 404.",
- "operationId": "chewy-inventory",
- "parameters": [
- {
- "description": "Comma-separated Chewy part numbers, up to 20 per request, e.g. \\",
- "in": "query",
- "name": "part_numbers",
- "required": true,
- "type": "string",
- "x-example": "101143,52448"
- }
- ],
+ "description": "Returns current article and opinionista links from Daily Maverick's public news sitemap.",
+ "operationId": "dailymaverick-news",
"produces": [
"application/json"
],
@@ -222916,19 +251324,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.inventoryResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -222949,42 +251345,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Look up live warehouse inventory for a batch of Chewy products",
+ "summary": "Get current Daily Maverick stories",
"tags": [
- "Chewy"
+ "Daily Maverick"
]
}
- },
- "/chewy/item-attributes": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Chewy's own specification table for up to 20 products in one call, keyed by part number -- the structured attribute list (lifestage, pet type, product type, material, made-in country, packaging type, flavor, defining size, plus long-form key-benefits and cautions copy), together with the handling and compliance flags that govern how an item ships (pharmaceutical, prescription vet-diet, frozen, refrigerated, single-tablet, gift card), its bundle structure and component SKUs, its autoship eligibility/discount and preset reorder cadence, its merchandising classification path, and the numeric category group ids it belongs to (each usable directly as chewy_category's group_id). This complements rather than repeats chewy_products and chewy_product: price, rating, images, reviews, and descriptions stay on those endpoints, and the attribute table is not available from either. Use the group parameter to return a single attribute group. Part numbers Chewy does not recognize are reported in not_found; if none of them resolve the response is a 404.",
- "operationId": "chewy-item-attributes",
- "parameters": [
- {
- "description": "Comma-separated Chewy part numbers, up to 20 per request, e.g. \\",
- "in": "query",
- "name": "part_numbers",
- "required": true,
- "type": "string",
- "x-example": "52448,101143"
- },
- {
- "description": "Return only attributes in one group. One of DEFINING, STANDARD, EXTENDED, HIDDEN. Omit for every group.",
- "enum": [
- "DEFINING",
- "STANDARD",
- "EXTENDED",
- "HIDDEN"
- ],
- "in": "query",
- "name": "group",
- "type": "string",
- "x-example": "STANDARD"
- }
- ],
+ },
+ "/dailymaverick/sections": {
+ "get": {
+ "description": "Lists all 51 live-verified article-bearing categories accepted by dailymaverick-headlines.",
+ "operationId": "dailymaverick-sections",
"produces": [
"application/json"
],
@@ -222992,19 +251362,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.itemAttributesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
},
"429": {
@@ -223025,27 +251383,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Look up a batch of Chewy products' structured attributes and handling flags",
+ "summary": "List Daily Maverick sections",
"tags": [
- "Chewy"
+ "Daily Maverick"
]
}
},
- "/chewy/product": {
+ "/dailyrecord/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Chewy product's full normalized detail: name, brand, description, images, price, stock, rating and its star-count breakdown, category breadcrumbs, customer questions and answers, and customer reviews. id is the numeric id from a chewy.com PDP URL, e.g. 185468 from https://www.chewy.com/frisco-lion-mane-dog-cat-costume/dp/185468 -- also the same value a chewy_category response's products[].part_number field carries for that product's own default variant. The response also carries the item's shipping weight and package dimensions as Chewy states them, its per-order purchase limit, and any promotions currently attached to it (each with a type such as \"Spend $X\" or \"BOGO\", plus short and long descriptions).",
- "operationId": "chewy-product",
+ "description": "Returns public Daily Record article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "dailyrecord-article",
"parameters": [
{
- "description": "Numeric id from a chewy.com PDP URL",
+ "description": "Canonical Daily Record article URL",
"in": "query",
- "name": "id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "185468"
+ "x-example": "https://www.dailyrecord.co.uk/news/scottish-news/example-37685844"
}
],
"produces": [
@@ -223055,7 +251410,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.productResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -223070,12 +251425,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -223088,48 +251437,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Chewy product's detail",
+ "summary": "Get Daily Record article content",
"tags": [
- "Chewy"
+ "Daily Record"
]
}
},
- "/chewy/product-questions": {
+ "/dailyrecord/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of a Chewy product's customer questions, each with its answers (text, author, date, staff flag, helpful count). chewy_product embeds only the first 20 questions with no way to page past them; this endpoint reaches the whole set. id is the numeric id from any chewy.com PDP URL, and questions are shared across a product's variants, so any variant's id returns the same set. Each question reports answers_total alongside its answers array, so a caller can tell when answers were truncated by answer_limit. Chewy offers no sort or filter on questions, so this endpoint deliberately exposes paging only.",
- "operationId": "chewy-product-questions",
+ "description": "Returns one Daily Record author's public profile: name, job title, bio, email, X/Twitter handle, and their recent articles.",
+ "operationId": "dailyrecord-author",
"parameters": [
{
- "description": "The numeric id from a chewy.com PDP URL, e.g. \\",
+ "description": "Author slug, e.g. paul-hutcheon",
"in": "query",
- "name": "id",
- "required": true,
+ "name": "slug",
"type": "string",
- "x-example": "767806"
- },
- {
- "description": "Page number, 1-based (default 1).",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Questions per page, 1 to 50 (default 20).",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "x-example": "paul-hutcheon"
},
{
- "description": "Answers to return per question, 1 to 20 (default 10). Each question also reports answers_total.",
+ "description": "Canonical dailyrecord.co.uk/authors// URL; alternative to slug",
"in": "query",
- "name": "answer_limit",
- "type": "integer",
- "x-example": 10
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.dailyrecord.co.uk/authors/paul-hutcheon/"
}
],
"produces": [
@@ -223139,7 +251470,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.questionsResponseDoc"
+ "$ref": "#/definitions/publicnews.dailyRecordAuthorResponseDoc"
}
},
"400": {
@@ -223154,12 +251485,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -223172,67 +251497,36 @@
"ApiKeyAuth": []
}
],
- "summary": "List a Chewy product's customer questions and answers, paginated",
+ "summary": "Get a Daily Record author profile",
"tags": [
- "Chewy"
+ "Daily Record"
]
}
},
- "/chewy/product-reviews": {
+ "/dailyrecord/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of a Chewy product's customer reviews -- rating, title, body, author, submission date, helpful count, incentivized flag, and contributor badge -- with sorting and positive/negative filtering. chewy_product embeds only the first 20 reviews with no way to page past them; this endpoint reaches the whole set (products routinely carry thousands). id is the numeric id from any chewy.com PDP URL, and reviews are shared across a product's variants, so any variant's id returns the same set. total is the count for the current filter, so it drops when filter is applied, while rating_count stays the product's overall rating tally.",
- "operationId": "chewy-product-reviews",
+ "description": "Returns fresh headlines from one public Daily Record section.",
+ "operationId": "dailyrecord-headlines",
"parameters": [
{
- "description": "The numeric id from a chewy.com PDP URL, e.g. \\",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "767806"
- },
- {
- "description": "Page number, 1-based (default 1).",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Reviews per page, 1 to 50 (default 20).",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
- },
- {
- "description": "Sort order. One of MOST_RELEVANT, NEWEST, OLDEST, HIGHEST_RATING, LOWEST_RATING, PHOTOS. Defaults to Chewy's own ordering when omitted.",
- "enum": [
- "MOST_RELEVANT",
- "NEWEST",
- "OLDEST",
- "HIGHEST_RATING",
- "LOWEST_RATING",
- "PHOTOS"
- ],
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "NEWEST"
- },
- {
- "description": "Restrict to POSITIVE (4-5 star) or NEGATIVE (1-3 star) reviews. Omit for all.",
+ "description": "Daily Record section slug",
"enum": [
- "POSITIVE",
- "NEGATIVE"
+ "news",
+ "scotland",
+ "uk-world-news",
+ "sport",
+ "football",
+ "showbiz",
+ "lifestyle",
+ "money",
+ "travel",
+ "in-your-area"
],
"in": "query",
- "name": "filter",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "POSITIVE"
+ "x-example": "news"
}
],
"produces": [
@@ -223242,7 +251536,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.reviewsResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -223251,16 +251545,36 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "429": {
- "description": "Too Many Requests",
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Daily Record section headlines",
+ "tags": [
+ "Daily Record"
+ ]
+ }
+ },
+ "/dailyrecord/news": {
+ "get": {
+ "description": "Returns fresh Daily Record stories from the public News RSS feed.",
+ "operationId": "dailyrecord-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"503": {
@@ -223275,27 +251589,50 @@
"ApiKeyAuth": []
}
],
- "summary": "List a Chewy product's customer reviews, paginated",
+ "summary": "Get Daily Record top stories",
"tags": [
- "Chewy"
+ "Daily Record"
]
}
},
- "/chewy/products": {
+ "/dailyrecord/sections": {
"get": {
- "consumes": [
+ "description": "Returns the public Daily Record editorial section inventory.",
+ "operationId": "dailyrecord-sections",
+ "produces": [
"application/json"
],
- "description": "Returns a batch of up to 20 Chewy products' lightweight summaries (price, rating, stock, images) in one call. part_numbers is a comma-separated list of Chewy part numbers, e.g. \"52448,767758\" -- the same value chewy_product returns as part_number/parent_part_number, and chewy_category/chewy_search return as products[].part_number. A part number Chewy does not recognize is omitted from products and listed in not_found rather than causing the whole call to fail.",
- "operationId": "chewy-products",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Daily Record sections",
+ "tags": [
+ "Daily Record"
+ ]
+ }
+ },
+ "/dailystaruk/article": {
+ "get": {
+ "description": "Returns public Daily Star (UK) article metadata (including the section) and body paragraphs from a canonical article URL. Photo-gallery and sponsored partner-story URLs are rejected.",
+ "operationId": "dailystaruk-article",
"parameters": [
{
- "description": "Comma-separated Chewy part numbers, up to 20",
+ "description": "Canonical Daily Star (UK) article URL",
"in": "query",
- "name": "part_numbers",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "52448,767758"
+ "x-example": "https://www.dailystar.co.uk/tv/wayne-rooney-opens-up-weight-37700309"
}
],
"produces": [
@@ -223305,7 +251642,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.productsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -223314,6 +251651,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -223332,61 +251675,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a batch of Chewy products' lightweight summaries",
+ "summary": "Get Daily Star (UK) article content",
"tags": [
- "Chewy"
+ "Daily Star UK"
]
}
},
- "/chewy/search": {
+ "/dailystaruk/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of a Chewy keyword search's normalized product listing (price, autoship price/discount, stock, rating, images), plus embedded facets. q is free-text search keywords, e.g. \"salmon dog food\". A generic query that strongly matches one of Chewy's own categories (e.g. \"dog food\", \"cat litter\", \"leash\") is transparently redirected to that category's listing, the same real results a chewy.com visitor would see -- source_url reflects the actual listing fetched. sort and filter narrow/reorder the listing; every facets[].value paired with one of that facet's options[].value from any prior response is a valid filter key:value pair.",
- "operationId": "chewy-search",
+ "description": "Returns one Daily Star (UK) author's public profile (name and, when published, job title, bio, email and X/Twitter handle) and one page of their recent articles.",
+ "operationId": "dailystaruk-author",
"parameters": [
{
- "description": "Free-text search keywords",
+ "description": "Author slug, e.g. edward-easton",
"in": "query",
- "name": "q",
- "required": true,
+ "name": "slug",
"type": "string",
- "x-example": "salmon dog food"
- },
- {
- "description": "Page number, 36 products per page (default 1)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "edward-easton"
},
{
- "description": "Sort order. One of byRelevance, byNewest, byPopularity, byLowestPrice, byHighestPrice, byRating, byRatingCount. Defaults to Chewy's own relevance ordering when omitted.",
- "enum": [
- "byRelevance",
- "byNewest",
- "byPopularity",
- "byLowestPrice",
- "byHighestPrice",
- "byRating",
- "byRatingCount"
- ],
+ "description": "Canonical dailystar.co.uk/authors// URL; alternative to slug",
"in": "query",
- "name": "sort",
+ "name": "url",
"type": "string",
- "x-example": "byRating"
+ "x-example": "https://www.dailystar.co.uk/authors/edward-easton/"
},
{
- "collectionFormat": "csv",
- "description": "Repeatable, up to 10. Each value is \\",
+ "default": 1,
+ "description": "1-based page number of the author's article list (1 to 100); overrides any pageNumber in url",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "filter",
- "type": "array",
- "x-example": "brand_facet:ACANA"
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -223396,7 +251715,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.searchResponseDoc"
+ "$ref": "#/definitions/publicnews.reachAuthorResponseDoc"
}
},
"400": {
@@ -223405,6 +251724,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -223423,26 +251748,64 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Chewy by keyword",
+ "summary": "Get a Daily Star (UK) author profile",
"tags": [
- "Chewy"
+ "Daily Star UK"
]
}
},
- "/chewy/suggest": {
+ "/dailystaruk/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Chewy's own search-box typeahead result for a partial query term: search-term suggestions (some resolving directly to a category/brand browse URL via their own url field) plus a handful of educational-content article suggestions. term is a partial query, e.g. \"salmon dog\" or \"blue buff\". Omit term entirely to get what Chewy shows on an empty search box instead: its current Popular Searches (each resolving to a category or brand listing) and Popular Articles.",
- "operationId": "chewy-suggest",
+ "description": "Returns fresh headlines from one public Daily Star (UK) section. Photo galleries are omitted because they have no readable article body.",
+ "operationId": "dailystaruk-headlines",
"parameters": [
{
- "description": "Partial search text, e.g. \\",
+ "description": "Daily Star (UK) section slug",
+ "enum": [
+ "news",
+ "news/latest-news",
+ "news/uk-news",
+ "news/world-news",
+ "news/us-news",
+ "news/weird-news",
+ "news/exclusive",
+ "news/politics",
+ "showbiz",
+ "showbiz/us-showbiz",
+ "tv",
+ "music",
+ "sport",
+ "sport/football",
+ "sport/transfer-news",
+ "sport/boxing",
+ "sport/ufc",
+ "sport/f1",
+ "sport/darts",
+ "sport/snooker",
+ "sport/other-sports",
+ "sport/us-sport",
+ "sport/motorsport",
+ "tech",
+ "tech/news",
+ "tech/gaming",
+ "tech/reviews",
+ "life-style",
+ "life-style/money",
+ "life-style/competitions",
+ "real-life",
+ "love-sex",
+ "health",
+ "fashion-beauty",
+ "diet-fitness",
+ "travel",
+ "travel/travel-news",
+ "just-jane"
+ ],
"in": "query",
- "name": "term",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "salmon dog"
+ "x-example": "news"
}
],
"produces": [
@@ -223452,7 +251815,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.suggestResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -223479,29 +251842,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Chewy search-box typeahead suggestions",
+ "summary": "Get Daily Star (UK) section headlines",
"tags": [
- "Chewy"
+ "Daily Star UK"
]
}
},
- "/chewy/variants": {
+ "/dailystaruk/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the full roster of purchasable variants for the product a given item belongs to -- every size, flavor, or color Chewy sells it in -- with each variant's own part number, price, Autoship price, stock, images, and the defining option that distinguishes it (e.g. Size = Medium). id is the numeric id from any chewy.com PDP URL; passing any one variant's id returns that variant's whole family, and the variant you asked for is flagged with is_requested. This answers a question chewy_product cannot: chewy_product describes only the single variant it was given and names its parent, but never lists the siblings or their prices. Only the defining option is returned, not the full attribute table -- use chewy_item_attributes for that.",
- "operationId": "chewy-variants",
- "parameters": [
- {
- "description": "The numeric id from a chewy.com PDP URL, e.g. \\",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "185468"
- }
- ],
+ "description": "Returns fresh Daily Star (UK) top stories from the public home RSS feed. Photo galleries are omitted because they have no readable article body.",
+ "operationId": "dailystaruk-news",
"produces": [
"application/json"
],
@@ -223509,19 +251859,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chewy.variantsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -223542,24 +251880,50 @@
"ApiKeyAuth": []
}
],
- "summary": "List every size/flavor variant of a Chewy product",
+ "summary": "Get Daily Star (UK) top stories",
"tags": [
- "Chewy"
+ "Daily Star UK"
]
}
},
- "/chicagotribune/article": {
+ "/dailystaruk/sections": {
"get": {
- "description": "Returns public Chicago Tribune article metadata and body paragraphs from a canonical article URL. For subscriber-only articles the response carries the free lead-in with paywalled set to true.",
- "operationId": "chicagotribune-article",
+ "description": "Returns the public Daily Star (UK) editorial section inventory used by dailystaruk-headlines.",
+ "operationId": "dailystaruk-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Daily Star (UK) sections",
+ "tags": [
+ "Daily Star UK"
+ ]
+ }
+ },
+ "/dailywire/article": {
+ "get": {
+ "description": "Returns public Daily Wire article metadata and body paragraphs from an article URL under any of the site's content-vertical prefixes.",
+ "operationId": "dailywire-article",
"parameters": [
{
- "description": "Canonical Chicago Tribune article URL",
+ "description": "Daily Wire article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.chicagotribune.com/2026/09/24/gov-jb-pritzker-illinois-lawmakers-data-centers/"
+ "x-example": "https://www.dailywire.com/news/example-article-slug"
}
],
"produces": [
@@ -223596,30 +251960,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chicago Tribune article content",
+ "summary": "Get Daily Wire article content",
"tags": [
- "Chicago Tribune"
+ "DailyWire"
]
}
},
- "/chicagotribune/author": {
+ "/dailywire/author": {
"get": {
- "description": "Returns one Chicago Tribune author's public profile: name, job title when listed, bio, public email and X/Twitter handle, and their recent articles.",
- "operationId": "chicagotribune-author",
+ "description": "Returns one Daily Wire staff writer or contributor's public profile: name, headshot, social handles when present, biography, and their recent articles.",
+ "operationId": "dailywire-author",
"parameters": [
{
- "description": "Author slug, e.g. olivia-olander",
+ "description": "Author slug, e.g. brent-scher",
"in": "query",
"name": "slug",
"type": "string",
- "x-example": "olivia-olander"
+ "x-example": "brent-scher"
},
{
- "description": "Canonical chicagotribune.com/author// URL; alternative to slug",
+ "description": "Canonical dailywire.com/author/ URL; alternative to slug",
"in": "query",
"name": "url",
"type": "string",
- "x-example": "https://www.chicagotribune.com/author/olivia-olander/"
+ "x-example": "https://www.dailywire.com/author/brent-scher"
}
],
"produces": [
@@ -223629,7 +251993,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.chicagoTribuneAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.dailyWireAuthorResponseDoc"
}
},
"400": {
@@ -223656,85 +252020,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Chicago Tribune author profile",
+ "summary": "Get a Daily Wire author profile",
"tags": [
- "Chicago Tribune"
+ "DailyWire"
]
}
},
- "/chicagotribune/headlines": {
+ "/dailywire/headlines": {
"get": {
- "description": "Returns fresh headlines from one public Chicago Tribune section page.",
- "operationId": "chicagotribune-headlines",
+ "description": "Returns current Daily Wire headlines for one content-vertical section, sourced from the site's own homepage feed.",
+ "operationId": "dailywire-headlines",
"parameters": [
{
- "description": "Chicago Tribune section slug",
+ "description": "Daily Wire section slug",
"enum": [
"news",
- "local-news",
- "crime-public-safety",
- "politics",
- "elections",
- "immigration",
- "investigations",
- "education",
- "environment",
- "health",
- "history",
- "marijuana",
- "national",
- "news-obituaries",
- "science",
- "weather",
- "world",
- "business",
- "real-estate",
- "transportation",
- "technology",
- "aurora-beacon-news",
- "daily-southtown",
- "elgin-courier-news",
- "lake-county-news-sun",
- "naperville-sun",
- "post-tribune",
"opinion",
- "columnists",
- "commentary",
- "editorials",
- "letters-to-the-editor",
- "sports",
- "college-sports",
- "mlb",
- "chicago-cubs",
- "chicago-white-sox",
- "nfl",
- "chicago-bears",
- "nba",
- "chicago-bulls",
- "nhl",
- "chicago-blackhawks",
- "soccer",
- "wnba",
- "chicago-sky",
- "things-to-do",
- "arts",
- "books",
+ "dw-opinion",
+ "analysis",
+ "news-and-commentary",
+ "news-and-analysis",
+ "exclusive",
"entertainment",
- "home-garden",
- "movies",
- "music-concerts",
- "restaurants-food-drink",
- "theater",
- "travel",
- "tv-streaming",
- "fitness",
- "advice",
- "best-reviews"
+ "original",
+ "upstream",
+ "sports",
+ "mi-x-dw"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "news"
}
],
"produces": [
@@ -223765,16 +252082,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chicago Tribune section headlines",
+ "summary": "Get Daily Wire section headlines",
"tags": [
- "Chicago Tribune"
+ "DailyWire"
]
}
},
- "/chicagotribune/news": {
+ "/dailywire/news": {
"get": {
- "description": "Returns the current Chicago Tribune top stories from the public homepage.",
- "operationId": "chicagotribune-news",
+ "description": "Returns fresh Daily Wire top stories from its public RSS feed.",
+ "operationId": "dailywire-news",
"produces": [
"application/json"
],
@@ -223785,6 +252102,12 @@
"$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -223797,16 +252120,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chicago Tribune top stories",
+ "summary": "Get Daily Wire top stories",
"tags": [
- "Chicago Tribune"
+ "DailyWire"
]
}
},
- "/chicagotribune/sections": {
+ "/dailywire/sections": {
"get": {
- "description": "Returns the public Chicago Tribune editorial section inventory.",
- "operationId": "chicagotribune-sections",
+ "description": "Returns the live-sampled public Daily Wire content-vertical inventory used by the headlines endpoint.",
+ "operationId": "dailywire-sections",
"produces": [
"application/json"
],
@@ -223823,62 +252146,144 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chicago Tribune sections",
+ "summary": "Get Daily Wire content-vertical sections",
"tags": [
- "Chicago Tribune"
+ "DailyWire"
]
}
},
- "/chick-fil-a/content": {
+ "/datasets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of a Chick-fil-A editorial corpus. `type` selects which: `press-room` (289 press releases), `story` (189 blog articles), `page` (147 standalone corporate pages such as hunger relief and community programmes), `legal` (28 terms, policies and promotion rules) or `downloadable-asset` (45 press-kit media entries, which carry a title and link only and never a body). Between them these are every content-bearing corpus Chick-fil-A publishes outside the menu and restaurant catalogs. Article bodies are opt-in via include_body because a single press release runs to roughly 22KB, so a default-on page of 20 would be several hundred KB; without it the endpoint returns titles, links, publish dates and excerpts.",
- "operationId": "chick-fil-a-content",
+ "description": "Lists available read-only scraped datasets and the capabilities supported by each dataset.",
+ "operationId": "datasets-list",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/datasets.listResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List stored scraped datasets",
+ "tags": [
+ "Datasets"
+ ]
+ }
+ },
+ "/datasets/airbnb-markets/facets": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns suppressed distribution counts over the Airbnb markets dataset, honoring the same filters as search. Facet enum: `country`, `market`, `currency`, `superhost`, `guest_favorite`, `rating_band`, `review_band`, `admin1` (top subdivision), `locality` (settlement), `room_type` (`entire_place`/`private_room`/`hotel`/`shared_room`), `property_type` (Airbnb's canonical listing type from the detail page), `amenities` (each amenity with the count of listings offering it). The `admin1`, `locality`, `room_type`, `property_type` and `amenities` facets stay empty until their enrichment coverage is high enough to be reliable. group_by enum: `country`, `market`, `admin1`, `locality`, `room_type`, `property_type`.",
+ "operationId": "datasets-airbnb-markets-facets",
"parameters": [
{
- "description": "Which corpus. One of press-room, story, page, legal, downloadable-asset.",
+ "description": "Facet enum: country, market, currency, superhost, guest_favorite, rating_band, review_band, admin1, locality, room_type, property_type, amenities",
"enum": [
- "press-room",
- "story",
- "page",
- "legal",
- "downloadable-asset"
+ "country",
+ "market",
+ "currency",
+ "superhost",
+ "guest_favorite",
+ "rating_band",
+ "review_band",
+ "admin1",
+ "locality",
+ "room_type",
+ "property_type",
+ "amenities"
],
"in": "query",
- "name": "type",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "press-room"
+ "x-example": "country"
},
{
- "description": "Free-text filter. Results are relevance-ranked when present; otherwise newest first.",
+ "description": "Aggregate cell dimension enum: country, market, admin1, locality, room_type, property_type. Defaults to country",
+ "enum": [
+ "country",
+ "market",
+ "admin1",
+ "locality",
+ "room_type",
+ "property_type"
+ ],
"in": "query",
- "name": "search",
- "type": "string",
- "x-example": "community"
+ "name": "group_by",
+ "type": "string"
},
{
- "description": "1-based page number (default 1)",
+ "description": "Exact ISO-3166-1 alpha-2 country filter, e.g. FR",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "country",
+ "type": "string"
},
{
- "description": "Entries per page, 1-100 (default 20)",
+ "description": "Exact metro-market filter, max 128 characters",
"in": "query",
- "name": "per_page",
- "type": "integer",
- "x-example": 20
+ "name": "market",
+ "type": "string"
},
{
- "description": "Include the full article body (default false -- bodies are large)",
+ "description": "Count only Superhost listings",
"in": "query",
- "name": "include_body",
- "type": "boolean",
- "x-example": false
+ "name": "superhost",
+ "type": "boolean"
+ },
+ {
+ "description": "Count only Guest Favorite listings (an observed lower bound; the badge under-counts)",
+ "in": "query",
+ "name": "guest_favorite",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum listing rating, from 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum listing review count, 0 or greater",
+ "in": "query",
+ "name": "min_review_count",
+ "type": "integer"
+ },
+ {
+ "description": "Freshness filter, an ISO-8601 date (YYYY-MM-DD)",
+ "in": "query",
+ "name": "active_since",
+ "type": "string"
+ },
+ {
+ "description": "Minimum listings per bucket; raises the small-cell suppression floor",
+ "in": "query",
+ "name": "min_listings",
+ "type": "integer"
}
],
"produces": [
@@ -223888,7 +252293,64 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chickfila.contentResponseDoc"
+ "$ref": "#/definitions/datasets.airbnbMarketsFacetResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Facet the Airbnb markets dataset",
+ "tags": [
+ "Datasets"
+ ]
+ }
+ },
+ "/datasets/airbnb-markets/items/{country}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one country's full aggregate Airbnb market profile from dataset id enum value `airbnb-markets` — headline supply, Superhost share, Guest Favorite share (`guest_favorite_pct`, an observed lower bound), `avg_person_capacity` (average guests a listing sleeps over the detail-page-enriched sample), ratings, its top metros, bounding box, per-currency nightly-price percentiles, and a USD-normalized `price_usd` percentile block (converted via an approximate dated FX snapshot) for cross-country comparison. Aggregate-only. Returns 404 for a country below the suppression floor.",
+ "operationId": "datasets-airbnb-markets-item",
+ "parameters": [
+ {
+ "description": "ISO-3166-1 alpha-2 country code, e.g. FR",
+ "in": "path",
+ "name": "country",
+ "required": true,
+ "type": "string",
+ "x-example": "FR"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/datasets.airbnbMarketResponseDoc"
}
},
"400": {
@@ -223909,8 +252371,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -223921,50 +252383,79 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse Chick-fil-A press releases, legal documents and press-kit assets",
+ "summary": "Get an Airbnb market from the dataset",
"tags": [
- "Chick-fil-A"
+ "Datasets"
]
}
},
- "/chick-fil-a/content-taxonomy": {
+ "/datasets/airbnb-markets/nearby": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of a content taxonomy's terms, each with its id, name, slug, parent and the number of entries carrying it. Every id is a ready-to-use `category` or `tag` filter value on GET /chick-fil-a/content, which is what makes the editorial corpora navigable rather than only pageable. `taxonomy` selects the vocabulary: `press_category` (16 terms) and `press_tag` (96) classify press releases, `story_category` (9) and `story_tag` (74) classify blog stories, `legal_category` (8) and `downloadable_asset_category` (7) classify those corpora, and `campaign` (9) is applied across several at once. Terms are ordered by name.",
- "operationId": "chick-fil-a-content-taxonomy",
+ "description": "Returns an aggregate geohash-grid density map of Airbnb listings within a radius of a coordinate, from dataset id enum value `airbnb-markets`. Each cell reports a centroid, listing count and Superhost share; thin cells are suppressed. Aggregate-only.",
+ "operationId": "datasets-airbnb-markets-nearby",
"parameters": [
{
- "description": "Which vocabulary. One of press_category, press_tag, story_category, story_tag, legal_category, downloadable_asset_category, campaign.",
- "enum": [
- "press_category",
- "press_tag",
- "story_category",
- "story_tag",
- "legal_category",
- "downloadable_asset_category",
- "campaign"
- ],
+ "description": "Center latitude, from -90 through 90",
"in": "query",
- "name": "taxonomy",
+ "name": "lat",
"required": true,
- "type": "string",
- "x-example": "press_category"
+ "type": "number",
+ "x-example": 40.7484257
},
{
- "description": "1-based page number (default 1)",
+ "description": "Center longitude, from -180 through 180",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "lon",
+ "required": true,
+ "type": "number",
+ "x-example": -73.98567
},
{
- "description": "Terms per page, 1-100 (default 20)",
+ "description": "Search radius in meters, from 1 through 50000",
"in": "query",
- "name": "per_page",
+ "name": "radius_m",
+ "required": true,
"type": "integer",
- "x-example": 100
+ "x-example": 5000
+ },
+ {
+ "description": "Geohash precision, from 1 through 12; defaults to a value derived from the radius",
+ "in": "query",
+ "name": "precision",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum listings per cell; raises the small-cell suppression floor",
+ "in": "query",
+ "name": "min_listings",
+ "type": "integer"
+ },
+ {
+ "description": "Exact ISO-3166-1 alpha-2 country filter, e.g. US",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Count only Superhost listings",
+ "in": "query",
+ "name": "superhost",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum listing rating, from 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Freshness filter, an ISO-8601 date (YYYY-MM-DD)",
+ "in": "query",
+ "name": "active_since",
+ "type": "string"
}
],
"produces": [
@@ -223974,7 +252465,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chickfila.contentTaxonomyResponseDoc"
+ "$ref": "#/definitions/datasets.airbnbMarketsNearbyResponseDoc"
}
},
"400": {
@@ -223983,8 +252474,137 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Airbnb market density near a coordinate",
+ "tags": [
+ "Datasets"
+ ]
+ }
+ },
+ "/datasets/airbnb-markets/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns aggregate Airbnb short-term-rental market rollups from the dataset id enum value `airbnb-markets`. Aggregate-only: each row is a market cell, never an individual listing. Thin cells are suppressed. group_by enum: `country`, `market`, `admin1` (top subdivision), `locality` (settlement), `room_type` (`entire_place`/`private_room`/`hotel`/`shared_room`), `property_type` (Airbnb's canonical listing type from the detail page). `admin1`, `locality`, `room_type` and `property_type` are enrichment-derived and stay empty until their coverage is high enough to be reliable. Each cell also carries `median_price_usd`, the median nightly price converted to USD via an approximate dated FX snapshot, for cross-country comparison (combine with `group_by=room_type` for median price by room type); `guest_favorite_pct`, the share of listings carrying the Guest Favorite badge (an observed lower bound, like `superhost_pct`); and `avg_person_capacity`, the average guests a listing sleeps over the detail-page-enriched sample. Sort enum: `listings_desc`, `superhost_pct_desc`, `rating_desc`, `key_asc`.",
+ "operationId": "datasets-airbnb-markets-search",
+ "parameters": [
+ {
+ "description": "Aggregate cell dimension enum: country, market, admin1, locality, room_type, property_type. Defaults to country",
+ "enum": [
+ "country",
+ "market",
+ "admin1",
+ "locality",
+ "room_type",
+ "property_type"
+ ],
+ "in": "query",
+ "name": "group_by",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISO-3166-1 alpha-2 country filter, e.g. FR",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Exact metro-market filter, e.g. Paris, max 128 characters",
+ "in": "query",
+ "name": "market",
+ "type": "string"
+ },
+ {
+ "description": "Count only Superhost listings",
+ "in": "query",
+ "name": "superhost",
+ "type": "boolean"
+ },
+ {
+ "description": "Count only Guest Favorite listings (an observed lower bound; the badge under-counts)",
+ "in": "query",
+ "name": "guest_favorite",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum listing rating, from 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum listing review count, 0 or greater",
+ "in": "query",
+ "name": "min_review_count",
+ "type": "integer"
+ },
+ {
+ "description": "Freshness filter, an ISO-8601 date (YYYY-MM-DD); only listings last seen on or after it are counted",
+ "in": "query",
+ "name": "active_since",
+ "type": "string"
+ },
+ {
+ "description": "Minimum listings per cell; raises the small-cell suppression floor (never lowered below the built-in minimum)",
+ "in": "query",
+ "name": "min_listings",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: listings_desc, superhost_pct_desc, rating_desc, key_asc",
+ "enum": [
+ "listings_desc",
+ "superhost_pct_desc",
+ "rating_desc",
+ "key_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/datasets.airbnbMarketsSearchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -223995,8 +252615,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224004,50 +252624,79 @@
},
"security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "List the category and tag vocabularies Chick-fil-A classifies its content under",
- "tags": [
- "Chick-fil-A"
- ]
- }
- },
- "/chick-fil-a/faq": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of Chick-fil-A's published customer FAQ corpus (522 entries at time of writing) across 30 categories -- Chick-fil-A One membership, points and rewards, digital ordering and payment, delivery support, sweepstakes terms, and more. Each entry carries the question, the answer as plain text, the answer's original HTML (a fair number of answers use links, lists and tables that plain text loses), and its resolved categories. Every categories[].id is a ready-to-use value for the category filter. search matches over question and answer text and is relevance-ranked; without it entries come back alphabetically so a caller can page through the whole corpus deterministically.",
- "operationId": "chick-fil-a-faq",
- "parameters": [
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Search the Airbnb markets dataset",
+ "tags": [
+ "Datasets"
+ ]
+ }
+ },
+ "/datasets/apple-podcasts-shows/facets": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns terms aggregation counts for the Apple Podcasts shows dataset. Facet enum: `genre`, `genre_id`, `country`, `content_advisory_rating`, `run_id`.",
+ "operationId": "datasets-apple-podcasts-shows-facets",
+ "parameters": [
+ {
+ "description": "Facet enum: genre, genre_id, country, content_advisory_rating, run_id",
+ "enum": [
+ "genre",
+ "genre_id",
+ "country",
+ "content_advisory_rating",
+ "run_id"
+ ],
+ "in": "query",
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "genre"
+ },
+ {
+ "description": "Full-text query over show title and artist name, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact primary-genre filter, max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
+ },
{
- "description": "Free-text filter over question and answer text. Results are relevance-ranked when present.",
+ "description": "Exact Apple Podcasts genre id filter, max 128 characters",
"in": "query",
- "name": "search",
- "type": "string",
- "x-example": "delivery"
+ "name": "genre_id",
+ "type": "string"
},
{
- "description": "Comma-separated faq_category term ids, up to 20, from any prior response's categories[].id",
+ "description": "Exact storefront country filter, max 128 characters",
"in": "query",
- "name": "category",
- "type": "string",
- "x-example": "58"
+ "name": "country",
+ "type": "string"
},
{
- "description": "1-based page number (default 1)",
+ "description": "Exact explicitness filter, max 128 characters",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "explicitness",
+ "type": "string"
},
{
- "description": "Entries per page, 1-100 (default 20)",
+ "description": "Exact crawl run-id filter, max 128 characters",
"in": "query",
- "name": "per_page",
- "type": "integer",
- "x-example": 20
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum episode count (track_count), 0 or greater",
+ "in": "query",
+ "name": "min_track_count",
+ "type": "integer"
}
],
"produces": [
@@ -224057,7 +252706,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chickfila.faqResponseDoc"
+ "$ref": "#/definitions/datasets.applePodcastsShowsFacetResponseDoc"
}
},
"400": {
@@ -224066,20 +252715,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224090,33 +252733,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse Chick-fil-A customer FAQs",
+ "summary": "Facet Apple Podcasts shows dataset",
"tags": [
- "Chick-fil-A"
+ "Datasets"
]
}
},
- "/chick-fil-a/location": {
+ "/datasets/apple-podcasts-shows/items/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Chick-fil-A restaurant's street address, opening hours, cuisine description and photo, selected by either its numeric id or its slug (supply exactly one of the two -- passing both is rejected). opening_hours carries one entry per day; a day Chick-fil-A publishes as closed (notably every Sunday, and every day for a seasonal or food-truck location that is not currently operating) comes back with closed=true and empty opens/closes rather than a placeholder time. This response carries a postal address but no latitude/longitude -- Chick-fil-A does not publish coordinates for its restaurants, and this endpoint does not synthesize them.",
- "operationId": "chick-fil-a-location",
+ "description": "Returns one crawled Apple Podcasts show record by id from dataset id enum value `apple-podcasts-shows`.",
+ "operationId": "datasets-apple-podcasts-shows-item",
"parameters": [
{
- "description": "Numeric WordPress post id. Supply either id or slug, not both.",
- "in": "query",
+ "description": "Apple Podcasts numeric show id (e.g. 173001861)",
+ "in": "path",
"name": "id",
- "type": "integer",
- "x-example": 53696
- },
- {
- "description": "Restaurant slug, e.g. from a directory response. Supply either id or slug, not both.",
- "in": "query",
- "name": "slug",
+ "required": true,
"type": "string",
- "x-example": "branson-food-truck"
+ "x-example": "173001861"
}
],
"produces": [
@@ -224126,7 +252763,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chickfila.locationResponseDoc"
+ "$ref": "#/definitions/datasets.applePodcastsShowResponseDoc"
}
},
"400": {
@@ -224147,8 +252784,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224159,40 +252796,86 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Chick-fil-A restaurant's address and hours",
+ "summary": "Get an Apple Podcasts show from dataset",
"tags": [
- "Chick-fil-A"
+ "Datasets"
]
}
},
- "/chick-fil-a/locations": {
+ "/datasets/apple-podcasts-shows/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of Chick-fil-A's restaurant directory (3,467 restaurants at time of writing): each restaurant's id, slug, name, US state and its page URL. search filters by free text over restaurant names and is relevance-ranked; without it restaurants come back alphabetically so a caller can page through the whole directory deterministically. This index deliberately carries no address or hours -- Chick-fil-A does not expose them on the directory listing. Pass a slug from here to GET /chick-fil-a/location to get street address and opening hours for one restaurant.",
- "operationId": "chick-fil-a-locations",
+ "description": "Searches the crawled public Apple Podcasts show catalog stored in a search index. One row per show. Discovered from a country x genre x collection chart grid and a search-term sweep — not a full catalog of every Apple Podcasts show. Sort enum: `relevance`, `popularity`, `track_count_desc`, `release_desc`, `title_asc`.",
+ "operationId": "datasets-apple-podcasts-shows-search",
"parameters": [
{
- "description": "Free-text filter over restaurant names. Results are relevance-ranked when present.",
+ "description": "Full-text query over show title and artist name, max 256 characters",
"in": "query",
- "name": "search",
- "type": "string",
- "x-example": "branson"
+ "name": "q",
+ "type": "string"
},
{
- "description": "1-based page number (default 1)",
+ "description": "Exact primary-genre filter (e.g. Comedy, True Crime), max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
+ },
+ {
+ "description": "Exact Apple Podcasts genre id filter (e.g. 1303 for Comedy), max 128 characters",
+ "in": "query",
+ "name": "genre_id",
+ "type": "string"
+ },
+ {
+ "description": "Exact storefront country filter (the crawl's discovery storefront, e.g. us, gb), max 128 characters",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Exact explicitness filter as reported by Apple (e.g. explicit, cleaned), max 128 characters",
+ "in": "query",
+ "name": "explicitness",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum episode count (track_count), 0 or greater",
+ "in": "query",
+ "name": "min_track_count",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, popularity, track_count_desc, release_desc, title_asc",
+ "enum": [
+ "relevance",
+ "popularity",
+ "track_count_desc",
+ "release_desc",
+ "title_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Restaurants per page, 1-100 (default 20)",
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
"in": "query",
- "name": "per_page",
- "type": "integer",
- "x-example": 20
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -224202,7 +252885,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chickfila.locationsResponseDoc"
+ "$ref": "#/definitions/datasets.applePodcastsShowsSearchResponseDoc"
}
},
"400": {
@@ -224211,20 +252894,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224235,68 +252912,106 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse Chick-fil-A restaurant locations",
+ "summary": "Search Apple Podcasts shows dataset",
"tags": [
- "Chick-fil-A"
+ "Datasets"
]
}
},
- "/chick-fil-a/menu": {
+ "/datasets/apps-charts/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of Chick-fil-A's published menu catalog (567 items at time of writing): item name, slug, Chick-fil-A's own item tag, an ordering deep link, and the taxonomy term ids the item belongs to. Every id in a response's menu_taxonomy_ids, menu_item_type_ids, menu_item_group_ids and nutrition_table_menu_ids is a ready-to-use filter value for a follow-up call, and GET /chick-fil-a/menu-taxonomy lists each taxonomy's terms with their names. search filters by free text and is ranked by relevance; without it items come back alphabetically so a caller can page through the whole catalog deterministically. Note this catalog carries no prices or nutrition values -- Chick-fil-A does not publish either through this source.",
- "operationId": "chick-fil-a-menu",
+ "description": "Searches daily top-chart snapshots scraped from the iOS App Store and Google Play, stored in a search index (one document per chart × snapshot × rank). With no `date` the latest snapshot is returned (today's chart); pair `app_id` with `sort=date_desc` for an app's rank over time. Store enum: `ios`, `android`. Chart type enum: `top_free`, `top_paid`, `top_grossing`, `new`. Platform enum (Apple device platforms, ios charts only): `phone`, `pad`, `mac`. Sort enum: `rank`, `rank_desc`, `date_desc`.",
+ "operationId": "datasets-apps-charts-search",
"parameters": [
{
- "description": "Free-text filter over item names. Results are relevance-ranked when present.",
+ "description": "Full-text query over chart-entry title and developer, max 256 characters",
"in": "query",
- "name": "search",
- "type": "string",
- "x-example": "nuggets"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Comma-separated menu_taxonomy term ids (menu section, e.g. Breakfast, Beverages), up to 20",
+ "description": "Store enum: ios, android",
+ "enum": [
+ "ios",
+ "android"
+ ],
"in": "query",
- "name": "menu_taxonomy",
- "type": "string",
- "x-example": "265"
+ "name": "store",
+ "type": "string"
},
{
- "description": "Comma-separated menu_item_type term ids (ITEM, ITEM_GROUPING, MODIFIER), up to 20",
+ "description": "Chart enum: top_free, top_paid, top_grossing, new",
+ "enum": [
+ "top_free",
+ "top_paid",
+ "top_grossing",
+ "new"
+ ],
"in": "query",
- "name": "menu_item_type",
- "type": "string",
- "x-example": "431"
+ "name": "chart_type",
+ "type": "string"
},
{
- "description": "Comma-separated menu_item_group term ids (the grouping a variant belongs to), up to 20",
+ "description": "Apple device-platform filter, iOS charts only; see platform enum above",
"in": "query",
- "name": "menu_item_group",
- "type": "string",
- "x-example": "899"
+ "name": "platform",
+ "type": "string"
},
{
- "description": "Comma-separated nutrition_table_menu term ids (published nutrition-table grouping), up to 20",
+ "description": "Raw store collection id filter (e.g. topgrossingapplications, GROSSING), max 128 characters",
"in": "query",
- "name": "nutrition_table_menu",
- "type": "string",
- "x-example": "368"
+ "name": "collection",
+ "type": "string"
},
{
- "description": "1-based page number (default 1)",
+ "description": "Store category/genre filter, max 128 characters; empty for the overall charts",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Exact storefront country filter, max 128 characters",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Exact app filter — iOS numeric track id or Android package; pair with sort=date_desc for rank history",
+ "in": "query",
+ "name": "app_id",
+ "type": "string"
+ },
+ {
+ "description": "Snapshot date filter yyyy-MM-dd; defaults to the latest snapshot",
+ "in": "query",
+ "name": "date",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: rank, rank_desc, date_desc",
+ "enum": [
+ "rank",
+ "rank_desc",
+ "date_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Items per page, 1-100 (default 20)",
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
"in": "query",
- "name": "per_page",
- "type": "integer",
- "x-example": 20
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -224306,7 +253021,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chickfila.menuResponseDoc"
+ "$ref": "#/definitions/datasets.chartsSearchResponseDoc"
}
},
"400": {
@@ -224315,20 +253030,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224339,33 +253048,77 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse the Chick-fil-A menu",
+ "summary": "Search the app-charts dataset",
"tags": [
- "Chick-fil-A"
+ "Datasets"
]
}
},
- "/chick-fil-a/menu-item": {
+ "/datasets/apps-reviews/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Chick-fil-A menu item, selected by either its numeric id or its slug (supply exactly one of the two -- passing both is rejected). Unlike the listing endpoint, this resolves the item's taxonomy term ids to names, so menu_sections, item_types, item_groups and nutrition_tables each come back as {id, name, slug} triples rather than bare ids. Term resolution is best-effort: if the taxonomy lookups fail the item is still returned with ids and empty names rather than failing the whole call. This item detail carries no price and no nutrition values -- Chick-fil-A does not publish either through this source.",
- "operationId": "chick-fil-a-menu-item",
+ "description": "Searches user reviews scraped from the iOS App Store and Google Play, stored in a search index (one document per review). Store enum: `ios`, `android`. Sort enum: `recent`, `score_desc`, `score_asc`, `helpful_desc`.",
+ "operationId": "datasets-apps-reviews-search",
"parameters": [
{
- "description": "Numeric WordPress post id. Supply either id or slug, not both.",
+ "description": "Full-text query over review text, title and author, max 256 characters",
"in": "query",
- "name": "id",
- "type": "integer",
- "x-example": 10613
+ "name": "q",
+ "type": "string"
},
{
- "description": "Item slug, e.g. from a listing response. Supply either id or slug, not both.",
+ "description": "Store enum: ios, android",
+ "enum": [
+ "ios",
+ "android"
+ ],
"in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "chick-fil-a-filet"
+ "name": "store",
+ "type": "string"
+ },
+ {
+ "description": "Exact app filter — iOS numeric track id or Android package, max 128 characters",
+ "in": "query",
+ "name": "app_id",
+ "type": "string"
+ },
+ {
+ "description": "Exact storefront country filter, max 128 characters",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Minimum star rating, 1 through 5",
+ "in": "query",
+ "name": "min_score",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: recent, score_desc, score_asc, helpful_desc",
+ "enum": [
+ "recent",
+ "score_desc",
+ "score_asc",
+ "helpful_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -224375,7 +253128,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chickfila.menuItemResponseDoc"
+ "$ref": "#/definitions/datasets.reviewsSearchResponseDoc"
}
},
"400": {
@@ -224384,20 +253137,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224408,47 +253155,108 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Chick-fil-A menu item",
+ "summary": "Search the app-reviews dataset",
"tags": [
- "Chick-fil-A"
+ "Datasets"
]
}
},
- "/chick-fil-a/menu-taxonomy": {
+ "/datasets/apps/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of terms for a single Chick-fil-A menu taxonomy, with each term's id, name, slug, parent and how many menu items carry it. This is how to discover the filter ids GET /chick-fil-a/menu accepts. taxonomy must be one of `menu_taxonomy` (customer-facing menu section -- Breakfast, Beverages, Catering Entrées, ... 36 terms), `menu_item_type` (`ITEM`, `ITEM_GROUPING`, `MODIFIER` -- 3 terms), `menu_item_group` (the grouping a variant belongs to, e.g. \"Bacon, Egg & Cheese Biscuit\" -- 100+ terms), or `nutrition_table_menu` (the grouping used by Chick-fil-A's published nutrition tables -- 18 terms). Terms come back alphabetically.",
- "operationId": "chick-fil-a-menu-taxonomy",
+ "description": "Searches resolved iOS App Store and Google Play apps stored in a search index. Store enum: `ios`, `android`, `both`. Platform enum (Apple device platforms, ios records only): `phone`, `pad`, `mac`, `tv`, `watch`, `vision`. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `installs_desc`, `updated_at_desc`, `popularity_desc`.",
+ "operationId": "datasets-apps-search",
"parameters": [
{
- "description": "Which taxonomy to list. One of menu_taxonomy, menu_item_type, menu_item_group, nutrition_table_menu.",
+ "description": "Full-text query over title, developer and category, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Store enum: ios, android, both",
"enum": [
- "menu_taxonomy",
- "menu_item_type",
- "menu_item_group",
- "nutrition_table_menu"
+ "ios",
+ "android",
+ "both"
],
"in": "query",
- "name": "taxonomy",
- "required": true,
- "type": "string",
- "x-example": "menu_taxonomy"
+ "name": "store",
+ "type": "string"
},
{
- "description": "1-based page number (default 1)",
+ "collectionFormat": "csv",
+ "description": "Repeatable Apple device-platform filter (OR); see platform enum above",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "platforms",
+ "type": "array"
+ },
+ {
+ "description": "Exact app-store category filter, max 128 characters",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Exact storefront country filter, max 128 characters",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Exact developer/publisher name filter, max 128 characters",
+ "in": "query",
+ "name": "developer",
+ "type": "string"
+ },
+ {
+ "description": "Filter by price; true keeps only free apps, false only paid",
+ "in": "query",
+ "name": "free",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum store rating, 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum ratings/review count",
+ "in": "query",
+ "name": "min_reviews",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, rating_desc, reviews_desc, installs_desc, updated_at_desc, popularity_desc",
+ "enum": [
+ "relevance",
+ "rating_desc",
+ "reviews_desc",
+ "installs_desc",
+ "updated_at_desc",
+ "popularity_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Terms per page, 1-100 (default 20)",
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
"in": "query",
- "name": "per_page",
- "type": "integer",
- "x-example": 100
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -224458,7 +253266,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chickfila.menuTaxonomyResponseDoc"
+ "$ref": "#/definitions/datasets.appsSearchResponseDoc"
}
},
"400": {
@@ -224467,20 +253275,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224491,41 +253293,99 @@
"ApiKeyAuth": []
}
],
- "summary": "List one Chick-fil-A menu taxonomy's terms",
+ "summary": "Search the apps-intelligence dataset",
"tags": [
- "Chick-fil-A"
+ "Datasets"
]
}
},
- "/chipotle/ingredients": {
+ "/datasets/bbb-businesses/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Chipotle's raw-ingredient content pages -- sourcing story, marketing copy, imagery -- and the per-item recipe breakdown. ingredients[] has one entry per raw ingredient (Avocado, Yellow Onion, ...), each with its facts/sourcing copy and the menu_item_ids it appears in. ingredient_groups[] is the reverse view: one entry per recipe category (proteins, rice and beans, ...) listing each item's exact ingredient_keys, joinable against ingredients[].key for the human-readable name. Nothing else in this family exposes either ingredient content or recipe-level composition.",
- "operationId": "chipotle-ingredients",
+ "description": "Returns distribution counts over the BBB businesses index (dataset id enum value `bbb-businesses`), honoring the same filters as search. Facet enum: `category`, `state`, `city`, `rating`, `accredited`, `entity_type`, `run_id`.",
+ "operationId": "datasets-bbb-businesses-facets",
"parameters": [
{
- "description": "Ordering surface. One of web, web-mobile. Default web-mobile.",
+ "description": "Facet enum: category, state, city, rating, accredited, entity_type, run_id",
"enum": [
- "web",
- "web-mobile"
+ "category",
+ "state",
+ "city",
+ "rating",
+ "accredited",
+ "entity_type",
+ "run_id"
],
"in": "query",
- "name": "channel",
+ "name": "facet",
+ "required": true,
"type": "string",
- "x-example": "web-mobile"
+ "x-example": "category"
},
{
- "description": "Country catalog. One of US, CA. Default US.",
+ "description": "Full-text match on the business name/category, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact category filter",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Exact 2-letter state/province filter",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact city filter",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Exact letter-grade rating filter. Enum: A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F",
"enum": [
- "US",
- "CA"
+ "A+",
+ "A",
+ "A-",
+ "B+",
+ "B",
+ "B-",
+ "C+",
+ "C",
+ "C-",
+ "D+",
+ "D",
+ "D-",
+ "F"
],
"in": "query",
- "name": "region",
- "type": "string",
- "x-example": "US"
+ "name": "rating",
+ "type": "string"
+ },
+ {
+ "description": "Accreditation filter",
+ "in": "query",
+ "name": "accredited",
+ "type": "boolean"
+ },
+ {
+ "description": "Exact entity-type filter",
+ "in": "query",
+ "name": "entity_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run id filter",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
}
],
"produces": [
@@ -224535,7 +253395,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chipotle.ingredientsResponseDoc"
+ "$ref": "#/definitions/datasets.bbbBusinessesFacetResponseDoc"
}
},
"400": {
@@ -224550,8 +253410,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224562,19 +253422,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chipotle's ingredient content catalog",
+ "summary": "Facet the BBB businesses dataset",
"tags": [
- "Chipotle"
+ "Datasets"
]
}
},
- "/chipotle/meals": {
+ "/datasets/bbb-businesses/items/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Chipotle's preset meal definitions -- the named combinations its ordering flow offers (Build-Your-Own Chicken and similar), each with an id, name, type and a description listing what the meal contains. Takes no parameters.",
- "operationId": "chipotle-meals",
+ "description": "Returns one business by id from dataset id enum value `bbb-businesses`. Returns 404 when the business is not in the index.",
+ "operationId": "datasets-bbb-businesses-item",
+ "parameters": [
+ {
+ "description": "Business id (the - slug from the profile URL), e.g. 0825-1000223803",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "0825-1000223803"
+ }
+ ],
"produces": [
"application/json"
],
@@ -224582,7 +253452,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chipotle.mealsResponseDoc"
+ "$ref": "#/definitions/datasets.bbbBusinessResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -224591,8 +253473,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224603,19 +253485,116 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chipotle's preset meal definitions",
+ "summary": "Get a business from the BBB businesses dataset",
"tags": [
- "Chipotle"
+ "Datasets"
]
}
},
- "/chipotle/menu": {
+ "/datasets/bbb-businesses/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Chipotle's restaurant-independent menu catalog -- every item it sells nationally, split into entrees, sides and drinks, with each item's category, type, primary filling and full customization tree. Takes no parameters. Prices are deliberately omitted from this response: Chipotle prices per restaurant, so the upstream returns every price as zero here, and surfacing a field of zeros would read as \"free\" rather than \"unpriced\". Use GET /chipotle/restaurant/menu for real prices.",
- "operationId": "chipotle-menu",
+ "description": "Searches the BBB (Better Business Bureau) businesses index (dataset id enum value `bbb-businesses`) — business profiles crawled from bbb.org's own search/category-browse pages: computed A+-F letter-grade rating, paid-accreditation status, category, contact info, business details, operating hours, and products/services. Complaints, full reviews, and the full \"reasons for rating\"/service-area detail are NOT embedded here; each record instead carries complaints_url/reviews_url/more_info_url pointing at the live bbb-business-complaints/bbb-business-reviews/bbb-business-more-info endpoints for on-demand lookup. rating enum: `A+`, `A`, `A-`, `B+`, `B`, `B-`, `C+`, `C`, `C-`, `D+`, `D`, `D-`, `F`. sort enum: `relevance`, `rating_desc`, `rating_asc`, `accredited_first`, `name_asc`, `years_in_business_desc`.",
+ "operationId": "datasets-bbb-businesses-search",
+ "parameters": [
+ {
+ "description": "Full-text match on the business name/category, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact category filter, e.g. Plumber. Use the values returned by facets?facet=category",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Exact 2-letter state/province filter, parsed from the profile URL, e.g. tx",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact city filter, parsed from the profile URL",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Exact letter-grade rating filter. Enum: A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F",
+ "enum": [
+ "A+",
+ "A",
+ "A-",
+ "B+",
+ "B",
+ "B-",
+ "C+",
+ "C",
+ "C-",
+ "D+",
+ "D",
+ "D-",
+ "F"
+ ],
+ "in": "query",
+ "name": "rating",
+ "type": "string"
+ },
+ {
+ "description": "Numeric floor against the denormalized rating rank (A+=12 down to F=0), e.g. 10 for 'A- and above'",
+ "in": "query",
+ "name": "min_rating_rank",
+ "type": "integer"
+ },
+ {
+ "description": "Accreditation filter; true keeps only accredited businesses",
+ "in": "query",
+ "name": "accredited",
+ "type": "boolean"
+ },
+ {
+ "description": "Exact entity-type filter, e.g. Limited Liability Company (LLC)",
+ "in": "query",
+ "name": "entity_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run id filter",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, rating_desc, rating_asc, accredited_first, name_asc, years_in_business_desc",
+ "enum": [
+ "relevance",
+ "rating_desc",
+ "rating_asc",
+ "accredited_first",
+ "name_asc",
+ "years_in_business_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
@@ -224623,7 +253602,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chipotle.nationalMenuResponseDoc"
+ "$ref": "#/definitions/datasets.bbbBusinessesSearchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -224632,8 +253617,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224644,41 +253629,134 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chipotle's national menu catalog",
+ "summary": "Search the BBB businesses dataset",
"tags": [
- "Chipotle"
+ "Datasets"
]
}
},
- "/chipotle/menu/metadata": {
+ "/datasets/boxofficemojo/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Chipotle's menu presentation metadata -- the data no other Chipotle endpoint carries. Categories are the menu nav sections (Burrito, Bowl, Salad, ...) with their own description, imagery and the customization sections each offers. Items carry per-item nutrition (calories and portion) and dietary tag codes. Item sections and item groups describe the customization pick-groups and shared item aliases (e.g. cauliflower rice offered as both an entree side and a taco filling). Dietary tag groups are the full tag taxonomy (Plant Based, Lifestyle, I'm Avoiding, ...) that item dietary tag codes join against for a human-readable name and badge. Join on item_id against /chipotle/menu or /chipotle/restaurant/menu for prices; this endpoint has none.",
- "operationId": "chipotle-menu-metadata",
+ "description": "Returns terms-aggregation counts for one facet of the Box Office Mojo dataset, scoped to the same filters as search. Facet enum: `gross_band`, `years_active`, `lifetime_year`, `franchise_names`, `brand_names`, `genre_names`, `hydrated`, `is_billion_dollar`, `in_lifetime_top_1000_ww`. gross_band enum: `under_50m`, `50_100m`, `100_250m`, `250_500m`, `500m_1b`, `over_1b`.",
+ "operationId": "datasets-boxofficemojo-facets",
"parameters": [
{
- "description": "Ordering surface. One of web, web-mobile. Default web-mobile.",
+ "description": "Facet enum: gross_band, years_active, lifetime_year, franchise_names, brand_names, genre_names, hydrated, is_billion_dollar, in_lifetime_top_1000_ww",
"enum": [
- "web",
- "web-mobile"
+ "gross_band",
+ "years_active",
+ "lifetime_year",
+ "franchise_names",
+ "brand_names",
+ "genre_names",
+ "hydrated",
+ "is_billion_dollar",
+ "in_lifetime_top_1000_ww"
],
"in": "query",
- "name": "channel",
+ "name": "facet",
+ "required": true,
"type": "string",
- "x-example": "web-mobile"
+ "x-example": "gross_band"
},
{
- "description": "Country catalog. One of US, CA. Default US.",
- "enum": [
- "US",
- "CA"
- ],
+ "description": "Full-text query, max 256 characters",
"in": "query",
- "name": "region",
- "type": "string",
- "x-example": "US"
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact title id (IMDb tt… id used by Box Office Mojo), max 32 characters",
+ "in": "query",
+ "name": "title_id",
+ "type": "string"
+ },
+ {
+ "description": "Year in years_active",
+ "in": "query",
+ "name": "year",
+ "type": "integer"
+ },
+ {
+ "description": "Primary lifetime chart year",
+ "in": "query",
+ "name": "lifetime_year",
+ "type": "integer"
+ },
+ {
+ "description": "Gross band filter",
+ "in": "query",
+ "name": "gross_band",
+ "type": "string"
+ },
+ {
+ "description": "Franchise name filter, max 128 characters",
+ "in": "query",
+ "name": "franchise",
+ "type": "string"
+ },
+ {
+ "description": "Brand name filter, max 128 characters",
+ "in": "query",
+ "name": "brand",
+ "type": "string"
+ },
+ {
+ "description": "Genre name filter, max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
+ },
+ {
+ "description": "Only titles in the lifetime worldwide top 1000 chart",
+ "in": "query",
+ "name": "in_lifetime_top_1000",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum lifetime worldwide gross",
+ "in": "query",
+ "name": "min_worldwide",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum lifetime worldwide gross",
+ "in": "query",
+ "name": "max_worldwide",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum lifetime domestic gross",
+ "in": "query",
+ "name": "min_domestic",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum foreign share of worldwide gross, 0 through 1",
+ "in": "query",
+ "name": "min_foreign_share",
+ "type": "number"
+ },
+ {
+ "description": "Maximum domestic share of worldwide gross, 0 through 1",
+ "in": "query",
+ "name": "max_domestic_share",
+ "type": "number"
+ },
+ {
+ "description": "Hydrated filter",
+ "in": "query",
+ "name": "hydrated",
+ "type": "boolean"
+ },
+ {
+ "description": "Only titles with worldwide gross of at least $1B",
+ "in": "query",
+ "name": "is_billion_dollar",
+ "type": "boolean"
}
],
"produces": [
@@ -224688,7 +253766,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chipotle.menuMetadataResponseDoc"
+ "$ref": "#/definitions/datasets.boxOfficeMojoFacetResponseDoc"
}
},
"400": {
@@ -224703,8 +253781,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224715,27 +253793,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chipotle's menu presentation metadata",
+ "summary": "Facet the Box Office Mojo dataset",
"tags": [
- "Chipotle"
+ "Datasets"
]
}
},
- "/chipotle/restaurant": {
+ "/datasets/boxofficemojo/items/{title_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Chipotle restaurant by its numeric restaurant number. Note this single-restaurant route returns a leaner record than GET /chipotle/restaurants: the proximity search accepts an embeds parameter that pulls in hours and capability flags, and no such parameter exists here, so those fields may be absent. If you need the full record for a known restaurant, call /chipotle/restaurants with a tight radius around it instead.",
- "operationId": "chipotle-restaurant",
+ "description": "Returns one Box Office Mojo dataset record by title id (IMDb `tt…` id used on Box Office Mojo title pages), including lifetime grosses, year history, release groups and market grosses when hydrated.",
+ "operationId": "datasets-boxofficemojo-item",
"parameters": [
{
- "description": "Chipotle's numeric restaurant id",
- "in": "query",
- "name": "restaurant_number",
+ "description": "Title id (IMDb tt… id), e.g. tt0499549",
+ "in": "path",
+ "name": "title_id",
"required": true,
"type": "string",
- "x-example": "3982"
+ "x-example": "tt0499549"
}
],
"produces": [
@@ -224745,7 +253823,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chipotle.restaurantResponseDoc"
+ "$ref": "#/definitions/datasets.boxOfficeMojoItemResponseDoc"
}
},
"400": {
@@ -224766,8 +253844,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224778,39 +253856,150 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Chipotle restaurant",
+ "summary": "Get a Box Office Mojo title from the dataset",
"tags": [
- "Chipotle"
+ "Datasets"
]
}
},
- "/chipotle/restaurant/meals": {
+ "/datasets/boxofficemojo/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the preset meals one Chipotle restaurant sells -- group Build-Your-Own packs, the High Protein line and limited-time Influencer meals -- each with its dine-in and delivery price at that restaurant, calorie label, dietary and macro tags, the components that make it up, merchandising tags and images. Prices are genuinely restaurant-specific: the same Build-Your-Own Chicken pack is priced differently from one location to another, so this is the endpoint to use for real pricing rather than /chipotle/meals, which lists the national meal definitions with no prices at all. Calorie labels are a range for build-your-own meals and a single figure for fixed ones, so they are returned as strings. Restaurant numbers come from GET /chipotle/restaurants.",
- "operationId": "chipotle-restaurant-meals",
+ "description": "Searches theatrical box-office records from public Box Office Mojo charts and title pages, stored in a search index. Filter by title id, year, franchise/brand/genre, gross band, lifetime top-1000 membership, hydration status, and worldwide/domestic gross ranges. Sort enum: `relevance`, `worldwide_desc`, `domestic_desc`, `peak_worldwide_desc`, `lifetime_rank_asc`, `year_desc`, `year_asc`. gross_band enum: `under_50m`, `50_100m`, `100_250m`, `250_500m`, `500m_1b`, `over_1b`.",
+ "operationId": "datasets-boxofficemojo-search",
"parameters": [
{
- "description": "Chipotle's numeric restaurant id, from /chipotle/restaurants",
+ "description": "Full-text query over title and taxonomy names, max 256 characters",
"in": "query",
- "name": "restaurant_number",
- "required": true,
- "type": "string",
- "x-example": "3982"
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact title id (IMDb tt… id used by Box Office Mojo), max 32 characters",
+ "in": "query",
+ "name": "title_id",
+ "type": "string"
+ },
+ {
+ "description": "Year that must appear in years_active",
+ "in": "query",
+ "name": "year",
+ "type": "integer"
+ },
+ {
+ "description": "Primary lifetime chart year",
+ "in": "query",
+ "name": "lifetime_year",
+ "type": "integer"
+ },
+ {
+ "description": "Gross band enum: under_50m, 50_100m, 100_250m, 250_500m, 500m_1b, over_1b",
+ "enum": [
+ "under_50m",
+ "50_100m",
+ "100_250m",
+ "250_500m",
+ "500m_1b",
+ "over_1b"
+ ],
+ "in": "query",
+ "name": "gross_band",
+ "type": "string"
+ },
+ {
+ "description": "Franchise name filter, max 128 characters",
+ "in": "query",
+ "name": "franchise",
+ "type": "string"
+ },
+ {
+ "description": "Brand name filter, max 128 characters",
+ "in": "query",
+ "name": "brand",
+ "type": "string"
+ },
+ {
+ "description": "Genre name filter, max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
+ },
+ {
+ "description": "Only titles in the lifetime worldwide top 1000 chart",
+ "in": "query",
+ "name": "in_lifetime_top_1000",
+ "type": "boolean"
+ },
+ {
+ "description": "Only titles with hydrated release groups and market grosses",
+ "in": "query",
+ "name": "hydrated",
+ "type": "boolean"
+ },
+ {
+ "description": "Only titles with worldwide gross of at least $1B",
+ "in": "query",
+ "name": "is_billion_dollar",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum lifetime worldwide gross in whole USD dollars",
+ "in": "query",
+ "name": "min_worldwide",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum lifetime worldwide gross in whole USD dollars",
+ "in": "query",
+ "name": "max_worldwide",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum lifetime domestic gross in whole USD dollars",
+ "in": "query",
+ "name": "min_domestic",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum foreign share of worldwide gross, 0 through 1",
+ "in": "query",
+ "name": "min_foreign_share",
+ "type": "number"
+ },
+ {
+ "description": "Maximum domestic share of worldwide gross, 0 through 1",
+ "in": "query",
+ "name": "max_domestic_share",
+ "type": "number"
},
{
- "description": "Filter to one meal family. One of BuildYourOwn, HighProtein, Influencer.",
+ "description": "Sort enum: relevance, worldwide_desc, domestic_desc, peak_worldwide_desc, lifetime_rank_asc, year_desc, year_asc",
"enum": [
- "BuildYourOwn",
- "HighProtein",
- "Influencer"
+ "relevance",
+ "worldwide_desc",
+ "domestic_desc",
+ "peak_worldwide_desc",
+ "lifetime_rank_asc",
+ "year_desc",
+ "year_asc"
],
"in": "query",
- "name": "meal_type",
- "type": "string",
- "x-example": "HighProtein"
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -224820,7 +254009,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chipotle.restaurantMealsResponseDoc"
+ "$ref": "#/definitions/datasets.boxOfficeMojoSearchResponseDoc"
}
},
"400": {
@@ -224829,20 +254018,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224853,34 +254036,38 @@
"ApiKeyAuth": []
}
],
- "summary": "List one Chipotle restaurant's preset meals with prices",
+ "summary": "Search the Box Office Mojo dataset",
"tags": [
- "Chipotle"
+ "Datasets"
]
}
},
- "/chipotle/restaurant/menu": {
+ "/datasets/chrome-extensions/changes": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one restaurant's live online menu split into entrees, sides, drinks and non-food items. This is the only Chipotle endpoint that carries prices: every item has both a dine-in price and a delivery price, which genuinely differ. Each item also carries its full customization tree -- contents (the individual fillings, salsas and sides that make it up, each with their own price pair) and content_groups (how many picks each group allows). Prices are per-restaurant, so two restaurants will legitimately return different numbers for the same item.",
- "operationId": "chipotle-restaurant-menu",
+ "description": "Returns recent change observations. Change type enum: `users`, `rating`, `rating_count`, `version`, `developer`, `permissions`, `privacy`, `status`.",
+ "operationId": "datasets-chrome-extensions-changes",
"parameters": [
{
- "description": "Chipotle's numeric restaurant id",
+ "description": "Change type enum: users, rating, rating_count, version, developer, permissions, privacy, status",
+ "enum": [
+ "users",
+ "rating",
+ "rating_count",
+ "version",
+ "developer",
+ "permissions",
+ "privacy",
+ "status"
+ ],
"in": "query",
- "name": "restaurant_number",
- "required": true,
- "type": "string",
- "x-example": "3982"
+ "name": "change_type",
+ "type": "string"
},
{
- "description": "Include items the restaurant currently has unavailable (default false)",
+ "description": "Maximum observations, default 100, max 500",
"in": "query",
- "name": "include_unavailable",
- "type": "boolean",
- "x-example": true
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -224890,7 +254077,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chipotle.restaurantMenuResponseDoc"
+ "$ref": "#/definitions/datasets.chromeExtensionChangesResponseDoc"
}
},
"400": {
@@ -224899,20 +254086,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -224923,56 +254104,141 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Chipotle restaurant's menu with prices",
+ "summary": "Get recent Chrome Web Store item changes",
"tags": [
- "Chipotle"
+ "Datasets"
]
}
},
- "/chipotle/restaurants": {
+ "/datasets/chrome-extensions/facets": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Chipotle restaurants near a latitude/longitude, ordered by distance. Each restaurant carries its number (the id every other Chipotle endpoint takes), name, status, full postal address with coordinates, published open/close hours per day, nearest cross streets, timezone, and capability flags (Chipotlane pickup, online ordering, catering, curbside pickup, dining room open, walk-up window). A coordinate with no Chipotle nearby returns an empty list rather than an error.",
- "operationId": "chipotle-restaurants",
+ "description": "Returns aggregation buckets. Facet enum: `item_type`, `category`, `developer`, `developer_email`, `manifest_version`, `permission`, `status`, `collects_data`, `has_broad_host_access`. Item type enum: `extension`, `theme`, `app`, `unknown`. Search sort, status and manifest-version enums match the search endpoint.",
+ "operationId": "datasets-chrome-extensions-facets",
"parameters": [
{
- "description": "Search center latitude",
+ "description": "Facet enum: item_type, category, developer, developer_email, manifest_version, permission, status, collects_data, has_broad_host_access",
+ "enum": [
+ "item_type",
+ "category",
+ "developer",
+ "developer_email",
+ "manifest_version",
+ "permission",
+ "status",
+ "collects_data",
+ "has_broad_host_access"
+ ],
"in": "query",
- "name": "latitude",
+ "name": "facet",
"required": true,
- "type": "number",
- "x-example": 34.0522
+ "type": "string",
+ "x-example": "item_type"
},
{
- "description": "Search center longitude",
+ "description": "Full-text query",
"in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -118.2437
+ "name": "q",
+ "type": "string"
},
{
- "description": "Search radius in meters, 1-80000 (default 8000)",
+ "description": "Item type enum: extension, theme, app, unknown",
+ "enum": [
+ "extension",
+ "theme",
+ "app",
+ "unknown"
+ ],
"in": "query",
- "name": "radius",
- "type": "integer",
- "x-example": 8000
+ "name": "item_type",
+ "type": "string"
},
{
- "description": "Restaurants per page, 1-50 (default 10)",
+ "description": "Exact category",
"in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 10
+ "name": "category",
+ "type": "string"
},
{
- "description": "0-based page index (default 0)",
+ "description": "Exact developer",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 0
+ "name": "developer",
+ "type": "string"
+ },
+ {
+ "description": "Exact developer email",
+ "in": "query",
+ "name": "developer_email",
+ "type": "string"
+ },
+ {
+ "description": "Exact permission",
+ "in": "query",
+ "name": "permission",
+ "type": "string"
+ },
+ {
+ "description": "Status enum: active, removed",
+ "enum": [
+ "active",
+ "removed"
+ ],
+ "in": "query",
+ "name": "status",
+ "type": "string"
+ },
+ {
+ "description": "Manifest version enum: 2, 3",
+ "enum": [
+ 2,
+ 3
+ ],
+ "in": "query",
+ "name": "manifest_version",
+ "type": "integer"
+ },
+ {
+ "description": "Data-collection filter",
+ "in": "query",
+ "name": "collects_data",
+ "type": "boolean"
+ },
+ {
+ "description": "Broad-host-access filter",
+ "in": "query",
+ "name": "has_broad_host_access",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum users",
+ "in": "query",
+ "name": "min_users",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum rating",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum rating count",
+ "in": "query",
+ "name": "min_rating_count",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, users_desc, rating_desc, reviews_desc, updated_desc, trending_desc",
+ "enum": [
+ "relevance",
+ "users_desc",
+ "rating_desc",
+ "reviews_desc",
+ "updated_desc",
+ "trending_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
}
],
"produces": [
@@ -224982,7 +254248,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chipotle.restaurantsResponseDoc"
+ "$ref": "#/definitions/datasets.chromeExtensionFacetResponseDoc"
}
},
"400": {
@@ -224991,20 +254257,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -225015,19 +254275,44 @@
"ApiKeyAuth": []
}
],
- "summary": "Find Chipotle restaurants near a location",
+ "summary": "Facet the Chrome Web Store dataset",
"tags": [
- "Chipotle"
+ "Datasets"
]
}
},
- "/chromewebstore/categories": {
+ "/datasets/chrome-extensions/history/{id}": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns chronological change-only observations for a Chrome Web Store item.",
+ "operationId": "datasets-chrome-extensions-history",
+ "parameters": [
+ {
+ "description": "Chrome Web Store item id",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
+ },
+ {
+ "description": "Inclusive start date, YYYY-MM-DD",
+ "in": "query",
+ "name": "from",
+ "type": "string"
+ },
+ {
+ "description": "Inclusive end date, YYYY-MM-DD",
+ "in": "query",
+ "name": "to",
+ "type": "string"
+ },
+ {
+ "description": "Maximum points, default 365, max 1000",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ }
],
- "description": "Returns the reference taxonomy for the list endpoints: extension category groups and their subcategory slugs, the top-chart identifiers, and known curated collection slugs.",
- "operationId": "chromewebstore-categories",
"produces": [
"application/json"
],
@@ -225035,7 +254320,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.categoriesResponseDoc"
+ "$ref": "#/definitions/datasets.chromeExtensionHistoryResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"500": {
@@ -225050,48 +254347,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Chrome Web Store categories and collections",
+ "summary": "Get Chrome Web Store item history",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/category": {
+ "/datasets/chrome-extensions/items/{id}": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the item cards listed under an extensions category slug (e.g. `productivity/tools`, `lifestyle/shopping`, `make_chrome_yours/privacy`). Use /chromewebstore/categories for the reference taxonomy. Defaults: `num=50`, `country=us`, `lang=en`.",
- "operationId": "chromewebstore-category",
+ "description": "Returns one stored extension, theme or legacy app snapshot by its 32-character Chrome Web Store id.",
+ "operationId": "datasets-chrome-extensions-item",
"parameters": [
{
- "description": "Category slug under extensions",
- "in": "query",
- "name": "category",
+ "description": "Chrome Web Store item id",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "productivity/tools"
- },
- {
- "description": "Maximum number of items",
- "in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 50
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Two-letter language code",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
}
],
"produces": [
@@ -225101,7 +254374,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.listResponseDoc"
+ "$ref": "#/definitions/datasets.chromeExtensionItemResponseDoc"
}
},
"400": {
@@ -225110,6 +254383,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -225128,52 +254407,33 @@
"ApiKeyAuth": []
}
],
- "summary": "List items in a Chrome Web Store category",
+ "summary": "Get a Chrome Web Store dataset item",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/charts": {
+ "/datasets/chrome-extensions/metrics": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the item cards in a store top chart. `chart` accepts `trending`, `popular`, or `notable`. Defaults: `chart=popular`, `num=50`, `country=us`, `lang=en`.",
- "operationId": "chromewebstore-charts",
+ "description": "Returns chart-ready coverage, adoption, rating, permission, privacy and recent-change aggregates for the stored Chrome Web Store dataset. Days enum: `7`, `30`, `90`.",
+ "operationId": "datasets-chrome-extensions-metrics",
"parameters": [
{
- "default": "popular",
- "description": "Top chart to list",
+ "description": "Recent-change window enum: 7, 30, 90; default 30",
"enum": [
- "trending",
- "popular",
- "notable"
+ 7,
+ 30,
+ 90
],
"in": "query",
- "name": "chart",
- "type": "string"
- },
- {
- "description": "Maximum number of items",
- "in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 50
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "days",
+ "type": "integer"
},
{
- "description": "Two-letter language code",
+ "description": "Top category and permission buckets, default 10, min 5, max 25",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -225183,7 +254443,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.listResponseDoc"
+ "$ref": "#/definitions/datasets.chromeExtensionMetricsResponseDoc"
}
},
"400": {
@@ -225210,48 +254470,134 @@
"ApiKeyAuth": []
}
],
- "summary": "List a Chrome Web Store top chart",
+ "summary": "Get Chrome Web Store dataset metrics",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/collection": {
+ "/datasets/chrome-extensions/search": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the item cards in a curated store collection slug (e.g. `editors_picks_extensions`, `dark_mode`, `ai_productivity`). Use /chromewebstore/categories for known collection slugs. Defaults: `num=50`, `country=us`, `lang=en`.",
- "operationId": "chromewebstore-collection",
+ "description": "Searches stored Chrome Web Store item snapshots. Item type enum: `extension`, `theme`, `app`, `unknown`. Sort enum: `relevance`, `users_desc`, `rating_desc`, `reviews_desc`, `updated_desc`, `trending_desc`. Status enum: `active`, `removed`. Manifest version enum: `2`, `3`.",
+ "operationId": "datasets-chrome-extensions-search",
"parameters": [
{
- "description": "Curated collection slug",
+ "description": "Full-text query, max 256 characters",
"in": "query",
- "name": "collection",
- "required": true,
- "type": "string",
- "x-example": "editors_picks_extensions"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Maximum number of items",
+ "description": "Item type enum: extension, theme, app, unknown",
+ "enum": [
+ "extension",
+ "theme",
+ "app",
+ "unknown"
+ ],
"in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 50
+ "name": "item_type",
+ "type": "string"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Exact Chrome Web Store category",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "category",
+ "type": "string"
},
{
- "description": "Two-letter language code",
+ "description": "Exact displayed developer name",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "name": "developer",
+ "type": "string"
+ },
+ {
+ "description": "Exact disclosed developer email",
+ "in": "query",
+ "name": "developer_email",
+ "type": "string"
+ },
+ {
+ "description": "Exact declared permission",
+ "in": "query",
+ "name": "permission",
+ "type": "string"
+ },
+ {
+ "description": "Status enum: active, removed",
+ "enum": [
+ "active",
+ "removed"
+ ],
+ "in": "query",
+ "name": "status",
+ "type": "string"
+ },
+ {
+ "description": "Manifest version enum: 2, 3",
+ "enum": [
+ 2,
+ 3
+ ],
+ "in": "query",
+ "name": "manifest_version",
+ "type": "integer"
+ },
+ {
+ "description": "Filter by public data-collection disclosure",
+ "in": "query",
+ "name": "collects_data",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by broad host access",
+ "in": "query",
+ "name": "has_broad_host_access",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum displayed user count",
+ "in": "query",
+ "name": "min_users",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum rating, 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum rating count",
+ "in": "query",
+ "name": "min_rating_count",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, users_desc, rating_desc, reviews_desc, updated_desc, trending_desc",
+ "enum": [
+ "relevance",
+ "users_desc",
+ "rating_desc",
+ "reviews_desc",
+ "updated_desc",
+ "trending_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, default 20, max 100",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -225261,7 +254607,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.listResponseDoc"
+ "$ref": "#/definitions/datasets.chromeExtensionsSearchResponseDoc"
}
},
"400": {
@@ -225288,48 +254634,120 @@
"ApiKeyAuth": []
}
],
- "summary": "List items in a curated Chrome Web Store collection",
+ "summary": "Search the Chrome Web Store dataset",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/developer": {
+ "/datasets/chrome-extensions/trending": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a Chrome Web Store publisher (developer) by publisher id, including the disclosed trader details — legal name, email, phone, address, website, and D-U-N-S number — plus the publisher's listed items (\"More from ...\"). Trader fields are only present for publishers that identify as EU traders. Defaults: `num=50`, `country=us`, `lang=en`.",
- "operationId": "chromewebstore-developer",
+ "description": "Returns stored Chrome Web Store items ranked by the latest observed user and rating-count movement. Filters match the search endpoint; sort is fixed to `trending_desc`.",
+ "operationId": "datasets-chrome-extensions-trending",
"parameters": [
{
- "description": "Chrome Web Store publisher id (u + 32 hex chars)",
+ "description": "Full-text query",
"in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "u63f06aecfdc45d32c13ccc24f56c3d2d"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Maximum number of items",
+ "description": "Item type enum: extension, theme, app, unknown",
+ "enum": [
+ "extension",
+ "theme",
+ "app",
+ "unknown"
+ ],
"in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 50
+ "name": "item_type",
+ "type": "string"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Exact category",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "category",
+ "type": "string"
},
{
- "description": "Two-letter language code",
+ "description": "Exact developer",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "name": "developer",
+ "type": "string"
+ },
+ {
+ "description": "Exact developer email",
+ "in": "query",
+ "name": "developer_email",
+ "type": "string"
+ },
+ {
+ "description": "Exact permission",
+ "in": "query",
+ "name": "permission",
+ "type": "string"
+ },
+ {
+ "description": "Status enum: active, removed",
+ "enum": [
+ "active",
+ "removed"
+ ],
+ "in": "query",
+ "name": "status",
+ "type": "string"
+ },
+ {
+ "description": "Manifest version enum: 2, 3",
+ "enum": [
+ 2,
+ 3
+ ],
+ "in": "query",
+ "name": "manifest_version",
+ "type": "integer"
+ },
+ {
+ "description": "Data-collection filter",
+ "in": "query",
+ "name": "collects_data",
+ "type": "boolean"
+ },
+ {
+ "description": "Broad-host-access filter",
+ "in": "query",
+ "name": "has_broad_host_access",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum users",
+ "in": "query",
+ "name": "min_users",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum rating",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum rating count",
+ "in": "query",
+ "name": "min_rating_count",
+ "type": "integer"
+ },
+ {
+ "description": "Page number",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, max 100",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -225339,7 +254757,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.developerResponseDoc"
+ "$ref": "#/definitions/datasets.chromeExtensionsSearchResponseDoc"
}
},
"400": {
@@ -225348,12 +254766,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -225372,41 +254784,98 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve a Chrome Web Store publisher and their items",
+ "summary": "Get trending Chrome Web Store items",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/item": {
+ "/datasets/creators/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized detail for a Chrome Web Store extension or theme, including name, rating, rating count, user count, version, last-updated date, size, supported languages, developer, category, screenshots, and privacy links. Defaults: `country=us`, `lang=en`.",
- "operationId": "chromewebstore-item",
+ "description": "Searches TikTok creators stored in a search index (one document per creator), with follower counts, verified status, niche, and engagement. Deleted and private accounts are excluded by default; set `include_inactive=true` to include them for historical lookups. Sort enum: `followers_desc`, `engagement_desc`, `engagement_qualified_desc`, `likes_desc`, `relevance`. Coverage note: `followers_desc`, `likes_desc`, and `relevance` are backed by profile fields present across the full dataset; the post-level engagement metrics (`engagement_rate`, `avg_views`, and the nested `post_stats` object) and the `engagement_desc`/`engagement_qualified_desc` sorts are currently populated for a growing subset of creators, prioritizing the highest-reach accounts. Creators without these metrics are still returned but sort last under `engagement_desc` and omit those fields; `engagement_qualified_desc` excludes them outright (they cannot clear its floors). `engagement_desc` ranks by raw `engagement_rate` with no eligibility floor — it surfaces a real stale-record + ratio-by-design trap: an account whose last real post was years ago can still carry an unrealistic rate computed from a handful of old posts. `engagement_qualified_desc` is the same metric restricted to creators with a recent post (`last_post_at` within 90 days), a minimum reach (`avg_views >= 10000`) and sample size (`post_stats.sampled_posts >= 10`), and a sanity ceiling (`engagement_rate <= 50%`) — use this, not the raw sort, for a \"best engagement\" leaderboard. Sound fields: `post_stats.top_sounds` holds only a creator's FIVE most-used sounds from the sampled posts, ranked by use count with ties broken by lowest `music_id`, so it is a top-5 view and not the creator's full sound list; `post_stats.distinct_sounds` gives the true number of different sounds the sample used. Use each sound's `original` boolean to tell TikTok-generated original audio from catalogue tracks - do NOT infer it from the title, because TikTok localizes the original-audio label (`sonido original`, `som original`, `оригинальный звук`, and at least fifteen more), so a title match silently reclassifies original audio as named tracks.",
+ "operationId": "datasets-creators-search",
"parameters": [
{
- "description": "Chrome Web Store item id (32-character extension/theme id)",
+ "description": "Full-text query over handle, nickname and bio, max 256 characters",
"in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Exact handle lookup (case-insensitive), e.g. khaby.lame; returns the single creator with that exact @handle",
+ "in": "query",
+ "name": "handle",
+ "type": "string"
+ },
+ {
+ "description": "Exact content-niche filter, max 128 characters",
+ "in": "query",
+ "name": "niche",
+ "type": "string"
+ },
+ {
+ "description": "Exact creator country/region filter, max 128 characters",
"in": "query",
"name": "country",
- "type": "string",
- "x-example": "us"
+ "type": "string"
},
{
- "description": "Two-letter language code",
+ "description": "Filter by verified badge; true keeps only verified creators",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "name": "verified",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum follower count",
+ "in": "query",
+ "name": "min_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Filter by contact-email presence; true keeps only creators with an email",
+ "in": "query",
+ "name": "has_email",
+ "type": "boolean"
+ },
+ {
+ "description": "Return the stored contact email instead of a blanked value. Off by default for everyone, and honoured only for entitled (non-Free) API keys",
+ "in": "query",
+ "name": "include_email",
+ "type": "boolean"
+ },
+ {
+ "description": "Include deleted/private accounts; defaults to false (only live accounts returned)",
+ "in": "query",
+ "name": "include_inactive",
+ "type": "boolean"
+ },
+ {
+ "description": "Sort enum: followers_desc, engagement_desc, engagement_qualified_desc, likes_desc, relevance. engagement_desc ranks by raw post-level engagement rate, currently populated for a subset of creators (highest-reach first); creators without it sort last. engagement_qualified_desc is the same metric restricted to creators with a recent post (<=90d), a minimum reach (avg_views>=10000) and sample size (>=10 posts), and a sanity ceiling (<=50%) -- use this, not the raw sort, for a 'best engagement' leaderboard",
+ "enum": [
+ "followers_desc",
+ "engagement_desc",
+ "engagement_qualified_desc",
+ "likes_desc",
+ "relevance"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -225416,7 +254885,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.itemResponseDoc"
+ "$ref": "#/definitions/datasets.creatorsSearchResponseDoc"
}
},
"400": {
@@ -225425,12 +254894,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -225449,41 +254912,72 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Chrome Web Store item details",
+ "summary": "Search the TikTok creators dataset",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/permissions": {
+ "/datasets/doordash-stores/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the permissions a Chrome Web Store extension declares in its manifest: `permissions`, `optional_permissions`, `host_permissions`, `optional_host_permissions`, plus `manifest_version` and `min_browser_version`. Useful for security and supply-chain review. Defaults: `country=us`, `lang=en`.",
- "operationId": "chromewebstore-permissions",
+ "description": "Returns terms aggregation counts for the DoorDash store directory. Facet enum: `country`, `state`, `city`, `tags`, `display_status`, `price_range`, `dash_pass_eligible`. Accepts the same filter parameters as search to scope the aggregation. Use `facet=tags` to discover the marketplace tag values accepted by the `tag` filter.",
+ "operationId": "datasets-doordash-stores-facets",
"parameters": [
{
- "description": "Chrome Web Store item id (32-character extension id)",
+ "description": "Facet enum: country, state, city, tags, display_status, price_range, dash_pass_eligible",
+ "enum": [
+ "country",
+ "state",
+ "city",
+ "tags",
+ "display_status",
+ "price_range",
+ "dash_pass_eligible"
+ ],
"in": "query",
- "name": "id",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
+ "x-example": "country"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Full-text search over store name, address, city, and marketplace tags",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "ISO-3166-1 alpha-2 country filter",
"in": "query",
"name": "country",
- "type": "string",
- "x-example": "us"
+ "type": "string"
},
{
- "description": "Two-letter language code",
+ "description": "State/region code filter",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact city filter",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Single marketplace tag filter",
+ "in": "query",
+ "name": "tag",
+ "type": "string"
+ },
+ {
+ "description": "Keep only DashPass-eligible stores",
+ "in": "query",
+ "name": "dash_pass_only",
+ "type": "boolean"
}
],
"produces": [
@@ -225493,7 +254987,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.permissionsResponseDoc"
+ "$ref": "#/definitions/datasets.doorDashStoresFacetResponseDoc"
}
},
"400": {
@@ -225502,12 +254996,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -225526,41 +255014,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve a Chrome Web Store item's declared permissions",
+ "summary": "Facet stored DoorDash stores",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/privacy": {
+ "/datasets/doordash-stores/items/{store_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns an extension's privacy disclosures as the store renders them: the developer's data-use statement, whether it collects data, the standard data-handling declarations, and the privacy-policy link. Defaults: `country=us`, `lang=en`.",
- "operationId": "chromewebstore-privacy",
+ "description": "Returns one stored DoorDash store by its DoorDash store id (digits only, e.g. `297068`) from dataset id `doordash-stores`. A store discovered but not yet hydrated may have an empty `address`/`phone` and no `location`. `display_status`, `asap_available`, and `pickup_available` are a point-in-time pickup observation at crawl time, not a durable capability.",
+ "operationId": "datasets-doordash-stores-item",
"parameters": [
{
- "description": "Chrome Web Store item id (32-character extension/theme id)",
- "in": "query",
- "name": "id",
+ "description": "DoorDash store id (digits only), e.g. 297068",
+ "in": "path",
+ "name": "store_id",
"required": true,
"type": "string",
- "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
- },
- {
- "description": "Two-letter storefront country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Two-letter language code",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "x-example": "297068"
}
],
"produces": [
@@ -225570,7 +255044,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.privacyResponseDoc"
+ "$ref": "#/definitions/datasets.doorDashStoreResponseDoc"
}
},
"400": {
@@ -225603,59 +255077,89 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve a Chrome Web Store item's privacy disclosures",
+ "summary": "Get a stored DoorDash store",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/reviews": {
+ "/datasets/doordash-stores/nearby": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the reviews the store renders on an item's reviews page, each with author, star rating, text, posted/edited dates and reviewed version. Defaults: `num=20`, `country=us`, `lang=en`.",
- "operationId": "chromewebstore-reviews",
+ "description": "Returns stored DoorDash stores within a radius of a point, nearest first, from dataset id `doordash-stores`. lat, lon, and radius_m are required. Unlike the live /doordash/search endpoint (which is a proximity search capped at roughly five stores), this queries the stored directory, so it can return every discovered store in the radius. Coverage is best-effort rather than provably exhaustive: a store DoorDash never surfaced, or one not yet hydrated with coordinates, will not appear.",
+ "operationId": "datasets-doordash-stores-nearby",
"parameters": [
{
- "description": "Chrome Web Store item id (32-character extension/theme id)",
+ "description": "Center latitude, from -90 through 90",
"in": "query",
- "name": "id",
+ "name": "lat",
"required": true,
- "type": "string",
- "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
+ "type": "number",
+ "x-example": 40.7484257
},
{
- "description": "Maximum number of reviews",
+ "description": "Center longitude, from -180 through 180",
"in": "query",
- "name": "num",
+ "name": "lon",
+ "required": true,
+ "type": "number",
+ "x-example": -73.98567
+ },
+ {
+ "description": "Search radius in meters, 1 through 50000",
+ "in": "query",
+ "name": "radius_m",
+ "required": true,
"type": "integer",
- "x-example": 100
+ "x-example": 5000
},
{
- "default": "recent",
- "description": "Review sort order",
+ "description": "ISO-3166-1 alpha-2 country filter",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Single marketplace tag filter",
+ "in": "query",
+ "name": "tag",
+ "type": "string"
+ },
+ {
+ "description": "Keep only DashPass-eligible stores",
+ "in": "query",
+ "name": "dash_pass_only",
+ "type": "boolean"
+ },
+ {
+ "description": "Pagination mode: offset or cursor. Cursor mode supports full enumeration beyond the offset result window.",
"enum": [
- "recent",
- "helpful"
+ "offset",
+ "cursor"
],
"in": "query",
- "name": "sort",
+ "name": "pagination",
"type": "string"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Opaque continuation token returned in next_cursor; use with pagination=cursor and the same location and filters",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "cursor",
+ "type": "string"
},
{
- "description": "Two-letter language code",
+ "description": "Offset page number, defaults to 1; ignored by cursor pagination except page=1 to start",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; the 10,000-result cap applies only to offset pagination",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -225665,7 +255169,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.reviewsResponseDoc"
+ "$ref": "#/definitions/datasets.doorDashStoresSearchResponseDoc"
}
},
"400": {
@@ -225674,12 +255178,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -225698,48 +255196,131 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Chrome Web Store item reviews",
+ "summary": "Find nearby stored DoorDash stores",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/search": {
+ "/datasets/doordash-stores/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Chrome Web Store search result cards for a keyword, each with id, name, rating, user count, publisher and detail URL. Defaults: `num=30`, `country=us`, `lang=en`.",
- "operationId": "chromewebstore-search",
+ "description": "Searches the DoorDash merchant-location directory (dataset id `doordash-stores`), built by grid-tiling the anonymous guest Explore feed and hydrating every discovered store. Identity and marketplace fields (name, marketplace tags, price range, ratings, DashPass eligibility) come from Explore; contact, address, and coordinates come from the hydration pass, so a store that has not been hydrated yet can appear without them. `display_status`, `display_asap_time`, `asap_available`, and `pickup_available` are a point-in-time observation of the PICKUP surface at crawl time, not a durable capability. Geographic coverage is best-effort: Explore caps at 40 stores per call with no pagination, so the census saturates a tile rather than draining it. Supports full-text `q`, `country`/`state`/`city`/`tag` filters, `dash_pass_only`, `min_price`/`max_price`/`min_rating`, `lat`/`lon`/`radius_m` radius filtering, and `sort` (relevance, rating, distance, distance_asc). `sort=relevance` ranks by text-match score when `q` is supplied; without `q` it sorts by store name. Use `pagination=cursor` and the returned `next_cursor` to enumerate beyond the 10,000-result offset window against a point-in-time snapshot.",
+ "operationId": "datasets-doordash-stores-search",
"parameters": [
{
- "description": "Search keyword",
+ "description": "Full-text search over store name, address, city, and marketplace tags, max 256 characters",
"in": "query",
- "name": "term",
- "required": true,
- "type": "string",
- "x-example": "vpn"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Maximum number of results",
+ "description": "ISO-3166-1 alpha-2 country filter, e.g. US, CA",
"in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 30
+ "name": "country",
+ "type": "string"
},
{
- "description": "Two-letter storefront country code",
+ "description": "State/region code filter, e.g. CA",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "state",
+ "type": "string"
},
{
- "description": "Two-letter language code",
+ "description": "Exact city filter",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Single marketplace tag filter, e.g. Pizza",
+ "in": "query",
+ "name": "tag",
+ "type": "string"
+ },
+ {
+ "description": "Keep only DashPass-eligible stores",
+ "in": "query",
+ "name": "dash_pass_only",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum price range tier, inclusive",
+ "in": "query",
+ "name": "min_price",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum price range tier, inclusive",
+ "in": "query",
+ "name": "max_price",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum aggregate rating, 0 through 5; excludes unrated stores",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Latitude for radius filtering or distance sort, requires lon",
+ "in": "query",
+ "name": "lat",
+ "type": "number"
+ },
+ {
+ "description": "Longitude for radius filtering or distance sort, requires lat",
+ "in": "query",
+ "name": "lon",
+ "type": "number"
+ },
+ {
+ "description": "Radius in meters, 1 through 50000; requires lat and lon",
+ "in": "query",
+ "name": "radius_m",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, rating, distance, distance_asc",
+ "enum": [
+ "relevance",
+ "rating",
+ "distance",
+ "distance_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Pagination mode: offset or cursor. Cursor mode supports full enumeration beyond the offset result window.",
+ "enum": [
+ "offset",
+ "cursor"
+ ],
+ "in": "query",
+ "name": "pagination",
+ "type": "string"
+ },
+ {
+ "description": "Opaque continuation token returned in next_cursor; use with pagination=cursor and the same filters and sort",
+ "in": "query",
+ "name": "cursor",
+ "type": "string"
+ },
+ {
+ "description": "Offset page number, defaults to 1; ignored by cursor pagination except page=1 to start",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; the 10,000-result cap applies only to offset pagination",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -225749,7 +255330,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.searchResponseDoc"
+ "$ref": "#/definitions/datasets.doorDashStoresSearchResponseDoc"
}
},
"400": {
@@ -225776,125 +255357,144 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Chrome Web Store items",
+ "summary": "Search the DoorDash store directory",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chromewebstore/similar": {
+ "/datasets/facebook-pages/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the related-items shelf the store renders on an item's detail page. Defaults: `country=us`, `lang=en`.",
- "operationId": "chromewebstore-similar",
+ "description": "Returns terms aggregation counts for the Facebook Pages dataset. Facet enum: `category`, `discovery_source`.",
+ "operationId": "datasets-facebook-pages-facets",
"parameters": [
{
- "description": "Chrome Web Store item id (32-character extension/theme id)",
+ "description": "Facet values per response, default 50, maximum 200",
"in": "query",
- "name": "id",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "count_desc returns most common values; value_asc pages through all values",
+ "enum": [
+ "count_desc",
+ "value_asc"
+ ],
+ "in": "query",
+ "name": "order",
+ "type": "string"
+ },
+ {
+ "description": "Continuation from next_after; requires order=value_asc and unchanged filters",
+ "in": "query",
+ "name": "after",
+ "type": "string"
+ },
+ {
+ "description": "Facet enum: category, discovery_source",
+ "enum": [
+ "category",
+ "discovery_source"
+ ],
+ "in": "query",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "cjpalhdlnbpafiamejdnhcphjbkeiagm"
+ "x-example": "category"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Full-text query over title and address, max 256 characters",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Two-letter language code",
+ "description": "Exact Facebook Page id filter, max 128 characters",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/chromewebstore.similarResponseDoc"
- }
+ "name": "page_id",
+ "type": "string"
},
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact Page username/identifier filter (case-insensitive), max 128 characters",
+ "in": "query",
+ "name": "identifier",
+ "type": "string"
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact Page category filter (case-insensitive), max 128 characters",
+ "in": "query",
+ "name": "category",
+ "type": "string"
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact filter for how the Page was discovered (e.g. business_search, warc_domain_scan, wikidata), max 128 characters",
+ "in": "query",
+ "name": "discovery_source",
+ "type": "string"
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "Retrieve related Chrome Web Store items",
- "tags": [
- "ChromeWebStore"
- ]
- }
- },
- "/chromewebstore/suggest": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns item-name suggestions for a search prefix, drawn from the top store-search results. Defaults: `num=8`, `country=us`, `lang=en`.",
- "operationId": "chromewebstore-suggest",
- "parameters": [
+ "description": "Filter by a linked website",
+ "in": "query",
+ "name": "has_website",
+ "type": "boolean"
+ },
{
- "description": "Search prefix to autocomplete",
+ "description": "Filter by a public contact email",
"in": "query",
- "name": "term",
- "required": true,
- "type": "string",
- "x-example": "ad blo"
+ "name": "has_email",
+ "type": "boolean"
},
{
- "description": "Maximum number of suggestions",
+ "description": "Filter by at least one public phone number",
"in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 8
+ "name": "has_phone",
+ "type": "boolean"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Filter by a public WhatsApp contact",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "has_whatsapp",
+ "type": "boolean"
},
{
- "description": "Two-letter language code",
+ "description": "Minimum Page like count",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "name": "min_likes",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum Page like count",
+ "in": "query",
+ "name": "max_likes",
+ "type": "integer"
+ },
+ {
+ "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "hydrated_after",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "hydrated_before",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, likes_desc, likes_asc, hydrated_at_desc, hydrated_at_asc",
+ "enum": [
+ "relevance",
+ "likes_desc",
+ "likes_asc",
+ "hydrated_at_desc",
+ "hydrated_at_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
}
],
"produces": [
@@ -225904,7 +255504,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chromewebstore.suggestResponseDoc"
+ "$ref": "#/definitions/datasets.facebookPagesFacetResponseDoc"
}
},
"400": {
@@ -225931,27 +255531,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Suggest Chrome Web Store search terms",
+ "summary": "Facet the Facebook Pages dataset",
"tags": [
- "ChromeWebStore"
+ "Datasets"
]
}
},
- "/chrono24/autocomplete": {
+ "/datasets/facebook-pages/items/{page_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Fetches Chrono24's own search-box typeahead suggestions for a partial query: each suggested phrase with its own live result count, plus the Chrono24 search URL it resolves to. Useful for building a search box against chrono24-search without guessing a full query.",
- "operationId": "chrono24-autocomplete",
+ "description": "Returns one Facebook Page record by page id from dataset id enum value `facebook-pages`.",
+ "operationId": "datasets-facebook-pages-item",
"parameters": [
{
- "description": "Partial search text, e.g. \\",
- "in": "query",
- "name": "query",
+ "description": "Facebook Page id, max 128 characters",
+ "in": "path",
+ "name": "page_id",
"required": true,
"type": "string",
- "x-example": "submar"
+ "x-example": "100067013529598"
}
],
"produces": [
@@ -225961,7 +255561,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chrono24.autocompleteResponseDoc"
+ "$ref": "#/definitions/datasets.facebookPageResponseDoc"
}
},
"400": {
@@ -225970,58 +255570,23 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Chrono24 search-box suggestions",
- "tags": [
- "Chrono24"
- ]
- }
- },
- "/chrono24/brands": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Chrono24's full watch-brand index: every brand name and the slug identifying it, usable as the brand parameter on chrono24-models and chrono24-search. This is the discovery endpoint for that parameter, so every accepted value is obtainable from this API rather than by reading the website.",
- "operationId": "chrono24-brands",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/chrono24.brandsResponseDoc"
- }
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -226029,129 +255594,122 @@
"ApiKeyAuth": []
}
],
- "summary": "List Chrono24 watch brands",
+ "summary": "Get a Facebook Page from the dataset",
"tags": [
- "Chrono24"
+ "Datasets"
]
}
},
- "/chrono24/dealer": {
+ "/datasets/facebook-pages/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Fetches one Chrono24 dealer/seller's public storefront page: business description, trust badge, average buyer rating and review count, lifetime watches-sold count, and their current listed inventory in the same shape chrono24-search returns. slug is found in a chrono24-search or chrono24-listing result's seller link; there is no separate dealer-discovery endpoint since dealer slugs are not a closed set Chrono24 publishes an index of.",
- "operationId": "chrono24-dealer",
+ "description": "Searches public Facebook Page contact records stored in a search index — website, email, phone, WhatsApp, category and like count, discovered through business-search enumeration, domain-scoped scans, and Wikidata seeding, then hydrated from each Page's public About tab. Sort enum: `relevance`, `likes_desc`, `likes_asc`, `hydrated_at_desc`, `hydrated_at_asc`.",
+ "operationId": "datasets-facebook-pages-search",
"parameters": [
{
- "description": "Dealer slug from a listing's seller link",
+ "description": "Full-text query over title and address, max 256 characters",
"in": "query",
- "name": "slug",
- "required": true,
- "type": "string",
- "x-example": "thetimelords"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/chrono24.dealerResponseDoc"
- }
+ "name": "q",
+ "type": "string"
},
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact Facebook Page id filter, max 128 characters",
+ "in": "query",
+ "name": "page_id",
+ "type": "string"
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact Page username/identifier filter (case-insensitive), max 128 characters",
+ "in": "query",
+ "name": "identifier",
+ "type": "string"
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact Page category filter (case-insensitive), max 128 characters",
+ "in": "query",
+ "name": "category",
+ "type": "string"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get a Chrono24 dealer's storefront",
- "tags": [
- "Chrono24"
- ]
- }
- },
- "/chrono24/dealer/reviews": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Fetches one page of a Chrono24 dealer/seller's buyer reviews: reviewer name and country, review date, star-rating breakdown (shipping/description/communication), whether the buyer recommends the seller, their free-text comment, and the dealer's own reply when present. slug is the same dealer slug chrono24-dealer takes.",
- "operationId": "chrono24-dealer-reviews",
- "parameters": [
+ "description": "Exact filter for how the Page was discovered (e.g. business_search, warc_domain_scan, wikidata), max 128 characters",
+ "in": "query",
+ "name": "discovery_source",
+ "type": "string"
+ },
{
- "description": "Dealer slug from a listing's seller link",
+ "description": "Filter by a linked website",
"in": "query",
- "name": "slug",
- "required": true,
- "type": "string",
- "x-example": "thetimelords"
+ "name": "has_website",
+ "type": "boolean"
},
{
- "default": 1,
- "description": "One-based result page",
+ "description": "Filter by a public contact email",
"in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "name": "has_email",
+ "type": "boolean"
},
{
- "default": 10,
- "description": "Reviews per page, 1-50",
+ "description": "Filter by at least one public phone number",
"in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "page_size",
+ "name": "has_phone",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by a public WhatsApp contact",
+ "in": "query",
+ "name": "has_whatsapp",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum Page like count",
+ "in": "query",
+ "name": "min_likes",
"type": "integer"
},
{
- "default": 0,
- "description": "Keep only reviews rating the dealer at least this many stars, 0-5. 0 returns every review",
+ "description": "Maximum Page like count",
"in": "query",
- "maximum": 5,
- "minimum": 0,
- "name": "min_stars",
+ "name": "max_likes",
"type": "integer"
},
{
- "default": "relevance",
- "description": "Result order. One of: relevance, newest, with_recommendation, without_recommendation",
+ "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "hydrated_after",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "hydrated_before",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, likes_desc, likes_asc, hydrated_at_desc, hydrated_at_asc",
"enum": [
"relevance",
- "newest",
- "with_recommendation",
- "without_recommendation"
+ "likes_desc",
+ "likes_asc",
+ "hydrated_at_desc",
+ "hydrated_at_asc"
],
"in": "query",
"name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -226161,7 +255719,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chrono24.dealerReviewsResponseDoc"
+ "$ref": "#/definitions/datasets.facebookPagesSearchResponseDoc"
}
},
"400": {
@@ -226170,8 +255728,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -226181,12 +255739,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -226194,36 +255746,228 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Chrono24 dealer's buyer reviews",
+ "summary": "Search the Facebook Pages dataset",
"tags": [
- "Chrono24"
+ "Datasets"
]
}
},
- "/chrono24/facets": {
+ "/datasets/github-users/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Fetches every value Chrono24 accepts for one of chrono24-search's advanced-search filter params, each with its own live listing count: the discovery endpoint for condition, used_or_new, case_material, dial_color, bracelet_material, movement_type, gender, watch_type and stock_info.",
- "operationId": "chrono24-facets",
+ "description": "Returns terms aggregation counts for the GitHub users dataset. Facet enum: `influence_tier`, `type`, `country`, `country_code`, `state`, `city`, `domains`, `company`, `reachable`, `has_email`, `has_twitter`, `has_blog`, `active_90d`, `hireable`, `is_org`, `is_bot`, `is_suspected_automation`. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`. Suspected-automation records are excluded by default unless is_suspected_automation is set.",
+ "operationId": "datasets-github-users-facets",
"parameters": [
{
- "description": "Filter to list values for",
+ "description": "Facet enum: influence_tier, type, country, country_code, state, city, domains, company, reachable, has_email, has_twitter, has_blog, active_90d, hireable, is_org, is_bot, is_suspected_automation",
"enum": [
- "condition",
- "usedOrNew",
- "caseMaterial",
- "dialColor",
- "braceletMaterial",
- "movementType",
- "gender",
- "watchType",
- "stockInfo"
+ "influence_tier",
+ "type",
+ "country",
+ "country_code",
+ "state",
+ "city",
+ "domains",
+ "company",
+ "reachable",
+ "has_email",
+ "has_twitter",
+ "has_blog",
+ "active_90d",
+ "hireable",
+ "is_org",
+ "is_bot",
+ "is_suspected_automation"
],
"in": "query",
- "name": "group",
+ "name": "facet",
"required": true,
+ "type": "string",
+ "x-example": "influence_tier"
+ },
+ {
+ "description": "Full-text query over login, name, company, bio and location, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact login filter, max 128 characters",
+ "in": "query",
+ "name": "login",
+ "type": "string"
+ },
+ {
+ "description": "Exact normalized-company filter, max 128 characters",
+ "in": "query",
+ "name": "company",
+ "type": "string"
+ },
+ {
+ "description": "Follower-tier enum: nano, micro, mid, macro, mega",
+ "enum": [
+ "nano",
+ "micro",
+ "mid",
+ "macro",
+ "mega"
+ ],
+ "in": "query",
+ "name": "influence_tier",
+ "type": "string"
+ },
+ {
+ "description": "Exact geocoded country filter, max 128 characters",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISO country-code filter, max 128 characters",
+ "in": "query",
+ "name": "country_code",
+ "type": "string"
+ },
+ {
+ "description": "Exact geocoded state filter, max 128 characters",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact geocoded city filter, max 128 characters",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Interest-domain tag filter, max 128 characters",
+ "in": "query",
+ "name": "domain",
+ "type": "string"
+ },
+ {
+ "description": "Filter by public email presence",
+ "in": "query",
+ "name": "has_email",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by public Twitter/X handle presence",
+ "in": "query",
+ "name": "has_twitter",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by public blog/website presence",
+ "in": "query",
+ "name": "has_blog",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by any public contact channel",
+ "in": "query",
+ "name": "reachable",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by activity within the last 90 days",
+ "in": "query",
+ "name": "active_90d",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by the GitHub available-for-hire flag",
+ "in": "query",
+ "name": "hireable",
+ "type": "boolean"
+ },
+ {
+ "description": "Organization filter",
+ "in": "query",
+ "name": "is_org",
+ "type": "boolean"
+ },
+ {
+ "description": "Bot filter",
+ "in": "query",
+ "name": "is_bot",
+ "type": "boolean"
+ },
+ {
+ "description": "Suspected automation filter; omitted these are hidden by default",
+ "in": "query",
+ "name": "is_suspected_automation",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum follower count",
+ "in": "query",
+ "name": "min_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum follower count",
+ "in": "query",
+ "name": "max_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum public repository count",
+ "in": "query",
+ "name": "min_repos",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum composite rank score",
+ "in": "query",
+ "name": "min_rank_score",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum account age in years",
+ "in": "query",
+ "name": "min_account_age_years",
+ "type": "number"
+ },
+ {
+ "description": "Maximum account age in years",
+ "in": "query",
+ "name": "max_account_age_years",
+ "type": "number"
+ },
+ {
+ "description": "Latitude for radius filtering",
+ "in": "query",
+ "name": "lat",
+ "type": "number"
+ },
+ {
+ "description": "Longitude for radius filtering",
+ "in": "query",
+ "name": "lon",
+ "type": "number"
+ },
+ {
+ "description": "Radius in meters, 1 through 50000; requires lat and lon when supplied",
+ "in": "query",
+ "name": "radius_m",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, rank_score_desc, followers_desc, account_age_desc, account_age_asc, distance_asc",
+ "enum": [
+ "relevance",
+ "rank_score_desc",
+ "followers_desc",
+ "account_age_desc",
+ "account_age_asc",
+ "distance_asc"
+ ],
+ "in": "query",
+ "name": "sort",
"type": "string"
}
],
@@ -226234,7 +255978,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chrono24.facetsResponseDoc"
+ "$ref": "#/definitions/datasets.githubUsersFacetResponseDoc"
}
},
"400": {
@@ -226243,14 +255987,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -226261,27 +256005,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Chrono24 search filter's accepted values",
+ "summary": "Facet the GitHub users dataset",
"tags": [
- "Chrono24"
+ "Datasets"
]
}
},
- "/chrono24/listing": {
+ "/datasets/github-users/items/{login}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Fetches one Chrono24 listing's full detail page: brand, model, reference number, price with currency and negotiability, condition, year of production, movement, case material and diameter, bracelet material, location, availability, seller type, photos, and the complete raw spec table Chrono24 itself shows (grouped by section: Basic Info, Caliber, Case, Bracelet/strap, Functions). path is the listing URL from a chrono24-search result's url field; Chrono24 has no lookup by numeric id alone.",
- "operationId": "chrono24-listing",
+ "description": "Returns one enriched GitHub user record by login from dataset id enum value `github-users`.",
+ "operationId": "datasets-github-users-item",
"parameters": [
{
- "description": "Listing URL or path from a chrono24-search result's url field",
- "in": "query",
- "name": "path",
+ "description": "GitHub login, max 128 characters",
+ "in": "path",
+ "name": "login",
"required": true,
"type": "string",
- "x-example": "https://www.chrono24.com/rolex/datejust-36--id40700313.htm"
+ "x-example": "claude"
}
],
"produces": [
@@ -226291,7 +256035,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chrono24.listingResponseDoc"
+ "$ref": "#/definitions/datasets.githubUserResponseDoc"
}
},
"400": {
@@ -226306,14 +256050,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -226324,27 +256068,80 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Chrono24 watch listing's detail",
+ "summary": "Get a GitHub user from the dataset",
"tags": [
- "Chrono24"
+ "Datasets"
]
}
},
- "/chrono24/models": {
+ "/datasets/github-users/nearby": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns every model/collection Chrono24 lists for one watch brand (e.g. Rolex Submariner, Rolex Datejust), each with the slug identifying it, usable as the model parameter on chrono24-search. This is the discovery endpoint for that parameter, so every accepted value for a brand is obtainable from this API rather than by reading the website.",
- "operationId": "chrono24-models",
+ "description": "Searches enriched GitHub users near a coordinate, sorted by distance, in dataset id enum value `github-users`. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`.",
+ "operationId": "datasets-github-users-nearby",
"parameters": [
{
- "description": "Brand slug from chrono24-brands",
+ "description": "Latitude",
"in": "query",
- "name": "brand",
+ "name": "lat",
"required": true,
- "type": "string",
- "x-example": "rolex"
+ "type": "number",
+ "x-example": 40.7484257
+ },
+ {
+ "description": "Longitude",
+ "in": "query",
+ "name": "lon",
+ "required": true,
+ "type": "number",
+ "x-example": -73.98567
+ },
+ {
+ "description": "Radius in meters, max 50000",
+ "in": "query",
+ "name": "radius_m",
+ "required": true,
+ "type": "integer",
+ "x-example": 5000
+ },
+ {
+ "description": "Follower-tier enum: nano, micro, mid, macro, mega",
+ "enum": [
+ "nano",
+ "micro",
+ "mid",
+ "macro",
+ "mega"
+ ],
+ "in": "query",
+ "name": "influence_tier",
+ "type": "string"
+ },
+ {
+ "description": "Filter by any public contact channel",
+ "in": "query",
+ "name": "reachable",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum follower count",
+ "in": "query",
+ "name": "min_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -226354,7 +256151,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chrono24.modelsResponseDoc"
+ "$ref": "#/definitions/datasets.githubUsersSearchResponseDoc"
}
},
"400": {
@@ -226363,14 +256160,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -226381,232 +256178,214 @@
"ApiKeyAuth": []
}
],
- "summary": "List Chrono24 models for a brand",
+ "summary": "Search nearby GitHub users",
"tags": [
- "Chrono24"
+ "Datasets"
]
}
},
- "/chrono24/search": {
+ "/datasets/github-users/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Chrono24's luxury-watch marketplace by free-text keyword, or browses one brand's (optionally narrowed to one model's) current listings, returning normalized result cards: title, price with currency, seller type, seller country, promotional badge, image, and the listing URL to pass to chrono24-listing. At least one of query or brand is required. Optional advanced-search filters (condition, used_or_new, case_material, dial_color, bracelet_material, movement_type, gender, watch_type, stock_info) narrow results further; each filter's accepted values are discoverable from chrono24-facets and echoed back in the response's filters field.",
- "operationId": "chrono24-search",
+ "description": "Searches enriched public GitHub user profiles stored in a search index. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`. Sort enum: `relevance`, `rank_score_desc`, `followers_desc`, `account_age_desc`, `account_age_asc`, `distance_asc`.",
+ "operationId": "datasets-github-users-search",
"parameters": [
{
- "description": "Free-text keyword search, e.g. \\",
+ "description": "Full-text query over login, name, company, bio and location, max 256 characters",
"in": "query",
- "name": "query",
- "type": "string",
- "x-example": "rolex submariner"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Brand slug from chrono24-brands. At least one of query or brand is required",
+ "description": "Exact login filter, max 128 characters",
"in": "query",
- "name": "brand",
- "type": "string",
- "x-example": "rolex"
+ "name": "login",
+ "type": "string"
},
{
- "description": "Model slug from chrono24-models (requires brand)",
+ "description": "Exact normalized-company filter, max 128 characters",
"in": "query",
- "name": "model",
- "type": "string",
- "x-example": "submariner--mod1"
+ "name": "company",
+ "type": "string"
},
{
- "default": "relevance",
- "description": "Result order. One of: relevance, price_asc, price_desc, newest, popularity",
+ "description": "Follower-tier enum: nano, micro, mid, macro, mega",
"enum": [
- "relevance",
- "price_asc",
- "price_desc",
- "newest",
- "popularity"
+ "nano",
+ "micro",
+ "mid",
+ "macro",
+ "mega"
],
"in": "query",
- "name": "sort",
+ "name": "influence_tier",
"type": "string"
},
{
- "default": 1,
- "description": "One-based result page",
+ "description": "Exact geocoded country filter, max 128 characters",
"in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "name": "country",
+ "type": "string"
},
{
- "description": "Results per page. Chrono24's own UI offers 30, 60 or 120; defaults to Chrono24's own default",
+ "description": "Exact ISO country-code filter, max 128 characters",
"in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 60
+ "name": "country_code",
+ "type": "string"
},
{
- "description": "Advanced-search filter, values from chrono24-facets group=condition",
- "enum": [
- "new",
- "like_new_unworn",
- "very_good",
- "good",
- "fair",
- "incomplete",
- "no_details"
- ],
+ "description": "Exact geocoded state filter, max 128 characters",
"in": "query",
- "name": "condition",
+ "name": "state",
"type": "string"
},
{
- "description": "Advanced-search filter, values from chrono24-facets group=usedOrNew",
- "enum": [
- "new",
- "used",
- "no_details"
- ],
+ "description": "Exact geocoded city filter, max 128 characters",
"in": "query",
- "name": "used_or_new",
+ "name": "city",
"type": "string"
},
{
- "description": "Advanced-search filter, values from chrono24-facets group=caseMaterial",
- "enum": [
- "aluminum",
- "brass",
- "bronze",
- "carbon",
- "ceramic",
- "gold_steel",
- "gold_plated",
- "palladium",
- "plastic",
- "platinum",
- "rose_gold",
- "sapphire_crystal",
- "silver",
- "steel",
- "tantalum",
- "titanium",
- "tungsten",
- "white_gold",
- "yellow_gold",
- "no_details"
- ],
+ "description": "Interest-domain tag filter (e.g. ml-ai, web, devops), max 128 characters",
"in": "query",
- "name": "case_material",
+ "name": "domain",
"type": "string"
},
{
- "description": "Advanced-search filter, values from chrono24-facets group=dialColor",
- "enum": [
- "black",
- "blue",
- "bordeaux",
- "bronze",
- "brown",
- "champagne",
- "gold",
- "green",
- "grey",
- "meteorite",
- "mother_of_pearl",
- "orange",
- "pink",
- "purple",
- "red",
- "silver",
- "skeletonized",
- "turquoise",
- "white",
- "yellow",
- "no_details"
- ],
+ "description": "Filter by public email presence",
"in": "query",
- "name": "dial_color",
- "type": "string"
+ "name": "has_email",
+ "type": "boolean"
},
{
- "description": "Advanced-search filter, values from chrono24-facets group=braceletMaterial",
- "enum": [
- "alligator_skin",
- "aluminium",
- "brass",
- "calf_skin",
- "ceramic",
- "crocodile_skin",
- "gold_steel",
- "gold_plated",
- "leather",
- "lizard_skin",
- "ostrich_skin",
- "plastic",
- "platinum",
- "red_gold",
- "rose_gold",
- "rubber",
- "satin",
- "shark_skin",
- "silicon",
- "silver",
- "snake_skin",
- "steel",
- "textile",
- "titanium",
- "white_gold",
- "yellow_gold",
- "no_details"
- ],
+ "description": "Filter by public Twitter/X handle presence",
+ "in": "query",
+ "name": "has_twitter",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by public blog/website presence",
+ "in": "query",
+ "name": "has_blog",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by any public contact channel",
+ "in": "query",
+ "name": "reachable",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by activity within the last 90 days",
+ "in": "query",
+ "name": "active_90d",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by the GitHub available-for-hire flag",
+ "in": "query",
+ "name": "hireable",
+ "type": "boolean"
+ },
+ {
+ "description": "Organization filter (normally false; the crawl indexes individuals)",
+ "in": "query",
+ "name": "is_org",
+ "type": "boolean"
+ },
+ {
+ "description": "Bot filter (normally false; the crawl skips bots)",
+ "in": "query",
+ "name": "is_bot",
+ "type": "boolean"
+ },
+ {
+ "description": "Suspected automation (commit-farm/mass-repo bots); omitted these are hidden by default, pass true to isolate them",
+ "in": "query",
+ "name": "is_suspected_automation",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum follower count",
+ "in": "query",
+ "name": "min_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum follower count",
+ "in": "query",
+ "name": "max_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum public repository count",
+ "in": "query",
+ "name": "min_repos",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum composite rank score",
+ "in": "query",
+ "name": "min_rank_score",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum account age in years",
+ "in": "query",
+ "name": "min_account_age_years",
+ "type": "number"
+ },
+ {
+ "description": "Maximum account age in years",
+ "in": "query",
+ "name": "max_account_age_years",
+ "type": "number"
+ },
+ {
+ "description": "Latitude for radius filtering or distance sort",
+ "in": "query",
+ "name": "lat",
+ "type": "number"
+ },
+ {
+ "description": "Longitude for radius filtering or distance sort",
"in": "query",
- "name": "bracelet_material",
- "type": "string"
+ "name": "lon",
+ "type": "number"
},
{
- "description": "Advanced-search filter, values from chrono24-facets group=movementType",
- "enum": [
- "automatic",
- "manual_winding",
- "quartz",
- "solar",
- "smartwatch",
- "no_details"
- ],
+ "description": "Radius in meters, 1 through 50000; requires lat and lon when supplied",
"in": "query",
- "name": "movement_type",
- "type": "string"
+ "name": "radius_m",
+ "type": "integer"
},
{
- "description": "Advanced-search filter, values from chrono24-facets group=gender",
+ "description": "Sort enum: relevance, rank_score_desc, followers_desc, account_age_desc, account_age_asc, distance_asc",
"enum": [
- "mens_unisex",
- "womens"
+ "relevance",
+ "rank_score_desc",
+ "followers_desc",
+ "account_age_desc",
+ "account_age_asc",
+ "distance_asc"
],
"in": "query",
- "name": "gender",
+ "name": "sort",
"type": "string"
},
{
- "description": "Advanced-search filter, values from chrono24-facets group=watchType",
- "enum": [
- "watches",
- "parts_accessories"
- ],
+ "description": "Page number, defaults to 1",
"in": "query",
- "name": "watch_type",
- "type": "string"
+ "name": "page",
+ "type": "integer"
},
{
- "description": "Advanced-search filter, values from chrono24-facets group=stockInfo",
- "enum": [
- "in_stock",
- "on_order",
- "on_request"
- ],
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
"in": "query",
- "name": "stock_info",
- "type": "string"
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -226616,7 +256395,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/chrono24.searchResponseDoc"
+ "$ref": "#/definitions/datasets.githubUsersSearchResponseDoc"
}
},
"400": {
@@ -226625,52 +256404,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Search Chrono24 watch listings",
- "tags": [
- "Chrono24"
- ]
- }
- },
- "/clevelandcom/news": {
- "get": {
- "description": "Returns Cleveland.com's 50-item public top-stories RSS feed. Summaries and encoded content are publisher teasers; this endpoint does not claim to return full article text. Editorial section inventory and article pages could not be reliably verified due to upstream DataDome blocking.",
- "operationId": "clevelandcom-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -226681,144 +256422,67 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Cleveland.com top stories",
+ "summary": "Search the GitHub users dataset",
"tags": [
- "Cleveland.com"
+ "Datasets"
]
}
},
- "/cna/article": {
+ "/datasets/goodreads-authors/facets": {
"get": {
- "description": "Returns public CNA article metadata and body paragraphs from a canonical article URL.",
- "operationId": "cna-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns terms aggregation counts for the Goodreads authors dataset. Facet enum: `genres`, `run_id`.",
+ "operationId": "datasets-goodreads-authors-facets",
"parameters": [
{
- "description": "Canonical CNA article URL",
+ "description": "Facet enum: genres, run_id",
+ "enum": [
+ "genres",
+ "run_id"
+ ],
"in": "query",
- "name": "url",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "https://www.channelnewsasia.com/singapore/national-arts-council-nac-seeks-operator-new-1000-seat-tanglin-theatre-6408051"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ "x-example": "genres"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CNA article content",
- "tags": [
- "CNA"
- ]
- }
- },
- "/cna/author": {
- "get": {
- "description": "Returns one CNA correspondent's or contributor's public profile: name, job title, biography, contact email, and their recent bylined articles.",
- "operationId": "cna-author",
- "parameters": [
{
- "description": "Author slug, e.g. aqil-haziq-mahmud",
+ "description": "Full-text query over name, about and genres, max 256 characters",
"in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "aqil-haziq-mahmud"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Canonical channelnewsasia.com/author/ URL; alternative to slug",
+ "description": "Exact author name filter, max 128 characters",
"in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.channelnewsasia.com/author/aqil-haziq-mahmud"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.cnaAuthorResponseDoc"
- }
+ "name": "name",
+ "type": "string"
},
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact genre filter, max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get a CNA author profile",
- "tags": [
- "CNA"
- ]
- }
- },
- "/cna/headlines": {
- "get": {
- "description": "Returns fresh headlines from one public CNA section.",
- "operationId": "cna-headlines",
- "parameters": [
+ "description": "Minimum average rating, 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
{
- "description": "CNA section slug",
- "enum": [
- "asia",
- "business",
- "singapore",
- "sport",
- "world"
- ],
+ "description": "Minimum number of ratings",
"in": "query",
- "name": "section",
- "required": true,
- "type": "string"
+ "name": "min_ratings_count",
+ "type": "integer"
}
],
"produces": [
@@ -226828,7 +256492,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/datasets.goodreadsAuthorsFacetResponseDoc"
}
},
"400": {
@@ -226837,40 +256501,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CNA section headlines",
- "tags": [
- "CNA"
- ]
- }
- },
- "/cna/news": {
- "get": {
- "description": "Returns fresh CNA (Channel NewsAsia) top stories from its public RSS feed.",
- "operationId": "cna-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -226881,50 +256519,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CNA top stories",
+ "summary": "Facet Goodreads authors dataset",
"tags": [
- "CNA"
+ "Datasets"
]
}
},
- "/cna/sections": {
+ "/datasets/goodreads-authors/items/{id}": {
"get": {
- "description": "Returns the public CNA editorial section inventory used by the headlines endpoint.",
- "operationId": "cna-sections",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CNA sections",
- "tags": [
- "CNA"
- ]
- }
- },
- "/cnbc/article": {
- "get": {
- "description": "Returns public CNBC article metadata and server-rendered body paragraphs. Provide a canonical dated cnbc.com article URL; account-gated content is not bypassed.",
- "operationId": "cnbc-article",
+ "description": "Returns one crawled Goodreads author profile record by id from dataset id enum value `goodreads-authors`.",
+ "operationId": "datasets-goodreads-authors-item",
"parameters": [
{
- "description": "Canonical cnbc.com article URL",
- "in": "query",
- "name": "url",
+ "description": "Goodreads author id, e.g. 153394",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "https://www.cnbc.com/2026/09/21/iran-us-oil-prices-crude-saudi-arabia-.html"
+ "x-example": "153394"
}
],
"produces": [
@@ -226934,7 +256549,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cnbc.articleResponseDoc"
+ "$ref": "#/definitions/datasets.goodreadsAuthorResponseDoc"
}
},
"400": {
@@ -226960,12 +256575,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -226973,30 +256582,79 @@
"ApiKeyAuth": []
}
],
- "summary": "CNBC article content",
+ "summary": "Get a Goodreads author from dataset",
"tags": [
- "CNBC"
+ "Datasets"
]
}
},
- "/cnbc/author": {
+ "/datasets/goodreads-authors/search": {
"get": {
- "description": "Returns one CNBC author's public bio page: name, job title, biography, social links, and their most recent articles. Provide either the author's slug (the last path segment of their cnbc.com bio page) or the full bio page URL.",
- "operationId": "cnbc-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the crawled public Goodreads author profile index. Authors are discovered as a byproduct of the books crawl (every credited book contributor, plus the genre/search/list seed sources) — not a full catalog. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `name_asc`.",
+ "operationId": "datasets-goodreads-authors-search",
"parameters": [
{
- "description": "CNBC author slug, e.g. jeff-cox",
+ "description": "Full-text query over name, about and genres, max 256 characters",
"in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "jeff-cox"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Canonical https://www.cnbc.com// author page URL, as an alternative to slug",
+ "description": "Exact author name filter, max 128 characters",
"in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.cnbc.com/jeff-cox/"
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "description": "Exact genre filter (e.g. Fantasy, Romance, Nonfiction), max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum average rating, 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum number of ratings",
+ "in": "query",
+ "name": "min_ratings_count",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, rating_desc, reviews_desc, name_asc",
+ "enum": [
+ "relevance",
+ "rating_desc",
+ "reviews_desc",
+ "name_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -227006,7 +256664,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cnbc.authorResponseDoc"
+ "$ref": "#/definitions/datasets.goodreadsAuthorsSearchResponseDoc"
}
},
"400": {
@@ -227015,12 +256673,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -227032,12 +256684,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -227045,68 +256691,140 @@
"ApiKeyAuth": []
}
],
- "summary": "CNBC author profile",
+ "summary": "Search Goodreads authors dataset",
"tags": [
- "CNBC"
+ "Datasets"
]
}
},
- "/cnbc/categories": {
+ "/datasets/goodreads-books/facets": {
"get": {
- "description": "Lists the public CNBC editorial sections accepted by /cnbc/headlines, including market, investing, business, technology, and policy subsections, with each section's slug, display name, and landing-page URL.",
- "operationId": "cnbc-categories",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/cnbc.categoriesResponseDoc"
- }
+ "description": "Returns terms aggregation counts for the Goodreads books dataset. Facet enum: `genres`, `format`, `language`, `publisher`, `primary_author`, `primary_author_id`, `series_name`, `publication_year`, `run_id`.",
+ "operationId": "datasets-goodreads-books-facets",
+ "parameters": [
+ {
+ "description": "Facet enum: genres, format, language, publisher, primary_author, primary_author_id, series_name, publication_year, run_id",
+ "enum": [
+ "genres",
+ "format",
+ "language",
+ "publisher",
+ "primary_author",
+ "primary_author_id",
+ "series_name",
+ "publication_year",
+ "run_id"
+ ],
+ "in": "query",
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "genres"
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Full-text query over title, author and description, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact genre filter, max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "CNBC editorial sections",
- "tags": [
- "CNBC"
- ]
- }
- },
- "/cnbc/headlines": {
- "get": {
- "description": "Returns current server-rendered CNBC headlines for one public editorial section, including title, article URL, and card metadata when available. Use /cnbc/categories to discover the supported section slugs.",
- "operationId": "cnbc-headlines",
- "parameters": [
+ "description": "Exact format filter, max 128 characters",
+ "in": "query",
+ "name": "format",
+ "type": "string"
+ },
{
- "description": "Public CNBC editorial section slug from /cnbc/categories",
+ "description": "Exact language filter, max 128 characters",
"in": "query",
- "name": "section",
- "required": true,
- "type": "string",
- "x-example": "markets"
+ "name": "language",
+ "type": "string"
+ },
+ {
+ "description": "Exact publisher filter, max 128 characters",
+ "in": "query",
+ "name": "publisher",
+ "type": "string"
+ },
+ {
+ "description": "Exact author name filter, max 128 characters",
+ "in": "query",
+ "name": "author",
+ "type": "string"
+ },
+ {
+ "description": "Exact Goodreads author id filter, max 128 characters",
+ "in": "query",
+ "name": "author_id",
+ "type": "string"
+ },
+ {
+ "description": "Exact series name filter, max 128 characters",
+ "in": "query",
+ "name": "series",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISBN-10 filter, max 128 characters",
+ "in": "query",
+ "name": "isbn",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISBN-13 filter, max 128 characters",
+ "in": "query",
+ "name": "isbn13",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum average rating, 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum number of ratings",
+ "in": "query",
+ "name": "min_ratings_count",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum page count",
+ "in": "query",
+ "name": "min_pages",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum page count",
+ "in": "query",
+ "name": "max_pages",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum publication year",
+ "in": "query",
+ "name": "min_publication_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum publication year",
+ "in": "query",
+ "name": "max_publication_year",
+ "type": "integer"
}
],
"produces": [
@@ -227116,7 +256834,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cnbc.headlinesResponseDoc"
+ "$ref": "#/definitions/datasets.goodreadsBooksFacetResponseDoc"
}
},
"400": {
@@ -227136,12 +256854,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -227149,24 +256861,27 @@
"ApiKeyAuth": []
}
],
- "summary": "CNBC section headlines",
+ "summary": "Facet Goodreads books dataset",
"tags": [
- "CNBC"
+ "Datasets"
]
}
},
- "/cnet/article": {
+ "/datasets/goodreads-books/items/{id}": {
"get": {
- "description": "Returns public CNET article metadata and body paragraphs from a canonical article URL. CNET articles are freely readable; video-only pages and pages without an article body are reported as upstream errors rather than returned empty.",
- "operationId": "cnet-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one crawled Goodreads book record by id from dataset id enum value `goodreads-books`.",
+ "operationId": "datasets-goodreads-books-item",
"parameters": [
{
- "description": "Canonical CNET article URL",
- "in": "query",
- "name": "url",
+ "description": "Goodreads book id, e.g. 2767052",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "https://www.cnet.com/tech/mobile/meta-connect-new-glasses-muse-ai-hearing-assistance-ray-bans-more/"
+ "x-example": "2767052"
}
],
"produces": [
@@ -227176,7 +256891,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/datasets.goodreadsBookResponseDoc"
}
},
"400": {
@@ -227191,8 +256906,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -227203,37 +256924,149 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CNET article content",
+ "summary": "Get a Goodreads book from dataset",
"tags": [
- "CNET"
+ "Datasets"
]
}
},
- "/cnet/author": {
+ "/datasets/goodreads-books/search": {
"get": {
- "description": "Returns one CNET author's public profile: name, role, biography, areas of expertise, social links, and one page of their recent articles.",
- "operationId": "cnet-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the crawled public Goodreads book catalog stored in a search index. Discovered from curated Listopia \"best of\" lists, a search-term sweep, and author bibliography expansion — not a full catalog. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `publication_desc`, `publication_asc`, `pages_desc`, `pages_asc`, `title_asc`.",
+ "operationId": "datasets-goodreads-books-search",
"parameters": [
{
- "description": "Author slug, e.g. scottstein8",
+ "description": "Full-text query over title, author and description, max 256 characters",
"in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "scottstein8"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Canonical cnet.com/profiles/ URL, optionally with a /page// segment; alternative to slug",
+ "description": "Exact genre filter (e.g. Fantasy, Romance, Nonfiction), max 128 characters",
"in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.cnet.com/profiles/scottstein8/"
+ "name": "genre",
+ "type": "string"
},
{
- "default": 1,
- "description": "1-based page number; overrides any page number in url",
+ "description": "Exact format filter (e.g. Hardcover, Paperback, Kindle Edition), max 128 characters",
+ "in": "query",
+ "name": "format",
+ "type": "string"
+ },
+ {
+ "description": "Exact language filter (e.g. English, Spanish), max 128 characters",
+ "in": "query",
+ "name": "language",
+ "type": "string"
+ },
+ {
+ "description": "Exact publisher filter, max 128 characters",
+ "in": "query",
+ "name": "publisher",
+ "type": "string"
+ },
+ {
+ "description": "Exact author name filter (matches any credited contributor), max 128 characters",
+ "in": "query",
+ "name": "author",
+ "type": "string"
+ },
+ {
+ "description": "Exact Goodreads author id filter, max 128 characters",
+ "in": "query",
+ "name": "author_id",
+ "type": "string"
+ },
+ {
+ "description": "Exact series name filter, max 128 characters",
+ "in": "query",
+ "name": "series",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISBN-10 filter, max 128 characters",
+ "in": "query",
+ "name": "isbn",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISBN-13 filter, max 128 characters",
+ "in": "query",
+ "name": "isbn13",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum average rating, 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum number of ratings",
+ "in": "query",
+ "name": "min_ratings_count",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum page count",
+ "in": "query",
+ "name": "min_pages",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum page count",
+ "in": "query",
+ "name": "max_pages",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum publication year",
+ "in": "query",
+ "name": "min_publication_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum publication year",
+ "in": "query",
+ "name": "max_publication_year",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, rating_desc, reviews_desc, publication_desc, publication_asc, pages_desc, pages_asc, title_asc",
+ "enum": [
+ "relevance",
+ "rating_desc",
+ "reviews_desc",
+ "publication_desc",
+ "publication_asc",
+ "pages_desc",
+ "pages_asc",
+ "title_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
"in": "query",
"name": "page",
"type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -227243,7 +257076,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.cnetAuthorResponseDoc"
+ "$ref": "#/definitions/datasets.goodreadsBooksSearchResponseDoc"
}
},
"400": {
@@ -227252,14 +257085,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -227270,75 +257103,158 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a CNET author profile",
+ "summary": "Search Goodreads books dataset",
"tags": [
- "CNET"
+ "Datasets"
]
}
},
- "/cnet/headlines": {
+ "/datasets/google-map-businesses/facets": {
"get": {
- "description": "Returns fresh CNET headlines from one public topic feed.",
- "operationId": "cnet-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns terms aggregation counts for Google Maps businesses. Facet enum: `category`, `country`, `state`, `state_code`, `county`, `county_code`, `city`, `town`, `website_status`. Category facet values are exact locale-specific Google Maps labels and can be localized, non-ASCII, or contain punctuation; pass a returned value unchanged to the category filter. `state` and `county` keep each country's own administrative vocabulary (e.g. `Provincia de Madrid`, `Département du Nord`); `state_code` and `county_code` are the matching ISO 3166-2 codes (e.g. `ES-MD`, `FR-59`) and are the stable cross-country grouping key. Rows not yet resolved carry no code and are absent from the code facets.",
+ "operationId": "datasets-google-map-businesses-facets",
"parameters": [
{
- "description": "CNET topic slug",
+ "description": "Facet enum: category, country, state, state_code, county, county_code, city, town, website_status",
"enum": [
- "ai",
- "aircraft",
- "auto-tech",
- "automobiles",
- "biology",
- "car-accessories",
- "car-apps",
- "car-industry",
- "car-news",
- "climate",
- "computing",
- "culture",
- "deals",
- "electric-vehicles",
- "energy-and-utilities",
- "entertainment",
- "fashion",
- "fitness",
- "gaming",
- "health",
- "home",
- "home-entertainment",
- "internet",
- "kitchen-and-household",
- "live-blog",
- "medical",
- "mental",
- "mobile",
- "motorcycles",
- "news",
- "nutrition",
- "parenting",
- "personal-care",
- "personal-finance",
- "personal-mobility",
- "privacy",
- "rideshare",
- "roadshow",
- "science",
- "security",
- "services-and-software",
- "sleep",
- "smart-home",
- "social-media",
- "space",
- "sports",
- "tech",
- "tech-industry",
- "tv-and-movies",
- "watercraft",
- "yard-and-outdoors"
+ "category",
+ "country",
+ "state",
+ "state_code",
+ "county",
+ "county_code",
+ "city",
+ "town",
+ "website_status"
],
"in": "query",
- "name": "section",
+ "name": "facet",
"required": true,
+ "type": "string",
+ "x-example": "category"
+ },
+ {
+ "description": "Full-text business search query, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact locale-specific Google Maps category label; use the category facet to discover values, max 128 characters",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Country filter. Accepts the full English name (\\",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Exact state filter, max 128 characters",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact county filter, max 128 characters",
+ "in": "query",
+ "name": "county",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISO 3166-2 state/region code filter, e.g. US-CA or FR-HDF, max 128 characters; use facet=state_code to discover values",
+ "in": "query",
+ "name": "state_code",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISO 3166-2 county/district code filter, e.g. FR-59 or IT-RM, max 128 characters; use facet=county_code to discover values",
+ "in": "query",
+ "name": "county_code",
+ "type": "string"
+ },
+ {
+ "description": "Exact city filter, max 128 characters",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Exact town filter, max 128 characters",
+ "in": "query",
+ "name": "town",
+ "type": "string"
+ },
+ {
+ "description": "Minimum rating, 0 through 5. Businesses with no aggregate Google rating are returned with rating null, so any min_rating above 0 excludes them.",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum review count",
+ "in": "query",
+ "name": "min_review_count",
+ "type": "integer"
+ },
+ {
+ "description": "Filter by website presence",
+ "in": "query",
+ "name": "has_website",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by phone presence",
+ "in": "query",
+ "name": "has_phone",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by location presence: true keeps only mappable businesses with coordinates; false isolates locationless service-area businesses that have no map location",
+ "in": "query",
+ "name": "has_geo",
+ "type": "boolean"
+ },
+ {
+ "description": "Closure filter. true keeps only businesses Google marks Permanently closed; false excludes them, keeping every business not known to be closed. Most rows have never been status-checked and are returned with permanently_closed null, which means unknown, not open.",
+ "in": "query",
+ "name": "permanently_closed",
+ "type": "boolean"
+ },
+ {
+ "description": "Latitude for radius filtering",
+ "in": "query",
+ "name": "lat",
+ "type": "number"
+ },
+ {
+ "description": "Longitude for radius filtering",
+ "in": "query",
+ "name": "lon",
+ "type": "number"
+ },
+ {
+ "description": "Radius in meters, 1 through 50000; requires lat and lon when supplied",
+ "in": "query",
+ "name": "radius_m",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, updated_at_desc, rating_desc, review_count_desc, distance_asc",
+ "enum": [
+ "relevance",
+ "updated_at_desc",
+ "rating_desc",
+ "review_count_desc",
+ "distance_asc"
+ ],
+ "in": "query",
+ "name": "sort",
"type": "string"
}
],
@@ -227349,7 +257265,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/datasets.googleMapBusinessesFacetResponseDoc"
}
},
"400": {
@@ -227358,46 +257274,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CNET section headlines",
- "tags": [
- "CNET"
- ]
- }
- },
- "/cnet/news": {
- "get": {
- "description": "Returns fresh CNET top stories from the public news feed.",
- "operationId": "cnet-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -227408,16 +257292,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CNET top stories",
+ "summary": "Facet stored Google Maps businesses",
"tags": [
- "CNET"
+ "Datasets"
]
}
},
- "/cnet/sections": {
+ "/datasets/google-map-businesses/items/{place_id}": {
"get": {
- "description": "Returns the public CNET topic taxonomy accepted by the headlines endpoint.",
- "operationId": "cnet-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one stored Google Maps business by Google place_id from dataset id enum value `google-map-businesses`. The `category` field contains the exact Google Maps category label returned for the business locale and can be localized, non-ASCII, or contain punctuation. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. Locationless service-area businesses (online/mobile/home-based) have a `null` `geo`. A `permanently_closed` of `true` means Google marks the business permanently closed; `false` means a crawl confirmed it does not; `null` means the business has not been status-checked since capture shipped on 2026-08-31 and is UNKNOWN, not open — so any total computed from this dataset includes an unknown number of closed businesses.",
+ "operationId": "datasets-google-map-businesses-item",
+ "parameters": [
+ {
+ "description": "Google Place ID, max 256 characters",
+ "in": "path",
+ "name": "place_id",
+ "required": true,
+ "type": "string",
+ "x-example": "ChIJ99URUeOAhYAR0J5ZUxTesDQ"
+ }
+ ],
"produces": [
"application/json"
],
@@ -227425,7 +257322,31 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/datasets.googleMapBusinessResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -227434,27 +257355,73 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CNET sections",
+ "summary": "Get a stored Google Maps business",
"tags": [
- "CNET"
+ "Datasets"
]
}
},
- "/cnn/article": {
+ "/datasets/google-map-businesses/nearby": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a CNN article's headline, description, author, publication and update times, section, image, and body paragraphs. Provide a canonical cnn.com article URL.",
- "operationId": "cnn-article",
+ "description": "Searches stored Google Maps businesses near a coordinate in dataset id enum value `google-map-businesses`. `category` is the exact Google Maps category label returned for the business locale; it can be localized, non-ASCII, or contain punctuation, so use the category facet to discover exact filter values. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. `min_rating` above 0 excludes unrated businesses.",
+ "operationId": "datasets-google-map-businesses-nearby",
"parameters": [
{
- "description": "Canonical cnn.com article URL",
+ "description": "Latitude",
"in": "query",
- "name": "url",
+ "name": "lat",
"required": true,
- "type": "string",
- "x-example": "https://www.cnn.com/2026/08/19/africa/kenya-helicopter-crash-latam-intl"
+ "type": "number",
+ "x-example": 40.7484257
+ },
+ {
+ "description": "Longitude",
+ "in": "query",
+ "name": "lon",
+ "required": true,
+ "type": "number",
+ "x-example": -73.98567
+ },
+ {
+ "description": "Radius in meters, max 50000",
+ "in": "query",
+ "name": "radius_m",
+ "required": true,
+ "type": "integer",
+ "x-example": 5000
+ },
+ {
+ "description": "Exact locale-specific Google Maps category label; use the category facet to discover values, max 128 characters",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Minimum rating, 0 through 5. Businesses with no aggregate Google rating are returned with rating null, so any min_rating above 0 excludes them.",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum review count",
+ "in": "query",
+ "name": "min_review_count",
+ "type": "integer"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -227464,7 +257431,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cnn.articleResponseDoc"
+ "$ref": "#/definitions/datasets.googleMapBusinessesSearchResponseDoc"
}
},
"400": {
@@ -227473,12 +257440,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -227490,12 +257451,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -227503,33 +257458,152 @@
"ApiKeyAuth": []
}
],
- "summary": "CNN article content",
+ "summary": "Search nearby stored Google Maps businesses",
"tags": [
- "CNN"
+ "Datasets"
]
}
},
- "/cnn/author": {
+ "/datasets/google-map-businesses/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one CNN profile's byline metadata (name and title), bio paragraphs, social accounts, and recent articles/videos. Provide either a profile slug or a canonical cnn.com/profiles/ URL.",
- "operationId": "cnn-author",
+ "description": "Searches Google Maps business records stored in a search index. Sort enum: `relevance`, `updated_at_desc`, `rating_desc`, `review_count_desc`, `distance_asc`. `category` is the exact Google Maps category label returned for the business locale; it can be localized, non-ASCII, or contain punctuation, so use the category facet to discover exact filter values. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. `rating_desc` sorts unrated businesses last, and `min_rating` above 0 excludes them. Use `has_geo=false` to isolate locationless service-area businesses (which have a `null` `geo`). A `permanently_closed` of `true` means Google marks the business permanently closed; `false` means a crawl confirmed it does not; `null` means the business has not been status-checked since capture shipped on 2026-08-31 and is UNKNOWN, not open — so any total computed from this dataset includes an unknown number of closed businesses. Use `permanently_closed=false` to exclude the confirmed-closed ones.",
+ "operationId": "datasets-google-map-businesses-search",
"parameters": [
{
- "description": "CNN profile slug, e.g. jake-tapper-profile (a slug without the -profile suffix is tried with it first, then as-is)",
+ "description": "Full-text business search query, max 256 characters",
"in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "jake-tapper-profile"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Canonical cnn.com/profiles/ URL, as an alternative to slug",
+ "description": "Exact locale-specific Google Maps category label; use the category facet to discover values, max 128 characters",
"in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.cnn.com/profiles/jake-tapper-profile"
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Country filter. Accepts the full English name (\\",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Exact state filter, max 128 characters",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact county filter, max 128 characters",
+ "in": "query",
+ "name": "county",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISO 3166-2 state/region code filter, e.g. US-CA or FR-HDF, max 128 characters; use facet=state_code to discover values",
+ "in": "query",
+ "name": "state_code",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISO 3166-2 county/district code filter, e.g. FR-59 or IT-RM, max 128 characters; use facet=county_code to discover values",
+ "in": "query",
+ "name": "county_code",
+ "type": "string"
+ },
+ {
+ "description": "Exact city filter, max 128 characters",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Exact town filter, max 128 characters",
+ "in": "query",
+ "name": "town",
+ "type": "string"
+ },
+ {
+ "description": "Minimum rating, 0 through 5. Businesses with no aggregate Google rating are returned with rating null, so any min_rating above 0 excludes them.",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum review count",
+ "in": "query",
+ "name": "min_review_count",
+ "type": "integer"
+ },
+ {
+ "description": "Filter by website presence",
+ "in": "query",
+ "name": "has_website",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by phone presence",
+ "in": "query",
+ "name": "has_phone",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by location presence: true keeps only mappable businesses with coordinates; false isolates locationless service-area businesses that have no map location",
+ "in": "query",
+ "name": "has_geo",
+ "type": "boolean"
+ },
+ {
+ "description": "Closure filter. true keeps only businesses Google marks Permanently closed; false excludes them, keeping every business not known to be closed. Most rows have never been status-checked and are returned with permanently_closed null, which means unknown, not open.",
+ "in": "query",
+ "name": "permanently_closed",
+ "type": "boolean"
+ },
+ {
+ "description": "Latitude for radius filtering or distance sort",
+ "in": "query",
+ "name": "lat",
+ "type": "number"
+ },
+ {
+ "description": "Longitude for radius filtering or distance sort",
+ "in": "query",
+ "name": "lon",
+ "type": "number"
+ },
+ {
+ "description": "Radius in meters, 1 through 50000; requires lat and lon when supplied",
+ "in": "query",
+ "name": "radius_m",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, updated_at_desc, rating_desc, review_count_desc, distance_asc",
+ "enum": [
+ "relevance",
+ "updated_at_desc",
+ "rating_desc",
+ "review_count_desc",
+ "distance_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -227539,7 +257613,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cnn.authorResponseDoc"
+ "$ref": "#/definitions/datasets.googleMapBusinessesSearchResponseDoc"
}
},
"400": {
@@ -227548,12 +257622,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -227565,12 +257633,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -227578,41 +257640,170 @@
"ApiKeyAuth": []
}
],
- "summary": "CNN profile page",
+ "summary": "Search stored Google Maps businesses",
"tags": [
- "CNN"
+ "Datasets"
]
}
},
- "/cnn/headlines": {
+ "/datasets/housing-markets/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the current CNN headline stream for one section, including title, article URL, description, publication time, and image when available.",
- "operationId": "cnn-headlines",
+ "description": "Returns terms aggregation counts for the housing markets dataset. Facet enum: `region_type`, `state_code`, `property_type`, `parent_metro`, `parent_metro_code`, `income_vintage`, `is_latest`, `period_begin`. region_type enum: `national`, `metro`, `county`, `city`, `zip`. property_type enum: `All Residential`, `Single Family Residential`, `Condo/Co-op`, `Townhouse`, `Multi-Family (2-4 Unit)`, `Single Units Only`.",
+ "operationId": "datasets-housing-markets-facets",
"parameters": [
{
- "default": "world",
- "description": "CNN section. Allowed values: world, us, politics, business, health, entertainment, style, travel, sports, science, climate, weather, opinion. Default world.",
+ "description": "Facet enum: region_type, state_code, property_type, parent_metro, parent_metro_code, income_vintage, is_latest, period_begin",
"enum": [
- "world",
- "us",
- "politics",
- "business",
- "health",
- "entertainment",
- "style",
- "travel",
- "sports",
- "science",
- "climate",
- "weather",
- "opinion"
+ "region_type",
+ "state_code",
+ "property_type",
+ "parent_metro",
+ "parent_metro_code",
+ "income_vintage",
+ "is_latest",
+ "period_begin"
],
"in": "query",
- "name": "section",
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "region_type"
+ },
+ {
+ "description": "Full-text query over region name and city, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Region level enum: national, metro, county, city, zip",
+ "enum": [
+ "national",
+ "metro",
+ "county",
+ "city",
+ "zip"
+ ],
+ "in": "query",
+ "name": "region_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact two-letter state code filter, e.g. CA",
+ "in": "query",
+ "name": "state_code",
+ "type": "string"
+ },
+ {
+ "description": "Property type enum: All Residential, Single Family Residential, Condo/Co-op, Townhouse, Multi-Family (2-4 Unit), Single Units Only",
+ "in": "query",
+ "name": "property_type",
"type": "string"
+ },
+ {
+ "description": "Exact parent metro (CBSA) code filter, e.g. 16980",
+ "in": "query",
+ "name": "parent_metro_code",
+ "type": "string"
+ },
+ {
+ "description": "Exact zip code filter (zip-level rows only), e.g. 60616",
+ "in": "query",
+ "name": "zip_code",
+ "type": "string"
+ },
+ {
+ "description": "Exact period start date filter, YYYY-MM-DD",
+ "in": "query",
+ "name": "period",
+ "type": "string"
+ },
+ {
+ "description": "Filter for the most recent period per region and property type",
+ "in": "query",
+ "name": "latest",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum median sale price in USD",
+ "in": "query",
+ "name": "min_median_sale_price",
+ "type": "number"
+ },
+ {
+ "description": "Maximum median sale price in USD",
+ "in": "query",
+ "name": "max_median_sale_price",
+ "type": "number"
+ },
+ {
+ "description": "Minimum median list price in USD",
+ "in": "query",
+ "name": "min_median_list_price",
+ "type": "number"
+ },
+ {
+ "description": "Maximum median list price in USD",
+ "in": "query",
+ "name": "max_median_list_price",
+ "type": "number"
+ },
+ {
+ "description": "Minimum price-to-income ratio",
+ "in": "query",
+ "name": "min_price_to_income",
+ "type": "number"
+ },
+ {
+ "description": "Maximum price-to-income ratio",
+ "in": "query",
+ "name": "max_price_to_income",
+ "type": "number"
+ },
+ {
+ "description": "Minimum salary needed to buy in USD per year",
+ "in": "query",
+ "name": "min_salary_to_buy",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum salary needed to buy in USD per year",
+ "in": "query",
+ "name": "max_salary_to_buy",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum median days on market",
+ "in": "query",
+ "name": "min_median_dom",
+ "type": "number"
+ },
+ {
+ "description": "Maximum median days on market",
+ "in": "query",
+ "name": "max_median_dom",
+ "type": "number"
+ },
+ {
+ "description": "Minimum active inventory",
+ "in": "query",
+ "name": "min_inventory",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum active inventory",
+ "in": "query",
+ "name": "max_inventory",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum homes sold in the period",
+ "in": "query",
+ "name": "min_homes_sold",
+ "type": "integer"
}
],
"produces": [
@@ -227622,7 +257813,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cnn.headlinesResponseDoc"
+ "$ref": "#/definitions/datasets.housingMarketsFacetResponseDoc"
}
},
"400": {
@@ -227642,12 +257833,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -227655,27 +257840,60 @@
"ApiKeyAuth": []
}
],
- "summary": "CNN section headlines",
+ "summary": "Facet the US housing markets dataset",
"tags": [
- "CNN"
+ "Datasets"
]
}
},
- "/cnn/live-story": {
+ "/datasets/housing-markets/items/{region_type}/{table_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a CNN live story's title, description, update time, and chronological post updates. Provide a canonical cnn.com live-news URL.",
- "operationId": "cnn-live-story",
+ "description": "Returns one housing-market record by region_type and Redfin table_id from dataset id enum value `housing-markets`. region_type enum: `national`, `metro`, `county`, `city`, `zip`. property_type enum: `All Residential`, `Single Family Residential`, `Condo/Co-op`, `Townhouse`, `Multi-Family (2-4 Unit)`, `Single Units Only` (defaults to `All Residential`). `period` defaults to the most recent period on record. Pass `history=true` to get the full monthly series (a `{dataset, region_type, table_id, property_type, items}` envelope, sorted by period ascending) instead of a single record.",
+ "operationId": "datasets-housing-markets-item",
"parameters": [
{
- "description": "Canonical cnn.com live-news URL",
- "in": "query",
- "name": "url",
+ "description": "Region level enum: national, metro, county, city, zip",
+ "enum": [
+ "national",
+ "metro",
+ "county",
+ "city",
+ "zip"
+ ],
+ "in": "path",
+ "name": "region_type",
"required": true,
"type": "string",
- "x-example": "https://www.cnn.com/2026/08/26/world/live-news/iran-war-trump"
+ "x-example": "national"
+ },
+ {
+ "description": "Redfin table id (the region's stable numeric id)",
+ "in": "path",
+ "name": "table_id",
+ "required": true,
+ "type": "integer",
+ "x-example": 26097
+ },
+ {
+ "description": "Exact period start date, YYYY-MM-DD; defaults to the latest period",
+ "in": "query",
+ "name": "period",
+ "type": "string"
+ },
+ {
+ "description": "Property type enum: All Residential, Single Family Residential, Condo/Co-op, Townhouse, Multi-Family (2-4 Unit), Single Units Only; defaults to All Residential",
+ "in": "query",
+ "name": "property_type",
+ "type": "string"
+ },
+ {
+ "description": "Return the full monthly series instead of a single period",
+ "in": "query",
+ "name": "history",
+ "type": "boolean"
}
],
"produces": [
@@ -227685,7 +257903,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cnn.liveStoryResponseDoc"
+ "$ref": "#/definitions/datasets.housingMarketItemResponseDoc"
}
},
"400": {
@@ -227711,12 +257929,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -227724,96 +257936,186 @@
"ApiKeyAuth": []
}
],
- "summary": "CNN live story updates",
+ "summary": "Get a US housing market record from the dataset",
"tags": [
- "CNN"
+ "Datasets"
]
}
},
- "/coingecko/categories": {
+ "/datasets/housing-markets/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized CoinGecko category rows from the public categories page. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-categories",
+ "description": "Searches monthly Redfin housing-market statistics per region and property type since 2012, joined to Census ACS income for affordability metrics. region_type enum: `national`, `metro`, `county`, `city`, `zip`. property_type enum: `All Residential`, `Single Family Residential`, `Condo/Co-op`, `Townhouse`, `Multi-Family (2-4 Unit)`, `Single Units Only`. Sort enum: `relevance`, `price_desc`, `price_asc`, `list_price_desc`, `list_price_asc`, `price_to_income_desc`, `price_to_income_asc`, `salary_to_buy_desc`, `salary_to_buy_asc`, `dom_asc`, `dom_desc`, `inventory_desc`, `homes_sold_desc`, `period_desc`. Use `latest=true` for the most recent period per region series.",
+ "operationId": "datasets-housing-markets-search",
"parameters": [
{
- "description": "Rows to return, default 100, max 100",
+ "description": "Full-text query over region name and city, max 256 characters",
"in": "query",
- "name": "limit",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Region level enum: national, metro, county, city, zip",
+ "enum": [
+ "national",
+ "metro",
+ "county",
+ "city",
+ "zip"
+ ],
+ "in": "query",
+ "name": "region_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact two-letter state code filter, e.g. CA",
+ "in": "query",
+ "name": "state_code",
+ "type": "string"
+ },
+ {
+ "description": "Property type enum: All Residential, Single Family Residential, Condo/Co-op, Townhouse, Multi-Family (2-4 Unit), Single Units Only",
+ "in": "query",
+ "name": "property_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact parent metro (CBSA) code filter, e.g. 16980",
+ "in": "query",
+ "name": "parent_metro_code",
+ "type": "string"
+ },
+ {
+ "description": "Exact zip code filter (zip-level rows only), e.g. 60616",
+ "in": "query",
+ "name": "zip_code",
+ "type": "string"
+ },
+ {
+ "description": "Exact period start date filter, YYYY-MM-DD",
+ "in": "query",
+ "name": "period",
+ "type": "string"
+ },
+ {
+ "description": "Filter for the most recent period per region and property type",
+ "in": "query",
+ "name": "latest",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum median sale price in USD",
+ "in": "query",
+ "name": "min_median_sale_price",
+ "type": "number"
+ },
+ {
+ "description": "Maximum median sale price in USD",
+ "in": "query",
+ "name": "max_median_sale_price",
+ "type": "number"
+ },
+ {
+ "description": "Minimum median list price in USD",
+ "in": "query",
+ "name": "min_median_list_price",
+ "type": "number"
+ },
+ {
+ "description": "Maximum median list price in USD",
+ "in": "query",
+ "name": "max_median_list_price",
+ "type": "number"
+ },
+ {
+ "description": "Minimum price-to-income ratio",
+ "in": "query",
+ "name": "min_price_to_income",
+ "type": "number"
+ },
+ {
+ "description": "Maximum price-to-income ratio",
+ "in": "query",
+ "name": "max_price_to_income",
+ "type": "number"
+ },
+ {
+ "description": "Minimum salary needed to buy in USD per year",
+ "in": "query",
+ "name": "min_salary_to_buy",
"type": "integer"
},
{
- "description": "Quote currency",
+ "description": "Maximum salary needed to buy in USD per year",
+ "in": "query",
+ "name": "max_salary_to_buy",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum median days on market",
+ "in": "query",
+ "name": "min_median_dom",
+ "type": "number"
+ },
+ {
+ "description": "Maximum median days on market",
+ "in": "query",
+ "name": "max_median_dom",
+ "type": "number"
+ },
+ {
+ "description": "Minimum active inventory",
+ "in": "query",
+ "name": "min_inventory",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum active inventory",
+ "in": "query",
+ "name": "max_inventory",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum homes sold in the period",
+ "in": "query",
+ "name": "min_homes_sold",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, price_desc, price_asc, list_price_desc, list_price_asc, price_to_income_desc, price_to_income_asc, salary_to_buy_desc, salary_to_buy_asc, dom_asc, dom_desc, inventory_desc, homes_sold_desc, period_desc",
"enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
+ "relevance",
+ "price_desc",
+ "price_asc",
+ "list_price_desc",
+ "list_price_asc",
+ "price_to_income_desc",
+ "price_to_income_asc",
+ "salary_to_buy_desc",
+ "salary_to_buy_asc",
+ "dom_asc",
+ "dom_desc",
+ "inventory_desc",
+ "homes_sold_desc",
+ "period_desc"
],
"in": "query",
- "name": "vs_currency",
+ "name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -227823,7 +258125,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.categoriesResponseDoc"
+ "$ref": "#/definitions/datasets.housingMarketsSearchResponseDoc"
}
},
"400": {
@@ -227832,14 +258134,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -227850,109 +258152,158 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko categories",
+ "summary": "Search the US housing markets dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/category/{slug}/coins": {
+ "/datasets/instagram-users/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized coin rows from a CoinGecko public category page. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-category-coins",
+ "description": "Returns terms aggregation counts for the Instagram users dataset. Facet enum: `is_verified`, `is_business_account`, `has_bio`, `has_external_url`, `category_name`, `source_tier`.",
+ "operationId": "datasets-instagram-users-facets",
"parameters": [
{
- "description": "CoinGecko category slug such as stablecoins",
- "in": "path",
- "name": "slug",
+ "description": "Facet enum: is_verified, is_business_account, has_bio, has_external_url, category_name, source_tier",
+ "enum": [
+ "is_verified",
+ "is_business_account",
+ "has_bio",
+ "has_external_url",
+ "category_name",
+ "source_tier"
+ ],
+ "in": "query",
+ "name": "facet",
"required": true,
+ "type": "string",
+ "x-example": "is_verified"
+ },
+ {
+ "description": "Full-text query over username, full_name and biography, max 256 characters",
+ "in": "query",
+ "name": "q",
"type": "string"
},
{
- "description": "Page number, default 1",
+ "description": "Exact username filter (case-insensitive), max 128 characters",
"in": "query",
- "name": "page",
+ "name": "username",
+ "type": "string"
+ },
+ {
+ "description": "Exact category filter (case-insensitive, e.g. Digital Creator), max 128 characters",
+ "in": "query",
+ "name": "category_name",
+ "type": "string"
+ },
+ {
+ "description": "Exact filter for seed tier (e.g. crossref, vertical-hashtags, mention-graph, head-directory)",
+ "in": "query",
+ "name": "source_tier",
+ "type": "string"
+ },
+ {
+ "description": "Filter by the Instagram verification checkmark",
+ "in": "query",
+ "name": "is_verified",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by business or creator accounts",
+ "in": "query",
+ "name": "is_business_account",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by a non-empty profile biography",
+ "in": "query",
+ "name": "has_bio",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by a linked external URL",
+ "in": "query",
+ "name": "has_external_url",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum follower count",
+ "in": "query",
+ "name": "min_followers",
"type": "integer"
},
{
- "description": "Rows to return, default 100, max 100",
+ "description": "Maximum follower count",
"in": "query",
- "name": "limit",
+ "name": "max_followers",
"type": "integer"
},
{
- "description": "Quote currency",
+ "description": "Minimum follower-to-following ratio",
+ "in": "query",
+ "name": "min_ratio",
+ "type": "number"
+ },
+ {
+ "description": "Maximum follower-to-following ratio",
+ "in": "query",
+ "name": "max_ratio",
+ "type": "number"
+ },
+ {
+ "description": "Accounts created on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "created_after",
+ "type": "string"
+ },
+ {
+ "description": "Accounts created on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "created_before",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "crawled_after",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "crawled_before",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, followers_desc, followers_asc, crawled_at_desc, crawled_at_asc, created_at_desc, created_at_asc",
"enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
+ "relevance",
+ "followers_desc",
+ "followers_asc",
+ "crawled_at_desc",
+ "crawled_at_asc",
+ "created_at_desc",
+ "created_at_asc"
],
"in": "query",
- "name": "vs_currency",
+ "name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -227962,7 +258313,64 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.categoryCoinsResponseDoc"
+ "$ref": "#/definitions/datasets.instagramUsersFacetResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Facet the Instagram users dataset",
+ "tags": [
+ "Datasets"
+ ]
+ }
+ },
+ "/datasets/instagram-users/items/{username}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Instagram user record by username from dataset id enum value `instagram-users`.",
+ "operationId": "datasets-instagram-users-item",
+ "parameters": [
+ {
+ "description": "Instagram username, with or without a leading @, max 128 characters",
+ "in": "path",
+ "name": "username",
+ "required": true,
+ "type": "string",
+ "x-example": "instagram"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/datasets.instagramUserResponseDoc"
}
},
"400": {
@@ -227977,14 +258385,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -227995,96 +258403,142 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko category coins",
+ "summary": "Get an Instagram user from the dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/chains": {
+ "/datasets/instagram-users/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized chain rows from the CoinGecko public website chains table. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-chains",
+ "description": "Searches public Instagram user profiles stored in a search index. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `crawled_at_desc`, `crawled_at_asc`, `created_at_desc`, `created_at_asc`.",
+ "operationId": "datasets-instagram-users-search",
"parameters": [
{
- "description": "Rows to return, default 100, max 100",
+ "description": "Full-text query over username, full_name and biography, max 256 characters",
"in": "query",
- "name": "limit",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact username filter (case-insensitive), max 128 characters",
+ "in": "query",
+ "name": "username",
+ "type": "string"
+ },
+ {
+ "description": "Exact category filter (case-insensitive, e.g. Digital Creator), max 128 characters",
+ "in": "query",
+ "name": "category_name",
+ "type": "string"
+ },
+ {
+ "description": "Exact filter for seed tier (e.g. crossref, vertical-hashtags, mention-graph, head-directory), max 128 characters",
+ "in": "query",
+ "name": "source_tier",
+ "type": "string"
+ },
+ {
+ "description": "Filter by the Instagram verification checkmark",
+ "in": "query",
+ "name": "is_verified",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by business or creator accounts",
+ "in": "query",
+ "name": "is_business_account",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by a non-empty profile biography",
+ "in": "query",
+ "name": "has_bio",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by a linked external URL",
+ "in": "query",
+ "name": "has_external_url",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum follower count",
+ "in": "query",
+ "name": "min_followers",
"type": "integer"
},
{
- "description": "Quote currency",
+ "description": "Maximum follower count",
+ "in": "query",
+ "name": "max_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum follower-to-following ratio",
+ "in": "query",
+ "name": "min_ratio",
+ "type": "number"
+ },
+ {
+ "description": "Maximum follower-to-following ratio",
+ "in": "query",
+ "name": "max_ratio",
+ "type": "number"
+ },
+ {
+ "description": "Accounts created on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "created_after",
+ "type": "string"
+ },
+ {
+ "description": "Accounts created on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "created_before",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "crawled_after",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "crawled_before",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, followers_desc, followers_asc, crawled_at_desc, crawled_at_asc, created_at_desc, created_at_asc",
"enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
+ "relevance",
+ "followers_desc",
+ "followers_asc",
+ "crawled_at_desc",
+ "crawled_at_asc",
+ "created_at_desc",
+ "created_at_asc"
],
"in": "query",
- "name": "vs_currency",
+ "name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -228094,7 +258548,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.chainsResponseDoc"
+ "$ref": "#/definitions/datasets.instagramUsersSearchResponseDoc"
}
},
"400": {
@@ -228103,14 +258557,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -228121,103 +258575,103 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko chains",
+ "summary": "Search the Instagram users dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/chains/{id}": {
+ "/datasets/jobs/companies": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized sections from a CoinGecko public chain detail page. Sections are omitted when not present. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-chain",
+ "description": "Searches the discovered company board registry — which companies are hiring, on which ATS (or, for the 5 single-company big-tech providers, which platform), with how many open roles. Set sponsors_visa=true to keep companies with certified employer filings in recent public U.S. Department of Labor LCA disclosure data. This is company-level historical evidence, not a guarantee for a specific role or candidate. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. status enum: `active`, `empty`, `gone`, `blocked`, `pending`, `invalid`. sort enum: `open_desc`, `company_asc`, `crawled_desc`.",
+ "operationId": "datasets-jobs-companies",
"parameters": [
{
- "description": "CoinGecko chain id such as ethereum",
- "in": "path",
- "name": "id",
- "required": true,
+ "description": "Match on company name / domain",
+ "in": "query",
+ "name": "q",
"type": "string"
},
{
- "description": "Rows per section to return, default 20, max 100",
+ "description": "Provider filter",
+ "enum": [
+ "greenhouse",
+ "lever",
+ "ashby",
+ "workday",
+ "smartrecruiters",
+ "workable",
+ "recruitee",
+ "rippling",
+ "personio",
+ "teamtailor",
+ "oracle",
+ "ukg",
+ "icims",
+ "eightfold",
+ "gem",
+ "pinpoint",
+ "amazon-jobs",
+ "apple-jobs",
+ "google-jobs",
+ "meta-jobs",
+ "tesla-jobs"
+ ],
"in": "query",
- "name": "limit",
+ "name": "provider",
+ "type": "string"
+ },
+ {
+ "description": "Board status. Enum: active, empty, gone, blocked, pending, invalid",
+ "enum": [
+ "active",
+ "empty",
+ "gone",
+ "blocked",
+ "pending",
+ "invalid"
+ ],
+ "in": "query",
+ "name": "status",
+ "type": "string"
+ },
+ {
+ "description": "Minimum open roles",
+ "in": "query",
+ "name": "min_open_roles",
"type": "integer"
},
{
- "description": "Quote currency",
+ "description": "Keep companies with recent certified DOL LCA filings (default false)",
+ "in": "query",
+ "name": "sponsors_visa",
+ "type": "boolean"
+ },
+ {
+ "description": "Sort enum: open_desc, company_asc, crawled_desc",
"enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
+ "open_desc",
+ "company_asc",
+ "crawled_desc"
],
"in": "query",
- "name": "vs_currency",
+ "name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, default 20, max 100",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -228227,7 +258681,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.chainDetailResponseDoc"
+ "$ref": "#/definitions/datasets.jobsCompaniesResponseDoc"
}
},
"400": {
@@ -228236,23 +258690,11 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -228260,97 +258702,27 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko chain detail",
+ "summary": "Find which companies are hiring",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/coin/{id}": {
+ "/datasets/jobs/companies/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized CoinGecko profile, market stats, links, and categories for one coin id. This endpoint supports the documented `vs_currency` enum and is not intended for real-time trading.",
- "operationId": "coingecko-coin",
+ "description": "Returns one discovered company board by its dataset board id. When the company name matches recent public U.S. Department of Labor LCA disclosure data, the response includes `lca_sponsorship` with filing counts and observed fiscal-quarter range; this is company-level historical evidence, not a guarantee for a specific role or candidate. When the board carries a known domain, the response also includes a `tech_stack` firmographic hint. Returns 404 when the board id is not in the registry.",
+ "operationId": "datasets-jobs-company-item",
"parameters": [
{
- "description": "CoinGecko coin id such as bitcoin",
+ "description": "Dataset board id",
"in": "path",
"name": "id",
"required": true,
- "type": "string"
- },
- {
- "description": "Quote currency",
- "enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
- ],
- "in": "query",
- "name": "vs_currency",
- "type": "string"
+ "type": "string",
+ "x-example": "icims:062ad50e489784f8d225"
}
],
"produces": [
@@ -228360,7 +258732,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.coinResponseDoc"
+ "$ref": "#/definitions/datasets.jobsItemResponseDoc"
}
},
"400": {
@@ -228380,12 +258752,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -228393,113 +258759,25 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko coin profile",
+ "summary": "Get a single company by board id",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/coin/{id}/analysis": {
+ "/datasets/jobs/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns derived price-chart metrics from CoinGecko public chart JSON. This endpoint supports the documented `vs_currency` enum and is not investment advice or real-time trading data.",
- "operationId": "coingecko-coin-analysis",
+ "description": "Aggregations over all open postings: top companies hiring, breakdown by provider (every provider filterable via /datasets/jobs/search's `provider` param), department, location, employment type, skill, benefit, education, security clearance, seniority, and ESCO/ISCO job family, plus the remote share — a live hiring-market snapshot. Seniority uses one mutually exclusive value: `entry`, `mid`, or `senior`; ambiguous occupations are omitted from job-family buckets.",
+ "operationId": "datasets-jobs-facets",
"parameters": [
{
- "description": "CoinGecko coin id such as bitcoin",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string"
- },
- {
- "description": "Quote currency",
- "enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
- ],
- "in": "query",
- "name": "vs_currency",
- "type": "string"
- },
- {
- "description": "Chart range",
- "enum": [
- "24h",
- "max"
- ],
- "in": "query",
- "name": "range",
- "type": "string"
- },
- {
- "description": "Fetch optional CoinGecko chart annotations",
+ "description": "Buckets per facet, default 20, max 100",
"in": "query",
- "name": "include_annotations",
- "type": "boolean"
+ "name": "size",
+ "type": "integer"
}
],
"produces": [
@@ -228509,7 +258787,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.analysisResponseDoc"
+ "$ref": "#/definitions/datasets.jobsFacetResponseDoc"
}
},
"400": {
@@ -228518,23 +258796,11 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -228542,103 +258808,27 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko coin chart analysis",
+ "summary": "Facet the jobs dataset (hiring market aggregates)",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/exchange/{id}": {
+ "/datasets/jobs/items/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized profile stats and market rows from a CoinGecko public exchange page. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-exchange",
+ "description": "Returns one crawled job posting by its dataset posting id. Returns 404 when absent.",
+ "operationId": "datasets-jobs-item",
"parameters": [
{
- "description": "CoinGecko exchange id such as binance",
+ "description": "Dataset posting id",
"in": "path",
"name": "id",
"required": true,
- "type": "string"
- },
- {
- "description": "Rows to return, default 100, max 100",
- "in": "query",
- "name": "limit",
- "type": "integer"
- },
- {
- "description": "Quote currency",
- "enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
- ],
- "in": "query",
- "name": "vs_currency",
- "type": "string"
+ "type": "string",
+ "x-example": "personio:8e850ee0967201fc1bf3:364429bb4364f43b"
}
],
"produces": [
@@ -228648,7 +258838,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.exchangeDetailResponseDoc"
+ "$ref": "#/definitions/datasets.jobsItemResponseDoc"
}
},
"400": {
@@ -228668,12 +258858,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -228681,114 +258865,88 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko exchange detail",
+ "summary": "Get a single posting from the jobs dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/exchanges": {
+ "/datasets/jobs/nearby": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized exchange rows from CoinGecko public website exchange tables. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-exchanges",
+ "description": "Finds crawled job postings within `radius_km` of a `lat`/`lon`, nearest first. Only geocoded postings participate (the geo-enrich worker back-fills coordinates from each posting's location). Open roles only by default. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`.",
+ "operationId": "datasets-jobs-nearby",
"parameters": [
{
- "description": "Exchange table kind, default spot",
+ "description": "Latitude, -90..90",
+ "in": "query",
+ "name": "lat",
+ "required": true,
+ "type": "number",
+ "x-example": 40.7484257
+ },
+ {
+ "description": "Longitude, -180..180",
+ "in": "query",
+ "name": "lon",
+ "required": true,
+ "type": "number",
+ "x-example": -73.98567
+ },
+ {
+ "description": "Search radius in km, default 50, max 500",
+ "in": "query",
+ "name": "radius_km",
+ "type": "number"
+ },
+ {
+ "description": "Provider filter",
"enum": [
- "spot",
- "dex",
- "derivatives",
- "perp_dex"
+ "greenhouse",
+ "lever",
+ "ashby",
+ "workday",
+ "smartrecruiters",
+ "workable",
+ "recruitee",
+ "rippling",
+ "personio",
+ "teamtailor",
+ "oracle",
+ "ukg",
+ "icims",
+ "eightfold",
+ "gem",
+ "pinpoint",
+ "amazon-jobs",
+ "apple-jobs",
+ "google-jobs",
+ "meta-jobs",
+ "tesla-jobs"
],
"in": "query",
- "name": "kind",
+ "name": "provider",
"type": "string"
},
{
- "description": "Page number, default 1",
+ "description": "Include closed/filled roles (default false)",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "include_closed",
+ "type": "boolean"
},
{
- "description": "Rows to return, default 100, max 100",
+ "description": "Page number, default 1",
"in": "query",
- "name": "limit",
+ "name": "page",
"type": "integer"
},
{
- "description": "Quote currency",
- "enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
- ],
+ "description": "Page size, default 20, max 100",
"in": "query",
- "name": "vs_currency",
- "type": "string"
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -228798,7 +258956,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.exchangesResponseDoc"
+ "$ref": "#/definitions/datasets.jobsSearchResponseDoc"
}
},
"400": {
@@ -228812,12 +258970,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -228825,96 +258977,166 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko exchanges",
+ "summary": "Find postings near a coordinate",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/gainers-losers": {
+ "/datasets/jobs/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized rows from CoinGecko's public crypto gainers and losers table. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-gainers-losers",
+ "description": "Full-text + faceted search over every job posting crawled from every discovered company ATS board (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Rippling, Personio, Teamtailor, Oracle, UKG, iCIMS, Eightfold, Gem, Pinpoint) plus 5 single-company big-tech careers platforms (Amazon, Apple, Google, Meta, Tesla). Open roles only by default (set include_closed=true for historical/filled roles). Salary is parsed from a structured field when the provider has one, or from an explicit pay figure stated in the description otherwise, so coverage varies by posting rather than by provider; min_salary/max_salary filter on it and require salary_currency, since comparing raw compensation numbers across currencies is meaningless. Location is also exposed as structured city/state/country fields alongside the free-text location string, so city/state/country filter on an exact match of those parsed components rather than substring-matching the display string. job_family is an exact level-2 ISCO family label assigned from ESCO occupation evidence; ambiguous postings remain unclassified and do not match that filter. employment_type is never populated for google-jobs/meta-jobs, and posted_at (so sort=posted_desc) is never populated for meta-jobs/tesla-jobs -- their upstream APIs expose no such field. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. workplace_type enum: `onsite`, `hybrid`, `remote`. sort enum: `relevance`, `posted_desc`, `company_asc`.",
+ "operationId": "datasets-jobs-search",
"parameters": [
{
- "description": "Rows per section to return, default 20, max 100",
+ "description": "Full-text over title, company, description",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Quote currency",
+ "description": "Company name match",
+ "in": "query",
+ "name": "company",
+ "type": "string"
+ },
+ {
+ "description": "Provider filter",
"enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
+ "greenhouse",
+ "lever",
+ "ashby",
+ "workday",
+ "smartrecruiters",
+ "workable",
+ "recruitee",
+ "rippling",
+ "personio",
+ "teamtailor",
+ "oracle",
+ "ukg",
+ "icims",
+ "eightfold",
+ "gem",
+ "pinpoint",
+ "amazon-jobs",
+ "apple-jobs",
+ "google-jobs",
+ "meta-jobs",
+ "tesla-jobs"
+ ],
+ "in": "query",
+ "name": "provider",
+ "type": "string"
+ },
+ {
+ "description": "Exact department filter",
+ "in": "query",
+ "name": "department",
+ "type": "string"
+ },
+ {
+ "description": "Location match",
+ "in": "query",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "description": "Exact city filter (parsed location component)",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Exact state/region filter (parsed location component)",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact country filter (parsed location component); ISO country code or name, matched case-insensitively",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Exact employment-type filter",
+ "in": "query",
+ "name": "employment_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact ESCO/ISCO job-family label filter",
+ "in": "query",
+ "name": "job_family",
+ "type": "string"
+ },
+ {
+ "description": "Filter by remote (true or false)",
+ "in": "query",
+ "name": "remote",
+ "type": "boolean"
+ },
+ {
+ "description": "Workplace type filter",
+ "enum": [
+ "onsite",
+ "hybrid",
+ "remote"
+ ],
+ "in": "query",
+ "name": "workplace_type",
+ "type": "string"
+ },
+ {
+ "description": "Include closed/filled roles (default false = open only)",
+ "in": "query",
+ "name": "include_closed",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum salary (matches postings whose range reaches at least this); requires salary_currency",
+ "in": "query",
+ "name": "min_salary",
+ "type": "number"
+ },
+ {
+ "description": "Maximum salary (matches postings whose range starts at or below this); requires salary_currency",
+ "in": "query",
+ "name": "max_salary",
+ "type": "number"
+ },
+ {
+ "description": "3-letter ISO currency code (e.g. USD) the min_salary/max_salary bounds are in; required when either bound is set",
+ "in": "query",
+ "name": "salary_currency",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, posted_desc, company_asc",
+ "enum": [
+ "relevance",
+ "posted_desc",
+ "company_asc"
],
"in": "query",
- "name": "vs_currency",
+ "name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, default 20, max 100; page*page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -228924,7 +259146,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.gainersLosersResponseDoc"
+ "$ref": "#/definitions/datasets.jobsSearchResponseDoc"
}
},
"400": {
@@ -228938,12 +259160,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -228951,19 +259167,161 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko crypto gainers and losers",
+ "summary": "Search the jobs dataset (all companies' live postings)",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/global": {
+ "/datasets/journalists/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized global market metrics from CoinGecko's public charts page.",
- "operationId": "coingecko-global",
+ "description": "Returns distribution counts over the journalists index (dataset id enum value `journalists`), honoring the same filters as search. Facet enum: `outlet`, `vertical`, `topic`, `contact_type`, `record_type`, `role_type`, `email_kind`, `outreach_readiness_band`. `facet=outlet` returns every outlet (up to 1000) in one response; other facets return their top 50 values. Facets are not paginated: `page` and `page_size` are ignored.",
+ "operationId": "datasets-journalists-facets",
+ "parameters": [
+ {
+ "description": "Facet enum: outlet, vertical, topic, contact_type, record_type, role_type, email_kind, outreach_readiness_band",
+ "enum": [
+ "outlet",
+ "vertical",
+ "topic",
+ "contact_type",
+ "record_type",
+ "role_type",
+ "email_kind",
+ "outreach_readiness_band"
+ ],
+ "in": "query",
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "outlet"
+ },
+ {
+ "description": "Full-text match on the journalist's name, title, and bio, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact outlet id filter",
+ "in": "query",
+ "name": "outlet",
+ "type": "string"
+ },
+ {
+ "description": "Exact beat-vertical filter. Enum: tech, crypto, marketing, consumer_tech, consumer_policy, cybersecurity, health, gaming, climate, business, entertainment, sports, legal, science, politics, real_estate, automotive, travel, food, education, design, film_tv, fashion, music, personal_finance, tech_independent, culture_independent, local_news, construction, banking, retail, aerospace_defense, energy, agriculture, local_business, general_news",
+ "enum": [
+ "tech",
+ "crypto",
+ "marketing",
+ "consumer_tech",
+ "consumer_policy",
+ "cybersecurity",
+ "health",
+ "gaming",
+ "climate",
+ "business",
+ "entertainment",
+ "sports",
+ "legal",
+ "science",
+ "politics",
+ "real_estate",
+ "automotive",
+ "travel",
+ "food",
+ "education",
+ "design",
+ "film_tv",
+ "fashion",
+ "music",
+ "personal_finance",
+ "tech_independent",
+ "culture_independent",
+ "local_news",
+ "construction",
+ "banking",
+ "retail",
+ "aerospace_defense",
+ "energy",
+ "agriculture",
+ "local_business",
+ "general_news"
+ ],
+ "in": "query",
+ "name": "vertical",
+ "type": "string"
+ },
+ {
+ "description": "Exact topic filter",
+ "in": "query",
+ "name": "topic",
+ "type": "string"
+ },
+ {
+ "description": "Contact-availability filter. Enum: email, social, none",
+ "enum": [
+ "email",
+ "social",
+ "none"
+ ],
+ "in": "query",
+ "name": "contact_type",
+ "type": "string"
+ },
+ {
+ "description": "Record classification filter. Enum: person, desk, organization, syndicated_byline, unknown",
+ "enum": [
+ "person",
+ "desk",
+ "organization",
+ "syndicated_byline",
+ "unknown"
+ ],
+ "in": "query",
+ "name": "record_type",
+ "type": "string"
+ },
+ {
+ "description": "Role classification filter. Enum: staff, editor, reporter, contributor, freelancer, columnist, non_editorial, unknown",
+ "enum": [
+ "staff",
+ "editor",
+ "reporter",
+ "contributor",
+ "freelancer",
+ "columnist",
+ "non_editorial",
+ "unknown"
+ ],
+ "in": "query",
+ "name": "role_type",
+ "type": "string"
+ },
+ {
+ "description": "Email semantics filter. Enum: individual_work, individual_personal_public, shared_desk, tips_or_submissions, outlet_generic, unknown",
+ "enum": [
+ "individual_work",
+ "individual_personal_public",
+ "shared_desk",
+ "tips_or_submissions",
+ "outlet_generic",
+ "unknown"
+ ],
+ "in": "query",
+ "name": "email_kind",
+ "type": "string"
+ },
+ {
+ "description": "Minimum outreach-readiness score, from 0 to 100",
+ "in": "query",
+ "name": "min_outreach_readiness",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
@@ -228971,7 +259329,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.globalResponseDoc"
+ "$ref": "#/definitions/datasets.journalistsFacetResponseDoc"
}
},
"400": {
@@ -228980,14 +259338,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -228998,52 +259356,35 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko global market snapshot",
+ "summary": "Facet the journalists dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/global/charts": {
+ "/datasets/journalists/items/{outlet}/{slug}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized global chart series from public CoinGecko website JSON endpoints.",
- "operationId": "coingecko-global-charts",
+ "description": "Returns one journalist by outlet id and slug from dataset id enum value `journalists`. Returns 404 when the outlet is not supported or the journalist is not in the index.",
+ "operationId": "datasets-journalists-item",
"parameters": [
{
- "description": "Chart kind, default total_market_cap",
- "enum": [
- "total_market_cap",
- "bitcoin_dominance",
- "altcoin_market_cap",
- "defi_market_cap"
- ],
- "in": "query",
- "name": "kind",
- "type": "string"
- },
- {
- "description": "Chart range, default 90d",
- "enum": [
- "24h",
- "7d",
- "14d",
- "30d",
- "90d",
- "1y",
- "max"
- ],
- "in": "query",
- "name": "range",
- "type": "string"
+ "description": "Outlet id, e.g. techcrunch. Use the ids returned by facets?facet=outlet",
+ "in": "path",
+ "name": "outlet",
+ "required": true,
+ "type": "string",
+ "x-example": "techcrunch"
},
{
- "description": "Rows per series to return, default 120, max 500",
- "in": "query",
- "name": "limit",
- "type": "integer"
+ "description": "Journalist slug within the outlet, e.g. zack-whittaker",
+ "in": "path",
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "zack-whittaker"
}
],
"produces": [
@@ -229053,7 +259394,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.globalChartsResponseDoc"
+ "$ref": "#/definitions/datasets.journalistsItemResponseDoc"
}
},
"400": {
@@ -229062,14 +259403,20 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -229080,40 +259427,165 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko global chart series",
+ "summary": "Get a journalist from the journalists dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/learn/articles": {
+ "/datasets/journalists/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized article cards from CoinGecko Learn public pages.",
- "operationId": "coingecko-learn-articles",
+ "description": "Searches the journalists index (dataset id enum value `journalists`) — public journalist and reporter records crawled from news outlets' own staff/author pages, for PR outreach. Each record carries the outlet, title, best-effort beat topics, and any public contact info found on that outlet's own page, plus deterministic record_type, role_type, email_kind, and outreach-readiness quality signals. There is no cross-outlet upstream search; this dataset is built by crawling a curated roster of outlets ourselves. vertical enum: `tech`, `crypto`, `marketing`, `consumer_tech`, `consumer_policy`, `cybersecurity`, `health`, `gaming`, `climate`, `business`, `entertainment`, `sports`, `legal`, `science`, `politics`, `real_estate`, `automotive`, `travel`, `food`, `education`, `design`, `film_tv`, `fashion`, `music`, `personal_finance`, `tech_independent`, `culture_independent`, `local_news`, `construction`, `banking`, `retail`, `aerospace_defense`, `energy`, `agriculture`, `local_business`. contact_type enum: `email`, `social`, `none`. record_type enum: `person`, `desk`, `organization`, `syndicated_byline`, `unknown`. role_type enum: `staff`, `editor`, `reporter`, `contributor`, `freelancer`, `columnist`, `non_editorial`, `unknown`. email_kind enum: `individual_work`, `individual_personal_public`, `shared_desk`, `tips_or_submissions`, `outlet_generic`, `unknown`. sort enum: `relevance`, `name_asc`, `outlet_asc`, `crawled_desc`, `readiness_desc`.",
+ "operationId": "datasets-journalists-search",
"parameters": [
{
- "description": "Learn category, default all",
+ "description": "Full-text match on the journalist's name, title, and bio, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact outlet id filter, e.g. techcrunch, coindesk. Use the ids returned by facets?facet=outlet",
+ "in": "query",
+ "name": "outlet",
+ "type": "string"
+ },
+ {
+ "description": "Exact beat-vertical filter. Enum: tech, crypto, marketing, consumer_tech, consumer_policy, cybersecurity, health, gaming, climate, business, entertainment, sports, legal, science, politics, real_estate, automotive, travel, food, education, design, film_tv, fashion, music, personal_finance, tech_independent, culture_independent, local_news, construction, banking, retail, aerospace_defense, energy, agriculture, local_business, general_news",
"enum": [
- "all",
- "latest",
- "airdrop-guides",
- "coins-and-tokens",
- "guides",
- "wallets-and-bridges",
- "api",
- "reviews"
+ "tech",
+ "crypto",
+ "marketing",
+ "consumer_tech",
+ "consumer_policy",
+ "cybersecurity",
+ "health",
+ "gaming",
+ "climate",
+ "business",
+ "entertainment",
+ "sports",
+ "legal",
+ "science",
+ "politics",
+ "real_estate",
+ "automotive",
+ "travel",
+ "food",
+ "education",
+ "design",
+ "film_tv",
+ "fashion",
+ "music",
+ "personal_finance",
+ "tech_independent",
+ "culture_independent",
+ "local_news",
+ "construction",
+ "banking",
+ "retail",
+ "aerospace_defense",
+ "energy",
+ "agriculture",
+ "local_business",
+ "general_news"
],
"in": "query",
- "name": "category",
+ "name": "vertical",
"type": "string"
},
{
- "description": "Rows to return, default 20, max 50",
+ "description": "Exact topic filter, e.g. security, stablecoins. Use the values returned by facets?facet=topic",
"in": "query",
- "name": "limit",
+ "name": "topic",
+ "type": "string"
+ },
+ {
+ "description": "Contact-availability filter. Enum: email, social, none",
+ "enum": [
+ "email",
+ "social",
+ "none"
+ ],
+ "in": "query",
+ "name": "contact_type",
+ "type": "string"
+ },
+ {
+ "description": "Record classification filter. Enum: person, desk, organization, syndicated_byline, unknown",
+ "enum": [
+ "person",
+ "desk",
+ "organization",
+ "syndicated_byline",
+ "unknown"
+ ],
+ "in": "query",
+ "name": "record_type",
+ "type": "string"
+ },
+ {
+ "description": "Role classification filter. Enum: staff, editor, reporter, contributor, freelancer, columnist, non_editorial, unknown",
+ "enum": [
+ "staff",
+ "editor",
+ "reporter",
+ "contributor",
+ "freelancer",
+ "columnist",
+ "non_editorial",
+ "unknown"
+ ],
+ "in": "query",
+ "name": "role_type",
+ "type": "string"
+ },
+ {
+ "description": "Email semantics filter. Enum: individual_work, individual_personal_public, shared_desk, tips_or_submissions, outlet_generic, unknown",
+ "enum": [
+ "individual_work",
+ "individual_personal_public",
+ "shared_desk",
+ "tips_or_submissions",
+ "outlet_generic",
+ "unknown"
+ ],
+ "in": "query",
+ "name": "email_kind",
+ "type": "string"
+ },
+ {
+ "description": "Minimum outreach-readiness score, from 0 to 100",
+ "in": "query",
+ "name": "min_outreach_readiness",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, name_asc, outlet_asc, crawled_desc, readiness_desc",
+ "enum": [
+ "relevance",
+ "name_asc",
+ "outlet_asc",
+ "crawled_desc",
+ "readiness_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
"type": "integer"
}
],
@@ -229124,7 +259596,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.learnArticlesResponseDoc"
+ "$ref": "#/definitions/datasets.journalistsSearchResponseDoc"
}
},
"400": {
@@ -229133,14 +259605,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -229151,102 +259623,96 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko Learn articles",
+ "summary": "Search the journalists dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/markets": {
+ "/datasets/numbeo-cities/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized cryptocurrency market rows from CoinGecko public pages. This endpoint supports the documented `vs_currency` enum and is not intended for real-time trading.",
- "operationId": "coingecko-markets",
+ "description": "Returns terms aggregation counts for the Numbeo cities dataset. Facet enum: `country`.",
+ "operationId": "datasets-numbeo-cities-facets",
"parameters": [
{
- "description": "Page number, default 1",
+ "description": "Facet enum: country",
+ "enum": [
+ "country"
+ ],
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "country"
},
{
- "description": "Rows to return, default 100, max 100",
+ "description": "Full-text query over the city name, max 256 characters",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Quote currency",
- "enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
- ],
+ "description": "Exact country filter, max 128 characters",
"in": "query",
- "name": "vs_currency",
+ "name": "country",
"type": "string"
+ },
+ {
+ "description": "Minimum Cost of Living Index (New York = 100)",
+ "in": "query",
+ "name": "min_cost_of_living_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Cost of Living Index (New York = 100)",
+ "in": "query",
+ "name": "max_cost_of_living_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Quality of Life Index",
+ "in": "query",
+ "name": "min_quality_of_life_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Crime Index",
+ "in": "query",
+ "name": "min_crime_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Crime Index",
+ "in": "query",
+ "name": "max_crime_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Safety Index",
+ "in": "query",
+ "name": "min_safety_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Health Care Index",
+ "in": "query",
+ "name": "min_health_care_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Pollution Index",
+ "in": "query",
+ "name": "max_pollution_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Traffic Index",
+ "in": "query",
+ "name": "max_traffic_index",
+ "type": "number"
}
],
"produces": [
@@ -229256,7 +259722,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.marketsResponseDoc"
+ "$ref": "#/definitions/datasets.numbeoCitiesFacetResponseDoc"
}
},
"400": {
@@ -229265,8 +259731,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -229276,12 +259742,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -229289,102 +259749,27 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko markets",
+ "summary": "Facet the Numbeo cities dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/new-coins": {
+ "/datasets/numbeo-cities/items/{slug}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized rows from CoinGecko's public new cryptocurrencies table. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-new-coins",
+ "description": "Returns one composite Numbeo city record by city slug from dataset id enum value `numbeo-cities`.",
+ "operationId": "datasets-numbeo-cities-item",
"parameters": [
{
- "description": "Page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Rows to return, default 100, max 100",
- "in": "query",
- "name": "limit",
- "type": "integer"
- },
- {
- "description": "Quote currency",
- "enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
- ],
- "in": "query",
- "name": "vs_currency",
- "type": "string"
+ "description": "Numbeo city slug",
+ "in": "path",
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "Los-Angeles"
}
],
"produces": [
@@ -229394,7 +259779,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.newCoinsResponseDoc"
+ "$ref": "#/definitions/datasets.numbeoCityResponseDoc"
}
},
"400": {
@@ -229403,14 +259788,20 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -229421,24 +259812,113 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko new cryptocurrencies",
+ "summary": "Get a Numbeo city from the dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/news": {
+ "/datasets/numbeo-cities/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized article cards from CoinGecko's public news page.",
- "operationId": "coingecko-news",
+ "description": "Searches the composite Numbeo cities dataset, merged from the current global rankings of all seven index families (cost of living, quality of life, crime, health care, pollution, traffic, property investment). A city appears once it is ranked by at least one family; coverage varies per city. Sort enum: `name_asc`, `cost_of_living_asc`, `cost_of_living_desc`, `quality_of_life_desc`, `safety_desc`, `crime_asc`, `health_care_desc`, `pollution_asc`, `traffic_asc`.",
+ "operationId": "datasets-numbeo-cities-search",
"parameters": [
{
- "description": "Rows to return, default 20, max 50",
+ "description": "Full-text query over the city name, max 256 characters",
"in": "query",
- "name": "limit",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact country filter, max 128 characters",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Minimum Cost of Living Index (New York = 100)",
+ "in": "query",
+ "name": "min_cost_of_living_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Cost of Living Index (New York = 100)",
+ "in": "query",
+ "name": "max_cost_of_living_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Quality of Life Index",
+ "in": "query",
+ "name": "min_quality_of_life_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Crime Index",
+ "in": "query",
+ "name": "min_crime_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Crime Index",
+ "in": "query",
+ "name": "max_crime_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Safety Index",
+ "in": "query",
+ "name": "min_safety_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Health Care Index",
+ "in": "query",
+ "name": "min_health_care_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Pollution Index",
+ "in": "query",
+ "name": "max_pollution_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Traffic Index",
+ "in": "query",
+ "name": "max_traffic_index",
+ "type": "number"
+ },
+ {
+ "description": "Sort enum: name_asc, cost_of_living_asc, cost_of_living_desc, quality_of_life_desc, safety_desc, crime_asc, health_care_desc, pollution_asc, traffic_asc",
+ "enum": [
+ "name_asc",
+ "cost_of_living_asc",
+ "cost_of_living_desc",
+ "quality_of_life_desc",
+ "safety_desc",
+ "crime_asc",
+ "health_care_desc",
+ "pollution_asc",
+ "traffic_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
"type": "integer"
}
],
@@ -229449,7 +259929,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.newsResponseDoc"
+ "$ref": "#/definitions/datasets.numbeoCitiesSearchResponseDoc"
}
},
"400": {
@@ -229458,14 +259938,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -229476,109 +259956,27 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko news cards",
+ "summary": "Search the Numbeo cities dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/nft/category/{slug}": {
+ "/datasets/numbeo-countries/items/{country}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized NFT collection rows from a CoinGecko public NFT category page. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-nft-category",
+ "description": "Returns one composite Numbeo country record by country name from dataset id enum value `numbeo-countries`.",
+ "operationId": "datasets-numbeo-countries-item",
"parameters": [
{
- "description": "CoinGecko NFT category slug such as metaverse",
+ "description": "Country name as Numbeo spells it",
"in": "path",
- "name": "slug",
+ "name": "country",
"required": true,
- "type": "string"
- },
- {
- "description": "Page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Rows to return, default 100, max 100",
- "in": "query",
- "name": "limit",
- "type": "integer"
- },
- {
- "description": "Quote currency",
- "enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
- ],
- "in": "query",
- "name": "vs_currency",
- "type": "string"
+ "type": "string",
+ "x-example": "Vietnam"
}
],
"produces": [
@@ -229588,7 +259986,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.nftCategoryResponseDoc"
+ "$ref": "#/definitions/datasets.numbeoCountryResponseDoc"
}
},
"400": {
@@ -229603,14 +260001,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -229621,102 +260019,108 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko NFT category",
+ "summary": "Get a Numbeo country from the dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/nfts": {
+ "/datasets/numbeo-countries/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized NFT collection rows from the CoinGecko public website NFT table. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-nfts",
+ "description": "Searches the composite Numbeo countries dataset, merged from the current global by-country rankings of all seven index families. Sort enum: `name_asc`, `cost_of_living_asc`, `cost_of_living_desc`, `quality_of_life_desc`, `safety_desc`, `crime_asc`, `health_care_desc`, `pollution_asc`, `traffic_asc`.",
+ "operationId": "datasets-numbeo-countries-search",
"parameters": [
{
- "description": "Page number, default 1",
+ "description": "Full-text query over the country name, max 256 characters",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Rows to return, default 100, max 100",
+ "description": "Minimum Cost of Living Index (New York = 100)",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "min_cost_of_living_index",
+ "type": "number"
},
{
- "description": "Quote currency",
- "enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
+ "description": "Maximum Cost of Living Index (New York = 100)",
+ "in": "query",
+ "name": "max_cost_of_living_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Quality of Life Index",
+ "in": "query",
+ "name": "min_quality_of_life_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Crime Index",
+ "in": "query",
+ "name": "min_crime_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Crime Index",
+ "in": "query",
+ "name": "max_crime_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Safety Index",
+ "in": "query",
+ "name": "min_safety_index",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Health Care Index",
+ "in": "query",
+ "name": "min_health_care_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Pollution Index",
+ "in": "query",
+ "name": "max_pollution_index",
+ "type": "number"
+ },
+ {
+ "description": "Maximum Traffic Index",
+ "in": "query",
+ "name": "max_traffic_index",
+ "type": "number"
+ },
+ {
+ "description": "Sort enum: name_asc, cost_of_living_asc, cost_of_living_desc, quality_of_life_desc, safety_desc, crime_asc, health_care_desc, pollution_asc, traffic_asc",
+ "enum": [
+ "name_asc",
+ "cost_of_living_asc",
+ "cost_of_living_desc",
+ "quality_of_life_desc",
+ "safety_desc",
+ "crime_asc",
+ "health_care_desc",
+ "pollution_asc",
+ "traffic_asc"
],
"in": "query",
- "name": "vs_currency",
+ "name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -229726,7 +260130,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.nftsResponseDoc"
+ "$ref": "#/definitions/datasets.numbeoCountriesSearchResponseDoc"
}
},
"400": {
@@ -229735,14 +260139,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -229753,31 +260157,74 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko NFT collections",
+ "summary": "Search the Numbeo countries dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/search": {
+ "/datasets/pitchbook-advisors/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized CoinGecko search sections from the public website search JSON. Empty valid searches return empty arrays.",
- "operationId": "coingecko-search",
+ "description": "Returns terms aggregation counts for the PitchBook advisors dataset. Facet enum: `service_type`, `hq_country`, `hq_state`, `run_id`.",
+ "operationId": "datasets-pitchbook-advisors-facets",
"parameters": [
{
- "description": "Search query",
+ "description": "Facet enum: service_type, hq_country, hq_state, run_id",
+ "enum": [
+ "service_type",
+ "hq_country",
+ "hq_state",
+ "run_id"
+ ],
"in": "query",
- "name": "q",
+ "name": "facet",
"required": true,
+ "type": "string",
+ "x-example": "service_type"
+ },
+ {
+ "description": "Full-text query over name and description, max 256 characters",
+ "in": "query",
+ "name": "q",
"type": "string"
},
{
- "description": "Rows per section to return, default 10, max 50",
+ "description": "Exact service provider type filter, max 128 characters",
"in": "query",
- "name": "limit",
+ "name": "service_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters country filter, max 128 characters",
+ "in": "query",
+ "name": "hq_country",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters state/region filter, max 128 characters",
+ "in": "query",
+ "name": "hq_state",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum founding year",
+ "in": "query",
+ "name": "min_year_founded",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum founding year",
+ "in": "query",
+ "name": "max_year_founded",
"type": "integer"
}
],
@@ -229788,7 +260235,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.searchResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookAdvisorsFacetResponseDoc"
}
},
"400": {
@@ -229797,14 +260244,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -229815,25 +260262,27 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko discovery search",
+ "summary": "Facet PitchBook advisors dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/token-unlocks": {
+ "/datasets/pitchbook-advisors/items/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized rows from CoinGecko's public incoming token unlocks page.",
- "operationId": "coingecko-token-unlocks",
+ "description": "Returns one crawled PitchBook advisor record by id from dataset id enum value `pitchbook-advisors`.",
+ "operationId": "datasets-pitchbook-advisors-item",
"parameters": [
{
- "description": "Rows to return, default 100, max 100",
- "in": "query",
- "name": "limit",
- "type": "integer"
+ "description": "PitchBook advisor id, e.g. 676215-64",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "676215-64"
}
],
"produces": [
@@ -229843,7 +260292,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.tokenUnlocksResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookAdvisorResponseDoc"
}
},
"400": {
@@ -229852,14 +260301,20 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -229870,122 +260325,85 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko incoming token unlocks",
+ "summary": "Get a PitchBook advisor from dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/treasuries": {
+ "/datasets/pitchbook-advisors/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized entity rows from CoinGecko's public crypto treasuries tables. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-treasuries",
+ "description": "Searches the crawled public PitchBook advisor (service provider — e.g. investment bank, lender, financing advisory firm) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `recently_crawled_desc`.",
+ "operationId": "datasets-pitchbook-advisors-search",
"parameters": [
{
- "description": "Treasury asset filter, default all",
- "enum": [
- "all",
- "bitcoin",
- "ethereum",
- "solana",
- "bnb",
- "xrp",
- "tron"
- ],
+ "description": "Full-text query over name and description, max 256 characters",
"in": "query",
- "name": "asset",
+ "name": "q",
"type": "string"
},
{
- "description": "Treasury holder type filter, default all",
- "enum": [
- "all",
- "companies",
- "governments"
- ],
+ "description": "Exact service provider type filter (e.g. Commercial Bank, Investment Bank, Financing Advisory), max 128 characters",
"in": "query",
- "name": "holder_type",
+ "name": "service_type",
"type": "string"
},
{
- "description": "Rows to return, default 100, max 100",
+ "description": "Exact headquarters country filter, max 128 characters",
"in": "query",
- "name": "limit",
+ "name": "hq_country",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters state/region filter, max 128 characters",
+ "in": "query",
+ "name": "hq_state",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum founding year",
+ "in": "query",
+ "name": "min_year_founded",
"type": "integer"
},
{
- "description": "Quote currency",
+ "description": "Maximum founding year",
+ "in": "query",
+ "name": "max_year_founded",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, name_asc, year_founded_desc, recently_crawled_desc",
"enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
+ "relevance",
+ "name_asc",
+ "year_founded_desc",
+ "recently_crawled_desc"
],
"in": "query",
- "name": "vs_currency",
+ "name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -229995,7 +260413,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.treasuriesResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookAdvisorsSearchResponseDoc"
}
},
"400": {
@@ -230004,14 +260422,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230022,96 +260440,102 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko crypto treasuries",
+ "summary": "Search PitchBook advisors dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/coingecko/trending": {
+ "/datasets/pitchbook-companies/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns deduped trending coins and categories from the public CoinGecko highlights page. This endpoint supports the documented `vs_currency` enum.",
- "operationId": "coingecko-trending",
+ "description": "Returns terms aggregation counts for the PitchBook companies dataset. Facet enum: `status`, `primary_industry`, `financing_status`, `ownership_status`, `hq_country`, `hq_state`, `run_id`.",
+ "operationId": "datasets-pitchbook-companies-facets",
"parameters": [
{
- "description": "Rows per section to return, default 20, max 50",
+ "description": "Facet enum: status, primary_industry, financing_status, ownership_status, hq_country, hq_state, run_id",
+ "enum": [
+ "status",
+ "primary_industry",
+ "financing_status",
+ "ownership_status",
+ "hq_country",
+ "hq_state",
+ "run_id"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "status"
},
{
- "description": "Quote currency",
- "enum": [
- "btc",
- "eth",
- "ltc",
- "bch",
- "bnb",
- "eos",
- "xrp",
- "xlm",
- "link",
- "dot",
- "yfi",
- "sol",
- "usd",
- "aed",
- "ars",
- "aud",
- "bdt",
- "bhd",
- "bmd",
- "brl",
- "cad",
- "chf",
- "clp",
- "cny",
- "czk",
- "dkk",
- "eur",
- "gbp",
- "gel",
- "hkd",
- "huf",
- "idr",
- "ils",
- "inr",
- "jpy",
- "krw",
- "kwd",
- "lkr",
- "mmk",
- "mxn",
- "myr",
- "ngn",
- "nok",
- "nzd",
- "php",
- "pkr",
- "pln",
- "rub",
- "sar",
- "sek",
- "sgd",
- "thb",
- "try",
- "twd",
- "uah",
- "vef",
- "vnd",
- "zar",
- "xdr",
- "xag",
- "xau",
- "bits",
- "sats"
- ],
+ "description": "Full-text query over name and description, max 256 characters",
"in": "query",
- "name": "vs_currency",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact status filter, max 128 characters",
+ "in": "query",
+ "name": "status",
+ "type": "string"
+ },
+ {
+ "description": "Exact primary industry filter, max 128 characters",
+ "in": "query",
+ "name": "primary_industry",
+ "type": "string"
+ },
+ {
+ "description": "Exact financing status filter, max 128 characters",
+ "in": "query",
+ "name": "financing_status",
+ "type": "string"
+ },
+ {
+ "description": "Exact ownership status filter, max 128 characters",
+ "in": "query",
+ "name": "ownership_status",
"type": "string"
+ },
+ {
+ "description": "Exact headquarters country filter, max 128 characters",
+ "in": "query",
+ "name": "hq_country",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters state/region filter, max 128 characters",
+ "in": "query",
+ "name": "hq_state",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum founding year",
+ "in": "query",
+ "name": "min_year_founded",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum founding year",
+ "in": "query",
+ "name": "max_year_founded",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum number of investors",
+ "in": "query",
+ "name": "min_investor_count",
+ "type": "integer"
}
],
"produces": [
@@ -230121,7 +260545,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/coingecko.trendingResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookCompaniesFacetResponseDoc"
}
},
"400": {
@@ -230130,14 +260554,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230148,33 +260572,27 @@
"ApiKeyAuth": []
}
],
- "summary": "CoinGecko trending highlights",
+ "summary": "Facet PitchBook companies dataset",
"tags": [
- "CoinGecko"
+ "Datasets"
]
}
},
- "/colehaan/collections": {
+ "/datasets/pitchbook-companies/items/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized collections from Cole Haan (https://www.colehaan.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
- "operationId": "colehaan-collections",
+ "description": "Returns one crawled PitchBook company record by id from dataset id enum value `pitchbook-companies`.",
+ "operationId": "datasets-pitchbook-companies-item",
"parameters": [
{
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum collections, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "description": "PitchBook company id, e.g. 752821-12",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "752821-12"
}
],
"produces": [
@@ -230184,7 +260602,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookCompanyResponseDoc"
}
},
"400": {
@@ -230193,14 +260611,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230211,41 +260635,110 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cole Haan collections",
+ "summary": "Get a PitchBook company from dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/collections/{handle}/products": {
+ "/datasets/pitchbook-companies/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from one Cole Haan (https://www.colehaan.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
- "operationId": "colehaan-collection-products",
+ "description": "Searches the crawled public PitchBook company profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `investor_count_desc`, `recently_crawled_desc`.",
+ "operationId": "datasets-pitchbook-companies-search",
"parameters": [
{
- "description": "Collection handle",
- "in": "path",
- "name": "handle",
- "required": true,
- "type": "string",
- "x-example": "collection-handle"
+ "description": "Full-text query over name and description, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
},
{
- "description": "1-based page, defaults to 1",
+ "description": "Exact status filter (e.g. Private, Public, Acquired, Out of Business), max 128 characters",
+ "in": "query",
+ "name": "status",
+ "type": "string"
+ },
+ {
+ "description": "Exact primary industry filter, max 128 characters",
+ "in": "query",
+ "name": "primary_industry",
+ "type": "string"
+ },
+ {
+ "description": "Exact financing status filter, max 128 characters",
+ "in": "query",
+ "name": "financing_status",
+ "type": "string"
+ },
+ {
+ "description": "Exact ownership status filter, max 128 characters",
+ "in": "query",
+ "name": "ownership_status",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters country filter, max 128 characters",
+ "in": "query",
+ "name": "hq_country",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters state/region filter, max 128 characters",
+ "in": "query",
+ "name": "hq_state",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum founding year",
+ "in": "query",
+ "name": "min_year_founded",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum founding year",
+ "in": "query",
+ "name": "max_year_founded",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum number of investors",
+ "in": "query",
+ "name": "min_investor_count",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, name_asc, year_founded_desc, investor_count_desc, recently_crawled_desc",
+ "enum": [
+ "relevance",
+ "name_asc",
+ "year_founded_desc",
+ "investor_count_desc",
+ "recently_crawled_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -230255,7 +260748,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookCompaniesSearchResponseDoc"
}
},
"400": {
@@ -230264,20 +260757,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230288,33 +260775,68 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cole Haan collection products",
+ "summary": "Search PitchBook companies dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/pages": {
+ "/datasets/pitchbook-funds/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static pages from Cole Haan (https://www.colehaan.com). The storefront URL is fixed server-side.",
- "operationId": "colehaan-pages",
+ "description": "Returns terms aggregation counts for the PitchBook funds dataset. Facet enum: `fund_strategy`, `fund_status`, `run_id`.",
+ "operationId": "datasets-pitchbook-funds-facets",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Facet enum: fund_strategy, fund_status, run_id",
+ "enum": [
+ "fund_strategy",
+ "fund_status",
+ "run_id"
+ ],
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "fund_strategy"
},
{
- "description": "Maximum static pages, defaults to 50 and supports up to 250",
+ "description": "Full-text query over name and description, max 256 characters",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact fund strategy filter, max 128 characters",
+ "in": "query",
+ "name": "fund_strategy",
+ "type": "string"
+ },
+ {
+ "description": "Exact fund status filter, max 128 characters",
+ "in": "query",
+ "name": "fund_status",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum vintage year",
+ "in": "query",
+ "name": "min_vintage_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum vintage year",
+ "in": "query",
+ "name": "max_vintage_year",
+ "type": "integer"
}
],
"produces": [
@@ -230324,7 +260846,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookFundsFacetResponseDoc"
}
},
"400": {
@@ -230339,8 +260861,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230351,27 +260873,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cole Haan static pages",
+ "summary": "Facet PitchBook funds dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/pages/{handle}": {
+ "/datasets/pitchbook-funds/items/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static page detail for one Cole Haan (https://www.colehaan.com) page handle. The storefront URL is fixed server-side.",
- "operationId": "colehaan-page",
+ "description": "Returns one crawled PitchBook fund record by id from dataset id enum value `pitchbook-funds`.",
+ "operationId": "datasets-pitchbook-funds-item",
"parameters": [
{
- "description": "Page handle",
+ "description": "PitchBook fund id, e.g. 19719-91F",
"in": "path",
- "name": "handle",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "page-handle"
+ "x-example": "19719-91F"
}
],
"produces": [
@@ -230381,7 +260903,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pageResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookFundResponseDoc"
}
},
"400": {
@@ -230402,8 +260924,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230414,33 +260936,79 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Cole Haan static page",
+ "summary": "Get a PitchBook fund from dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/products": {
+ "/datasets/pitchbook-funds/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from Cole Haan's (https://www.colehaan.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
- "operationId": "colehaan-products",
+ "description": "Searches the crawled public PitchBook fund profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `vintage_desc`, `recently_crawled_desc`.",
+ "operationId": "datasets-pitchbook-funds-search",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Full-text query over name and description, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact fund strategy filter (e.g. Early Stage VC, Buyout), max 128 characters",
+ "in": "query",
+ "name": "fund_strategy",
+ "type": "string"
+ },
+ {
+ "description": "Exact fund status filter (e.g. Closed, Raising), max 128 characters",
+ "in": "query",
+ "name": "fund_status",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum vintage year",
+ "in": "query",
+ "name": "min_vintage_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum vintage year",
+ "in": "query",
+ "name": "max_vintage_year",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, name_asc, vintage_desc, recently_crawled_desc",
+ "enum": [
+ "relevance",
+ "name_asc",
+ "vintage_desc",
+ "recently_crawled_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -230450,7 +261018,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productsResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookFundsSearchResponseDoc"
}
},
"400": {
@@ -230465,8 +261033,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230477,27 +261045,82 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cole Haan products",
+ "summary": "Search PitchBook funds dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/products/{handle}": {
+ "/datasets/pitchbook-investors/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized product detail for one Cole Haan (https://www.colehaan.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
- "operationId": "colehaan-product",
+ "description": "Returns terms aggregation counts for the PitchBook investors dataset. Facet enum: `status`, `investor_type`, `hq_country`, `hq_state`, `run_id`.",
+ "operationId": "datasets-pitchbook-investors-facets",
"parameters": [
{
- "description": "Product handle",
- "in": "path",
- "name": "handle",
+ "description": "Facet enum: status, investor_type, hq_country, hq_state, run_id",
+ "enum": [
+ "status",
+ "investor_type",
+ "hq_country",
+ "hq_state",
+ "run_id"
+ ],
+ "in": "query",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "product-handle"
+ "x-example": "status"
+ },
+ {
+ "description": "Full-text query over name and description, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact status filter, max 128 characters",
+ "in": "query",
+ "name": "status",
+ "type": "string"
+ },
+ {
+ "description": "Exact investor type filter, max 128 characters",
+ "in": "query",
+ "name": "investor_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters country filter, max 128 characters",
+ "in": "query",
+ "name": "hq_country",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters state/region filter, max 128 characters",
+ "in": "query",
+ "name": "hq_state",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum current portfolio size",
+ "in": "query",
+ "name": "min_portfolio_count",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum number of exits",
+ "in": "query",
+ "name": "min_exits_count",
+ "type": "integer"
}
],
"produces": [
@@ -230507,7 +261130,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookInvestorsFacetResponseDoc"
}
},
"400": {
@@ -230516,20 +261139,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230540,45 +261157,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Cole Haan product",
+ "summary": "Facet PitchBook investors dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/products/{handle}/recommendations": {
+ "/datasets/pitchbook-investors/items/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized recommended products for one Cole Haan (https://www.colehaan.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
- "operationId": "colehaan-product-recommendations",
+ "description": "Returns one crawled PitchBook investor record by id from dataset id enum value `pitchbook-investors`.",
+ "operationId": "datasets-pitchbook-investors-item",
"parameters": [
{
- "description": "Product handle",
+ "description": "PitchBook investor id, e.g. 294471-37",
"in": "path",
- "name": "handle",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "product-handle"
- },
- {
- "description": "Maximum products, defaults to 10 and supports up to 20",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Recommendation intent. Allowed values: related, complementary",
- "enum": [
- "related",
- "complementary"
- ],
- "in": "query",
- "name": "intent",
- "type": "string",
- "x-example": "related"
+ "x-example": "294471-37"
}
],
"produces": [
@@ -230588,7 +261187,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookInvestorResponseDoc"
}
},
"400": {
@@ -230609,8 +261208,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230621,41 +261220,91 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cole Haan product recommendations",
+ "summary": "Get a PitchBook investor from dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/search/suggest": {
+ "/datasets/pitchbook-investors/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns products, collections, and query suggestions from Cole Haan's (https://www.colehaan.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
- "operationId": "colehaan-search-suggest",
+ "description": "Searches the crawled public PitchBook investor (fund manager/firm) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `portfolio_count_desc`, `recently_crawled_desc`.",
+ "operationId": "datasets-pitchbook-investors-search",
"parameters": [
{
- "description": "Search query",
+ "description": "Full-text query over name and description, max 256 characters",
"in": "query",
"name": "q",
- "required": true,
- "type": "string",
- "x-example": "wool"
+ "type": "string"
},
{
- "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
+ "description": "Exact status filter (e.g. Active, Inactive), max 128 characters",
"in": "query",
- "name": "types",
- "type": "string",
- "x-example": "product,collection,query"
+ "name": "status",
+ "type": "string"
},
{
- "description": "Maximum results per type, defaults to 10 and supports up to 20",
+ "description": "Exact investor type filter (e.g. Venture Capital, Private Equity, Angel), max 128 characters",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
+ "name": "investor_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters country filter, max 128 characters",
+ "in": "query",
+ "name": "hq_country",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters state/region filter, max 128 characters",
+ "in": "query",
+ "name": "hq_state",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum current portfolio size",
+ "in": "query",
+ "name": "min_portfolio_count",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum number of exits",
+ "in": "query",
+ "name": "min_exits_count",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, name_asc, portfolio_count_desc, recently_crawled_desc",
+ "enum": [
+ "relevance",
+ "name_asc",
+ "portfolio_count_desc",
+ "recently_crawled_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -230665,7 +261314,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookInvestorsSearchResponseDoc"
}
},
"400": {
@@ -230680,8 +261329,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230692,42 +261341,75 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Cole Haan search suggestions",
+ "summary": "Search PitchBook investors dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/sitemap/urls": {
+ "/datasets/pitchbook-limited-partners/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns capped URL entries from Cole Haan's (https://www.colehaan.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
- "operationId": "colehaan-sitemap-urls",
+ "description": "Returns terms aggregation counts for the PitchBook limited partners dataset. Facet enum: `institution_type`, `hq_country`, `hq_state`, `run_id`.",
+ "operationId": "datasets-pitchbook-limited-partners-facets",
"parameters": [
{
- "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
+ "description": "Facet enum: institution_type, hq_country, hq_state, run_id",
"enum": [
- "all",
- "products",
- "collections",
- "pages",
- "blogs",
- "agentic_discovery",
- "other"
+ "institution_type",
+ "hq_country",
+ "hq_state",
+ "run_id"
],
"in": "query",
- "name": "type",
+ "name": "facet",
+ "required": true,
"type": "string",
- "x-example": "products"
+ "x-example": "institution_type"
},
{
- "description": "Maximum URL entries, defaults to 50 and supports up to 250",
+ "description": "Full-text query over name and description, max 256 characters",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact institution type filter, max 128 characters",
+ "in": "query",
+ "name": "institution_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters country filter, max 128 characters",
+ "in": "query",
+ "name": "hq_country",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters state/region filter, max 128 characters",
+ "in": "query",
+ "name": "hq_state",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum founding year",
+ "in": "query",
+ "name": "min_year_founded",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum founding year",
+ "in": "query",
+ "name": "max_year_founded",
+ "type": "integer"
}
],
"produces": [
@@ -230737,7 +261419,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookLimitedPartnersFacetResponseDoc"
}
},
"400": {
@@ -230752,8 +261434,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230764,19 +261446,29 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cole Haan sitemap URLs",
+ "summary": "Facet PitchBook limited partners dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/sitemaps": {
+ "/datasets/pitchbook-limited-partners/items/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns child sitemap URLs from Cole Haan's (https://www.colehaan.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
- "operationId": "colehaan-sitemaps",
+ "description": "Returns one crawled PitchBook limited partner record by id from dataset id enum value `pitchbook-limited-partners`.",
+ "operationId": "datasets-pitchbook-limited-partners-item",
+ "parameters": [
+ {
+ "description": "PitchBook limited partner id, e.g. 864326-44",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "864326-44"
+ }
+ ],
"produces": [
"application/json"
],
@@ -230784,7 +261476,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookLimitedPartnerResponseDoc"
}
},
"400": {
@@ -230793,14 +261485,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230811,19 +261509,87 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cole Haan sitemaps",
+ "summary": "Get a PitchBook limited partner from dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/colehaan/store": {
+ "/datasets/pitchbook-limited-partners/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized storefront metadata for Cole Haan (https://www.colehaan.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
- "operationId": "colehaan-store",
+ "description": "Searches the crawled public PitchBook limited partner (institutional investor — e.g. pension fund, endowment, insurance company) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Some limited partner profiles have no FAQ section -- this is normal, not a sign of missing data. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `recently_crawled_desc`.",
+ "operationId": "datasets-pitchbook-limited-partners-search",
+ "parameters": [
+ {
+ "description": "Full-text query over name and description, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact institution type filter (e.g. Corporate Pension, Private Investment Fund, Endowment), max 128 characters",
+ "in": "query",
+ "name": "institution_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters country filter, max 128 characters",
+ "in": "query",
+ "name": "hq_country",
+ "type": "string"
+ },
+ {
+ "description": "Exact headquarters state/region filter, max 128 characters",
+ "in": "query",
+ "name": "hq_state",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Minimum founding year",
+ "in": "query",
+ "name": "min_year_founded",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum founding year",
+ "in": "query",
+ "name": "max_year_founded",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, name_asc, year_founded_desc, recently_crawled_desc",
+ "enum": [
+ "relevance",
+ "name_asc",
+ "year_founded_desc",
+ "recently_crawled_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
@@ -230831,7 +261597,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.storeResponseDoc"
+ "$ref": "#/definitions/datasets.pitchbookLimitedPartnersSearchResponseDoc"
}
},
"400": {
@@ -230846,8 +261612,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230858,24 +261624,203 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Cole Haan store metadata",
+ "summary": "Search PitchBook limited partners dataset",
"tags": [
- "Cole Haan"
+ "Datasets"
]
}
},
- "/collider/article": {
+ "/datasets/playstation-games/facets": {
"get": {
- "description": "Returns public Collider article metadata and body paragraphs from a canonical article URL.",
- "operationId": "collider-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns terms aggregation counts for the PlayStation games dataset. Facet enum: `publisher`, `classification`, `genres`, `platforms`, `content_rating_authority`, `content_descriptors`, `price_tier`, `service_branding`, `region`, `release_year`, `run_id`, `is_free`, `is_addon`, `is_tied_to_subscription`, `coming_soon`. price_tier enum: `free`, `under_5`, `5_to_10`, `10_to_20`, `20_to_40`, `40_to_60`, `60_plus`.",
+ "operationId": "datasets-playstation-games-facets",
"parameters": [
{
- "description": "Canonical Collider article URL",
+ "description": "Facet enum: publisher, classification, genres, platforms, content_rating_authority, content_descriptors, price_tier, service_branding, region, release_year, run_id, is_free, is_addon, is_tied_to_subscription, coming_soon",
+ "enum": [
+ "publisher",
+ "classification",
+ "genres",
+ "platforms",
+ "content_rating_authority",
+ "content_descriptors",
+ "price_tier",
+ "service_branding",
+ "region",
+ "release_year",
+ "run_id",
+ "is_free",
+ "is_addon",
+ "is_tied_to_subscription",
+ "coming_soon"
+ ],
"in": "query",
- "name": "url",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "https://collider.com/saw-new-movie-mike-p-nelson-director/"
+ "x-example": "publisher"
+ },
+ {
+ "description": "Full-text query over name and publisher, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact publisher filter, max 128 characters",
+ "in": "query",
+ "name": "publisher",
+ "type": "string"
+ },
+ {
+ "description": "Exact classification filter, max 128 characters",
+ "in": "query",
+ "name": "classification",
+ "type": "string"
+ },
+ {
+ "description": "Exact genre filter, max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
+ },
+ {
+ "description": "Exact platform filter: PS4 or PS5",
+ "in": "query",
+ "name": "platform",
+ "type": "string"
+ },
+ {
+ "description": "Exact content-rating authority filter, max 128 characters",
+ "in": "query",
+ "name": "content_rating",
+ "type": "string"
+ },
+ {
+ "description": "Exact content-descriptor filter, max 128 characters",
+ "in": "query",
+ "name": "content_descriptor",
+ "type": "string"
+ },
+ {
+ "description": "Price-tier enum: free, under_5, 5_to_10, 10_to_20, 20_to_40, 40_to_60, 60_plus",
+ "enum": [
+ "free",
+ "under_5",
+ "5_to_10",
+ "10_to_20",
+ "20_to_40",
+ "40_to_60",
+ "60_plus"
+ ],
+ "in": "query",
+ "name": "price_tier",
+ "type": "string"
+ },
+ {
+ "description": "Exact subscription/service-branding filter, max 128 characters",
+ "in": "query",
+ "name": "branding",
+ "type": "string"
+ },
+ {
+ "description": "Exact store region (country code) filter, max 128 characters",
+ "in": "query",
+ "name": "region",
+ "type": "string"
+ },
+ {
+ "description": "Exact concept id filter, max 128 characters",
+ "in": "query",
+ "name": "concept_id",
+ "type": "string"
+ },
+ {
+ "description": "Exact np_title_id filter, max 128 characters",
+ "in": "query",
+ "name": "np_title_id",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Filter by free flag",
+ "in": "query",
+ "name": "is_free",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter add-ons vs games",
+ "in": "query",
+ "name": "is_addon",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter subscription-included titles",
+ "in": "query",
+ "name": "is_tied_to_subscription",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter for pre-release titles",
+ "in": "query",
+ "name": "coming_soon",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by titles currently discounted (discount_pct > 0)",
+ "in": "query",
+ "name": "on_sale",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum current price in minor units",
+ "in": "query",
+ "name": "min_price_value",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum current price in minor units",
+ "in": "query",
+ "name": "max_price_value",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum average star rating, 0 through 5",
+ "in": "query",
+ "name": "min_star_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum number of star ratings",
+ "in": "query",
+ "name": "min_star_count",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum discount percent, 0 through 100",
+ "in": "query",
+ "name": "min_discount_pct",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum release year",
+ "in": "query",
+ "name": "min_release_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum release year",
+ "in": "query",
+ "name": "max_release_year",
+ "type": "integer"
}
],
"produces": [
@@ -230885,7 +261830,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/datasets.playstationGamesFacetResponseDoc"
}
},
"400": {
@@ -230894,20 +261839,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230918,24 +261857,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Collider article content",
+ "summary": "Facet PlayStation games dataset",
"tags": [
- "Collider"
+ "Datasets"
]
}
},
- "/collider/author": {
+ "/datasets/playstation-games/items/{product_id}": {
"get": {
- "description": "Returns a Collider author's byline metadata, biography, social links, and recent articles from a canonical author URL.",
- "operationId": "collider-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one crawled PlayStation Store record by product_id from dataset id enum value `playstation-games`.",
+ "operationId": "datasets-playstation-games-item",
"parameters": [
{
- "description": "Canonical Collider author URL",
- "in": "query",
- "name": "url",
+ "description": "PlayStation product id (e.g. UP0001-PPSA01491_00-GAME000000000000)",
+ "in": "path",
+ "name": "product_id",
"required": true,
"type": "string",
- "x-example": "https://collider.com/author/hannah-hunt/"
+ "x-example": "UP0001-PPSA01491_00-GAME000000000000"
}
],
"produces": [
@@ -230945,7 +261887,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.colliderAuthorResponseDoc"
+ "$ref": "#/definitions/datasets.playstationGameResponseDoc"
}
},
"400": {
@@ -230960,8 +261902,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -230972,73 +261920,206 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Collider author profile",
+ "summary": "Get a PlayStation game from dataset",
"tags": [
- "Collider"
+ "Datasets"
]
}
},
- "/collider/headlines": {
+ "/datasets/playstation-games/search": {
"get": {
- "description": "Returns fresh headlines from one public Collider RSS section. Items from video categories have type video and are not readable through the article endpoint.",
- "operationId": "collider-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the crawled public PlayStation Store catalog stored in a search index. One row per product SKU (game, edition or add-on); concept_id / np_title_id group a title's SKUs. price_tier enum: `free`, `under_5`, `5_to_10`, `10_to_20`, `20_to_40`, `40_to_60`, `60_plus`. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `price_asc`, `price_desc`, `discount_desc`, `release_desc`, `release_asc`.",
+ "operationId": "datasets-playstation-games-search",
"parameters": [
{
- "description": "Collider RSS section slug",
+ "description": "Full-text query over name and publisher, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact publisher filter, max 128 characters",
+ "in": "query",
+ "name": "publisher",
+ "type": "string"
+ },
+ {
+ "description": "Exact classification filter: FULL_GAME, PREMIUM_EDITION, GAME_BUNDLE, ADD_ON_PACK, VIRTUAL_CURRENCY, LEVEL, OTHER",
+ "in": "query",
+ "name": "classification",
+ "type": "string"
+ },
+ {
+ "description": "Exact genre filter (e.g. Action, Role Playing Games), max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
+ },
+ {
+ "description": "Exact platform filter: PS4 or PS5",
+ "in": "query",
+ "name": "platform",
+ "type": "string"
+ },
+ {
+ "description": "Exact content-rating authority filter (e.g. ESRB, PEGI), max 128 characters",
+ "in": "query",
+ "name": "content_rating",
+ "type": "string"
+ },
+ {
+ "description": "Exact content-descriptor filter (e.g. Blood, Violence, In-Game Purchases, Users Interact), max 128 characters",
+ "in": "query",
+ "name": "content_descriptor",
+ "type": "string"
+ },
+ {
+ "description": "Price-tier enum: free, under_5, 5_to_10, 10_to_20, 20_to_40, 40_to_60, 60_plus",
"enum": [
- "movie-tv-news",
- "tv-movie-news",
- "movies",
- "movie-news",
- "movie-features",
- "movie-reviews",
- "movie-trailers",
- "tv",
- "tv-news",
- "tv-features",
- "tv-reviews",
- "tv-trailers",
- "all-reviews",
- "trailers",
- "features",
- "exclusives",
- "interviews",
- "fyc",
- "what-to-watch",
- "streaming-guides",
- "other-streaming-guides",
- "netflix",
- "amazon",
- "disney",
- "max",
- "hulu",
- "apple-tv-plus",
- "reality-tv",
- "music",
- "horror",
- "animation",
- "video-games",
- "gaming-news",
- "collectibles",
- "screening",
- "collider-signature",
- "authority",
- "collider-rewind",
- "collider-quiz",
- "podcasts",
- "cl-originals",
- "videos",
- "latest-videos",
- "video-originals",
- "video-interviews",
- "interview-videos",
- "exclusive-videos",
- "list-videos"
+ "free",
+ "under_5",
+ "5_to_10",
+ "10_to_20",
+ "20_to_40",
+ "40_to_60",
+ "60_plus"
],
"in": "query",
- "name": "section",
- "required": true,
+ "name": "price_tier",
+ "type": "string"
+ },
+ {
+ "description": "Exact subscription/service-branding filter (e.g. PS_PLUS, EA_PLAY, UBISOFT_PLUS), max 128 characters",
+ "in": "query",
+ "name": "branding",
+ "type": "string"
+ },
+ {
+ "description": "Exact store region (country code) filter, max 128 characters",
+ "in": "query",
+ "name": "region",
+ "type": "string"
+ },
+ {
+ "description": "Exact concept id filter (groups all SKUs of a title), max 128 characters",
+ "in": "query",
+ "name": "concept_id",
+ "type": "string"
+ },
+ {
+ "description": "Exact np_title_id filter, max 128 characters",
+ "in": "query",
+ "name": "np_title_id",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Filter by free flag",
+ "in": "query",
+ "name": "is_free",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter: true returns add-ons/DLC/currency, false returns games and editions",
+ "in": "query",
+ "name": "is_addon",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter for titles included with a subscription (e.g. free with PS Plus)",
+ "in": "query",
+ "name": "is_tied_to_subscription",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter for pre-release / not-yet-purchasable titles",
+ "in": "query",
+ "name": "coming_soon",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by titles currently discounted (discount_pct > 0)",
+ "in": "query",
+ "name": "on_sale",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum current price in minor units (e.g. cents)",
+ "in": "query",
+ "name": "min_price_value",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum current price in minor units (e.g. cents)",
+ "in": "query",
+ "name": "max_price_value",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum average star rating, 0 through 5",
+ "in": "query",
+ "name": "min_star_rating",
+ "type": "number"
+ },
+ {
+ "description": "Minimum number of star ratings",
+ "in": "query",
+ "name": "min_star_count",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum discount percent, 0 through 100",
+ "in": "query",
+ "name": "min_discount_pct",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum release year",
+ "in": "query",
+ "name": "min_release_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum release year",
+ "in": "query",
+ "name": "max_release_year",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, rating_desc, reviews_desc, price_asc, price_desc, discount_desc, release_desc, release_asc",
+ "enum": [
+ "relevance",
+ "rating_desc",
+ "reviews_desc",
+ "price_asc",
+ "price_desc",
+ "discount_desc",
+ "release_desc",
+ "release_asc"
+ ],
+ "in": "query",
+ "name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -231048,7 +262129,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/datasets.playstationGamesSearchResponseDoc"
}
},
"400": {
@@ -231063,8 +262144,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -231075,54 +262156,57 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Collider section headlines",
+ "summary": "Search PlayStation games dataset",
"tags": [
- "Collider"
+ "Datasets"
]
}
},
- "/collider/news": {
+ "/datasets/producthunt-makers/facets": {
"get": {
- "description": "Returns fresh Collider top stories from its public RSS feed.",
- "operationId": "collider-news",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
+ "description": "Returns distribution counts over the Product Hunt makers dataset (dataset id enum value `producthunt-makers`), honoring the same filters as search. Facet enum: `topic`, `product_count_band`.",
+ "operationId": "datasets-producthunt-makers-facets",
+ "parameters": [
+ {
+ "description": "Facet enum: topic, product_count_band",
+ "enum": [
+ "topic",
+ "product_count_band"
+ ],
+ "in": "query",
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "topic"
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Full-text query over maker name and headline, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
+ "description": "Exact topic-slug the maker builds in, max 128 characters",
+ "in": "query",
+ "name": "topic",
+ "type": "string"
+ },
+ {
+ "description": "Minimum number of products made, 0 or greater",
+ "in": "query",
+ "name": "min_products",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum total upvotes across the maker's products, 0 or greater",
+ "in": "query",
+ "name": "min_total_votes",
+ "type": "integer"
}
],
- "summary": "Get Collider top stories",
- "tags": [
- "Collider"
- ]
- }
- },
- "/collider/sections": {
- "get": {
- "description": "Returns the public Collider RSS section inventory used by the headlines endpoint.",
- "operationId": "collider-sections",
"produces": [
"application/json"
],
@@ -231130,7 +262214,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/datasets.producthuntMakersFacetResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -231138,6 +262228,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -231145,19 +262241,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Collider RSS sections",
+ "summary": "Facet the Product Hunt makers dataset",
"tags": [
- "Collider"
+ "Datasets"
]
}
},
- "/comc/categories": {
+ "/datasets/producthunt-makers/items/{username}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns COMC's (comc.com) closed, top-level category/sport taxonomy -- the discovery endpoint for the search endpoint's `category` param. Every slug is the exact path segment comc.com's own site uses.",
- "operationId": "comc-categories",
+ "description": "Returns one maker by Product Hunt username from dataset id enum value `producthunt-makers`, including the products they made and their aggregate footprint. Returns 404 when the username is not in the dataset.",
+ "operationId": "datasets-producthunt-makers-item",
+ "parameters": [
+ {
+ "description": "Product Hunt maker username, e.g. rrhoover",
+ "in": "path",
+ "name": "username",
+ "required": true,
+ "type": "string",
+ "x-example": "rrhoover"
+ }
+ ],
"produces": [
"application/json"
],
@@ -231165,7 +262271,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/comc.categoriesResponseDoc"
+ "$ref": "#/definitions/datasets.producthuntMakerResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -231174,8 +262292,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -231186,27 +262304,67 @@
"ApiKeyAuth": []
}
],
- "summary": "List COMC categories",
+ "summary": "Get a Product Hunt maker from the dataset",
"tags": [
- "COMC"
+ "Datasets"
]
}
},
- "/comc/listing": {
+ "/datasets/producthunt-makers/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one card+grade combination's full detail from COMC (comc.com): card identity and every seller's individual for-sale copy (owner, item id, price). handle is the value returned by comc_search's CardSummary.handle field (or the equivalent comc.com card URL path).",
- "operationId": "comc-listing",
+ "description": "Searches Product Hunt makers from the dataset id enum value `producthunt-makers` — public-profile records of the people who made products, with their footprint (products made, total upvotes, topics) for maker leaderboards. Public fields only. Sort enum: `total_votes_desc`, `product_count_desc`, `followers_desc`, `relevance`.",
+ "operationId": "datasets-producthunt-makers-search",
"parameters": [
{
- "description": "Required. The handle from a comc_search result (or the equivalent comc.com card URL path).",
+ "description": "Full-text query over maker name and headline, max 256 characters",
"in": "query",
- "name": "handle",
- "required": true,
- "type": "string",
- "x-example": "Cards/Football/2021/Panini_Absolute_-_Base_-_Red/36/Josh_Allen/17779360"
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact topic-slug the maker builds in, e.g. artificial-intelligence, max 128 characters",
+ "in": "query",
+ "name": "topic",
+ "type": "string"
+ },
+ {
+ "description": "Minimum number of products made, 0 or greater",
+ "in": "query",
+ "name": "min_products",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum total upvotes across the maker's products, 0 or greater",
+ "in": "query",
+ "name": "min_total_votes",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: total_votes_desc, product_count_desc, followers_desc, relevance",
+ "enum": [
+ "total_votes_desc",
+ "product_count_desc",
+ "followers_desc",
+ "relevance"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -231216,7 +262374,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/comc.listingResponseDoc"
+ "$ref": "#/definitions/datasets.producthuntMakersSearchResponseDoc"
}
},
"400": {
@@ -231231,8 +262389,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -231243,106 +262401,93 @@
"ApiKeyAuth": []
}
],
- "summary": "Get COMC card listing detail",
+ "summary": "Search the Product Hunt makers dataset",
"tags": [
- "COMC"
+ "Datasets"
]
}
},
- "/comc/search": {
+ "/datasets/producthunt-products/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches or browses COMC's (comc.com) live consignment marketplace for graded and ungraded trading cards. Each result row is a distinct card+grade combination (COMC's own category/search grid aggregates every seller's copy under one row); chain a row's handle into the listing endpoint for the per-seller breakdown. At least one of category or query is typically useful, but both are optional -- omitting both searches all categories.",
- "operationId": "comc-search",
+ "description": "Returns distribution counts over the Product Hunt products dataset (dataset id enum value `producthunt-products`), honoring the same filters as search. Facet enum: `topic`, `launch_year`, `pricing_type`, `product_state`.",
+ "operationId": "datasets-producthunt-products-facets",
"parameters": [
{
- "description": "Optional. One of comc_categories' slug values. Omit to search all categories.",
+ "description": "Facet enum: topic, launch_year, pricing_type, product_state",
+ "enum": [
+ "topic",
+ "launch_year",
+ "pricing_type",
+ "product_state"
+ ],
"in": "query",
- "name": "category",
+ "name": "facet",
+ "required": true,
"type": "string",
- "x-example": "Baseball"
+ "x-example": "topic"
},
{
- "description": "Optional free-text search query.",
+ "description": "Full-text query over product name and tagline, max 256 characters",
"in": "query",
- "name": "query",
- "type": "string",
- "x-example": "mike trout"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Optional. Allowed values: r (Recently Added, default), c (Card #), o (Oldest), n (Newest), b (Highest SRP), h (Highest Price), l (Lowest Price), d (Biggest Discount), p (Highest Percent Off), q (Print Run), s (Least in Stock), m (Most in Stock), e (Ending Soonest).",
- "enum": [
- "r",
- "c",
- "o",
- "n",
- "b",
- "h",
- "l",
- "d",
- "p",
- "q",
- "s",
- "m",
- "e"
- ],
+ "description": "Exact topic-slug filter, e.g. artificial-intelligence, max 128 characters",
"in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "r"
+ "name": "topic",
+ "type": "string"
},
{
- "description": "Optional, comma-separated. Allowed values: AUTO (Autographed), HOF (Hall of Fame), MEM (Memorabilia), PRC (Pre-Rookie Card), RC (Rookie Card), RR (Rookie Related), RY (Rookie Year), SN (Serial Numbered).",
+ "description": "Exact maker-username filter (populated by hydration), max 128 characters",
"in": "query",
- "name": "attributes",
- "type": "string",
- "x-example": "RC,AUTO"
+ "name": "maker",
+ "type": "string"
},
{
- "description": "Optional. Allowed values: aUngraded (Ungraded), aGraded (Graded), aAftermarketAuto (Aftermarket Auto), aAfterAutoGraded (Aftermarket Auto Graded).",
- "enum": [
- "aUngraded",
- "aGraded",
- "aAftermarketAuto",
- "aAfterAutoGraded"
- ],
+ "description": "Lower bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
"in": "query",
- "name": "condition",
- "type": "string",
- "x-example": "aGraded"
+ "name": "launched_after",
+ "type": "string"
},
{
- "description": "1-based page, default 1.",
+ "description": "Upper bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "launched_before",
+ "type": "string"
},
{
- "description": "Optional. Allowed values: 6, 8, 10, 12, 14, 15, 16, 18, 20, 24, 30, 40, 50, 64, 100. Omit to use COMC's own default.",
- "enum": [
- 6,
- 8,
- 10,
- 12,
- 14,
- 15,
- 16,
- 18,
- 20,
- 24,
- 30,
- 40,
- 50,
- 64,
- 100
- ],
+ "description": "Minimum upvotes, 0 or greater",
"in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 20
+ "name": "min_votes",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum review rating, from 0 through 5",
+ "in": "query",
+ "name": "min_rating",
+ "type": "number"
+ },
+ {
+ "description": "Exact pricing-type filter, e.g. free, paid, freemium",
+ "in": "query",
+ "name": "pricing_type",
+ "type": "string"
+ },
+ {
+ "description": "Website presence filter",
+ "in": "query",
+ "name": "has_website",
+ "type": "boolean"
+ },
+ {
+ "description": "true keeps only products still online, false only retired products",
+ "in": "query",
+ "name": "is_online",
+ "type": "boolean"
}
],
"produces": [
@@ -231352,7 +262497,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/comc.searchResponseDoc"
+ "$ref": "#/definitions/datasets.producthuntProductsFacetResponseDoc"
}
},
"400": {
@@ -231367,8 +262512,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -231379,27 +262524,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search COMC card listings",
+ "summary": "Facet the Product Hunt products dataset",
"tags": [
- "COMC"
+ "Datasets"
]
}
},
- "/congress/report": {
+ "/datasets/producthunt-products/items/{slug}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Fetch a single disclosure report by its filing_url (as returned by",
- "operationId": "congress-report",
+ "description": "Returns one product by its Product Hunt slug from dataset id enum value `producthunt-products`, including its full launch history and (once hydrated) description, website, twitter_url, pricing and makers. Returns 404 when the slug is not in the archive.",
+ "operationId": "datasets-producthunt-products-item",
"parameters": [
{
- "description": "Filing URL, as returned by congress-stock-disclosures' filing_url field. Must be an efdsearch.senate.gov /search/view/annual/..., /search/view/ptr/..., or /search/view/extension-notice/regular/... URL.",
- "in": "query",
- "name": "url",
+ "description": "Product Hunt product slug, e.g. chatgpt",
+ "in": "path",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "https://efdsearch.senate.gov/search/view/annual/cc198326-0f50-4f47-8b03-a5c6440f400f/"
+ "x-example": "chatgpt"
}
],
"produces": [
@@ -231409,7 +262554,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/congress.reportResponseDoc"
+ "$ref": "#/definitions/datasets.producthuntProductResponseDoc"
}
},
"400": {
@@ -231424,14 +262569,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -231442,346 +262587,105 @@
"ApiKeyAuth": []
}
],
- "summary": "Fetch and parse a congressional disclosure report",
+ "summary": "Get a Product Hunt product from the dataset",
"tags": [
- "Congress"
+ "Datasets"
]
}
},
- "/congress/stock-disclosures": {
+ "/datasets/producthunt-products/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Search public congressional stock disclosure filings (House or Senate)",
- "operationId": "congress-stock-disclosures",
+ "description": "Searches individual Product Hunt launches from the dataset id enum value `producthunt-products` — the searchable launch archive. Each result is one product with its topics, upvotes, ranks and launch history; description/website/twitter_url/pricing/makers are filled in as hydration runs. Sort enum: `relevance`, `votes_desc`, `launched_desc`, `launched_asc`, `rating_desc`, `best_rank_asc`.",
+ "operationId": "datasets-producthunt-products-search",
"parameters": [
{
- "description": "Chamber filter. Allowed values: house, senate.",
- "enum": [
- "house",
- "senate"
- ],
- "in": "query",
- "name": "chamber",
- "type": "string",
- "x-example": "house"
- },
- {
- "description": "Member name. Required for House. For Senate, this backward-compatible shorthand maps one word to last_name and maps the first word plus the complete remaining surname to first_name/last_name; it cannot be combined with either exact name field.",
+ "description": "Full-text query over product name and tagline, max 256 characters",
"in": "query",
- "name": "member",
+ "name": "q",
"type": "string"
},
{
- "description": "Senate filer first-name prefix (Senate only; cannot be combined with member).",
- "in": "query",
- "name": "first_name",
- "type": "string",
- "x-example": "Elizabeth"
- },
- {
- "description": "Senate filer last-name prefix (Senate only; cannot be combined with member).",
- "in": "query",
- "name": "last_name",
- "type": "string",
- "x-example": "Warren"
- },
- {
- "description": "Deprecated unsupported parameter; any non-empty value returns a validation error and the parameter is planned for removal.",
+ "description": "Exact topic-slug filter, e.g. artificial-intelligence, max 128 characters",
"in": "query",
- "name": "ticker",
+ "name": "topic",
"type": "string"
},
{
- "description": "State or territory filter (2-letter code). For Senate this backward-compatible shorthand applies to both Senator and Candidate states and cannot be combined with senator_state or candidate_state.",
- "enum": [
- "AK",
- "AL",
- "AR",
- "AS",
- "AZ",
- "CA",
- "CO",
- "CT",
- "DC",
- "DE",
- "FL",
- "FM",
- "GA",
- "GU",
- "HI",
- "IA",
- "ID",
- "IL",
- "IN",
- "KS",
- "KY",
- "LA",
- "MA",
- "MD",
- "ME",
- "MH",
- "MI",
- "MN",
- "MO",
- "MP",
- "MS",
- "MT",
- "NC",
- "ND",
- "NE",
- "NH",
- "NJ",
- "NM",
- "NV",
- "NY",
- "OH",
- "OK",
- "OR",
- "PA",
- "PR",
- "PW",
- "RI",
- "SC",
- "SD",
- "TN",
- "TX",
- "UT",
- "VA",
- "VI",
- "VT",
- "WA",
- "WI",
- "WV",
- "WY"
- ],
- "in": "query",
- "name": "state",
- "type": "string",
- "x-example": "CA"
- },
- {
- "description": "Senator state filter (Senate only, 2-letter code).",
- "enum": [
- "AK",
- "AL",
- "AR",
- "AS",
- "AZ",
- "CA",
- "CO",
- "CT",
- "DC",
- "DE",
- "FL",
- "FM",
- "GA",
- "GU",
- "HI",
- "IA",
- "ID",
- "IL",
- "IN",
- "KS",
- "KY",
- "LA",
- "MA",
- "MD",
- "ME",
- "MH",
- "MI",
- "MN",
- "MO",
- "MP",
- "MS",
- "MT",
- "NC",
- "ND",
- "NE",
- "NH",
- "NJ",
- "NM",
- "NV",
- "NY",
- "OH",
- "OK",
- "OR",
- "PA",
- "PR",
- "PW",
- "RI",
- "SC",
- "SD",
- "TN",
- "TX",
- "UT",
- "VA",
- "VI",
- "VT",
- "WA",
- "WI",
- "WV",
- "WY"
- ],
+ "description": "Exact maker-username filter (populated by hydration), max 128 characters",
"in": "query",
- "name": "senator_state",
- "type": "string",
- "x-example": "MA"
+ "name": "maker",
+ "type": "string"
},
{
- "description": "Candidate state filter (Senate only, 2-letter code).",
- "enum": [
- "AK",
- "AL",
- "AR",
- "AS",
- "AZ",
- "CA",
- "CO",
- "CT",
- "DC",
- "DE",
- "FL",
- "FM",
- "GA",
- "GU",
- "HI",
- "IA",
- "ID",
- "IL",
- "IN",
- "KS",
- "KY",
- "LA",
- "MA",
- "MD",
- "ME",
- "MH",
- "MI",
- "MN",
- "MO",
- "MP",
- "MS",
- "MT",
- "NC",
- "ND",
- "NE",
- "NH",
- "NJ",
- "NM",
- "NV",
- "NY",
- "OH",
- "OK",
- "OR",
- "PA",
- "PR",
- "PW",
- "RI",
- "SC",
- "SD",
- "TN",
- "TX",
- "UT",
- "VA",
- "VI",
- "VT",
- "WA",
- "WI",
- "WV",
- "WY"
- ],
+ "description": "Lower bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
"in": "query",
- "name": "candidate_state",
- "type": "string",
- "x-example": "TX"
+ "name": "launched_after",
+ "type": "string"
},
{
- "description": "House district filter (House only).",
+ "description": "Upper bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
"in": "query",
- "name": "district",
+ "name": "launched_before",
"type": "string"
},
{
- "description": "Filer-type filter, meaning differs by chamber. House: member (default) or candidate. Senate: comma-separated senator, candidate, former_senator, or the standalone all value. Defaults to senator when omitted.",
- "enum": [
- "member",
- "candidate",
- "all",
- "senator",
- "former_senator"
- ],
+ "description": "Minimum upvotes, 0 or greater",
"in": "query",
- "name": "filer_type",
- "type": "string",
- "x-example": "candidate"
+ "name": "min_votes",
+ "type": "integer"
},
{
- "description": "House candidate-search election year filter (requires filer_type=candidate).",
+ "description": "Minimum review rating, from 0 through 5 (populated by hydration)",
"in": "query",
- "name": "election_year",
- "type": "string",
- "x-example": "2024"
+ "name": "min_rating",
+ "type": "number"
},
{
- "description": "Comma-separated Senate report-type filter (Senate only). Allowed values: annual, periodic_transaction, due_date_extension, blind_trust, other. Defaults to all types when omitted.",
- "enum": [
- "annual",
- "periodic_transaction",
- "due_date_extension",
- "blind_trust",
- "other"
- ],
+ "description": "Exact pricing-type filter (populated by hydration), e.g. free, paid, freemium",
"in": "query",
- "name": "report_type",
- "type": "string",
- "x-example": "annual,periodic_transaction"
+ "name": "pricing_type",
+ "type": "string"
},
{
- "description": "Minimum filing date. House accepts YYYY. Senate accepts YYYY or MM/DD/YYYY and defaults to 2012 when omitted.",
+ "description": "Website presence filter (populated by hydration)",
"in": "query",
- "name": "from",
- "type": "string",
- "x-example": "01/01/2024"
+ "name": "has_website",
+ "type": "boolean"
},
{
- "description": "Maximum filing date. House accepts YYYY. Senate accepts YYYY or MM/DD/YYYY.",
+ "description": "true keeps only products still online, false only retired products",
"in": "query",
- "name": "to",
- "type": "string",
- "x-example": "12/31/2024"
+ "name": "is_online",
+ "type": "boolean"
},
{
- "description": "Sort key. Allowed values: name_asc, name_desc, office_asc, office_desc, filing_year_asc, filing_year_desc.",
+ "description": "Sort enum: relevance, votes_desc, launched_desc, launched_asc, rating_desc, best_rank_asc",
"enum": [
- "name_asc",
- "name_desc",
- "office_asc",
- "office_desc",
- "filing_year_asc",
- "filing_year_desc"
+ "relevance",
+ "votes_desc",
+ "launched_desc",
+ "launched_asc",
+ "rating_desc",
+ "best_rank_asc"
],
"in": "query",
"name": "sort",
- "type": "string",
- "x-example": "filing_year_desc"
+ "type": "string"
},
{
- "default": 1,
- "description": "1-based result page (1-1000).",
+ "description": "Page number, defaults to 1",
"in": "query",
- "maximum": 1000,
- "minimum": 1,
"name": "page",
"type": "integer"
},
{
- "description": "Max results (1-500).",
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -231791,7 +262695,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/congress.stockDisclosuresResponseDoc"
+ "$ref": "#/definitions/datasets.producthuntProductsSearchResponseDoc"
}
},
"400": {
@@ -231800,14 +262704,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -231818,28 +262722,72 @@
"ApiKeyAuth": []
}
],
- "summary": "Search congressional stock-disclosure filings",
+ "summary": "Search the Product Hunt products dataset",
"tags": [
- "Congress"
+ "Datasets"
]
}
},
- "/contact": {
- "post": {
+ "/datasets/producthunt-trends/facets": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Crawls a public website URL (homepage plus contact/about/team/imprint pages) and returns its public business contact details: emails — each tagged with a verification `status` (`verified`, `risky`, `unverified`, `invalid`) and a `type` (`generic`, `role`, `personal`) — plus social-media profiles and phone numbers. Intended for authorized public-business data only.",
- "operationId": "contact",
+ "description": "Returns suppressed distribution counts over the Product Hunt trends dataset (dataset id enum value `producthunt-trends`), honoring the same filters as search. Facet enum: `topic`, `launch_year`.",
+ "operationId": "datasets-producthunt-trends-facets",
"parameters": [
{
- "description": "Website URL payload",
- "in": "body",
- "name": "option",
+ "description": "Facet enum: topic, launch_year",
+ "enum": [
+ "topic",
+ "launch_year"
+ ],
+ "in": "query",
+ "name": "facet",
"required": true,
- "schema": {
- "$ref": "#/definitions/contact.ContactRequest"
- }
+ "type": "string",
+ "x-example": "topic"
+ },
+ {
+ "description": "Aggregate cell dimension enum: topic_month, topic_year, topic. Defaults to topic_month",
+ "enum": [
+ "topic_month",
+ "topic_year",
+ "topic"
+ ],
+ "in": "query",
+ "name": "group_by",
+ "type": "string"
+ },
+ {
+ "description": "Exact topic-slug filter, e.g. artificial-intelligence, max 128 characters",
+ "in": "query",
+ "name": "topic",
+ "type": "string"
+ },
+ {
+ "description": "Lower bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
+ "in": "query",
+ "name": "launched_after",
+ "type": "string"
+ },
+ {
+ "description": "Upper bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
+ "in": "query",
+ "name": "launched_before",
+ "type": "string"
+ },
+ {
+ "description": "Minimum product upvotes, 0 or greater",
+ "in": "query",
+ "name": "min_votes",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum launches per bucket; raises the small-cell suppression floor",
+ "in": "query",
+ "name": "min_launches",
+ "type": "integer"
}
],
"produces": [
@@ -231849,23 +262797,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/contact.contactResponseDoc"
+ "$ref": "#/definitions/datasets.producthuntTrendsFacetResponseDoc"
}
},
"400": {
- "description": "Invalid input or missing URL",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal server error during contact extraction",
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -231876,26 +262824,84 @@
"ApiKeyAuth": []
}
],
- "summary": "Contact API — emails, socials and phones for a website",
+ "summary": "Facet the Product Hunt trends dataset",
"tags": [
- "Web"
+ "Datasets"
]
}
},
- "/costco/categories": {
+ "/datasets/producthunt-trends/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Costco category slugs and product counts relevant to an optional search term, each slug usable directly with GET /costco/search's category filter. Public data sourced from Costco's own search backend.",
- "operationId": "costco-categories",
+ "description": "Returns aggregate Product Hunt launch trends from the dataset id enum value `producthunt-trends`. Aggregate-only: each row is a category-over-time cell (a topic, optionally within a calendar period), reporting launch count, total and average upvotes, average rating and the top product — never an individual product record. Thin cells are suppressed. group_by enum: `topic_month`, `topic_year`, `topic`. Sort enum: `period_desc`, `period_asc`, `launch_count_desc`, `sum_votes_desc`.",
+ "operationId": "datasets-producthunt-trends-search",
"parameters": [
{
- "description": "Search text to scope the returned categories to, e.g. \\",
+ "description": "Aggregate cell dimension enum: topic_month, topic_year, topic. Defaults to topic_month",
+ "enum": [
+ "topic_month",
+ "topic_year",
+ "topic"
+ ],
"in": "query",
- "name": "query",
- "type": "string",
- "x-example": "refrigerator"
+ "name": "group_by",
+ "type": "string"
+ },
+ {
+ "description": "Exact topic-slug filter, e.g. artificial-intelligence, max 128 characters",
+ "in": "query",
+ "name": "topic",
+ "type": "string"
+ },
+ {
+ "description": "Lower bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
+ "in": "query",
+ "name": "launched_after",
+ "type": "string"
+ },
+ {
+ "description": "Upper bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
+ "in": "query",
+ "name": "launched_before",
+ "type": "string"
+ },
+ {
+ "description": "Minimum product upvotes, 0 or greater",
+ "in": "query",
+ "name": "min_votes",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum launches per cell; raises the small-cell suppression floor (never lowered below the built-in minimum)",
+ "in": "query",
+ "name": "min_launches",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: period_desc, period_asc, launch_count_desc, sum_votes_desc",
+ "enum": [
+ "period_desc",
+ "period_asc",
+ "launch_count_desc",
+ "sum_votes_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -231905,17 +262911,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/costco.categoriesResponseDoc"
+ "$ref": "#/definitions/datasets.producthuntTrendsSearchResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -231926,27 +262938,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Costco category facets",
+ "summary": "Search the Product Hunt trends dataset",
"tags": [
- "Costco"
+ "Datasets"
]
}
},
- "/costco/product/{id}": {
+ "/datasets/reddit-trending/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Costco product's detail: title, description, manufacturer, image, price, stock status, and rating. Public data sourced from Costco's own product backend.",
- "operationId": "costco-product",
+ "description": "Searches daily snapshots of each tracked subreddit's hot-feed post order, stored in a search index (one document per subreddit × snapshot × rank) so history accumulates. With no `date` the latest snapshot is returned (today's trending); pair `subreddit` with `sort=date_desc` for a subreddit's trending history over time. There is no score or comment-count field — the underlying credential-free scraper does not expose vote counts, so `rank` reflects Reddit's own hot-feed order rather than a locally computed score.",
+ "operationId": "datasets-reddit-trending-search",
"parameters": [
{
- "description": "Costco product id, e.g. from a search result's id field or a product page URL's \\",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "4000103922"
+ "description": "Full-text query over the post title, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact subreddit-name filter, max 128 characters",
+ "in": "query",
+ "name": "subreddit",
+ "type": "string"
+ },
+ {
+ "description": "Snapshot date filter yyyy-MM-dd; defaults to the latest snapshot",
+ "in": "query",
+ "name": "date",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: rank, date_desc",
+ "enum": [
+ "rank",
+ "date_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -231956,7 +263000,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/costco.productResponseDoc"
+ "$ref": "#/definitions/datasets.redditTrendingSearchResponseDoc"
}
},
"400": {
@@ -231965,8 +263009,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -231976,12 +263020,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -231989,43 +263027,97 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Costco product's detail",
+ "summary": "Search the reddit-trending dataset",
"tags": [
- "Costco"
+ "Datasets"
]
}
},
- "/costco/product/{id}/availability": {
+ "/datasets/sec-companies/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Costco product's stock and estimated-delivery status for a delivery destination. Public data sourced from Costco's own fulfillment backend.",
- "operationId": "costco-product-availability",
+ "description": "Returns terms-aggregation counts for one facet of the SEC companies dataset, scoped to the same filters as search. Facet enum: `sic`, `sic_description`, `exchange`, `state_of_incorporation`, `entity_type`, `reporting_currency`, `revenue_band`, `forms_filed`. `revenue_band` buckets latest-annual revenue into: `unknown`, `under_1m`, `1m_10m`, `10m_100m`, `100m_1b`, `1b_10b`, `over_10b`.",
+ "operationId": "datasets-sec-companies-facets",
"parameters": [
{
- "description": "Costco product id",
- "in": "path",
- "name": "id",
+ "description": "Facet enum: sic, sic_description, exchange, state_of_incorporation, entity_type, reporting_currency, revenue_band, forms_filed",
+ "enum": [
+ "sic",
+ "sic_description",
+ "exchange",
+ "state_of_incorporation",
+ "entity_type",
+ "reporting_currency",
+ "revenue_band",
+ "forms_filed"
+ ],
+ "in": "query",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "1942114"
+ "x-example": "sic"
},
{
- "description": "US destination ZIP code",
+ "description": "Full-text query over the company name, or an exact ticker match, max 256 characters",
"in": "query",
- "name": "postal_code",
- "required": true,
- "type": "string",
- "x-example": "98101"
+ "name": "q",
+ "type": "string"
},
{
- "description": "US destination two-letter state code",
+ "description": "Exact ticker filter (case-insensitive), max 32 characters",
"in": "query",
- "name": "state",
- "required": true,
- "type": "string",
- "x-example": "WA"
+ "name": "ticker",
+ "type": "string"
+ },
+ {
+ "description": "Exact SIC industry-code filter, max 32 characters",
+ "in": "query",
+ "name": "sic",
+ "type": "string"
+ },
+ {
+ "description": "Exact exchange filter as reported by EDGAR, max 64 characters",
+ "in": "query",
+ "name": "exchange",
+ "type": "string"
+ },
+ {
+ "description": "Exact state/country-of-incorporation filter, max 32 characters",
+ "in": "query",
+ "name": "state_of_incorporation",
+ "type": "string"
+ },
+ {
+ "description": "Exact entity-type filter, max 64 characters",
+ "in": "query",
+ "name": "entity_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact reporting-currency filter, ISO-4217 code, e.g. USD, JPY, EUR",
+ "in": "query",
+ "name": "reporting_currency",
+ "type": "string"
+ },
+ {
+ "description": "When true, keep only companies that have XBRL financial statements",
+ "in": "query",
+ "name": "has_financials",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum latest-annual revenue in USD (normalized at reference rates), 0 or greater",
+ "in": "query",
+ "name": "min_revenue",
+ "type": "number"
+ },
+ {
+ "description": "Exact form-type filter, e.g. 10-K, 8-K",
+ "in": "query",
+ "name": "form_filed",
+ "type": "string"
}
],
"produces": [
@@ -232035,7 +263127,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/costco.productAvailabilityResponseDoc"
+ "$ref": "#/definitions/datasets.secCompaniesFacetResponseDoc"
}
},
"400": {
@@ -232044,14 +263136,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232062,27 +263154,66 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Costco product's delivery estimate",
+ "summary": "Facet the SEC companies dataset",
"tags": [
- "Costco"
+ "Datasets"
]
}
},
- "/costco/product/{id}/reviews": {
+ "/datasets/sec-companies/financials/{cik}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of a Costco product's reviews: title, text, rating, author, and recommendation for each. Public data sourced from Costco's own review platform.",
- "operationId": "costco-product-reviews",
+ "description": "Returns a company's normalized financial-statement history (income statement, balance sheet, cash flow) from the SEC companies dataset, newest fiscal year first. An unknown CIK or a company with no XBRL data returns an empty series rather than a 404 — most filers without a current ticker have no financial-statement history at all. `lines` keys are the same normalized concept names the live `/sec/financials` endpoint uses (e.g. `revenue`, `net_income`, `total_assets`); `ratios` keys include `gross_margin`, `operating_margin`, `net_margin`, `revenue_growth_yoy`, `current_ratio`, `debt_to_equity`, `free_cash_flow` where derivable. statement enum: `income`, `balance`, `cash_flow`. period enum: `annual`, `quarterly`.",
+ "operationId": "datasets-sec-companies-financials",
"parameters": [
{
- "description": "Costco product id, e.g. from a search result's id field",
+ "description": "SEC CIK, numeric or zero-padded",
"in": "path",
- "name": "id",
+ "name": "cik",
"required": true,
"type": "string",
- "x-example": "4000354684"
+ "x-example": "320193"
+ },
+ {
+ "description": "Statement enum: income, balance, cash_flow. Omit to return all three.",
+ "enum": [
+ "income",
+ "balance",
+ "cash_flow"
+ ],
+ "in": "query",
+ "name": "statement",
+ "type": "string"
+ },
+ {
+ "description": "Period-type enum: annual, quarterly. Omit to return both.",
+ "enum": [
+ "annual",
+ "quarterly"
+ ],
+ "in": "query",
+ "name": "period",
+ "type": "string"
+ },
+ {
+ "description": "Inclusive lower bound on fiscal_year",
+ "in": "query",
+ "name": "from",
+ "type": "integer"
+ },
+ {
+ "description": "Inclusive upper bound on fiscal_year",
+ "in": "query",
+ "name": "to",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum points returned (most recent fiscal years first), default 100, max 400",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -232092,7 +263223,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/costco.productReviewsResponseDoc"
+ "$ref": "#/definitions/datasets.secCompaniesFinancialsResponseDoc"
}
},
"400": {
@@ -232101,14 +263232,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232119,33 +263250,51 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Costco product's reviews",
+ "summary": "Get a SEC company's financial-statement history",
"tags": [
- "Costco"
+ "Datasets"
]
}
},
- "/costco/search": {
+ "/datasets/sec-companies/insider/{cik}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public Costco products matching a text query and/or a category slug: title, brand, model, image, and rating for each result. Public data sourced from Costco's own search backend.",
- "operationId": "costco-search",
+ "description": "Returns a company's insider (Form 3/4/5) transaction history from the SEC companies dataset, most recent transaction first. An unknown CIK or a company with no reported transactions returns an empty series rather than a 404.",
+ "operationId": "datasets-sec-companies-insider",
"parameters": [
{
- "description": "Search text",
- "in": "query",
- "name": "query",
+ "description": "SEC CIK, numeric or zero-padded",
+ "in": "path",
+ "name": "cik",
+ "required": true,
"type": "string",
- "x-example": "refrigerator"
+ "x-example": "320193"
},
{
- "description": "Costco category slug, e.g. the last path segment of a category page URL",
+ "description": "Inclusive start date (YYYY-MM-DD, UTC) filtering transaction date",
"in": "query",
- "name": "category",
- "type": "string",
- "x-example": "refrigerators"
+ "name": "from",
+ "type": "string"
+ },
+ {
+ "description": "Inclusive end date (YYYY-MM-DD, UTC) filtering transaction date",
+ "in": "query",
+ "name": "to",
+ "type": "string"
+ },
+ {
+ "description": "Exact transaction code filter, e.g. P (open-market purchase), S (sale)",
+ "in": "query",
+ "name": "code",
+ "type": "string"
+ },
+ {
+ "description": "Maximum transactions returned (most recent first), default 50, max 200",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -232155,7 +263304,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/costco.searchResponseDoc"
+ "$ref": "#/definitions/datasets.secCompaniesInsiderResponseDoc"
}
},
"400": {
@@ -232164,14 +263313,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232182,35 +263331,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Costco products",
+ "summary": "Get a SEC company's insider-transaction history",
"tags": [
- "Costco"
+ "Datasets"
]
}
},
- "/costco/warehouses": {
+ "/datasets/sec-companies/items/{cik}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Costco warehouses near a latitude/longitude, sorted by distance: name, address, and distance for each. Public data sourced from Costco's own warehouse locator backend.",
- "operationId": "costco-warehouses",
+ "description": "Returns one SEC-reporting company by CIK from dataset id `sec-companies`, including its filing-history summary, financial-statement rollups, and trailing-90-day insider-activity summary. Returns 404 when the CIK is not in the dataset.",
+ "operationId": "datasets-sec-companies-item",
"parameters": [
{
- "description": "Latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 47.565
- },
- {
- "description": "Longitude",
- "in": "query",
- "name": "longitude",
+ "description": "SEC CIK, numeric or zero-padded, e.g. 320193 or 0000320193",
+ "in": "path",
+ "name": "cik",
"required": true,
- "type": "number",
- "x-example": -122.329
+ "type": "string",
+ "x-example": "320193"
}
],
"produces": [
@@ -232220,7 +263361,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/costco.warehousesResponseDoc"
+ "$ref": "#/definitions/datasets.secCompaniesItemResponseDoc"
}
},
"400": {
@@ -232229,14 +263370,20 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232247,35 +263394,141 @@
"ApiKeyAuth": []
}
],
- "summary": "Find nearby Costco warehouses",
+ "summary": "Get a company from the SEC companies dataset",
"tags": [
- "Costco"
+ "Datasets"
]
}
},
- "/courtlistener/courts": {
+ "/datasets/sec-companies/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Lists CourtListener's anonymous public court directory. Provide court_id to retrieve one court. page is used only for directory browsing and is 1-indexed. The endpoint does not retrieve dockets, opinions, judges, or account data.",
- "operationId": "courtlistener-courts",
+ "description": "Searches SEC-reporting companies stored in a search index — normalized filing history, financial-statement rollups (latest annual/quarterly revenue, net income, total assets) and trailing-90-day insider (Form 3/4/5) activity. Sort enum: `relevance`, `name_asc`, `revenue_desc`, `net_income_desc`, `filing_recent_desc`, `insider_activity_desc`. `entity_type`, `sic`, `sic_description`, `exchange`, and `state_of_incorporation` are open filters over the exact values EDGAR reports for each filer (not a fixed enum) — discover real values via the matching facet.",
+ "operationId": "datasets-sec-companies-search",
"parameters": [
{
- "description": "CourtListener court identifier",
+ "description": "Full-text query over the company name, or an exact ticker match, max 256 characters",
"in": "query",
- "name": "court_id",
- "type": "string",
- "x-example": "scotus"
+ "name": "q",
+ "type": "string"
},
{
- "default": 1,
- "description": "Directory page, 1-indexed",
+ "description": "Exact ticker filter (case-insensitive), e.g. AAPL, max 32 characters",
+ "in": "query",
+ "name": "ticker",
+ "type": "string"
+ },
+ {
+ "description": "Exact CIK filter, numeric or zero-padded, e.g. 320193 or 0000320193",
+ "in": "query",
+ "name": "cik",
+ "type": "string"
+ },
+ {
+ "description": "Exact SIC industry-code filter, e.g. 3571, max 32 characters",
+ "in": "query",
+ "name": "sic",
+ "type": "string"
+ },
+ {
+ "description": "Exact SIC description filter, e.g. Electronic Computers, max 128 characters",
+ "in": "query",
+ "name": "sic_description",
+ "type": "string"
+ },
+ {
+ "description": "Exact exchange filter as reported by EDGAR, e.g. Nasdaq, NYSE, max 64 characters",
+ "in": "query",
+ "name": "exchange",
+ "type": "string"
+ },
+ {
+ "description": "Exact state/country-of-incorporation filter as reported by EDGAR, e.g. DE, CA, max 32 characters",
+ "in": "query",
+ "name": "state_of_incorporation",
+ "type": "string"
+ },
+ {
+ "description": "Exact entity-type filter as reported by EDGAR (e.g. operating), max 64 characters",
+ "in": "query",
+ "name": "entity_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact reporting-currency filter, ISO-4217 code, e.g. USD, JPY, EUR",
+ "in": "query",
+ "name": "reporting_currency",
+ "type": "string"
+ },
+ {
+ "description": "When true, keep only companies that have XBRL financial statements",
+ "in": "query",
+ "name": "has_financials",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum latest-annual revenue in USD (normalized from the filer's reporting currency at reference rates), 0 or greater",
+ "in": "query",
+ "name": "min_revenue",
+ "type": "number"
+ },
+ {
+ "description": "Maximum latest-annual revenue in USD (normalized), 0 or greater",
+ "in": "query",
+ "name": "max_revenue",
+ "type": "number"
+ },
+ {
+ "description": "Minimum latest-annual net income in USD (normalized; negative allowed)",
+ "in": "query",
+ "name": "min_net_income",
+ "type": "number"
+ },
+ {
+ "description": "Minimum latest-annual total assets in USD (normalized), 0 or greater",
+ "in": "query",
+ "name": "min_total_assets",
+ "type": "number"
+ },
+ {
+ "description": "Exact form-type filter; keeps only companies that have ever filed this form, e.g. 10-K, 8-K",
+ "in": "query",
+ "name": "form_filed",
+ "type": "string"
+ },
+ {
+ "description": "Minimum insider (Form 3/4/5) transaction count in the trailing 90 days, 0 or greater",
+ "in": "query",
+ "name": "min_insider_txn_count_90d",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, name_asc, revenue_desc, net_income_desc, filing_recent_desc, insider_activity_desc",
+ "enum": [
+ "relevance",
+ "name_asc",
+ "revenue_desc",
+ "net_income_desc",
+ "filing_recent_desc",
+ "insider_activity_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
"in": "query",
- "minimum": 1,
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -232285,7 +263538,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/courtlistener.courtsResponseDoc"
+ "$ref": "#/definitions/datasets.secCompaniesSearchResponseDoc"
}
},
"400": {
@@ -232305,12 +263558,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -232318,34 +263565,49 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse CourtListener courts",
+ "summary": "Search the SEC companies dataset",
"tags": [
- "CourtListener"
+ "Datasets"
]
}
},
- "/courtlistener/people": {
+ "/datasets/sec-institutional-positions/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Lists CourtListener's anonymous public judicial-person directory. Provide person_id to retrieve one public person record. The response contains only public directory and position-summary metadata; sensitive biographical fields are excluded.",
- "operationId": "courtlistener-people",
+ "description": "Returns terms-aggregation counts for one facet of the SEC institutional positions dataset, scoped to the same filters as search. Facet enum: `manager`, `issuer`.",
+ "operationId": "datasets-sec-institutional-positions-facets",
"parameters": [
{
- "description": "CourtListener person identifier",
+ "description": "Facet enum: manager, issuer",
+ "enum": [
+ "manager",
+ "issuer"
+ ],
"in": "query",
- "minimum": 1,
- "name": "person_id",
- "type": "integer",
- "x-example": 123
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "manager"
+ },
+ {
+ "description": "Exact institutional-manager CIK filter, numeric or zero-padded",
+ "in": "query",
+ "name": "manager_cik",
+ "type": "string"
+ },
+ {
+ "description": "Issuer-name text filter (best-effort match), max 256 characters",
+ "in": "query",
+ "name": "issuer_name",
+ "type": "string"
},
{
- "description": "Cursor from a prior response's next_cursor field",
+ "description": "Exact CUSIP filter, max 16 characters",
"in": "query",
- "name": "cursor",
- "type": "string",
- "x-example": "cD0yMDI2LTA4LTI3KzAwJTNBMDAlM0EwMC4wMDAwMDAlMkIwMCUzQTAw"
+ "name": "cusip",
+ "type": "string"
}
],
"produces": [
@@ -232355,7 +263617,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/courtlistener.peopleResponseDoc"
+ "$ref": "#/definitions/datasets.secInstitutionalPositionsFacetResponseDoc"
}
},
"400": {
@@ -232375,12 +263637,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -232388,34 +263644,60 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse CourtListener judicial people",
+ "summary": "Facet the SEC institutional positions dataset",
"tags": [
- "CourtListener"
+ "Datasets"
]
}
},
- "/courtlistener/search": {
+ "/datasets/sec-institutional-positions/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches CourtListener's public opinion-search index by text and returns normalized opinion-result metadata with a cursor for the next page. The endpoint uses CourtListener's anonymous public search data and does not retrieve authenticated opinion detail, dockets, judges, alerts, or account data.",
- "operationId": "courtlistener-search",
+ "description": "Searches institutional investment managers' quarterly 13F portfolio holdings stored in a search index. Filter by manager_cik for a manager's full reported portfolio (an exact, reliable filter), or by issuer_name/cusip for a best-effort view of which managers reported a position in an issuer — SEC publishes no authoritative CUSIP-to-CIK mapping, so the issuer side is never a guaranteed-resolved join. Sort enum: `value_desc`, `value_asc`, `shares_desc`.",
+ "operationId": "datasets-sec-institutional-positions-search",
"parameters": [
{
- "description": "Opinion search text",
+ "description": "Exact institutional-manager CIK filter, numeric or zero-padded",
"in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "\"qualified immunity\""
+ "name": "manager_cik",
+ "type": "string"
},
{
- "description": "Cursor from a prior response's next_cursor field",
+ "description": "Issuer-name text filter (best-effort match, not a resolved CIK join), max 256 characters",
"in": "query",
- "name": "cursor",
- "type": "string",
- "x-example": "cD0yMDI2LTA4LTI3KzAwJTNBMDAlM0EwMC4wMDAwMDAlMkIwMCUzQTAw"
+ "name": "issuer_name",
+ "type": "string"
+ },
+ {
+ "description": "Exact CUSIP filter, max 16 characters",
+ "in": "query",
+ "name": "cusip",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: value_desc, value_asc, shares_desc",
+ "enum": [
+ "value_desc",
+ "value_asc",
+ "shares_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -232425,7 +263707,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/courtlistener.searchResponseDoc"
+ "$ref": "#/definitions/datasets.secInstitutionalPositionsSearchResponseDoc"
}
},
"400": {
@@ -232445,12 +263727,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -232458,16 +263734,76 @@
"ApiKeyAuth": []
}
],
- "summary": "Search CourtListener opinions",
+ "summary": "Search the SEC institutional positions dataset",
"tags": [
- "CourtListener"
+ "Datasets"
]
}
},
- "/cricinfo/calendar": {
+ "/datasets/starbucks-stores/facets": {
"get": {
- "description": "Returns the dated international match calendar currently published by Cricinfo. It includes match-day names and the associated series labels.",
- "operationId": "cricinfo-calendar",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns terms aggregation counts for the Starbucks store directory. Facet enum: `country`, `state`, `market`, `amenities`, `ownership_type_code`. Accepts the same filter parameters as search to scope the aggregation.",
+ "operationId": "datasets-starbucks-stores-facets",
+ "parameters": [
+ {
+ "description": "Facet enum: country, state, market, amenities, ownership_type_code",
+ "enum": [
+ "country",
+ "state",
+ "market",
+ "amenities",
+ "ownership_type_code"
+ ],
+ "in": "query",
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "country"
+ },
+ {
+ "description": "Full-text search over store name, city, and address",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "ISO-3166-1 alpha-2 country filter",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "State/region code filter",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact city filter",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Crawl-provenance market filter. One of: us, ca",
+ "enum": [
+ "us",
+ "ca"
+ ],
+ "in": "query",
+ "name": "market",
+ "type": "string"
+ },
+ {
+ "description": "Amenity code filter, e.g. DT",
+ "in": "query",
+ "name": "amenity",
+ "type": "string"
+ }
+ ],
"produces": [
"application/json"
],
@@ -232475,7 +263811,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.calendarResponseDoc"
+ "$ref": "#/definitions/datasets.starbucksStoresFacetResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -232484,8 +263826,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232496,31 +263838,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get the Cricinfo international calendar",
+ "summary": "Facet stored Starbucks stores",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/commentary": {
+ "/datasets/starbucks-stores/items/{store_number}": {
"get": {
- "description": "Returns the latest ball-by-ball and editorial commentary embedded in a public Cricinfo match page. `url` may be a canonical full-scorecard or live-score URL.",
- "operationId": "cricinfo-commentary",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one stored Starbucks store by its store number (e.g. `101-54`) from dataset id `starbucks-stores`. `country` is the store's true country while `market` is crawl provenance. Hours (`schedule`) and `amenities` may be empty for stores outside the US, Canada, Europe, and the Gulf; an empty schedule means \"not published for this market\", not \"closed\".",
+ "operationId": "datasets-starbucks-stores-item",
"parameters": [
{
- "description": "Canonical Cricinfo full-scorecard or live-score URL",
- "in": "query",
- "name": "url",
+ "description": "Starbucks store number, e.g. 101-54",
+ "in": "path",
+ "name": "store_number",
"required": true,
"type": "string",
- "x-example": "https://www.cricinfo.com/series/ahmad-shah-abdali-4-day-tournament-2026-1551329/maiwand-champions-vs-mah-e-par-stars-1st-match-1551332/live-cricket-score"
- },
- {
- "description": "Maximum commentary entries returned, from 1 to 100",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "x-example": "101-54"
}
],
"produces": [
@@ -232530,7 +263868,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.commentaryResponseDoc"
+ "$ref": "#/definitions/datasets.starbucksStoreResponseDoc"
}
},
"400": {
@@ -232551,8 +263889,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232563,23 +263901,67 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Cricinfo match commentary",
+ "summary": "Get a stored Starbucks store",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/grounds": {
+ "/datasets/starbucks-stores/nearby": {
"get": {
- "description": "Returns the featured public ground directory snapshot and the country index used to discover Cricinfo venue pages. Use the existing venue endpoint for detailed ground profiles.",
- "operationId": "cricinfo-grounds",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns stored Starbucks stores within a radius of a point, nearest first, from dataset id `starbucks-stores`. lat, lon, and radius_m are required. Unlike the live /starbucks/stores endpoint (which caps at 50 near a point), this queries the full grid-tiled directory, so it can return every store in the radius.",
+ "operationId": "datasets-starbucks-stores-nearby",
"parameters": [
{
- "description": "Maximum featured grounds returned, from 1 to 100",
+ "description": "Center latitude, from -90 through 90",
"in": "query",
- "name": "limit",
+ "name": "lat",
+ "required": true,
+ "type": "number",
+ "x-example": 40.7484257
+ },
+ {
+ "description": "Center longitude, from -180 through 180",
+ "in": "query",
+ "name": "lon",
+ "required": true,
+ "type": "number",
+ "x-example": -73.98567
+ },
+ {
+ "description": "Search radius in meters, 1 through 50000",
+ "in": "query",
+ "name": "radius_m",
+ "required": true,
"type": "integer",
- "x-example": 20
+ "x-example": 5000
+ },
+ {
+ "description": "ISO-3166-1 alpha-2 country filter",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Amenity code filter, e.g. DT",
+ "in": "query",
+ "name": "amenity",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -232589,7 +263971,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.groundsResponseDoc"
+ "$ref": "#/definitions/datasets.starbucksStoresSearchResponseDoc"
}
},
"400": {
@@ -232604,8 +263986,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232616,16 +263998,101 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cricinfo grounds",
+ "summary": "Find nearby stored Starbucks stores",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/live": {
+ "/datasets/starbucks-stores/search": {
"get": {
- "description": "Returns the current public live-score feed, including live, upcoming, and recently completed match cards with their canonical scorecard URLs.",
- "operationId": "cricinfo-live-matches",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the worldwide Starbucks store directory (dataset id `starbucks-stores`), built by grid-tiling the store locator around its 50-result cap. Each store has its store number, name, phone, full address, coordinates, weekly hours, amenity codes, and pick-up options. Store discovery is global, but hours, amenities, and phone numbers are populated per market and are largely absent outside the US, Canada, Europe, and the Gulf; an empty schedule means \"not published for this market\", not \"closed\". `country` is the store's true country while `market` is crawl provenance (the US host geocodes worldwide). Supports full-text `q`, `country`/`state`/`city`/`market`/`amenity` filters, `lat`/`lon`/`radius_m` radius filtering, and `sort` (relevance, distance_asc).",
+ "operationId": "datasets-starbucks-stores-search",
+ "parameters": [
+ {
+ "description": "Full-text search over store name, city, and address, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "ISO-3166-1 alpha-2 country filter, e.g. US, GB, JP",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "State/region code filter, e.g. WA",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact city filter",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Crawl-provenance market filter. One of: us, ca",
+ "enum": [
+ "us",
+ "ca"
+ ],
+ "in": "query",
+ "name": "market",
+ "type": "string"
+ },
+ {
+ "description": "Amenity code filter, e.g. DT (Drive-Thru), XO (Mobile Order and Pay)",
+ "in": "query",
+ "name": "amenity",
+ "type": "string"
+ },
+ {
+ "description": "Latitude for radius filtering or distance sort, requires lon",
+ "in": "query",
+ "name": "lat",
+ "type": "number"
+ },
+ {
+ "description": "Longitude for radius filtering or distance sort, requires lat",
+ "in": "query",
+ "name": "lon",
+ "type": "number"
+ },
+ {
+ "description": "Radius in meters, 1 through 50000; requires lat and lon",
+ "in": "query",
+ "name": "radius_m",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, distance_asc",
+ "enum": [
+ "relevance",
+ "distance_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
@@ -232633,7 +264100,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.liveMatchesResponseDoc"
+ "$ref": "#/definitions/datasets.starbucksStoresSearchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -232642,8 +264115,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232654,24 +264127,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Cricinfo live matches",
+ "summary": "Search the Starbucks store directory",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/match": {
+ "/datasets/steam-achievements/search": {
"get": {
- "description": "Returns a public Cricinfo match scorecard with match state, team scores, and available innings totals and batter/bowler lines. Upcoming matches return an empty innings list. `url` must be a canonical `https://www.cricinfo.com/series/.../(full-scorecard|live-cricket-score)` URL; live-score URLs are normalized to the paired scorecard.",
- "operationId": "cricinfo-match",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches per-game global achievement unlock percentages (one document per appid × achievement). Pass `app_id` to list a game's achievements. Sort enum: `percent_desc` (most-unlocked first, default), `percent_asc` (rarest first), `rank_asc`.",
+ "operationId": "datasets-steam-achievements-search",
"parameters": [
{
- "description": "Canonical Cricinfo full-scorecard or live-cricket-score URL",
+ "description": "Exact Steam app id filter",
"in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.cricinfo.com/series/caribbean-premier-league-2026-1534175/trinbago-knight-riders-vs-barbados-tridents-19th-match-1534197/full-scorecard"
+ "name": "app_id",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: percent_desc, percent_asc, rank_asc",
+ "enum": [
+ "percent_desc",
+ "percent_asc",
+ "rank_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -232681,7 +264178,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.matchResponseDoc"
+ "$ref": "#/definitions/datasets.steamAchievementsSearchResponseDoc"
}
},
"400": {
@@ -232690,20 +264187,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232714,23 +264205,77 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Cricinfo match scorecard",
+ "summary": "Search steam-achievements dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/news": {
+ "/datasets/steam-charts/search": {
"get": {
- "description": "Returns a bounded snapshot of Cricinfo's latest public stories, including titles, summaries, authors, genres, publication times, images, and associated match or series identifiers.",
- "operationId": "cricinfo-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches daily snapshots of Steam's player-count and sales charts, stored in a search index (one document per chart × country × snapshot × rank) so history accumulates. Charts: `most_played` (weekly peak concurrent), `concurrent` (live concurrent players), `top_sellers` (weekly sales; country-specific). With no `date` the latest snapshot is returned (today's chart); pair `app_id` with `sort=date_desc` for an app's rank/players over time. Country is `global` for the player-count charts or an ISO code (e.g. `us`) for `top_sellers`. Sort enum: `rank`, `rank_desc`, `date_desc`.",
+ "operationId": "datasets-steam-charts-search",
"parameters": [
{
- "description": "Maximum stories returned, from 1 to 100",
+ "description": "Full-text query over the game name, max 256 characters",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Chart enum: most_played, concurrent, top_sellers",
+ "enum": [
+ "most_played",
+ "concurrent",
+ "top_sellers"
+ ],
+ "in": "query",
+ "name": "chart",
+ "type": "string"
+ },
+ {
+ "description": "Market filter: global (player-count charts) or an ISO country code (top_sellers), max 128 characters",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Exact Steam app id filter; pair with sort=date_desc for rank/players history",
+ "in": "query",
+ "name": "app_id",
+ "type": "string"
+ },
+ {
+ "description": "Snapshot date filter yyyy-MM-dd; defaults to the latest snapshot",
+ "in": "query",
+ "name": "date",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: rank, rank_desc, date_desc",
+ "enum": [
+ "rank",
+ "rank_desc",
+ "date_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -232740,7 +264285,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.newsResponseDoc"
+ "$ref": "#/definitions/datasets.steamChartsSearchResponseDoc"
}
},
"400": {
@@ -232755,8 +264300,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232767,23 +264312,222 @@
"ApiKeyAuth": []
}
],
- "summary": "Get latest Cricinfo news",
+ "summary": "Search the steam-charts dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/photos": {
+ "/datasets/steam-games/facets": {
"get": {
- "description": "Returns bounded metadata for the latest public Cricinfo photos, including captions, credits, dimensions, dates, and image variants. Media files are not downloaded by the endpoint.",
- "operationId": "cricinfo-photos",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns terms aggregation counts for the Steam games dataset. Facet enum: `type`, `developer`, `publisher`, `genres`, `categories`, `tags`, `primary_tag`, `price_tier`, `review_tier`, `owners_bucket`, `release_year`, `run_id`, `is_free`, `coming_soon`, `platform_windows`, `platform_mac`, `platform_linux`. price_tier enum: `free`, `under5`, `5to15`, `15to30`, `30to60`, `over60`. review_tier enum: `overwhelmingly_positive`, `very_positive`, `positive`, `mostly_positive`, `mixed`, `mostly_negative`, `negative`, `very_negative`, `overwhelmingly_negative`, `insufficient`.",
+ "operationId": "datasets-steam-games-facets",
"parameters": [
{
- "description": "Maximum photos returned, from 1 to 100",
+ "description": "Facet enum: type, developer, publisher, genres, categories, tags, primary_tag, price_tier, review_tier, owners_bucket, release_year, run_id, is_free, coming_soon, platform_windows, platform_mac, platform_linux",
+ "enum": [
+ "type",
+ "developer",
+ "publisher",
+ "genres",
+ "categories",
+ "tags",
+ "primary_tag",
+ "price_tier",
+ "review_tier",
+ "owners_bucket",
+ "release_year",
+ "run_id",
+ "is_free",
+ "coming_soon",
+ "platform_windows",
+ "platform_mac",
+ "platform_linux"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "type"
+ },
+ {
+ "description": "Full-text query over name, developer and publisher, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact storefront type filter, max 128 characters",
+ "in": "query",
+ "name": "type",
+ "type": "string"
+ },
+ {
+ "description": "Exact developer filter, max 128 characters",
+ "in": "query",
+ "name": "developer",
+ "type": "string"
+ },
+ {
+ "description": "Exact publisher filter, max 128 characters",
+ "in": "query",
+ "name": "publisher",
+ "type": "string"
+ },
+ {
+ "description": "Exact genre filter, max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
+ },
+ {
+ "description": "Exact store category filter, max 128 characters",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Exact community-tag filter (e.g. Roguelike, Cozy), max 128 characters",
+ "in": "query",
+ "name": "tag",
+ "type": "string"
+ },
+ {
+ "description": "Price-tier enum: free, under5, 5to15, 15to30, 30to60, over60",
+ "enum": [
+ "free",
+ "under5",
+ "5to15",
+ "15to30",
+ "30to60",
+ "over60"
+ ],
+ "in": "query",
+ "name": "price_tier",
+ "type": "string"
+ },
+ {
+ "description": "Review-tier enum: overwhelmingly_positive, very_positive, positive, mostly_positive, mixed, mostly_negative, negative, very_negative, overwhelmingly_negative, insufficient",
+ "enum": [
+ "overwhelmingly_positive",
+ "very_positive",
+ "positive",
+ "mostly_positive",
+ "mixed",
+ "mostly_negative",
+ "negative",
+ "very_negative",
+ "overwhelmingly_negative",
+ "insufficient"
+ ],
+ "in": "query",
+ "name": "review_tier",
+ "type": "string"
+ },
+ {
+ "description": "Exact SteamSpy owners-range bucket filter, max 128 characters",
+ "in": "query",
+ "name": "owners_bucket",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Filter by free-to-play flag",
+ "in": "query",
+ "name": "is_free",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by Windows support",
+ "in": "query",
+ "name": "windows",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by macOS support",
+ "in": "query",
+ "name": "mac",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by Linux support",
+ "in": "query",
+ "name": "linux",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by titles currently discounted (discount_pct > 0)",
+ "in": "query",
+ "name": "on_sale",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum current price in cents",
+ "in": "query",
+ "name": "min_price_cents",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum current price in cents",
+ "in": "query",
+ "name": "max_price_cents",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum estimated owners (SteamSpy owners midpoint)",
+ "in": "query",
+ "name": "min_owners",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum positive review count",
+ "in": "query",
+ "name": "min_positive",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum total review count",
+ "in": "query",
+ "name": "min_total_reviews",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum positive-review ratio, 0 through 1",
+ "in": "query",
+ "name": "min_review_score",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Metacritic score, 0 through 100",
+ "in": "query",
+ "name": "min_metacritic",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum peak concurrent users yesterday",
+ "in": "query",
+ "name": "min_ccu",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum release year",
+ "in": "query",
+ "name": "min_release_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum release year",
+ "in": "query",
+ "name": "max_release_year",
+ "type": "integer"
}
],
"produces": [
@@ -232793,7 +264537,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.photosResponseDoc"
+ "$ref": "#/definitions/datasets.steamGamesFacetResponseDoc"
}
},
"400": {
@@ -232808,8 +264552,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232820,24 +264564,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get latest Cricinfo photos",
+ "summary": "Facet the Steam games dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/rankings": {
+ "/datasets/steam-games/items/{appid}": {
"get": {
- "description": "Returns ICC rankings (team or player) from a Cricinfo rankings page. `url` must be a canonical `https://www.cricinfo.com/rankings/...` URL.",
- "operationId": "cricinfo-rankings",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one enriched Steam catalog record by appid from dataset id enum value `steam-games`.",
+ "operationId": "datasets-steam-games-item",
"parameters": [
{
- "description": "Canonical Cricinfo rankings URL",
- "in": "query",
- "name": "url",
+ "description": "Steam app id",
+ "in": "path",
+ "name": "appid",
"required": true,
- "type": "string",
- "x-example": "https://www.cricinfo.com/rankings/content/page/211271.html"
+ "type": "integer",
+ "x-example": 620
}
],
"produces": [
@@ -232847,7 +264594,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.rankingsResponseDoc"
+ "$ref": "#/definitions/datasets.steamGameResponseDoc"
}
},
"400": {
@@ -232868,8 +264615,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -232880,122 +264627,227 @@
"ApiKeyAuth": []
}
],
- "summary": "Get ICC rankings from Cricinfo",
+ "summary": "Get a Steam game from the dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/records": {
+ "/datasets/steam-games/search": {
"get": {
- "description": "Returns a bounded normalized table from a public Cricinfo records page. `record` is a relative Statsguru record path such as `batting/most_runs_career.html`. `class` must be one of `1`, `2`, `3`, `4`, `5`, `6`, `8`, `9`, `10`, `11`, `12`, `20`, `21`, `22`, or `23`.",
- "operationId": "cricinfo-records",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches enriched public Steam catalog records stored in a search index. price_tier enum: `free`, `under5`, `5to15`, `15to30`, `30to60`, `over60`. review_tier enum: `overwhelmingly_positive`, `very_positive`, `positive`, `mostly_positive`, `mixed`, `mostly_negative`, `negative`, `very_negative`, `overwhelmingly_negative`, `insufficient`. Sort enum: `relevance`, `owners_desc`, `reviews_desc`, `review_score_desc`, `ccu_desc`, `metacritic_desc`, `price_asc`, `price_desc`, `release_desc`, `release_asc`.",
+ "operationId": "datasets-steam-games-search",
"parameters": [
{
- "description": "Relative Statsguru record path",
+ "description": "Full-text query over name, developer and publisher, max 256 characters",
"in": "query",
- "name": "record",
- "required": true,
- "type": "string",
- "x-example": "batting/most_runs_career.html"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Record match-class. Allowed values: 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 20, 21, 22, 23",
+ "description": "Exact storefront type filter (e.g. game, dlc, demo), max 128 characters",
+ "in": "query",
+ "name": "type",
+ "type": "string"
+ },
+ {
+ "description": "Exact developer filter, max 128 characters",
+ "in": "query",
+ "name": "developer",
+ "type": "string"
+ },
+ {
+ "description": "Exact publisher filter, max 128 characters",
+ "in": "query",
+ "name": "publisher",
+ "type": "string"
+ },
+ {
+ "description": "Exact genre filter (e.g. Action, Indie), max 128 characters",
+ "in": "query",
+ "name": "genre",
+ "type": "string"
+ },
+ {
+ "description": "Exact store category filter (e.g. Single-player), max 128 characters",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Exact community-tag filter (e.g. Roguelike, Metroidvania, Cozy), max 128 characters",
+ "in": "query",
+ "name": "tag",
+ "type": "string"
+ },
+ {
+ "description": "Price-tier enum: free, under5, 5to15, 15to30, 30to60, over60",
"enum": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 8,
- 9,
- 10,
- 11,
- 12,
- 20,
- 21,
- 22,
- 23
+ "free",
+ "under5",
+ "5to15",
+ "15to30",
+ "30to60",
+ "over60"
],
"in": "query",
- "name": "class",
- "required": true,
- "type": "integer",
- "x-example": 1
+ "name": "price_tier",
+ "type": "string"
},
{
- "description": "Numeric record subject identifier",
+ "description": "Review-tier enum: overwhelmingly_positive, very_positive, positive, mostly_positive, mixed, mostly_negative, negative, very_negative, overwhelmingly_negative, insufficient",
+ "enum": [
+ "overwhelmingly_positive",
+ "very_positive",
+ "positive",
+ "mostly_positive",
+ "mixed",
+ "mostly_negative",
+ "negative",
+ "very_negative",
+ "overwhelmingly_negative",
+ "insufficient"
+ ],
"in": "query",
- "name": "id",
- "type": "string",
- "x-example": "6"
+ "name": "review_tier",
+ "type": "string"
},
{
- "description": "Record subject type",
+ "description": "Exact SteamSpy owners-range bucket filter, max 128 characters",
"in": "query",
- "name": "type",
- "type": "string",
- "x-example": "team"
+ "name": "owners_bucket",
+ "type": "string"
},
{
- "description": "Record currentness selector",
+ "description": "Exact crawl run-id filter, max 128 characters",
"in": "query",
- "name": "current",
- "type": "string",
- "x-example": "2"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/cricinfo.recordsResponseDoc"
- }
+ "name": "run_id",
+ "type": "string"
},
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Filter by free-to-play flag",
+ "in": "query",
+ "name": "is_free",
+ "type": "boolean"
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Filter by Windows support",
+ "in": "query",
+ "name": "windows",
+ "type": "boolean"
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Filter by macOS support",
+ "in": "query",
+ "name": "mac",
+ "type": "boolean"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get a Cricinfo record table",
- "tags": [
- "Cricinfo"
- ]
- }
- },
- "/cricinfo/records/index": {
- "get": {
- "description": "Returns the public Cricinfo records catalog, including match classes, record categories, selectable teams or entities, and example suggestions. Use the existing records endpoint to retrieve a specific table.",
- "operationId": "cricinfo-records-index",
+ "description": "Filter by Linux support",
+ "in": "query",
+ "name": "linux",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by titles currently discounted (discount_pct > 0)",
+ "in": "query",
+ "name": "on_sale",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum current price in cents",
+ "in": "query",
+ "name": "min_price_cents",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum current price in cents",
+ "in": "query",
+ "name": "max_price_cents",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum estimated owners (SteamSpy owners midpoint)",
+ "in": "query",
+ "name": "min_owners",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum positive review count",
+ "in": "query",
+ "name": "min_positive",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum total review count",
+ "in": "query",
+ "name": "min_total_reviews",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum positive-review ratio, 0 through 1",
+ "in": "query",
+ "name": "min_review_score",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Metacritic score, 0 through 100",
+ "in": "query",
+ "name": "min_metacritic",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum peak concurrent users yesterday",
+ "in": "query",
+ "name": "min_ccu",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum release year",
+ "in": "query",
+ "name": "min_release_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum release year",
+ "in": "query",
+ "name": "max_release_year",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, owners_desc, reviews_desc, review_score_desc, ccu_desc, metacritic_desc, price_asc, price_desc, release_desc, release_asc",
+ "enum": [
+ "relevance",
+ "owners_desc",
+ "reviews_desc",
+ "review_score_desc",
+ "ccu_desc",
+ "metacritic_desc",
+ "price_asc",
+ "price_desc",
+ "release_desc",
+ "release_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
@@ -233003,7 +264855,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.recordsIndexResponseDoc"
+ "$ref": "#/definitions/datasets.steamGamesSearchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -233012,8 +264870,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233024,24 +264882,53 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cricinfo records catalog",
+ "summary": "Search the Steam games dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/rss": {
+ "/datasets/steam-news/search": {
"get": {
- "description": "Returns a normalized public Cricinfo RSS feed. `url` must be one of Cricinfo's official news, live-score, country-story, or player-story RSS URLs.",
- "operationId": "cricinfo-rss",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Steam news + announcements for tracked apps (one document per appid × gid; the latest items per app are kept). Filter by `app_id` for a single game's news, or full-text `q` over the title + contents. Sort enum: `date_desc` (newest first, default), `date_asc`.",
+ "operationId": "datasets-steam-news-search",
"parameters": [
{
- "description": "Official Cricinfo RSS feed URL",
+ "description": "Full-text query over the news title + contents, max 256 characters",
"in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.cricinfo.com/rss/content/feeds/news/0.xml"
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact Steam app id filter",
+ "in": "query",
+ "name": "app_id",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: date_desc, date_asc",
+ "enum": [
+ "date_desc",
+ "date_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -233051,7 +264938,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.rssResponseDoc"
+ "$ref": "#/definitions/datasets.steamNewsSearchResponseDoc"
}
},
"400": {
@@ -233066,8 +264953,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233078,16 +264965,56 @@
"ApiKeyAuth": []
}
],
- "summary": "Read a Cricinfo RSS feed",
+ "summary": "Search the steam-news dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/scores": {
+ "/datasets/steam-playercounts/search": {
"get": {
- "description": "Returns the current match cards in Cricinfo's public homepage snapshot, including match state, scores, and canonical scorecard URLs. This is a point-in-time feed, not a fixture archive or streaming subscription.",
- "operationId": "cricinfo-scores",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the daily concurrent-player time series for tracked games (one document per appid × day). Pair `app_id` with `sort=date_desc` for a game's player-count history, or pass `date` for one day's snapshot. Sort enum: `date_desc` (default), `date_asc`, `players_desc`.",
+ "operationId": "datasets-steam-playercounts-search",
+ "parameters": [
+ {
+ "description": "Exact Steam app id filter",
+ "in": "query",
+ "name": "app_id",
+ "type": "string"
+ },
+ {
+ "description": "Snapshot date filter yyyy-MM-dd",
+ "in": "query",
+ "name": "date",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: date_desc, date_asc, players_desc",
+ "enum": [
+ "date_desc",
+ "date_asc",
+ "players_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
@@ -233095,7 +265022,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.scoresResponseDoc"
+ "$ref": "#/definitions/datasets.steamPlayerCountsSearchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -233104,8 +265037,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233116,24 +265049,56 @@
"ApiKeyAuth": []
}
],
- "summary": "Get current Cricinfo match scores",
+ "summary": "Search steam-playercounts dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/series": {
+ "/datasets/steam-prices/search": {
"get": {
- "description": "Returns a series's match schedule and standings from its dedicated page. `series_id` must be the slug-and-ID portion of a canonical Cricinfo series URL, such as `indian-premier-league-2024-1410320`.",
- "operationId": "cricinfo-series",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the daily price time series for priced games (one document per appid × day; integer cents). Pair `app_id` with `sort=date_desc` for a game's price history, or pass `date` for one day's snapshot. Sort enum: `date_desc` (default), `date_asc`, `price_asc`, `price_desc`, `discount_desc`.",
+ "operationId": "datasets-steam-prices-search",
"parameters": [
{
- "description": "Slug-and-ID portion of a canonical series URL",
+ "description": "Exact Steam app id filter",
"in": "query",
- "name": "series_id",
- "required": true,
- "type": "string",
- "x-example": "indian-premier-league-2024-1410320"
+ "name": "app_id",
+ "type": "string"
+ },
+ {
+ "description": "Snapshot date filter yyyy-MM-dd",
+ "in": "query",
+ "name": "date",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: date_desc, date_asc, price_asc, price_desc, discount_desc",
+ "enum": [
+ "date_desc",
+ "date_asc",
+ "price_asc",
+ "price_desc",
+ "discount_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -233143,7 +265108,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.seriesResponseDoc"
+ "$ref": "#/definitions/datasets.steamPricesSearchResponseDoc"
}
},
"400": {
@@ -233152,20 +265117,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233176,24 +265135,66 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Cricinfo series schedule and standings",
+ "summary": "Search the steam-prices dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/squads": {
+ "/datasets/steam-reviews/search": {
"get": {
- "description": "Returns recent public squad announcements and player rosters from a Cricinfo team profile, including player roles and withdrawal or overseas markers when published.",
- "operationId": "cricinfo-squads",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the stored Steam review corpus (the most-helpful reviews per game; one document per appid × recommendation). Full-text `q` over the review body, filter by `app_id`, `language`, or `voted_up` (positive/negative). Sort enum: `votes_desc` (most-helpful first, default), `weighted_desc`, `date_desc`.",
+ "operationId": "datasets-steam-reviews-search",
"parameters": [
{
- "description": "Canonical Cricinfo team profile URL",
+ "description": "Full-text query over the review body, max 256 characters",
"in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.cricinfo.com/team/india-6"
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact Steam app id filter",
+ "in": "query",
+ "name": "app_id",
+ "type": "string"
+ },
+ {
+ "description": "Review language filter (e.g. english, schinese)",
+ "in": "query",
+ "name": "language",
+ "type": "string"
+ },
+ {
+ "description": "Recommendation filter: true (positive) or false (negative)",
+ "in": "query",
+ "name": "voted_up",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: votes_desc, weighted_desc, date_desc",
+ "enum": [
+ "votes_desc",
+ "weighted_desc",
+ "date_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -233203,7 +265204,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.squadsResponseDoc"
+ "$ref": "#/definitions/datasets.steamReviewsSearchResponseDoc"
}
},
"400": {
@@ -233212,20 +265213,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233236,153 +265231,164 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Cricinfo team squad",
+ "summary": "Search the steam-reviews dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/stats": {
+ "/datasets/techstack/facets": {
"get": {
- "description": "Returns a bounded normalized Statsguru table. `class` must be one of `1`, `2`, `3`, `4`, `5`, `6`, `8`, `9`, `10`, `11`, `12`, `20`, `21`, `22`, or `23`; `type` must be one of `batting`, `bowling`, `fielding`, `allround`, `fow`, `team`, `official`, or `aggregate`; `view` may be `innings`, `match`, `series`, `ground`, `host`, `opposition`, `year`, or `season`.",
- "operationId": "cricinfo-stats",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns distribution counts over the website tech-stack index (dataset id enum value `techstack`), honoring the same filters as search — the technology / category market-share view. Facet enum: `technology`, `category`, `cms`, `ecommerce`, `cdn`, `web_server`, `server_language`, `analytics`, `tld`, `render_tier`, `seed_source`.",
+ "operationId": "datasets-techstack-facets",
"parameters": [
{
- "description": "Statsguru match-class. Allowed values: 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 20, 21, 22, 23",
+ "description": "Facet enum: technology, category, cms, ecommerce, cdn, web_server, server_language, analytics, tld, render_tier, seed_source",
"enum": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 8,
- 9,
- 10,
- 11,
- 12,
- 20,
- 21,
- 22,
- 23
+ "technology",
+ "category",
+ "cms",
+ "ecommerce",
+ "cdn",
+ "web_server",
+ "server_language",
+ "analytics",
+ "tld",
+ "render_tier",
+ "seed_source"
],
"in": "query",
- "name": "class",
+ "name": "facet",
"required": true,
- "type": "integer",
- "x-example": 1
+ "type": "string",
+ "x-example": "technology"
},
{
- "description": "Statsguru statistic family",
- "enum": [
- "batting",
- "bowling",
- "fielding",
- "allround",
- "fow",
- "team",
- "official",
- "aggregate"
- ],
+ "description": "Substring match on the site domain, max 256 characters",
"in": "query",
- "name": "type",
- "required": true,
- "type": "string",
- "x-example": "batting"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Numeric Cricinfo player identifier",
+ "collectionFormat": "csv",
+ "description": "Repeatable exact technology name the site MUST use (AND)",
"in": "query",
- "name": "player",
- "type": "string",
- "x-example": "45789"
+ "items": {
+ "type": "string"
+ },
+ "name": "technology",
+ "type": "array"
},
{
- "description": "Numeric Cricinfo team identifier",
+ "collectionFormat": "csv",
+ "description": "Repeatable exact technology name; the site must use at least one (OR)",
"in": "query",
- "name": "team",
- "type": "string",
- "x-example": "6"
+ "items": {
+ "type": "string"
+ },
+ "name": "any_of",
+ "type": "array"
},
{
- "description": "Numeric opposition team identifier",
+ "collectionFormat": "csv",
+ "description": "Repeatable exact technology name the site must NOT use (excludes)",
"in": "query",
- "name": "opposition",
- "type": "string",
- "x-example": "2"
+ "items": {
+ "type": "string"
+ },
+ "name": "not",
+ "type": "array"
},
{
- "description": "Numeric host-country identifier",
+ "description": "Exact category filter, e.g. Ecommerce, CMS, Analytics",
"in": "query",
- "name": "host",
- "type": "string",
- "x-example": "6"
+ "name": "category",
+ "type": "string"
},
{
- "description": "Numeric ground identifier",
+ "description": "Exact CMS filter, e.g. WordPress, Shopify, Webflow",
"in": "query",
- "name": "ground",
- "type": "string",
- "x-example": "713"
+ "name": "cms",
+ "type": "string"
},
{
- "description": "Season formatted as YYYY or YYYY/YY",
+ "description": "Exact e-commerce platform filter, e.g. Shopify, WooCommerce, Magento",
"in": "query",
- "name": "season",
- "type": "string",
- "x-example": "2025"
+ "name": "ecommerce",
+ "type": "string"
},
{
- "description": "Statsguru starting date",
+ "description": "Exact CDN / hosting filter, e.g. Cloudflare, Fastly, Vercel",
"in": "query",
- "name": "span_min",
- "type": "string",
- "x-example": "01 Jan 2020"
+ "name": "cdn",
+ "type": "string"
},
{
- "description": "Statsguru ending date",
+ "description": "Exact web-server filter, e.g. nginx, Apache, IIS",
"in": "query",
- "name": "span_max",
- "type": "string",
- "x-example": "31 Dec 2025"
+ "name": "web_server",
+ "type": "string"
},
{
- "description": "Statsguru table view",
+ "description": "Exact server language / framework filter, e.g. PHP, ASP.NET, Ruby on Rails",
+ "in": "query",
+ "name": "server_language",
+ "type": "string"
+ },
+ {
+ "description": "Exact top-level-domain filter, e.g. com, org, io",
+ "in": "query",
+ "name": "tld",
+ "type": "string"
+ },
+ {
+ "description": "Fetch-tier filter. Enum: http, browser",
"enum": [
- "innings",
- "match",
- "series",
- "ground",
- "host",
- "opposition",
- "year",
- "season"
+ "http",
+ "browser"
],
"in": "query",
- "name": "view",
- "type": "string",
- "x-example": "innings"
+ "name": "render_tier",
+ "type": "string"
},
{
- "description": "Statsguru sort column",
+ "description": "Source filter for where the domain was discovered, e.g. tranco",
"in": "query",
- "name": "orderby",
- "type": "string",
- "x-example": "runs"
+ "name": "seed_source",
+ "type": "string"
},
{
- "description": "Sort descending when true",
+ "description": "true keeps only sites with a detected CAPTCHA",
"in": "query",
- "name": "orderby_desc",
- "type": "boolean",
- "x-example": true
+ "name": "has_captcha",
+ "type": "boolean"
},
{
- "description": "Maximum rows returned, from 1 to 100",
+ "description": "false (the common case) excludes backend CDN/DNS/cloud-vendor hostnames that rank highly but were never meant to serve a public homepage, keeping only real, human-navigable sites; true keeps only those backend hostnames",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "is_infrastructure",
+ "type": "boolean"
+ },
+ {
+ "description": "true keeps only sites whose homepage was fetched",
+ "in": "query",
+ "name": "reachable",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum number of detected technologies, 0 or greater",
+ "in": "query",
+ "name": "min_tech_count",
+ "type": "integer"
+ },
+ {
+ "description": "Scan run id; defaults to the latest run",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
}
],
"produces": [
@@ -233392,7 +265398,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.statsResponseDoc"
+ "$ref": "#/definitions/datasets.techstackFacetResponseDoc"
}
},
"400": {
@@ -233407,8 +265413,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233419,24 +265425,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Query Cricinfo Statsguru",
+ "summary": "Facet the website tech-stack dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/story": {
+ "/datasets/techstack/items/{domain}": {
"get": {
- "description": "Returns a public Cricinfo news article, match report, preview, or live blog. The response includes stable story metadata, typed content blocks, live-blog entries when present, and related links.",
- "operationId": "cricinfo-story",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one site by its domain from dataset id enum value `techstack`, including every detected technology (name, categories, confidence, version, evidence) plus the CMS / e-commerce / CDN / web-server / server-language rollups. Also flags whether the domain looks like backend CDN/DNS/cloud-vendor infrastructure rather than a real, human-navigable site (see `is_infrastructure`). Returns 404 when the domain is not in the index.",
+ "operationId": "datasets-techstack-item",
"parameters": [
{
- "description": "Canonical Cricinfo story, report, preview, or live-blog URL",
- "in": "query",
- "name": "url",
+ "description": "Site domain, e.g. shopify.com (a scheme and www. are stripped)",
+ "in": "path",
+ "name": "domain",
"required": true,
"type": "string",
- "x-example": "https://www.cricinfo.com/story/lutho-sipamla-ruled-out-of-namibia-tri-series-with-hamstring-injury-1552225"
+ "x-example": "shopify.com"
}
],
"produces": [
@@ -233446,7 +265455,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.storyResponseDoc"
+ "$ref": "#/definitions/datasets.techstackItemResponseDoc"
}
},
"400": {
@@ -233467,8 +265476,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233479,24 +265488,168 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Cricinfo story",
+ "summary": "Get a site from the website tech-stack dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/team": {
+ "/datasets/techstack/search": {
"get": {
- "description": "Returns public team identity, profile text, recent fixtures and results, and the rolling batting and bowling leaders shown on a Cricinfo team page.",
- "operationId": "cricinfo-team",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the website tech-stack index (dataset id enum value `techstack`) — one record per site listing the web technologies it is built with (frameworks, CMS, e-commerce, analytics, CDNs, servers, and more), BuiltWith / Wappalyzer-style. The reverse-index filters are the point: repeat `technology` to require several at once (AND), `any_of` to match at least one (OR), and `not` to exclude — e.g. sites on `Shopify` and `Klaviyo` but not `Recharge`. Sort enum: `relevance`, `rank_asc`, `tech_count_desc`, `domain_asc`, `crawled_desc`. render_tier enum: `http`, `browser`.",
+ "operationId": "datasets-techstack-search",
"parameters": [
{
- "description": "Canonical Cricinfo team profile URL",
+ "description": "Substring match on the site domain, max 256 characters",
"in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.cricinfo.com/team/india-6"
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Repeatable exact technology name the site MUST use (AND), e.g. technology=Shopify&technology=Klaviyo",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "technology",
+ "type": "array"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Repeatable exact technology name; the site must use at least one (OR)",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "any_of",
+ "type": "array"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Repeatable exact technology name the site must NOT use (excludes)",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "not",
+ "type": "array"
+ },
+ {
+ "description": "Exact category filter, e.g. Ecommerce, CMS, Analytics, Payment, CDN",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Exact CMS filter, e.g. WordPress, Shopify, Webflow",
+ "in": "query",
+ "name": "cms",
+ "type": "string"
+ },
+ {
+ "description": "Exact e-commerce platform filter, e.g. Shopify, WooCommerce, Magento",
+ "in": "query",
+ "name": "ecommerce",
+ "type": "string"
+ },
+ {
+ "description": "Exact CDN / hosting filter, e.g. Cloudflare, Fastly, Vercel",
+ "in": "query",
+ "name": "cdn",
+ "type": "string"
+ },
+ {
+ "description": "Exact web-server filter, e.g. nginx, Apache, IIS",
+ "in": "query",
+ "name": "web_server",
+ "type": "string"
+ },
+ {
+ "description": "Exact server language / framework filter, e.g. PHP, ASP.NET, Ruby on Rails",
+ "in": "query",
+ "name": "server_language",
+ "type": "string"
+ },
+ {
+ "description": "Exact top-level-domain filter, e.g. com, org, io",
+ "in": "query",
+ "name": "tld",
+ "type": "string"
+ },
+ {
+ "description": "Fetch-tier filter. Enum: http, browser",
+ "enum": [
+ "http",
+ "browser"
+ ],
+ "in": "query",
+ "name": "render_tier",
+ "type": "string"
+ },
+ {
+ "description": "Source filter for where the domain was discovered, e.g. tranco",
+ "in": "query",
+ "name": "seed_source",
+ "type": "string"
+ },
+ {
+ "description": "true keeps only sites with a detected CAPTCHA",
+ "in": "query",
+ "name": "has_captcha",
+ "type": "boolean"
+ },
+ {
+ "description": "false (the common case) excludes backend CDN/DNS/cloud-vendor hostnames that rank highly but were never meant to serve a public homepage, keeping only real, human-navigable sites; true keeps only those backend hostnames",
+ "in": "query",
+ "name": "is_infrastructure",
+ "type": "boolean"
+ },
+ {
+ "description": "true keeps only sites whose homepage was fetched, false only sites that could not be fetched",
+ "in": "query",
+ "name": "reachable",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum number of detected technologies, 0 or greater",
+ "in": "query",
+ "name": "min_tech_count",
+ "type": "integer"
+ },
+ {
+ "description": "Scan run id; defaults to the latest run",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, rank_asc, tech_count_desc, domain_asc, crawled_desc",
+ "enum": [
+ "relevance",
+ "rank_asc",
+ "tech_count_desc",
+ "domain_asc",
+ "crawled_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -233506,7 +265659,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.teamProfileResponseDoc"
+ "$ref": "#/definitions/datasets.techstackSearchResponseDoc"
}
},
"400": {
@@ -233515,20 +265668,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233539,24 +265686,77 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Cricinfo team profile",
+ "summary": "Search the website tech-stack dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/team/schedule": {
+ "/datasets/trustmrr/facets": {
"get": {
- "description": "Returns a team's recent fixtures and results from its dedicated page. `url` must be a canonical `https://www.cricinfo.com/team/...` URL.",
- "operationId": "cricinfo-team-schedule",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns terms-aggregation counts for one facet of the TrustMRR dataset, scoped to the same filters as search. Facet enum: `category`, `country`, `payment_provider`, `target_audience`, `business_type`, `tech`, `channels`, `listing_tier`, `status`, `on_sale`, `is_sponsored`, `tags`.",
+ "operationId": "datasets-trustmrr-facets",
"parameters": [
{
- "description": "Canonical Cricinfo team URL",
+ "description": "Facet enum: category, country, payment_provider, target_audience, business_type, tech, channels, listing_tier, status, on_sale, is_sponsored, tags",
+ "enum": [
+ "category",
+ "country",
+ "payment_provider",
+ "target_audience",
+ "business_type",
+ "tech",
+ "channels",
+ "listing_tier",
+ "status",
+ "on_sale",
+ "is_sponsored",
+ "tags"
+ ],
"in": "query",
- "name": "url",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "https://www.cricinfo.com/team/india-6"
+ "x-example": "category"
+ },
+ {
+ "description": "Full-text query, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact category filter, max 128 characters",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISO country-code filter, max 128 characters",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Payment-provider filter, max 128 characters",
+ "in": "query",
+ "name": "payment_provider",
+ "type": "string"
+ },
+ {
+ "description": "Filter for startups currently listed for sale",
+ "in": "query",
+ "name": "on_sale",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum verified MRR in USD",
+ "in": "query",
+ "name": "min_mrr",
+ "type": "number"
}
],
"produces": [
@@ -233566,7 +265766,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.teamScheduleResponseDoc"
+ "$ref": "#/definitions/datasets.trustmrrFacetResponseDoc"
}
},
"400": {
@@ -233575,20 +265775,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233599,16 +265793,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Cricinfo team match schedule",
+ "summary": "Facet the TrustMRR dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/teams": {
+ "/datasets/trustmrr/history/{slug}": {
"get": {
- "description": "Returns Cricinfo's grouped public team directory, including international, domestic, and franchise team identities.",
- "operationId": "cricinfo-teams",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a startup's daily time-series of payment-provider-verified metrics — MRR, all-time revenue, last-30-days revenue, 30-day and 12-month traffic, 30-day growth, for-sale flag, asking price, valuation multiple, deal score and offer count — one point per day in chronological order (oldest first). The series accrues one point per calendar day, so a recently discovered startup returns a short or empty series rather than a 404.",
+ "operationId": "datasets-trustmrr-history",
+ "parameters": [
+ {
+ "description": "Startup slug, max 128 characters",
+ "in": "path",
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "gumroad"
+ },
+ {
+ "description": "Inclusive start date, YYYY-MM-DD (UTC)",
+ "in": "query",
+ "name": "from",
+ "type": "string"
+ },
+ {
+ "description": "Inclusive end date, YYYY-MM-DD (UTC)",
+ "in": "query",
+ "name": "to",
+ "type": "string"
+ },
+ {
+ "description": "Maximum points returned (the most recent within the range), default 365, max 1000",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
@@ -233616,7 +265841,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.teamsResponseDoc"
+ "$ref": "#/definitions/datasets.trustmrrHistoryResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -233625,8 +265856,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233637,24 +265868,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List Cricinfo teams",
+ "summary": "Get a TrustMRR startup's daily history",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/venue": {
+ "/datasets/trustmrr/items/{slug}": {
"get": {
- "description": "Returns structured metadata, associated home teams, and the editorial profile for a public Cricinfo cricket-ground page. `url` must be a canonical `https://www.cricinfo.com/cricket-grounds/...` or legacy `/ci/content/ground/...html` URL.",
- "operationId": "cricinfo-venue",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one startup record by slug from the TrustMRR dataset (dataset id `trustmrr`), including verified revenue/MRR, traffic, growth, category, tech stack, marketing channels and acquisition-marketplace fields.",
+ "operationId": "datasets-trustmrr-item",
"parameters": [
{
- "description": "Canonical Cricinfo cricket-ground URL",
- "in": "query",
- "name": "url",
+ "description": "Startup slug, max 128 characters",
+ "in": "path",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "https://www.cricinfo.com/cricket-grounds/wankhede-stadium-mumbai-58324"
+ "x-example": "gumroad"
}
],
"produces": [
@@ -233664,7 +265898,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.venueResponseDoc"
+ "$ref": "#/definitions/datasets.trustmrrItemResponseDoc"
}
},
"400": {
@@ -233685,8 +265919,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233697,24 +265931,192 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Cricinfo cricket-ground profile",
+ "summary": "Get a TrustMRR startup from the dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/venue/matches": {
+ "/datasets/trustmrr/search": {
"get": {
- "description": "Returns upcoming fixtures and recent results listed on a public Cricinfo ground page. `url` must be a canonical `https://www.cricinfo.com/cricket-grounds/...` URL.",
- "operationId": "cricinfo-venue-matches",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches public startups with payment-provider-verified revenue and MRR, stored in a search index. Filter by category, country, payment provider, target audience, tech, marketing channel, listing tier and for-sale status, and by revenue/MRR/traffic/growth/multiple/asking-price ranges. Sort enum: `relevance`, `mrr_desc`, `revenue_desc`, `revenue_30d_desc`, `traffic_desc`, `growth_desc`, `deal_score_desc`, `price_asc`, `price_desc`, `multiple_asc`, `founded_desc`. status enum: `active`, `removed`.",
+ "operationId": "datasets-trustmrr-search",
"parameters": [
{
- "description": "Canonical Cricinfo cricket-ground URL",
+ "description": "Full-text query over name, description, seller message and business summary, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact startup slug filter, max 128 characters",
+ "in": "query",
+ "name": "slug",
+ "type": "string"
+ },
+ {
+ "description": "Exact category filter (e.g. SaaS, Artificial Intelligence, Mobile Apps), max 128 characters",
+ "in": "query",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Exact ISO country-code filter (e.g. US), max 128 characters",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Payment-provider filter (e.g. stripe, revenuecat, superwall, creem), max 128 characters",
+ "in": "query",
+ "name": "payment_provider",
+ "type": "string"
+ },
+ {
+ "description": "Target-audience filter (e.g. B2B, B2C), max 128 characters",
+ "in": "query",
+ "name": "target_audience",
+ "type": "string"
+ },
+ {
+ "description": "Business-type filter (e.g. B2B, B2C), max 128 characters",
+ "in": "query",
+ "name": "business_type",
+ "type": "string"
+ },
+ {
+ "description": "Detected tech-stack slug filter (e.g. nextjs, reactnative), max 128 characters",
+ "in": "query",
+ "name": "tech",
+ "type": "string"
+ },
+ {
+ "description": "Detected marketing-channel slug filter (e.g. meta-ads, seo), max 128 characters",
+ "in": "query",
+ "name": "channel",
+ "type": "string"
+ },
+ {
+ "description": "For-sale listing-tier filter (e.g. pro), max 128 characters",
+ "in": "query",
+ "name": "listing_tier",
+ "type": "string"
+ },
+ {
+ "description": "Lifecycle enum: active, removed",
+ "enum": [
+ "active",
+ "removed"
+ ],
+ "in": "query",
+ "name": "status",
+ "type": "string"
+ },
+ {
+ "description": "Filter for startups currently listed for sale",
+ "in": "query",
+ "name": "on_sale",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter for sponsored (paid-placement) listings",
+ "in": "query",
+ "name": "is_sponsored",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum verified MRR in USD",
+ "in": "query",
+ "name": "min_mrr",
+ "type": "number"
+ },
+ {
+ "description": "Maximum verified MRR in USD",
+ "in": "query",
+ "name": "max_mrr",
+ "type": "number"
+ },
+ {
+ "description": "Minimum verified all-time revenue in USD",
+ "in": "query",
+ "name": "min_revenue",
+ "type": "number"
+ },
+ {
+ "description": "Minimum verified last-30-days revenue in USD",
+ "in": "query",
+ "name": "min_revenue_30d",
+ "type": "number"
+ },
+ {
+ "description": "Minimum last-30-days traffic (visits)",
+ "in": "query",
+ "name": "min_traffic",
+ "type": "number"
+ },
+ {
+ "description": "Minimum 30-day revenue growth percentage",
+ "in": "query",
+ "name": "min_growth",
+ "type": "number"
+ },
+ {
+ "description": "Maximum asking-price-to-revenue multiple",
+ "in": "query",
+ "name": "max_multiple",
+ "type": "number"
+ },
+ {
+ "description": "Minimum asking price in USD",
+ "in": "query",
+ "name": "min_asking_price",
+ "type": "number"
+ },
+ {
+ "description": "Maximum asking price in USD",
+ "in": "query",
+ "name": "max_asking_price",
+ "type": "number"
+ },
+ {
+ "description": "Minimum Ahrefs Domain Rating",
+ "in": "query",
+ "name": "min_ahrefs_dr",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, mrr_desc, revenue_desc, revenue_30d_desc, traffic_desc, growth_desc, deal_score_desc, price_asc, price_desc, multiple_asc, founded_desc",
+ "enum": [
+ "relevance",
+ "mrr_desc",
+ "revenue_desc",
+ "revenue_30d_desc",
+ "traffic_desc",
+ "growth_desc",
+ "deal_score_desc",
+ "price_asc",
+ "price_desc",
+ "multiple_asc",
+ "founded_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
"in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.cricinfo.com/cricket-grounds/wankhede-stadium-mumbai-58324"
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -233724,7 +266126,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.venueMatchesResponseDoc"
+ "$ref": "#/definitions/datasets.trustmrrSearchResponseDoc"
}
},
"400": {
@@ -233733,20 +266135,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233757,23 +266153,164 @@
"ApiKeyAuth": []
}
],
- "summary": "Get matches at a Cricinfo venue",
+ "summary": "Search the TrustMRR dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/cricinfo/videos": {
+ "/datasets/vehicle-listings/facets": {
"get": {
- "description": "Returns a bounded snapshot of Cricinfo's public video hub, including curated, trending, and genre-associated video metadata. Media files are not downloaded by the endpoint.",
- "operationId": "cricinfo-videos",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns terms aggregation counts for the vehicle listings dataset. Facet enum: `source`, `make`, `model`, `trim`, `body_style`, `transmission`, `drive_type`, `fuel_type`, `seller_type`, `state`, `run_id`.",
+ "operationId": "datasets-vehicle-listings-facets",
"parameters": [
{
- "description": "Maximum videos returned, from 1 to 100",
+ "description": "Facet enum: source, make, model, trim, body_style, transmission, drive_type, fuel_type, seller_type, state, run_id",
+ "enum": [
+ "source",
+ "make",
+ "model",
+ "trim",
+ "body_style",
+ "transmission",
+ "drive_type",
+ "fuel_type",
+ "seller_type",
+ "state",
+ "run_id"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "name": "facet",
+ "required": true,
+ "type": "string",
+ "x-example": "source"
+ },
+ {
+ "description": "Full-text query over make, model and trim, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact source marketplace filter: carmax, autotrader, carsdotcom",
+ "enum": [
+ "carmax",
+ "autotrader",
+ "carsdotcom"
+ ],
+ "in": "query",
+ "name": "source",
+ "type": "string"
+ },
+ {
+ "description": "Exact make filter, max 128 characters",
+ "in": "query",
+ "name": "make",
+ "type": "string"
+ },
+ {
+ "description": "Exact model filter, max 128 characters",
+ "in": "query",
+ "name": "model",
+ "type": "string"
+ },
+ {
+ "description": "Exact trim filter, max 128 characters",
+ "in": "query",
+ "name": "trim",
+ "type": "string"
+ },
+ {
+ "description": "Exact body style filter, max 128 characters",
+ "in": "query",
+ "name": "body_style",
+ "type": "string"
+ },
+ {
+ "description": "Exact transmission filter, max 128 characters",
+ "in": "query",
+ "name": "transmission",
+ "type": "string"
+ },
+ {
+ "description": "Exact drivetrain filter, max 128 characters",
+ "in": "query",
+ "name": "drive_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact fuel type filter, max 128 characters",
+ "in": "query",
+ "name": "fuel_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact seller type filter: retailer, dealer, private",
+ "enum": [
+ "retailer",
+ "dealer",
+ "private"
+ ],
+ "in": "query",
+ "name": "seller_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact US state abbreviation filter, max 8 characters",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact VIN filter",
+ "in": "query",
+ "name": "vin",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Filter for listings currently marked down from a previous price",
+ "in": "query",
+ "name": "is_price_reduced",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum model year",
+ "in": "query",
+ "name": "min_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum model year",
+ "in": "query",
+ "name": "max_year",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum price in US dollars",
+ "in": "query",
+ "name": "min_price",
+ "type": "number"
+ },
+ {
+ "description": "Maximum price in US dollars",
+ "in": "query",
+ "name": "max_price",
+ "type": "number"
+ },
+ {
+ "description": "Maximum odometer mileage",
+ "in": "query",
+ "name": "max_mileage",
+ "type": "integer"
}
],
"produces": [
@@ -233783,7 +266320,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cricinfo.videosResponseDoc"
+ "$ref": "#/definitions/datasets.vehicleListingsFacetResponseDoc"
}
},
"400": {
@@ -233798,8 +266335,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233810,24 +266347,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Cricinfo videos",
+ "summary": "Facet vehicle listings dataset",
"tags": [
- "Cricinfo"
+ "Datasets"
]
}
},
- "/ctvnews/article": {
+ "/datasets/vehicle-listings/items/{id}": {
"get": {
- "description": "Returns public CTV News article metadata and body paragraphs from a canonical story URL (https://www.ctvnews.ca//article//). Video, photo-gallery and live-stream pages are not article pages.",
- "operationId": "ctvnews-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one crawled vehicle listing by id from dataset id enum value `vehicle-listings`. id is `:`, e.g. `carmax:28187774`.",
+ "operationId": "datasets-vehicle-listings-item",
"parameters": [
{
- "description": "Canonical CTV News article URL",
- "in": "query",
- "name": "url",
+ "description": "Vehicle listing id, formatted : (e.g. carmax:28187774)",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "https://www.ctvnews.ca/toronto/article/example-article-slug/"
+ "x-example": "carmax:28187774"
}
],
"produces": [
@@ -233837,7 +266377,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/datasets.vehicleListingResponseDoc"
}
},
"400": {
@@ -233852,8 +266392,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233864,24 +266410,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CTV News article content",
+ "summary": "Get a vehicle listing from dataset",
"tags": [
- "CTV News"
+ "Datasets"
]
}
},
- "/ctvnews/author": {
+ "/datasets/vehicle-listings/price-history/{id}": {
"get": {
- "description": "Returns a CTV News byline profile from a canonical author URL: name, role, biography, photo, public contact address, and recent stories.",
- "operationId": "ctvnews-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the recorded price-change events for one listing, oldest first. An event is recorded only when a crawl first observes the listing or observes a changed price -- not one entry per crawl pass -- so a listing whose price has never changed since it was first crawled returns a single entry.",
+ "operationId": "datasets-vehicle-listings-price-history",
"parameters": [
{
- "description": "Canonical CTV News author URL",
- "in": "query",
- "name": "url",
+ "description": "Vehicle listing id, formatted : (e.g. carmax:28187774)",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "https://www.ctvnews.ca/about-us/team/the-associated-press/"
+ "x-example": "carmax:28187774"
}
],
"produces": [
@@ -233891,7 +266440,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.ctvnewsAuthorResponseDoc"
+ "$ref": "#/definitions/datasets.vehicleListingPriceHistoryResponseDoc"
}
},
"400": {
@@ -233900,14 +266449,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -233918,52 +266467,172 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a CTV News author profile",
+ "summary": "Get a vehicle listing's price history",
"tags": [
- "CTV News"
+ "Datasets"
]
}
},
- "/ctvnews/headlines": {
+ "/datasets/vehicle-listings/search": {
"get": {
- "description": "Returns the current stories listed on one public CTV News section page, newest first, with headline, summary, byline, publication time and image.",
- "operationId": "ctvnews-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the crawled used-vehicle listings index. source enum: `carmax`, `autotrader`, `carsdotcom`. CarMax's own national inventory is fully enumerable (re-crawled on a standing schedule); Autotrader/Cars.com coverage is a best-effort zip-code sweep, not exhaustive, and their rows approximate city/state from the searched area rather than the seller's exact location. seller_type enum: `retailer`, `dealer`, `private` (not populated for every row -- see the dataset markdown). Sort enum: `relevance`, `recently_updated`, `newly_listed`, `price_asc`, `price_desc`, `mileage_asc`, `mileage_desc`, `year_desc`, `year_asc`.",
+ "operationId": "datasets-vehicle-listings-search",
"parameters": [
{
- "description": "CTV News section slug",
+ "description": "Full-text query over make, model and trim, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact source marketplace filter: carmax, autotrader, carsdotcom",
"enum": [
- "canada",
- "politics",
- "world",
- "business",
- "health",
- "entertainment",
- "lifestyle",
- "climate-and-environment",
- "sci-tech",
- "sports",
- "opinion",
- "highly-engaged",
- "atlantic",
- "barrie",
- "calgary",
- "edmonton",
- "kitchener",
- "london",
- "montreal",
- "northern-ontario",
- "ottawa",
- "regina",
- "saskatoon",
- "toronto",
- "vancouver",
- "windsor",
- "winnipeg"
+ "carmax",
+ "autotrader",
+ "carsdotcom"
],
"in": "query",
- "name": "section",
- "required": true,
+ "name": "source",
+ "type": "string"
+ },
+ {
+ "description": "Exact make filter (e.g. Honda, Toyota), max 128 characters",
+ "in": "query",
+ "name": "make",
+ "type": "string"
+ },
+ {
+ "description": "Exact model filter (e.g. Civic), max 128 characters",
+ "in": "query",
+ "name": "model",
+ "type": "string"
+ },
+ {
+ "description": "Exact trim filter, max 128 characters",
+ "in": "query",
+ "name": "trim",
+ "type": "string"
+ },
+ {
+ "description": "Exact body style filter (e.g. Sedan, SUV), max 128 characters",
+ "in": "query",
+ "name": "body_style",
+ "type": "string"
+ },
+ {
+ "description": "Exact transmission filter, max 128 characters",
+ "in": "query",
+ "name": "transmission",
+ "type": "string"
+ },
+ {
+ "description": "Exact drivetrain filter, max 128 characters",
+ "in": "query",
+ "name": "drive_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact fuel type filter (e.g. Gas, Hybrid, Electric), max 128 characters",
+ "in": "query",
+ "name": "fuel_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact seller type filter: retailer, dealer, private",
+ "enum": [
+ "retailer",
+ "dealer",
+ "private"
+ ],
+ "in": "query",
+ "name": "seller_type",
+ "type": "string"
+ },
+ {
+ "description": "Exact US state abbreviation filter (e.g. CA), max 8 characters",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Exact VIN filter. Best-effort: not guaranteed on every listing",
+ "in": "query",
+ "name": "vin",
+ "type": "string"
+ },
+ {
+ "description": "Exact crawl run-id filter, max 128 characters",
+ "in": "query",
+ "name": "run_id",
+ "type": "string"
+ },
+ {
+ "description": "Filter for listings currently marked down from a previous price",
+ "in": "query",
+ "name": "is_price_reduced",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum model year",
+ "in": "query",
+ "name": "min_year",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum model year",
+ "in": "query",
+ "name": "max_year",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum price in US dollars",
+ "in": "query",
+ "name": "min_price",
+ "type": "number"
+ },
+ {
+ "description": "Maximum price in US dollars",
+ "in": "query",
+ "name": "max_price",
+ "type": "number"
+ },
+ {
+ "description": "Maximum odometer mileage",
+ "in": "query",
+ "name": "max_mileage",
+ "type": "integer"
+ },
+ {
+ "description": "Sort enum: relevance, recently_updated, newly_listed, price_asc, price_desc, mileage_asc, mileage_desc, year_desc, year_asc",
+ "enum": [
+ "relevance",
+ "recently_updated",
+ "newly_listed",
+ "price_asc",
+ "price_desc",
+ "mileage_asc",
+ "mileage_desc",
+ "year_desc",
+ "year_asc"
+ ],
+ "in": "query",
+ "name": "sort",
"type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -233973,7 +266642,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/datasets.vehicleListingsSearchResponseDoc"
}
},
"400": {
@@ -233982,46 +266651,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CTV News section headlines",
- "tags": [
- "CTV News"
- ]
- }
- },
- "/ctvnews/news": {
- "get": {
- "description": "Returns the newest CTV News stories (about the last 24 hours, newest first) from its public news sitemap, each with headline, publication time and lead image.",
- "operationId": "ctvnews-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -234032,163 +266669,132 @@
"ApiKeyAuth": []
}
],
- "summary": "Get CTV News top stories",
- "tags": [
- "CTV News"
- ]
- }
- },
- "/ctvnews/sections": {
- "get": {
- "description": "Returns the public CTV News section inventory (national topic sections and local newsroom sections) used by the headlines endpoint.",
- "operationId": "ctvnews-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get CTV News sections",
+ "summary": "Search vehicle listings dataset",
"tags": [
- "CTV News"
+ "Datasets"
]
}
},
- "/culvers/calendar": {
+ "/datasets/x-users/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the full published schedule for one Culver's restaurant: the flavor of the day for every upcoming calendar date, plus the soups served on each date. Culver's publishes roughly a two-month forward window, and the schedule is genuinely per-restaurant -- two restaurants on the same date routinely feature different soups. slug comes from GET /culvers/directory. GET /culvers/store returns only today's and tomorrow's flavor; use this endpoint for the whole calendar.",
- "operationId": "culvers-calendar",
+ "description": "Returns terms aggregation counts for the X users dataset. Facet enum: `is_blue_verified`, `has_bio`, `has_external_url`, `source_tier`.",
+ "operationId": "datasets-x-users-facets",
"parameters": [
{
- "description": "Restaurant slug from /culvers/directory",
+ "description": "Facet enum: is_blue_verified, has_bio, has_external_url, source_tier",
+ "enum": [
+ "is_blue_verified",
+ "has_bio",
+ "has_external_url",
+ "source_tier"
+ ],
"in": "query",
- "name": "slug",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "waunakee"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/culvers.calendarResponseDoc"
- }
+ "x-example": "is_blue_verified"
},
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Full-text query over username, name, bio and location, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact username filter (case-insensitive), max 128 characters",
+ "in": "query",
+ "name": "username",
+ "type": "string"
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact filter for which seed tier discovered this account",
+ "in": "query",
+ "name": "source_tier",
+ "type": "string"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get one Culver's restaurant's flavor-of-the-day and daily soup schedule",
- "tags": [
- "Culvers"
- ]
- }
- },
- "/culvers/categories": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Culver's national menu's category list -- ButterBurgers, Chicken, Fish & Seafood, Combos & Baskets, Sides, Frozen Custard, Beverages and others -- each with its slug (the value GET /culvers/menu takes), a featured flag, and sort order.",
- "operationId": "culvers-categories",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/culvers.categoriesResponseDoc"
- }
+ "description": "Filter by the X blue-check verification flag",
+ "in": "query",
+ "name": "is_blue_verified",
+ "type": "boolean"
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Filter by a non-empty profile bio",
+ "in": "query",
+ "name": "has_bio",
+ "type": "boolean"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "List Culver's national menu categories",
- "tags": [
- "Culvers"
- ]
- }
- },
- "/culvers/directory": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of Culver's own restaurant-URL sitemap (~1,121 restaurants). Each entry's slug is the value GET /culvers/store takes.",
- "operationId": "culvers-directory",
- "parameters": [
+ "description": "Filter by a linked external URL",
+ "in": "query",
+ "name": "has_external_url",
+ "type": "boolean"
+ },
{
- "description": "Optional. 1-based page, default 1.",
+ "description": "Minimum follower count",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "min_followers",
+ "type": "integer"
},
{
- "description": "Optional. Entries per page, 1-500, default 100.",
+ "description": "Maximum follower count",
"in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 100
+ "name": "max_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum follower-to-following ratio",
+ "in": "query",
+ "name": "min_ratio",
+ "type": "number"
+ },
+ {
+ "description": "Maximum follower-to-following ratio",
+ "in": "query",
+ "name": "max_ratio",
+ "type": "number"
+ },
+ {
+ "description": "Accounts created on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "created_after",
+ "type": "string"
+ },
+ {
+ "description": "Accounts created on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "created_before",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "crawled_after",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "crawled_before",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, followers_desc, followers_asc, crawled_at_desc, crawled_at_asc, created_at_desc, created_at_asc",
+ "enum": [
+ "relevance",
+ "followers_desc",
+ "followers_asc",
+ "crawled_at_desc",
+ "crawled_at_asc",
+ "created_at_desc",
+ "created_at_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
}
],
"produces": [
@@ -234198,7 +266804,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/culvers.directoryResponseDoc"
+ "$ref": "#/definitions/datasets.xUsersFacetResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -234207,8 +266819,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -234219,27 +266831,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse Culver's restaurant-URL index",
+ "summary": "Facet the X users dataset",
"tags": [
- "Culvers"
+ "Datasets"
]
}
},
- "/culvers/flavor": {
+ "/datasets/x-users/items/{username}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Fresh Frozen Custard flavor's full detail, including its declared allergens, a component-by-component ingredient breakdown, and Culver's own flavor-category labels. slug comes from GET /culvers/calendar (flavors[].slug) or GET /culvers/store (flavors_of_the_day[].slug).",
- "operationId": "culvers-flavor",
+ "description": "Returns one X user record by username from dataset id enum value `x-users`.",
+ "operationId": "datasets-x-users-item",
"parameters": [
{
- "description": "Flavor slug from /culvers/calendar or /culvers/store",
- "in": "query",
- "name": "slug",
+ "description": "X username, with or without a leading @, max 128 characters",
+ "in": "path",
+ "name": "username",
"required": true,
"type": "string",
- "x-example": "chocolate-covered-strawberry"
+ "x-example": "elonmusk"
}
],
"produces": [
@@ -234249,7 +266861,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/culvers.flavorResponseDoc"
+ "$ref": "#/definitions/datasets.xUserResponseDoc"
}
},
"400": {
@@ -234270,8 +266882,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -234282,35 +266894,130 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Culver's Fresh Frozen Custard flavor's detail",
+ "summary": "Get an X user from the dataset",
"tags": [
- "Culvers"
+ "Datasets"
]
}
},
- "/culvers/item": {
+ "/datasets/x-users/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Culver's menu item's full detail, including its size/topping modifier tree with each option's own calories and nutrition link. category and item slugs come from GET /culvers/categories and GET /culvers/menu.",
- "operationId": "culvers-item",
+ "description": "Searches public X (Twitter) user profiles stored in a search index. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `crawled_at_desc`, `crawled_at_asc`, `created_at_desc`, `created_at_asc`.",
+ "operationId": "datasets-x-users-search",
"parameters": [
{
- "description": "Category slug from /culvers/categories",
+ "description": "Full-text query over username, name, bio and location, max 256 characters",
"in": "query",
- "name": "category",
- "required": true,
- "type": "string",
- "x-example": "butterburgers"
+ "name": "q",
+ "type": "string"
},
{
- "description": "Item slug from /culvers/menu",
+ "description": "Exact username filter (case-insensitive), max 128 characters",
"in": "query",
- "name": "item",
- "required": true,
- "type": "string",
- "x-example": "butterburger-cheese"
+ "name": "username",
+ "type": "string"
+ },
+ {
+ "description": "Exact filter for which seed tier discovered this account, e.g. github-users, wikidata, tiktok-creators, journalists",
+ "in": "query",
+ "name": "source_tier",
+ "type": "string"
+ },
+ {
+ "description": "Filter by the X blue-check verification flag",
+ "in": "query",
+ "name": "is_blue_verified",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by a non-empty profile bio",
+ "in": "query",
+ "name": "has_bio",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by a linked external URL",
+ "in": "query",
+ "name": "has_external_url",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum follower count",
+ "in": "query",
+ "name": "min_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum follower count",
+ "in": "query",
+ "name": "max_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum follower-to-following ratio (low values surface follow-spam / bot-like accounts)",
+ "in": "query",
+ "name": "min_ratio",
+ "type": "number"
+ },
+ {
+ "description": "Maximum follower-to-following ratio",
+ "in": "query",
+ "name": "max_ratio",
+ "type": "number"
+ },
+ {
+ "description": "Accounts created on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "created_after",
+ "type": "string"
+ },
+ {
+ "description": "Accounts created on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "created_before",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "crawled_after",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "crawled_before",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, followers_desc, followers_asc, crawled_at_desc, crawled_at_asc, created_at_desc, created_at_asc",
+ "enum": [
+ "relevance",
+ "followers_desc",
+ "followers_asc",
+ "crawled_at_desc",
+ "crawled_at_asc",
+ "created_at_desc",
+ "created_at_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -234320,7 +267027,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/culvers.itemResponseDoc"
+ "$ref": "#/definitions/datasets.xUsersSearchResponseDoc"
}
},
"400": {
@@ -234329,20 +267036,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -234353,27 +267054,160 @@
"ApiKeyAuth": []
}
],
- "summary": "Look up one Culver's menu item's full detail",
+ "summary": "Search the X users dataset",
"tags": [
- "Culvers"
+ "Datasets"
]
}
},
- "/culvers/menu": {
+ "/datasets/youtube-creators/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the items in one Culver's menu category, each with name, description, image, and a link to Culver's nutrition guide. Category slugs come from GET /culvers/categories. Prices are not published on the national catalog -- Culver's only prices items once a specific restaurant is selected client-side, and no credential-free per-restaurant pricing source was found; see GET /culvers/item for full modifier/topping detail.",
- "operationId": "culvers-menu",
+ "description": "Returns terms aggregation counts for the YouTube creators dataset. Facet enum: `region`, `discovery_source`.",
+ "operationId": "datasets-youtube-creators-facets",
"parameters": [
{
- "description": "Category slug from /culvers/categories",
+ "description": "Facet enum: region, discovery_source",
+ "enum": [
+ "region",
+ "discovery_source"
+ ],
"in": "query",
- "name": "category",
+ "name": "facet",
"required": true,
"type": "string",
- "x-example": "butterburgers"
+ "x-example": "region"
+ },
+ {
+ "description": "Full-text query over channel_name and bio, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
+ },
+ {
+ "description": "Exact channel id filter, max 128 characters",
+ "in": "query",
+ "name": "channel_id",
+ "type": "string"
+ },
+ {
+ "description": "Exact channel region/country filter (case-insensitive), max 128 characters",
+ "in": "query",
+ "name": "region",
+ "type": "string"
+ },
+ {
+ "description": "Exact filter for how the channel was discovered, max 128 characters",
+ "in": "query",
+ "name": "discovery_source",
+ "type": "string"
+ },
+ {
+ "description": "Filter by a non-empty About bio",
+ "in": "query",
+ "name": "has_bio",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by at least one linked external URL",
+ "in": "query",
+ "name": "has_links",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by whether the channel exposes a public subscriber count",
+ "in": "query",
+ "name": "followers_count_available",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by whether the channel has a known uploaded-video count",
+ "in": "query",
+ "name": "videos_count_available",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by whether the channel has a known total view count",
+ "in": "query",
+ "name": "views_count_available",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum subscriber count",
+ "in": "query",
+ "name": "min_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum subscriber count",
+ "in": "query",
+ "name": "max_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum uploaded-video count",
+ "in": "query",
+ "name": "min_videos",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum uploaded-video count",
+ "in": "query",
+ "name": "max_videos",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum total view count",
+ "in": "query",
+ "name": "min_views",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum total view count",
+ "in": "query",
+ "name": "max_views",
+ "type": "integer"
+ },
+ {
+ "description": "Channels created on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "joined_after",
+ "type": "string"
+ },
+ {
+ "description": "Channels created on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "joined_before",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "hydrated_after",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "hydrated_before",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, followers_desc, followers_asc, views_desc, videos_desc, hydrated_at_desc, hydrated_at_asc",
+ "enum": [
+ "relevance",
+ "followers_desc",
+ "followers_asc",
+ "views_desc",
+ "videos_desc",
+ "hydrated_at_desc",
+ "hydrated_at_asc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
}
],
"produces": [
@@ -234383,7 +267217,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/culvers.menuResponseDoc"
+ "$ref": "#/definitions/datasets.youtubeCreatorsFacetResponseDoc"
}
},
"400": {
@@ -234392,20 +267226,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -234416,27 +267244,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List one Culver's menu category's items",
+ "summary": "Facet the YouTube creators dataset",
"tags": [
- "Culvers"
+ "Datasets"
]
}
},
- "/culvers/store": {
+ "/datasets/youtube-creators/items/{channel_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Culver's restaurant's address, phone, coordinates, open/closed status, fulfillment hours, handoff options, online-order link, and today's flavor(s) of the day. slug comes from GET /culvers/directory.",
- "operationId": "culvers-store",
+ "description": "Returns one YouTube channel record by channel id from dataset id enum value `youtube-creators`.",
+ "operationId": "datasets-youtube-creators-item",
"parameters": [
{
- "description": "Restaurant slug from /culvers/directory",
- "in": "query",
- "name": "slug",
+ "description": "YouTube channel id, e.g. UCxxxxxxxxxxxxxxxxxxxxxxxx",
+ "in": "path",
+ "name": "channel_id",
"required": true,
"type": "string",
- "x-example": "ann-arbor-mi-lohr-rd"
+ "x-example": "UCX6OQ3DkcsbYNE6H8uQQuVA"
}
],
"produces": [
@@ -234446,7 +267274,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/culvers.storeResponseDoc"
+ "$ref": "#/definitions/datasets.youtubeCreatorResponseDoc"
}
},
"400": {
@@ -234467,8 +267295,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -234479,131 +267307,160 @@
"ApiKeyAuth": []
}
],
- "summary": "Look up one Culver's restaurant by its directory slug",
+ "summary": "Get a YouTube creator from the dataset",
"tags": [
- "Culvers"
+ "Datasets"
]
}
},
- "/cvs/brands": {
+ "/datasets/youtube-creators/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns CVS.com's full brand directory (name and path). Each brand's path is directly usable as GET /cvs/category's path parameter to browse that brand's products.",
- "operationId": "cvs-brands",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/cvs.brandsResponseDoc"
- }
+ "description": "Searches public YouTube channel profiles stored in a search index — subscriber, video and view counts, region, bio and links, discovered via Common Crawl and Wikidata and hydrated from each channel's public About page. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `views_desc`, `videos_desc`, `hydrated_at_desc`, `hydrated_at_asc`. Some channels hide their subscriber, video, or view count; the `_available` flags on each item distinguish a hidden count (stored as `0`, `*_available: false`) from a genuine `0`.",
+ "operationId": "datasets-youtube-creators-search",
+ "parameters": [
+ {
+ "description": "Full-text query over channel_name and bio, max 256 characters",
+ "in": "query",
+ "name": "q",
+ "type": "string"
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact channel id filter (e.g. UCxxxxxxxxxxxxxxxxxxxxxxxx), max 128 characters",
+ "in": "query",
+ "name": "channel_id",
+ "type": "string"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "CVS brand directory",
- "tags": [
- "CVS"
- ]
- }
- },
- "/cvs/categories": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns CVS.com's full category/subcategory navigation taxonomy (name and path, nested to whatever depth the upstream carries). Each node's path is directly usable as GET /cvs/category's path parameter.",
- "operationId": "cvs-categories",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/cvs.categoriesResponseDoc"
- }
+ "description": "Exact channel region/country filter (case-insensitive), max 128 characters",
+ "in": "query",
+ "name": "region",
+ "type": "string"
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Exact filter for how the channel was discovered (e.g. commoncrawl, wikidata), max 128 characters",
+ "in": "query",
+ "name": "discovery_source",
+ "type": "string"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "CVS category taxonomy",
- "tags": [
- "CVS"
- ]
- }
- },
- "/cvs/category": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of a CVS.com OTC (over-the-counter) retail category, subcategory, or brand page's product grid: normalized products with title, brand, image, current/original price, and sponsored/featured/new-product flags; the total result count; and the facets (brand, color, size, price range, and other category-specific attributes, each with its selectable values and result counts) available to filter the page further. Covers the non-prescription retail catalog only. path is the segment of a page URL after \"/shop/\", e.g. \"beauty\" (top-level category), \"health-medicine/allergy-sinus\" (subcategory), or \"brand-shop/s/safe-home\" (brand page); a full https://www.cvs.com/shop/... URL or a \"/shop/...\" path is also accepted. Any of these can also carry an optional facet-filter suffix in the site's own URL shape, e.g. \"beauty/makeup/eyes/q/CoverGirl/Black/brpc\" to filter to brand CoverGirl and color Black -- see the response's facets field for which values/type codes a given category supports; filter values are case-sensitive exactly as the site renders them. page is a 1-indexed page number (default 1). sort is an optional result order matching the site's own Sort By control. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
- "operationId": "cvs-category",
- "parameters": [
+ "description": "Filter by a non-empty About bio",
+ "in": "query",
+ "name": "has_bio",
+ "type": "boolean"
+ },
{
- "description": "CVS category, subcategory, or brand-page URL path, optionally with a /q/{value}/{typeCode} facet-filter suffix, e.g. \\",
+ "description": "Filter by at least one linked external URL",
"in": "query",
- "name": "path",
- "required": true,
- "type": "string",
- "x-example": "beauty"
+ "name": "has_links",
+ "type": "boolean"
},
{
- "description": "1-indexed page number, default 1",
+ "description": "Filter by whether the channel exposes a public subscriber count",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "followers_count_available",
+ "type": "boolean"
},
{
- "description": "Result sort order, default the site's own relevance order. One of pa (Price Low to High), pd (Price High to Low), tr (Top Rated), rc (Most Reviewed), az (Name A-Z), za (Name Z-A)",
+ "description": "Filter by whether the channel has a known uploaded-video count",
+ "in": "query",
+ "name": "videos_count_available",
+ "type": "boolean"
+ },
+ {
+ "description": "Filter by whether the channel has a known total view count",
+ "in": "query",
+ "name": "views_count_available",
+ "type": "boolean"
+ },
+ {
+ "description": "Minimum subscriber count",
+ "in": "query",
+ "name": "min_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum subscriber count",
+ "in": "query",
+ "name": "max_followers",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum uploaded-video count",
+ "in": "query",
+ "name": "min_videos",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum uploaded-video count",
+ "in": "query",
+ "name": "max_videos",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum total view count",
+ "in": "query",
+ "name": "min_views",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum total view count",
+ "in": "query",
+ "name": "max_views",
+ "type": "integer"
+ },
+ {
+ "description": "Channels created on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "joined_after",
+ "type": "string"
+ },
+ {
+ "description": "Channels created on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "joined_before",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "hydrated_after",
+ "type": "string"
+ },
+ {
+ "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "in": "query",
+ "name": "hydrated_before",
+ "type": "string"
+ },
+ {
+ "description": "Sort enum: relevance, followers_desc, followers_asc, views_desc, videos_desc, hydrated_at_desc, hydrated_at_asc",
"enum": [
- "pa",
- "pd",
- "tr",
- "rc",
- "az",
- "za"
+ "relevance",
+ "followers_desc",
+ "followers_asc",
+ "views_desc",
+ "videos_desc",
+ "hydrated_at_desc",
+ "hydrated_at_asc"
],
"in": "query",
"name": "sort",
- "type": "string",
- "x-example": "pa"
+ "type": "string"
+ },
+ {
+ "description": "Page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -234613,7 +267470,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cvs.categoryResponseDoc"
+ "$ref": "#/definitions/datasets.youtubeCreatorsSearchResponseDoc"
}
},
"400": {
@@ -234628,8 +267485,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -234640,27 +267497,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a CVS OTC category page",
+ "summary": "Search the YouTube creators dataset",
"tags": [
- "CVS"
+ "Datasets"
]
}
},
- "/cvs/product-ingredients/{slug}": {
+ "/dawn/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one CVS.com OTC (over-the-counter) retail product's ingredient/label statement: active ingredients, inactive ingredients, and the vendor's full free-text ingredient paragraph (which, for OTC drug products, frequently also carries a Drug Facts-style purpose note). This is sourced from the product's own dedicated ingredients page, a separate page from the main product detail endpoint. Covers the non-prescription retail catalog only -- this does not cover prescription items, pharmacy ordering, or any patient-specific data. slug is the segment of a product page URL after \"/shop/\", e.g. \"e-l-f-16hr-camo-concealer-prodid-2370023\"; a full https://www.cvs.com/shop/... URL is also accepted. Some products (particularly non-consumable goods) may return empty ingredient fields -- this reflects upstream having no label data for that product, not an error. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
- "operationId": "cvs-product-ingredients",
+ "description": "Returns public Dawn article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "dawn-article",
"parameters": [
{
- "description": "CVS product page URL slug, e.g. \\",
- "in": "path",
- "name": "slug",
+ "description": "Canonical Dawn article URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "e-l-f-16hr-camo-concealer-prodid-2370023"
+ "x-example": "https://www.dawn.com/news/2032361/pm-shehbaz-stresses-islamabad-mou-implementation-in-meeting-with-pezeshkian"
}
],
"produces": [
@@ -234670,7 +267524,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cvs.productIngredientsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -234685,12 +267539,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -234703,27 +267551,24 @@
"ApiKeyAuth": []
}
],
- "summary": "CVS OTC product ingredients",
+ "summary": "Get Dawn article content",
"tags": [
- "CVS"
+ "Dawn"
]
}
},
- "/cvs/product/{slug}": {
+ "/dawn/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one CVS.com OTC (over-the-counter) retail product's detail: name, description, brand, category, price, currency, online availability, image gallery, and aggregate rating. Covers the non-prescription retail catalog only -- this does not cover prescription items, pharmacy ordering, or any patient-specific data. slug is the segment of a product page URL after \"/shop/\", e.g. \"safe-home-premium-radon-test-kit-prodid-945948\"; a full https://www.cvs.com/shop/... URL is also accepted. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
- "operationId": "cvs-product",
+ "description": "Returns one Dawn byline's public profile (name and biography, when Dawn publishes one) and their recent articles from a canonical author URL.",
+ "operationId": "dawn-author",
"parameters": [
{
- "description": "CVS product page URL slug, e.g. \\",
- "in": "path",
- "name": "slug",
+ "description": "Canonical www.dawn.com/authors// URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "safe-home-premium-radon-test-kit-prodid-945948"
+ "x-example": "https://www.dawn.com/authors/675/khurram-husain"
}
],
"produces": [
@@ -234733,7 +267578,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cvs.productResponseDoc"
+ "$ref": "#/definitions/publicnews.dawnAuthorResponseDoc"
}
},
"400": {
@@ -234748,12 +267593,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -234766,49 +267605,43 @@
"ApiKeyAuth": []
}
],
- "summary": "CVS OTC product detail",
+ "summary": "Get a Dawn author profile",
"tags": [
- "CVS"
+ "Dawn"
]
}
},
- "/cvs/search": {
+ "/dawn/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Performs a keyword search across CVS.com's non-prescription retail/OTC catalog and returns one page of results: normalized products with title, brand, image, current/original price, and sponsored/featured/new-product flags; the total result count; and the facets (brand, color, size, price range, and other attributes, each with its selectable values and result counts) available to filter the results further. This is the same product-search backend cvs-category reads, just reached by keyword instead of by category/brand path. Covers the non-prescription retail catalog only. q is the search keyword or phrase, required. page is a 1-indexed page number (default 1). sort is an optional result order matching cvs-category's own Sort By values. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
- "operationId": "cvs-search",
+ "description": "Returns fresh headlines from one public Dawn section.",
+ "operationId": "dawn-headlines",
"parameters": [
{
- "description": "Search keyword or phrase",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "ibuprofen"
- },
- {
- "description": "1-indexed page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Result sort order, default relevance. One of pa (Price Low to High), pd (Price High to Low), tr (Top Rated), rc (Most Reviewed), az (Name A-Z), za (Name Z-A)",
+ "description": "Dawn section slug",
"enum": [
- "pa",
- "pd",
- "tr",
- "rc",
- "az",
- "za"
+ "pakistan",
+ "pakistan-balochistan",
+ "pakistan-ict",
+ "pakistan-kp-fata",
+ "pakistan-punjab",
+ "pakistan-sindh",
+ "world",
+ "world-south-asia",
+ "business",
+ "business-finance",
+ "sport",
+ "sport-cricket",
+ "opinion",
+ "tech",
+ "newspaper",
+ "magazines",
+ "prism"
],
"in": "query",
- "name": "sort",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "pa"
+ "x-example": "pakistan"
}
],
"produces": [
@@ -234818,7 +267651,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cvs.categoryResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -234827,12 +267660,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -234845,77 +267672,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Search CVS OTC products by keyword",
+ "summary": "Get Dawn section headlines",
"tags": [
- "CVS"
+ "Dawn"
]
}
},
- "/cvs/store-locator": {
+ "/dawn/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns nearby CVS store locations for a ZIP code, a free-text address/city/state, or a latitude/longitude pair: address, phone, fax, distance, and retail store hours, plus a has_pharmacy existence flag and a list of general service indicators (e.g. photo, ATM, same-day delivery). Covers general store info only -- this does not return pharmacy hours, pharmacy phone, prescription data, or any patient-specific information. zip is a 5-digit US ZIP code; alternatively supply address (a free-text location such as a city, state, or street address) or latitude and longitude together. When more than one is supplied, zip wins, then address, then latitude/longitude. Optionally narrow results to stores carrying one specific service via the service param (the same code vocabulary the response's services field uses); only one service value is accepted per request. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.",
- "operationId": "cvs-store-locator",
- "parameters": [
- {
- "description": "5-digit US ZIP code, e.g. \\",
- "in": "query",
- "name": "zip",
- "type": "string",
- "x-example": "90210"
- },
- {
- "description": "Free-text location -- a city, state, or street address, e.g. \\",
- "in": "query",
- "name": "address",
- "type": "string",
- "x-example": "Beverly Hills, CA"
- },
- {
- "description": "Latitude, used together with longitude when zip and address are not supplied",
- "in": "query",
- "name": "latitude",
- "type": "number",
- "x-example": 34.0901
- },
- {
- "description": "Longitude, used together with latitude when zip and address are not supplied",
- "in": "query",
- "name": "longitude",
- "type": "number",
- "x-example": -118.4065
- },
- {
- "description": "Narrow results to stores carrying one specific service",
- "enum": [
- "HH_HealthHub_Ind",
- "MC_MinuteClinic_Ind",
- "HS_OakStreetHealth_Ind",
- "IM_Immunization_Ind",
- "RX_OTCH_Ind",
- "IM_Covax_Ind",
- "CL_CovidTest_Ind",
- "RX_24Hours_Ind",
- "RX_DriveThru_Ind",
- "RX_Pharmacy_Ind",
- "RX_DrugDisposal_Ind",
- "RS_24Hours_Ind",
- "PH_Photo_Ind",
- "RS_AcceptsWic_Ind",
- "RS_AcceptsSnap_Ind",
- "GN_UPSAccessPoint_Ind",
- "RS_BOPIS_Ind",
- "GN_YMas_Ind",
- "BT_BeautyIRL_Ind",
- "GN_SmileDirectClub_Ind"
- ],
- "in": "query",
- "name": "service",
- "type": "string"
- }
- ],
+ "description": "Returns fresh Dawn (Pakistan) stories from the public RSS feed.",
+ "operationId": "dawn-news",
"produces": [
"application/json"
],
@@ -234923,25 +267689,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/cvs.storesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"503": {
@@ -234956,24 +267704,50 @@
"ApiKeyAuth": []
}
],
- "summary": "CVS store locator",
+ "summary": "Get Dawn top stories",
"tags": [
- "CVS"
+ "Dawn"
]
}
},
- "/dailycaller/article": {
+ "/dawn/sections": {
"get": {
- "description": "Returns public The Daily Caller article metadata and body paragraphs from a canonical article URL. Patriots-only (premium) articles expose only a public teaser and are flagged paywalled.",
- "operationId": "dailycaller-article",
+ "description": "Returns the complete public Dawn section inventory (Pakistan provinces, World, Business, Sport, Opinion, Technology, Newspaper, Magazines, and Prism) accepted by /dawn/headlines.",
+ "operationId": "dawn-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Dawn sections",
+ "tags": [
+ "Dawn"
+ ]
+ }
+ },
+ "/deadline/article": {
+ "get": {
+ "description": "Returns public Deadline article metadata (title, author(s), published/updated dates, section, lead image) and body paragraphs from a canonical article URL.",
+ "operationId": "deadline-article",
"parameters": [
{
- "description": "Canonical The Daily Caller article URL",
+ "description": "Canonical Deadline article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://dailycaller.com/2026/09/23/example-article-slug"
+ "x-example": "https://deadline.com/2026/09/example-story-1237111140/"
}
],
"produces": [
@@ -235010,24 +267784,31 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Daily Caller article content",
+ "summary": "Get Deadline article content",
"tags": [
- "The Daily Caller"
+ "Deadline"
]
}
},
- "/dailycaller/author": {
+ "/deadline/author": {
"get": {
- "description": "Returns a The Daily Caller author's byline metadata, job title, optional biography, contact links, and newest articles from a canonical author URL.",
- "operationId": "dailycaller-author",
+ "description": "Returns one Deadline staff writer or contributor's public profile: name, job title, headshot, biography, social/contact links, and one page of their recent articles.",
+ "operationId": "deadline-author",
"parameters": [
{
- "description": "Canonical The Daily Caller author URL",
+ "description": "Canonical deadline.com/author/ URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://dailycaller.com/author/EmilyKopp/"
+ "x-example": "https://deadline.com/author/andreas-wiseman/"
+ },
+ {
+ "description": "1-based page of recent articles to return; defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -235037,7 +267818,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.dailycallerAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.deadlineAuthorResponseDoc"
}
},
"400": {
@@ -235064,47 +267845,74 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a The Daily Caller author profile",
+ "summary": "Get a Deadline author profile",
"tags": [
- "The Daily Caller"
+ "Deadline"
]
}
},
- "/dailycaller/headlines": {
+ "/deadline/headlines": {
"get": {
- "description": "Returns the newest headlines listed on one public The Daily Caller section page.",
- "operationId": "dailycaller-headlines",
+ "description": "Returns fresh headlines from one public Deadline section or vertical feed.",
+ "operationId": "deadline-headlines",
"parameters": [
{
- "description": "The Daily Caller section slug",
+ "description": "Deadline section slug",
"enum": [
+ "acquisitions",
+ "agencies",
+ "album",
+ "below-the-line",
+ "books",
+ "cancellations-renewals",
+ "casting",
+ "commentary",
+ "culture",
+ "documentary",
+ "executives",
+ "festivals",
+ "late-night-tv",
+ "legal",
+ "news",
+ "obituaries",
+ "podcast",
"politics",
- "us",
- "world",
- "national-security",
- "elections",
- "business",
- "energy",
- "education",
- "health",
- "tech",
- "media",
- "entertainment",
+ "predictions",
+ "primetime-pilot-panic",
+ "ratings",
+ "recaps",
+ "red-carpet-premieres",
+ "reviews",
"sports",
- "guns-and-gear",
- "investigative-group",
- "opinion",
- "analysis",
- "two-sides",
- "big-tent-ideas",
- "patriots",
- "satire",
+ "touring",
+ "trailers",
+ "video-games",
+ "awards",
+ "awards-news",
+ "box-office",
+ "business",
+ "cover-stories",
+ "crew-call",
+ "dialogue",
+ "feature",
+ "film",
+ "flash-mob",
+ "hammond",
+ "hero-nation",
+ "international",
+ "look-back-look-ahead",
+ "music",
+ "resident-advisor",
+ "rough-cuts",
+ "theater",
+ "tv",
"video"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "acquisitions"
}
],
"produces": [
@@ -235135,16 +267943,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Daily Caller section headlines",
+ "summary": "Get Deadline section headlines",
"tags": [
- "The Daily Caller"
+ "Deadline"
]
}
},
- "/dailycaller/news": {
+ "/deadline/news": {
"get": {
- "description": "Returns fresh The Daily Caller top stories from its public RSS feed.",
- "operationId": "dailycaller-news",
+ "description": "Returns fresh Deadline Hollywood Entertainment top stories from its public RSS feed.",
+ "operationId": "deadline-news",
"produces": [
"application/json"
],
@@ -235173,16 +267981,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Daily Caller top stories",
+ "summary": "Get Deadline top stories",
"tags": [
- "The Daily Caller"
+ "Deadline"
]
}
},
- "/dailycaller/sections": {
+ "/deadline/sections": {
"get": {
- "description": "Returns the live-verified The Daily Caller section inventory used by the headlines endpoint.",
- "operationId": "dailycaller-sections",
+ "description": "Returns the complete public section inventory accepted by /api/v1/deadline/headlines (both Deadline's editorial categories and its verticals).",
+ "operationId": "deadline-sections",
"produces": [
"application/json"
],
@@ -235199,24 +268007,51 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Daily Caller sections",
+ "summary": "Get Deadline sections",
"tags": [
- "The Daily Caller"
+ "Deadline"
]
}
},
- "/dailyexpress/article": {
+ "/deliveroo/fulfillment-times": {
"get": {
- "description": "Returns public Daily Express article metadata and body paragraphs from a canonical article URL.",
- "operationId": "dailyexpress-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the exact same \"Choose a day\" / \"Choose a time\" scheduled-ordering data the real site's own order-ahead picker shows for a location, for both delivery and pickup: an ASAP option plus every day currently open for a scheduled order, each with its real time slots and UNIX timestamps.",
+ "operationId": "deliveroo-fulfillment-times",
"parameters": [
{
- "description": "Canonical Daily Express article URL",
+ "description": "Search center latitude",
"in": "query",
- "name": "url",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 51.4975
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
"required": true,
+ "type": "number",
+ "x-example": -0.1357
+ },
+ {
+ "description": "Deliveroo national market to search (default uk)",
+ "enum": [
+ "uk",
+ "ie",
+ "fr",
+ "it",
+ "be",
+ "ae",
+ "kw"
+ ],
+ "in": "query",
+ "name": "market",
"type": "string",
- "x-example": "https://www.express.co.uk/news/123456/example"
+ "x-example": "uk"
}
],
"produces": [
@@ -235226,7 +268061,74 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/deliveroo.fulfillmentTimesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Deliveroo's live delivery and pickup scheduling windows for a location",
+ "tags": [
+ "Deliveroo"
+ ]
+ }
+ },
+ "/deliveroo/restaurant": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Deliveroo partner's detail by uname -- restaurant, grocery, or shopping store alike, distinguished by branch_type: name, address, currency, branch/fulfillment type, rating, review count, a hero image, and whether it currently accepts orders.",
+ "operationId": "deliveroo-restaurant",
+ "parameters": [
+ {
+ "description": "Restaurant slug, from a search response's uname field",
+ "in": "query",
+ "name": "uname",
+ "required": true,
+ "type": "string",
+ "x-example": "nandos-wilton-road"
+ },
+ {
+ "description": "Deliveroo national market the uname was found in (default uk)",
+ "enum": [
+ "uk",
+ "ie",
+ "fr",
+ "it",
+ "be",
+ "ae",
+ "kw"
+ ],
+ "in": "query",
+ "name": "market",
+ "type": "string",
+ "x-example": "uk"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/deliveroo.restaurantResponseDoc"
}
},
"400": {
@@ -235253,24 +268155,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Express article content",
+ "summary": "Get one Deliveroo restaurant, grocery, or shopping partner's detail",
"tags": [
- "Daily Express"
+ "Deliveroo"
]
}
},
- "/dailyexpress/author": {
+ "/deliveroo/restaurant/menu": {
"get": {
- "description": "Returns one Daily Express journalist's public profile: name, job title, bio, and their recent articles, from a canonical journalist URL.",
- "operationId": "dailyexpress-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one partner's full menu or catalog grouped into categories -- restaurant menus, grocery aisles, and shopping-store catalogs all use this same endpoint (see /deliveroo/search's collection parameter). Every item carries a name, description, product-meta text when the upstream provides it (calorie counts on restaurant items, per-unit pricing like \"380g · £15.79/kg\" on grocery/shopping items), price, availability, and its resolved customization options (e.g. \"Choose your meal\", \"Add ingredients?\") with each option's own price and required/multi-select bounds.",
+ "operationId": "deliveroo-restaurant-menu",
"parameters": [
{
- "description": "Canonical Daily Express journalist URL",
+ "description": "Restaurant slug, from a search response's uname field",
"in": "query",
- "name": "url",
+ "name": "uname",
"required": true,
"type": "string",
- "x-example": "https://www.express.co.uk/journalist/123944/Rebecca-Russell"
+ "x-example": "nandos-wilton-road"
+ },
+ {
+ "description": "Deliveroo national market the uname was found in (default uk)",
+ "enum": [
+ "uk",
+ "ie",
+ "fr",
+ "it",
+ "be",
+ "ae",
+ "kw"
+ ],
+ "in": "query",
+ "name": "market",
+ "type": "string",
+ "x-example": "uk"
}
],
"produces": [
@@ -235280,7 +268201,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.dailyExpressAuthorResponseDoc"
+ "$ref": "#/definitions/deliveroo.menuResponseDoc"
}
},
"400": {
@@ -235307,54 +268228,168 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Daily Express journalist profile",
+ "summary": "Get one Deliveroo restaurant, grocery, or shopping partner's priced catalog",
"tags": [
- "Daily Express"
+ "Deliveroo"
]
}
},
- "/dailyexpress/headlines": {
+ "/deliveroo/search": {
"get": {
- "description": "Returns fresh headlines from one public Daily Express RSS section.",
- "operationId": "dailyexpress-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the restaurants (or, with collection set, grocery/shopping stores) Deliveroo's own catalog serves for a latitude/longitude in the given market -- the location's entire feed, not a curated subset (confirmed live: up to 2,700+ results for a single coordinate). Each result carries its uname (the value the restaurant and menu endpoints take), name, image, branch_type, and, when available, rating, delivery time, and distance. Optional collection, cuisine, dietary, dish, min_rating, max_delivery_minutes, max_delivery_fee_pounds, has_offer, deliveroos_choice, and sort parameters narrow and order the same feed -- call /deliveroo/search/filters for the current, complete, location-scoped list of every valid cuisine/dietary/dish value with live result counts. A location with no coverage returns an empty list rather than an error.",
+ "operationId": "deliveroo-search",
"parameters": [
{
- "description": "Daily Express section slug",
+ "description": "Search center latitude",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 51.4975
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -0.1357
+ },
+ {
+ "description": "Deliveroo national market to search (default uk)",
"enum": [
- "news",
"uk",
- "world",
- "politics",
- "royal",
- "us",
- "weather",
- "science",
- "history",
- "weird",
- "nature",
- "obituaries",
- "showbiz-tv",
- "sport",
- "football",
- "tennis",
- "formula-1",
- "finance",
- "city-business",
- "personal-finance",
- "retirement",
- "travel",
- "entertainment",
- "gaming",
- "lifestyle",
- "health",
- "property",
- "cars",
- "technology"
+ "ie",
+ "fr",
+ "it",
+ "be",
+ "ae",
+ "kw"
],
"in": "query",
- "name": "section",
- "required": true,
- "type": "string"
+ "name": "market",
+ "type": "string",
+ "x-example": "uk"
+ },
+ {
+ "description": "Restaurants to return, clamped to 100 (default 20)",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "description": "Optional, passed straight through to the upstream. Selects the Deliveroo partner vertical: omit for restaurants/takeaways (default), grocery for supermarkets and convenience stores, shopping for non-food retail -- both confirmed live; other values may exist and are not rejected. Every result uses the same uname contract for /deliveroo/restaurant and /deliveroo/restaurant/menu.",
+ "in": "query",
+ "name": "collection",
+ "type": "string",
+ "x-example": "grocery"
+ },
+ {
+ "collectionFormat": "multi",
+ "description": "Optional, repeatable Deliveroo cuisine filter, e.g. cuisine=american&cuisine=asian. Passed straight through to the upstream; call /deliveroo/search/filters for the current, complete, location-scoped list of valid values. An unrecognized value is silently ignored by the upstream, not rejected.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "cuisine",
+ "type": "array",
+ "x-example": "american"
+ },
+ {
+ "collectionFormat": "multi",
+ "description": "Optional, repeatable Deliveroo dietary filter passed straight through to the upstream, e.g. dietary=vegan. Call /deliveroo/search/filters for the current, complete list of valid values. An unrecognized value is silently ignored by the upstream, not rejected.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "dietary",
+ "type": "array",
+ "x-example": "vegan"
+ },
+ {
+ "collectionFormat": "multi",
+ "description": "Optional, repeatable Deliveroo dish-level filter passed straight through to the upstream, e.g. dish=pizza&dish=sushi. Call /deliveroo/search/filters for the current, complete, location-scoped list of valid values. An unrecognized value is silently ignored by the upstream, not rejected.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "dish",
+ "type": "array",
+ "x-example": "pizza"
+ },
+ {
+ "description": "When true, only returns results Deliveroo itself marks top-rated (its own 4.5+ threshold). Equivalent to min_rating=4.5; ignored if min_rating is also set.",
+ "in": "query",
+ "name": "top_rated",
+ "type": "boolean",
+ "x-example": true
+ },
+ {
+ "description": "Minimum star rating filter",
+ "enum": [
+ 3.5,
+ 4,
+ 4.5
+ ],
+ "in": "query",
+ "name": "min_rating",
+ "type": "number",
+ "x-example": 4
+ },
+ {
+ "description": "Maximum estimated delivery time in minutes",
+ "enum": [
+ 20,
+ 30,
+ 45
+ ],
+ "in": "query",
+ "name": "max_delivery_minutes",
+ "type": "integer",
+ "x-example": 30
+ },
+ {
+ "description": "Maximum delivery fee in GBP",
+ "enum": [
+ 1,
+ 2,
+ 3
+ ],
+ "in": "query",
+ "name": "max_delivery_fee_pounds",
+ "type": "integer",
+ "x-example": 2
+ },
+ {
+ "description": "When true, only returns results currently running an offer/promotion",
+ "in": "query",
+ "name": "has_offer",
+ "type": "boolean",
+ "x-example": true
+ },
+ {
+ "description": "Result ordering",
+ "enum": [
+ "recommended",
+ "distance",
+ "time",
+ "rating"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "distance"
+ },
+ {
+ "description": "When true, only returns results in Deliveroo's own Deliveroo's Choice curated collection. Combines with collection (e.g. collection=grocery&deliveroos_choice=true narrows to Deliveroo's Choice within the grocery vertical) rather than conflicting with it.",
+ "in": "query",
+ "name": "deliveroos_choice",
+ "type": "boolean",
+ "x-example": true
}
],
"produces": [
@@ -235364,7 +268399,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/deliveroo.searchResponseDoc"
}
},
"400": {
@@ -235385,16 +268420,53 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Express section headlines",
+ "summary": "Search Deliveroo restaurants, groceries, or shopping stores near a location",
"tags": [
- "Daily Express"
+ "Deliveroo"
]
}
},
- "/dailyexpress/news": {
+ "/deliveroo/search/filters": {
"get": {
- "description": "Returns fresh Daily Express stories from the public News RSS feed.",
- "operationId": "dailyexpress-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the exact same sort and filter catalog -- every cuisine, dietary tag, dish, delivery-time tier, delivery-fee tier, star-rating tier, and offer flag, each with a live result count for this location -- that the real search page's own filter dropdowns are populated from. Every option's query_param/query_value pair is the literal query string /deliveroo/search accepts for that filter.",
+ "operationId": "deliveroo-search-filters",
+ "parameters": [
+ {
+ "description": "Search center latitude",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 51.4975
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -0.1357
+ },
+ {
+ "description": "Deliveroo national market to search (default uk)",
+ "enum": [
+ "uk",
+ "ie",
+ "fr",
+ "it",
+ "be",
+ "ae",
+ "kw"
+ ],
+ "in": "query",
+ "name": "market",
+ "type": "string",
+ "x-example": "uk"
+ }
+ ],
"produces": [
"application/json"
],
@@ -235402,39 +268474,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/deliveroo.filtersResponseDoc"
}
},
- "503": {
- "description": "Service Unavailable",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Daily Express top stories",
- "tags": [
- "Daily Express"
- ]
- }
- },
- "/dailyexpress/sections": {
- "get": {
- "description": "Returns the live public Daily Express RSS section inventory.",
- "operationId": "dailyexpress-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -235443,24 +268495,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Express sections",
+ "summary": "Get Deliveroo's live search filter and sort catalog for a location",
"tags": [
- "Daily Express"
+ "Deliveroo"
]
}
},
- "/dailymail/article": {
+ "/denverpost/article": {
"get": {
- "description": "Returns public Daily Mail article metadata and body paragraphs from a canonical article URL.",
- "operationId": "dailymail-article",
+ "description": "Returns article metadata and paragraphs present in the public HTML response. Subscriber-only pages may expose only an anonymous preview; this service does not bypass access controls.",
+ "operationId": "denverpost-article",
"parameters": [
{
- "description": "Canonical Daily Mail article URL",
+ "description": "Canonical Denver Post article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.dailymail.co.uk/news/article-1234567/example.html"
+ "x-example": "https://www.denverpost.com/2026/09/29/colorado-oportunity-zones-investment/"
}
],
"produces": [
@@ -235497,31 +268549,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Mail article content",
+ "summary": "Get a Denver Post article",
"tags": [
- "Daily Mail"
+ "The Denver Post"
]
}
},
- "/dailymail/author": {
+ "/denverpost/author": {
"get": {
- "description": "Returns one Daily Mail author's public profile: name, job title, bio, social accounts, and one page of their recent articles.",
- "operationId": "dailymail-author",
+ "description": "Returns one author's public profile and the articles listed on its first page.",
+ "operationId": "denverpost-author",
"parameters": [
{
- "description": "Canonical dailymail.com/profile-/.html URL",
+ "description": "Author slug, e.g. aldo-svaldi",
"in": "query",
- "name": "url",
- "required": true,
+ "name": "slug",
"type": "string",
- "x-example": "https://www.dailymail.com/profile-1021/charliespiering.html"
+ "x-example": "aldo-svaldi"
},
{
- "description": "1-based page of articles to return; defaults to 1",
+ "description": "Canonical denverpost.com/author// URL; alternative to slug",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.denverpost.com/author/aldo-svaldi/"
}
],
"produces": [
@@ -235531,7 +268582,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.dailyMailAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.denverPostAuthorResponseDoc"
}
},
"400": {
@@ -235558,37 +268609,101 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Daily Mail author profile",
+ "summary": "Get a Denver Post author archive",
"tags": [
- "Daily Mail"
+ "The Denver Post"
]
}
},
- "/dailymail/headlines": {
+ "/denverpost/headlines": {
"get": {
- "description": "Returns fresh headlines from one public Daily Mail RSS section.",
- "operationId": "dailymail-headlines",
+ "description": "Returns current headlines from one public editorial section or topic archive.",
+ "operationId": "denverpost-headlines",
"parameters": [
{
- "description": "Daily Mail RSS section slug",
+ "description": "Section or topic slug returned by denverpost-sections",
"enum": [
- "home",
"news",
- "sport",
- "tvshowbiz",
+ "latest-headlines",
+ "colorado",
+ "politics",
+ "crime-public-safety",
+ "courts",
+ "national",
+ "world",
+ "education",
"health",
- "femail",
+ "environment",
+ "transportation",
+ "housing",
+ "news-obituaries",
+ "photos-and-videos",
+ "weather",
+ "sports",
+ "sports-columnists",
+ "denver-broncos",
+ "colorado-rockies",
+ "denver-nuggets",
+ "colorado-avalanche",
+ "colorado-rapids",
+ "denver-summit-fc",
+ "college",
+ "colorado-preps",
+ "betting",
+ "golf",
+ "boxing-mma",
+ "sports-podcasts",
+ "business",
+ "colorado-real-estate",
+ "airlines",
+ "economy",
+ "energy",
+ "retail",
+ "colorado-technology",
+ "best-reviews",
+ "theknow",
+ "restaurants-food-drink",
+ "arts",
+ "culture",
+ "movies",
+ "television",
+ "music",
+ "theater",
"travel",
- "sciencetech",
- "money",
- "debate",
- "us",
- "australia"
+ "parenting-family",
+ "bars",
+ "beer",
+ "outdoors",
+ "hiking",
+ "fall-colors",
+ "cycling",
+ "fitness",
+ "running",
+ "camping",
+ "fishing",
+ "hunting",
+ "water-sports",
+ "skiing",
+ "snowboarding",
+ "winter-sports",
+ "opinion",
+ "editorials",
+ "opinion-columnists",
+ "letters",
+ "endorsements",
+ "things-to-do",
+ "horoscopes",
+ "advice",
+ "home-garden",
+ "free-and-cheap",
+ "cannabis",
+ "recipes"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "news"
}
],
"produces": [
@@ -235619,16 +268734,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Mail section headlines",
+ "summary": "Get Denver Post section headlines",
"tags": [
- "Daily Mail"
+ "The Denver Post"
]
}
},
- "/dailymail/news": {
+ "/denverpost/news": {
"get": {
- "description": "Returns fresh Daily Mail top stories from its public RSS feed.",
- "operationId": "dailymail-news",
+ "description": "Returns current top stories from the public Denver Post homepage.",
+ "operationId": "denverpost-news",
"produces": [
"application/json"
],
@@ -235639,12 +268754,6 @@
"$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -235657,16 +268766,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Mail top stories",
+ "summary": "Get Denver Post top stories",
"tags": [
- "Daily Mail"
+ "The Denver Post"
]
}
},
- "/dailymail/sections": {
+ "/denverpost/sections": {
"get": {
- "description": "Returns the live-verified public Daily Mail RSS section inventory.",
- "operationId": "dailymail-sections",
+ "description": "Returns the live-verified public editorial section and topic archive values accepted by headlines.",
+ "operationId": "denverpost-sections",
"produces": [
"application/json"
],
@@ -235683,26 +268792,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Mail RSS sections",
+ "summary": "Get Denver Post section and topic inventory",
"tags": [
- "Daily Mail"
+ "The Denver Post"
]
}
},
- "/dailyrecord/article": {
+ "/depop/brands": {
"get": {
- "description": "Returns public Daily Record article metadata and body paragraphs from a canonical article URL.",
- "operationId": "dailyrecord-article",
- "parameters": [
- {
- "description": "Canonical Daily Record article URL",
- "in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.dailyrecord.co.uk/news/scottish-news/example-37685844"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns Depop's full brand directory (id, name, slug), not just brands with active listings for a given search -- resolves the search endpoint's otherwise-opaque brand_ids filter to human-readable names. Public data sourced from Depop's own brand-directory API.",
+ "operationId": "depop-brands",
"produces": [
"application/json"
],
@@ -235710,17 +268812,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/depop.brandsResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -235737,32 +268833,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Record article content",
+ "summary": "Depop's full brand directory",
"tags": [
- "Daily Record"
+ "Depop"
]
}
},
- "/dailyrecord/author": {
+ "/depop/categories": {
"get": {
- "description": "Returns one Daily Record author's public profile: name, job title, bio, email, X/Twitter handle, and their recent articles.",
- "operationId": "dailyrecord-author",
- "parameters": [
- {
- "description": "Author slug, e.g. paul-hutcheon",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "paul-hutcheon"
- },
- {
- "description": "Canonical dailyrecord.co.uk/authors// URL; alternative to slug",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.dailyrecord.co.uk/authors/paul-hutcheon/"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns Depop's full department, category, and subcategory taxonomy -- every value usable with /depop/search's and /depop/shop/{username}'s category/subcategory filters. Tries a live refresh from Depop's own category-filter API first and falls back to a static snapshot on any failure, so this never errors.",
+ "operationId": "depop-categories",
"produces": [
"application/json"
],
@@ -235770,23 +268853,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.dailyRecordAuthorResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/depop.categoriesResponseDoc"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -235797,35 +268868,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Daily Record author profile",
+ "summary": "Get Depop's category taxonomy",
"tags": [
- "Daily Record"
+ "Depop"
]
}
},
- "/dailyrecord/headlines": {
+ "/depop/item/{slug}": {
"get": {
- "description": "Returns fresh headlines from one public Daily Record section.",
- "operationId": "dailyrecord-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a normalized Depop item-detail page: description, all photos, price, condition, brand, size, seller info, and a \"similar items\" carousel when the page has one. Public data sourced from Depop's own item pages.",
+ "operationId": "depop-item",
"parameters": [
{
- "description": "Daily Record section slug",
- "enum": [
- "news",
- "scotland",
- "uk-world-news",
- "sport",
- "football",
- "showbiz",
- "lifestyle",
- "money",
- "travel",
- "in-your-area"
- ],
- "in": "query",
- "name": "section",
+ "description": "Depop item URL slug, e.g. from a search result's id field",
+ "in": "path",
+ "name": "slug",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "ag_boutique-vintage-mid-rise-bootcut-levi-2476"
}
],
"produces": [
@@ -235835,7 +268898,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/depop.ItemDetailResponse"
}
},
"400": {
@@ -235844,36 +268907,16 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Daily Record section headlines",
- "tags": [
- "Daily Record"
- ]
- }
- },
- "/dailyrecord/news": {
- "get": {
- "description": "Returns fresh Daily Record stories from the public News RSS feed.",
- "operationId": "dailyrecord-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -235888,50 +268931,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Record top stories",
+ "summary": "Get Depop item detail",
"tags": [
- "Daily Record"
+ "Depop"
]
}
},
- "/dailyrecord/sections": {
+ "/depop/item/{slug}/similar": {
"get": {
- "description": "Returns the public Daily Record editorial section inventory.",
- "operationId": "dailyrecord-sections",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Daily Record sections",
- "tags": [
- "Daily Record"
- ]
- }
- },
- "/dailystaruk/article": {
- "get": {
- "description": "Returns public Daily Star (UK) article metadata (including the section) and body paragraphs from a canonical article URL. Photo-gallery and sponsored partner-story URLs are rejected.",
- "operationId": "dailystaruk-article",
+ "description": "Returns items similar to a given Depop listing, via Depop's dedicated similar-items API -- richer and paginated (up to 150 per page) compared to the small, non-paginated \"similar items\" carousel already included in item detail. Public data sourced from Depop's own similar-items API.",
+ "operationId": "depop-item-similar",
"parameters": [
{
- "description": "Canonical Daily Star (UK) article URL",
- "in": "query",
- "name": "url",
+ "description": "Depop item URL slug, e.g. from a search result's id field",
+ "in": "path",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "https://www.dailystar.co.uk/tv/wayne-rooney-opens-up-weight-37700309"
+ "x-example": "ag_boutique-vintage-mid-rise-bootcut-levi-2476"
+ },
+ {
+ "description": "Max results per page, 1-150",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 24
+ },
+ {
+ "description": "Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.",
+ "in": "query",
+ "name": "after",
+ "type": "string"
}
],
"produces": [
@@ -235941,7 +268974,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/depop.similarItemsResponseDoc"
}
},
"400": {
@@ -235956,8 +268989,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -235974,37 +269007,115 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Star (UK) article content",
+ "summary": "Get Depop items similar to a listing",
"tags": [
- "Daily Star UK"
+ "Depop"
]
}
},
- "/dailystaruk/author": {
+ "/depop/search": {
"get": {
- "description": "Returns one Daily Star (UK) author's public profile (name and, when published, job title, bio, email and X/Twitter handle) and one page of their recent articles.",
- "operationId": "dailystaruk-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Depop's resale-fashion marketplace by free-text keyword, with optional price, condition, colour, category, subcategory, gender, kids-department, brand, discount, and sort filters, returning normalized listing summaries (title, price, brand, condition, like count, photos, sizes), a pagination cursor, and the total matching count. Public data sourced from Depop's own search API.",
+ "operationId": "depop-search",
"parameters": [
{
- "description": "Author slug, e.g. edward-easton",
+ "description": "Free-text keyword search",
"in": "query",
- "name": "slug",
+ "name": "query",
+ "required": true,
"type": "string",
- "x-example": "edward-easton"
+ "x-example": "nike jacket"
},
{
- "description": "Canonical dailystar.co.uk/authors// URL; alternative to slug",
+ "description": "Minimum listing price in USD",
"in": "query",
- "name": "url",
+ "name": "price_min",
+ "type": "number",
+ "x-example": 15
+ },
+ {
+ "description": "Maximum listing price in USD",
+ "in": "query",
+ "name": "price_max",
+ "type": "number",
+ "x-example": 50
+ },
+ {
+ "description": "Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair",
+ "in": "query",
+ "name": "condition",
"type": "string",
- "x-example": "https://www.dailystar.co.uk/authors/edward-easton/"
+ "x-example": "used_excellent,used_good"
},
{
- "default": 1,
- "description": "1-based page number of the author's article list (1 to 100); overrides any pageNumber in url",
+ "description": "Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "colours",
+ "type": "string",
+ "x-example": "black,white"
+ },
+ {
+ "description": "Restrict results to discounted listings",
+ "in": "query",
+ "name": "on_sale",
+ "type": "boolean"
+ },
+ {
+ "description": "Sort order: relevance, price_low_to_high, price_high_to_low",
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "price_low_to_high"
+ },
+ {
+ "description": "Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.",
+ "in": "query",
+ "name": "category",
+ "type": "string",
+ "x-example": "tops"
+ },
+ {
+ "description": "Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.",
+ "in": "query",
+ "name": "subcategory",
+ "type": "string",
+ "x-example": "tshirts,hoodies"
+ },
+ {
+ "description": "Department filter: female, male",
+ "in": "query",
+ "name": "gender",
+ "type": "string",
+ "x-example": "female"
+ },
+ {
+ "description": "Kids-department filter: true restricts results to kids items only, false excludes them, omitted returns both.",
+ "in": "query",
+ "name": "is_kids",
+ "type": "boolean"
+ },
+ {
+ "description": "Comma-separated Depop internal numeric brand ids. Not documented by Depop -- find a brand's id by browsing its depop.com/brands// page.",
+ "in": "query",
+ "name": "brand_ids",
+ "type": "string",
+ "x-example": "219"
+ },
+ {
+ "description": "Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\",
+ "in": "query",
+ "name": "sizes",
+ "type": "string",
+ "x-example": "4.17"
+ },
+ {
+ "description": "Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.",
+ "in": "query",
+ "name": "after",
+ "type": "string"
}
],
"produces": [
@@ -236014,7 +269125,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.reachAuthorResponseDoc"
+ "$ref": "#/definitions/depop.searchResponseDoc"
}
},
"400": {
@@ -236023,14 +269134,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236047,63 +269152,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Daily Star (UK) author profile",
+ "summary": "Search Depop listings",
"tags": [
- "Daily Star UK"
+ "Depop"
]
}
},
- "/dailystaruk/headlines": {
+ "/depop/search-sellers": {
"get": {
- "description": "Returns fresh headlines from one public Daily Star (UK) section. Photo galleries are omitted because they have no readable article body.",
- "operationId": "dailystaruk-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Finds Depop users/sellers by name or username. A matched result's username can be passed directly to GET /depop/shop/{username} for that seller's full shop. Public data sourced from Depop's own user-search API.",
+ "operationId": "depop-search-sellers",
"parameters": [
{
- "description": "Daily Star (UK) section slug",
- "enum": [
- "news",
- "news/latest-news",
- "news/uk-news",
- "news/world-news",
- "news/us-news",
- "news/weird-news",
- "news/exclusive",
- "news/politics",
- "showbiz",
- "showbiz/us-showbiz",
- "tv",
- "music",
- "sport",
- "sport/football",
- "sport/transfer-news",
- "sport/boxing",
- "sport/ufc",
- "sport/f1",
- "sport/darts",
- "sport/snooker",
- "sport/other-sports",
- "sport/us-sport",
- "sport/motorsport",
- "tech",
- "tech/news",
- "tech/gaming",
- "tech/reviews",
- "life-style",
- "life-style/money",
- "life-style/competitions",
- "real-life",
- "love-sex",
- "health",
- "fashion-beauty",
- "diet-fitness",
- "travel",
- "travel/travel-news",
- "just-jane"
- ],
+ "description": "Seller name or username to search for",
"in": "query",
- "name": "section",
+ "name": "query",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "vintage nike"
}
],
"produces": [
@@ -236113,7 +269182,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/depop.searchSellersResponseDoc"
}
},
"400": {
@@ -236122,46 +269191,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Daily Star (UK) section headlines",
- "tags": [
- "Daily Star UK"
- ]
- }
- },
- "/dailystaruk/news": {
- "get": {
- "description": "Returns fresh Daily Star (UK) top stories from the public home RSS feed. Photo galleries are omitted because they have no readable article body.",
- "operationId": "dailystaruk-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236178,50 +269209,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Star (UK) top stories",
+ "summary": "Search Depop sellers by name",
"tags": [
- "Daily Star UK"
+ "Depop"
]
}
},
- "/dailystaruk/sections": {
+ "/depop/search/facets": {
"get": {
- "description": "Returns the public Daily Star (UK) editorial section inventory used by dailystaruk-headlines.",
- "operationId": "dailystaruk-sections",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Daily Star (UK) sections",
- "tags": [
- "Daily Star UK"
- ]
- }
- },
- "/dailywire/article": {
- "get": {
- "description": "Returns public Daily Wire article metadata and body paragraphs from an article URL under any of the site's content-vertical prefixes.",
- "operationId": "dailywire-article",
+ "description": "Returns result-count breakdowns per department/category/subcategory for a search query, via Depop's dedicated aggregates API -- a distinct upstream call from search itself, not embedded in its response. Public data sourced from Depop's own search-aggregates API.",
+ "operationId": "depop-search-facets",
"parameters": [
{
- "description": "Daily Wire article URL",
+ "description": "Free-text keyword search",
"in": "query",
- "name": "url",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "https://www.dailywire.com/news/example-article-slug"
+ "x-example": "bandage dress"
}
],
"produces": [
@@ -236231,7 +269239,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/depop.searchFacetsResponseDoc"
}
},
"400": {
@@ -236240,8 +269248,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236258,30 +269266,96 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Wire article content",
+ "summary": "Depop search result-count breakdowns",
"tags": [
- "DailyWire"
+ "Depop"
]
}
},
- "/dailywire/author": {
+ "/depop/shop/{username}": {
"get": {
- "description": "Returns one Daily Wire staff writer or contributor's public profile: name, headshot, social handles when present, biography, and their recent articles.",
- "operationId": "dailywire-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a Depop seller's public shop: profile (rating, sold count, followers, bio) plus current listings, with optional price, condition, colour, category, subcategory, gender, discount, and sort filters. Public data sourced from Depop's own shop pages.",
+ "operationId": "depop-shop",
"parameters": [
{
- "description": "Author slug, e.g. brent-scher",
+ "description": "Depop seller username, e.g. from a shop page URL segment",
+ "in": "path",
+ "name": "username",
+ "required": true,
+ "type": "string",
+ "x-example": "villafanashop"
+ },
+ {
+ "description": "Minimum listing price in USD",
"in": "query",
- "name": "slug",
+ "name": "price_min",
+ "type": "number",
+ "x-example": 15
+ },
+ {
+ "description": "Maximum listing price in USD",
+ "in": "query",
+ "name": "price_max",
+ "type": "number",
+ "x-example": 50
+ },
+ {
+ "description": "Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair",
+ "in": "query",
+ "name": "condition",
"type": "string",
- "x-example": "brent-scher"
+ "x-example": "used_excellent,used_good"
},
{
- "description": "Canonical dailywire.com/author/ URL; alternative to slug",
+ "description": "Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi",
"in": "query",
- "name": "url",
+ "name": "colours",
"type": "string",
- "x-example": "https://www.dailywire.com/author/brent-scher"
+ "x-example": "black,white"
+ },
+ {
+ "description": "Restrict results to discounted listings",
+ "in": "query",
+ "name": "on_sale",
+ "type": "boolean"
+ },
+ {
+ "description": "Sort order: relevance, price_low_to_high, price_high_to_low, recently_listed",
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "price_low_to_high"
+ },
+ {
+ "description": "Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.",
+ "in": "query",
+ "name": "category",
+ "type": "string",
+ "x-example": "tops"
+ },
+ {
+ "description": "Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.",
+ "in": "query",
+ "name": "subcategory",
+ "type": "string",
+ "x-example": "tshirts"
+ },
+ {
+ "description": "Department filter: female, male",
+ "in": "query",
+ "name": "gender",
+ "type": "string",
+ "x-example": "male"
+ },
+ {
+ "description": "Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\",
+ "in": "query",
+ "name": "sizes",
+ "type": "string",
+ "x-example": "54.4"
}
],
"produces": [
@@ -236291,7 +269365,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.dailyWireAuthorResponseDoc"
+ "$ref": "#/definitions/depop.shopResponseDoc"
}
},
"400": {
@@ -236306,63 +269380,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get a Daily Wire author profile",
- "tags": [
- "DailyWire"
- ]
- }
- },
- "/dailywire/headlines": {
- "get": {
- "description": "Returns current Daily Wire headlines for one content-vertical section, sourced from the site's own homepage feed.",
- "operationId": "dailywire-headlines",
- "parameters": [
- {
- "description": "Daily Wire section slug",
- "enum": [
- "news",
- "opinion",
- "dw-opinion",
- "analysis",
- "news-and-commentary",
- "news-and-analysis",
- "exclusive",
- "entertainment",
- "original",
- "upstream",
- "sports",
- "mi-x-dw"
- ],
- "in": "query",
- "name": "section",
- "required": true,
- "type": "string"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236379,16 +269398,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Wire section headlines",
+ "summary": "Get a Depop seller's shop",
"tags": [
- "DailyWire"
+ "Depop"
]
}
},
- "/dailywire/news": {
+ "/depop/sizes": {
"get": {
- "description": "Returns fresh Daily Wire top stories from its public RSS feed.",
- "operationId": "dailywire-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Depop's full, multi-region size taxonomy -- every composite id usable with /depop/search's and /depop/shop/{username}'s sizes filter. Public data sourced from Depop's own size-filter API.",
+ "operationId": "depop-sizes",
"produces": [
"application/json"
],
@@ -236396,11 +269418,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/depop.sizesResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236417,45 +269439,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Daily Wire top stories",
+ "summary": "Get Depop's size taxonomy",
"tags": [
- "DailyWire"
+ "Depop"
]
}
},
- "/dailywire/sections": {
+ "/depop/suggest": {
"get": {
- "description": "Returns the live-sampled public Daily Wire content-vertical inventory used by the headlines endpoint.",
- "operationId": "dailywire-sections",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
+ "description": "Returns Depop's own search-box autocomplete suggestions for a partial query, including the category a suggestion maps to when relevant. Public data sourced from Depop's own search-suggestions API.",
+ "operationId": "depop-suggest",
+ "parameters": [
{
- "ApiKeyAuth": []
+ "description": "Partial search query to autocomplete",
+ "in": "query",
+ "name": "query",
+ "required": true,
+ "type": "string",
+ "x-example": "red corte"
}
],
- "summary": "Get Daily Wire content-vertical sections",
- "tags": [
- "DailyWire"
- ]
- }
- },
- "/datasets": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Lists available read-only scraped datasets and the capabilities supported by each dataset.",
- "operationId": "datasets-list",
"produces": [
"application/json"
],
@@ -236463,11 +269469,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.listResponseDoc"
+ "$ref": "#/definitions/depop.suggestResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236477,6 +269483,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -236484,102 +269496,28 @@
"ApiKeyAuth": []
}
],
- "summary": "List stored scraped datasets",
+ "summary": "Depop search-box autocomplete",
"tags": [
- "Datasets"
+ "Depop"
]
}
},
- "/datasets/airbnb-markets/facets": {
- "get": {
+ "/diagnostics/antibot-check": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns suppressed distribution counts over the Airbnb markets dataset, honoring the same filters as search. Facet enum: `country`, `market`, `currency`, `superhost`, `guest_favorite`, `rating_band`, `review_band`, `admin1` (top subdivision), `locality` (settlement), `room_type` (`entire_place`/`private_room`/`hotel`/`shared_room`), `property_type` (Airbnb's canonical listing type from the detail page), `amenities` (each amenity with the count of listings offering it). The `admin1`, `locality`, `room_type`, `property_type` and `amenities` facets stay empty until their enrichment coverage is high enough to be reliable. group_by enum: `country`, `market`, `admin1`, `locality`, `room_type`, `property_type`.",
- "operationId": "datasets-airbnb-markets-facets",
+ "description": "Probes a URL across escalating transports (direct HTTP → browser-impersonation → headless/stealth browsers) and returns an empirical scraping-difficulty assessment for that exact URL: a 0–10 `difficulty_score` and `difficulty_band` (`easy`, `medium`, `hard`, `very_hard`, `blocked`, `unknown`), whether it is `scrapeable`, the detected anti-bot `protections` (Cloudflare, DataDome, Akamai, PerimeterX, Kasada, Imperva, AWS WAF and more — each with a `kind` and `confidence`), the lightest transport that worked, and a `recommended_profile`. Difficulty is per-URL, not per-site — a homepage may be open while deep pages are bot-managed. Intended for authorized public-data scraping planning.",
+ "operationId": "antibot-check",
"parameters": [
{
- "description": "Facet enum: country, market, currency, superhost, guest_favorite, rating_band, review_band, admin1, locality, room_type, property_type, amenities",
- "enum": [
- "country",
- "market",
- "currency",
- "superhost",
- "guest_favorite",
- "rating_band",
- "review_band",
- "admin1",
- "locality",
- "room_type",
- "property_type",
- "amenities"
- ],
- "in": "query",
- "name": "facet",
+ "description": "Target URL (and optional fast flag)",
+ "in": "body",
+ "name": "request",
"required": true,
- "type": "string"
- },
- {
- "description": "Aggregate cell dimension enum: country, market, admin1, locality, room_type, property_type. Defaults to country",
- "enum": [
- "country",
- "market",
- "admin1",
- "locality",
- "room_type",
- "property_type"
- ],
- "in": "query",
- "name": "group_by",
- "type": "string"
- },
- {
- "description": "Exact ISO-3166-1 alpha-2 country filter, e.g. FR",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact metro-market filter, max 128 characters",
- "in": "query",
- "name": "market",
- "type": "string"
- },
- {
- "description": "Count only Superhost listings",
- "in": "query",
- "name": "superhost",
- "type": "boolean"
- },
- {
- "description": "Count only Guest Favorite listings (an observed lower bound; the badge under-counts)",
- "in": "query",
- "name": "guest_favorite",
- "type": "boolean"
- },
- {
- "description": "Minimum listing rating, from 0 through 5",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum listing review count, 0 or greater",
- "in": "query",
- "name": "min_review_count",
- "type": "integer"
- },
- {
- "description": "Freshness filter, an ISO-8601 date (YYYY-MM-DD)",
- "in": "query",
- "name": "active_since",
- "type": "string"
- },
- {
- "description": "Minimum listings per bucket; raises the small-cell suppression floor",
- "in": "query",
- "name": "min_listings",
- "type": "integer"
+ "schema": {
+ "$ref": "#/definitions/diagnostics.AntibotCheckRequest"
+ }
}
],
"produces": [
@@ -236589,23 +269527,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.airbnbMarketsFacetResponseDoc"
+ "$ref": "#/definitions/diagnostics.antibotCheckResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid or missing URL",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Probe failed (transport/browser error or blocked target)",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236616,26 +269554,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Airbnb markets dataset",
+ "summary": "Anti-bot check — website scraping difficulty",
"tags": [
- "Datasets"
+ "Web"
]
}
},
- "/datasets/airbnb-markets/items/{country}": {
+ "/discogs/artist/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one country's full aggregate Airbnb market profile from dataset id enum value `airbnb-markets` — headline supply, Superhost share, Guest Favorite share (`guest_favorite_pct`, an observed lower bound), `avg_person_capacity` (average guests a listing sleeps over the detail-page-enriched sample), ratings, its top metros, bounding box, per-currency nightly-price percentiles, and a USD-normalized `price_usd` percentile block (converted via an approximate dated FX snapshot) for cross-country comparison. Aggregate-only. Returns 404 for a country below the suppression floor.",
- "operationId": "datasets-airbnb-markets-item",
+ "description": "Returns a normalized Discogs artist profile: real name, bio, links, name variations, aliases, and group memberships. Credential-free official Discogs database data.",
+ "operationId": "discogs-artist",
"parameters": [
{
- "description": "ISO-3166-1 alpha-2 country code, e.g. FR",
+ "description": "Discogs artist id",
"in": "path",
- "name": "country",
+ "name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "1289"
}
],
"produces": [
@@ -236645,7 +269584,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.airbnbMarketResponseDoc"
+ "$ref": "#/definitions/discogs.artistResponseDoc"
}
},
"400": {
@@ -236660,14 +269599,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236678,76 +269617,39 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Airbnb market from the dataset",
+ "summary": "Get a Discogs artist profile",
"tags": [
- "Datasets"
+ "Discogs"
]
}
},
- "/datasets/airbnb-markets/nearby": {
+ "/discogs/artist/{id}/releases": {
"get": {
"consumes": [
- "application/json"
- ],
- "description": "Returns an aggregate geohash-grid density map of Airbnb listings within a radius of a coordinate, from dataset id enum value `airbnb-markets`. Each cell reports a centroid, listing count and Superhost share; thin cells are suppressed. Aggregate-only.",
- "operationId": "datasets-airbnb-markets-nearby",
- "parameters": [
- {
- "description": "Center latitude, from -90 through 90",
- "in": "query",
- "name": "lat",
- "required": true,
- "type": "number"
- },
- {
- "description": "Center longitude, from -180 through 180",
- "in": "query",
- "name": "lon",
- "required": true,
- "type": "number"
- },
- {
- "description": "Search radius in meters, from 1 through 50000",
- "in": "query",
- "name": "radius_m",
- "required": true,
- "type": "integer"
- },
- {
- "description": "Geohash precision, from 1 through 12; defaults to a value derived from the radius",
- "in": "query",
- "name": "precision",
- "type": "integer"
- },
- {
- "description": "Minimum listings per cell; raises the small-cell suppression floor",
- "in": "query",
- "name": "min_listings",
- "type": "integer"
- },
- {
- "description": "Exact ISO-3166-1 alpha-2 country filter, e.g. US",
- "in": "query",
- "name": "country",
- "type": "string"
- },
+ "application/json"
+ ],
+ "description": "Returns an artist's paginated release/master credits (role, format, label, year, want/collection counts). Credential-free official Discogs database data.",
+ "operationId": "discogs-artist-releases",
+ "parameters": [
{
- "description": "Count only Superhost listings",
- "in": "query",
- "name": "superhost",
- "type": "boolean"
+ "description": "Discogs artist id",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "1289"
},
{
- "description": "Minimum listing rating, from 0 through 5",
+ "description": "1-based page number, default 1",
"in": "query",
- "name": "min_rating",
- "type": "number"
+ "name": "page",
+ "type": "integer"
},
{
- "description": "Freshness filter, an ISO-8601 date (YYYY-MM-DD)",
+ "description": "Results per page, default 50, max 100",
"in": "query",
- "name": "active_since",
- "type": "string"
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -236757,7 +269659,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.airbnbMarketsNearbyResponseDoc"
+ "$ref": "#/definitions/discogs.artistReleasesResponseDoc"
}
},
"400": {
@@ -236766,8 +269668,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236777,6 +269679,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -236784,105 +269692,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Airbnb market density near a coordinate",
+ "summary": "List a Discogs artist's releases",
"tags": [
- "Datasets"
+ "Discogs"
]
}
},
- "/datasets/airbnb-markets/search": {
+ "/discogs/label/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns aggregate Airbnb short-term-rental market rollups from the dataset id enum value `airbnb-markets`. Aggregate-only: each row is a market cell, never an individual listing. Thin cells are suppressed. group_by enum: `country`, `market`, `admin1` (top subdivision), `locality` (settlement), `room_type` (`entire_place`/`private_room`/`hotel`/`shared_room`), `property_type` (Airbnb's canonical listing type from the detail page). `admin1`, `locality`, `room_type` and `property_type` are enrichment-derived and stay empty until their coverage is high enough to be reliable. Each cell also carries `median_price_usd`, the median nightly price converted to USD via an approximate dated FX snapshot, for cross-country comparison (combine with `group_by=room_type` for median price by room type); `guest_favorite_pct`, the share of listings carrying the Guest Favorite badge (an observed lower bound, like `superhost_pct`); and `avg_person_capacity`, the average guests a listing sleeps over the detail-page-enriched sample. Sort enum: `listings_desc`, `superhost_pct_desc`, `rating_desc`, `key_asc`.",
- "operationId": "datasets-airbnb-markets-search",
+ "description": "Returns a normalized Discogs label profile: profile text, contact info, parent label, and sub-labels. Credential-free official Discogs database data.",
+ "operationId": "discogs-label",
"parameters": [
{
- "description": "Aggregate cell dimension enum: country, market, admin1, locality, room_type, property_type. Defaults to country",
- "enum": [
- "country",
- "market",
- "admin1",
- "locality",
- "room_type",
- "property_type"
- ],
- "in": "query",
- "name": "group_by",
- "type": "string"
- },
- {
- "description": "Exact ISO-3166-1 alpha-2 country filter, e.g. FR",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact metro-market filter, e.g. Paris, max 128 characters",
- "in": "query",
- "name": "market",
- "type": "string"
- },
- {
- "description": "Count only Superhost listings",
- "in": "query",
- "name": "superhost",
- "type": "boolean"
- },
- {
- "description": "Count only Guest Favorite listings (an observed lower bound; the badge under-counts)",
- "in": "query",
- "name": "guest_favorite",
- "type": "boolean"
- },
- {
- "description": "Minimum listing rating, from 0 through 5",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum listing review count, 0 or greater",
- "in": "query",
- "name": "min_review_count",
- "type": "integer"
- },
- {
- "description": "Freshness filter, an ISO-8601 date (YYYY-MM-DD); only listings last seen on or after it are counted",
- "in": "query",
- "name": "active_since",
- "type": "string"
- },
- {
- "description": "Minimum listings per cell; raises the small-cell suppression floor (never lowered below the built-in minimum)",
- "in": "query",
- "name": "min_listings",
- "type": "integer"
- },
- {
- "description": "Sort enum: listings_desc, superhost_pct_desc, rating_desc, key_asc",
- "enum": [
- "listings_desc",
- "superhost_pct_desc",
- "rating_desc",
- "key_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "description": "Discogs label id",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "895"
}
],
"produces": [
@@ -236892,7 +269722,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.airbnbMarketsSearchResponseDoc"
+ "$ref": "#/definitions/discogs.labelResponseDoc"
}
},
"400": {
@@ -236901,8 +269731,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -236912,6 +269742,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -236919,74 +269755,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Airbnb markets dataset",
+ "summary": "Get a Discogs label profile",
"tags": [
- "Datasets"
+ "Discogs"
]
}
},
- "/datasets/apple-podcasts-shows/facets": {
+ "/discogs/label/{id}/releases": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the Apple Podcasts shows dataset. Facet enum: `genre`, `genre_id`, `country`, `content_advisory_rating`, `run_id`.",
- "operationId": "datasets-apple-podcasts-shows-facets",
+ "description": "Returns a label's paginated release catalog (title, artist, format, catalog number, year). Credential-free official Discogs database data.",
+ "operationId": "discogs-label-releases",
"parameters": [
{
- "description": "Facet enum: genre, genre_id, country, content_advisory_rating, run_id",
- "enum": [
- "genre",
- "genre_id",
- "country",
- "content_advisory_rating",
- "run_id"
- ],
- "in": "query",
- "name": "facet",
+ "description": "Discogs label id",
+ "in": "path",
+ "name": "id",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over show title and artist name, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact primary-genre filter, max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Exact Apple Podcasts genre id filter, max 128 characters",
- "in": "query",
- "name": "genre_id",
- "type": "string"
- },
- {
- "description": "Exact storefront country filter, max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact explicitness filter, max 128 characters",
- "in": "query",
- "name": "explicitness",
- "type": "string"
+ "type": "string",
+ "x-example": "895"
},
{
- "description": "Exact crawl run-id filter, max 128 characters",
+ "description": "1-based page number, default 1",
"in": "query",
- "name": "run_id",
- "type": "string"
+ "name": "page",
+ "type": "integer"
},
{
- "description": "Minimum episode count (track_count), 0 or greater",
+ "description": "Results per page, default 50, max 100",
"in": "query",
- "name": "min_track_count",
+ "name": "per_page",
"type": "integer"
}
],
@@ -236997,7 +269797,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.applePodcastsShowsFacetResponseDoc"
+ "$ref": "#/definitions/discogs.labelReleasesResponseDoc"
}
},
"400": {
@@ -237006,8 +269806,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -237017,6 +269817,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -237024,26 +269830,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet Apple Podcasts shows dataset",
+ "summary": "List a Discogs label's releases",
"tags": [
- "Datasets"
+ "Discogs"
]
}
},
- "/datasets/apple-podcasts-shows/items/{id}": {
+ "/discogs/master/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled Apple Podcasts show record by id from dataset id enum value `apple-podcasts-shows`.",
- "operationId": "datasets-apple-podcasts-shows-item",
+ "description": "Returns a normalized Discogs master release: the version-agnostic grouping of a release across pressings/reissues (artists, tracklist, genres/styles, videos, images, marketplace stats). Credential-free official Discogs database data.",
+ "operationId": "discogs-master",
"parameters": [
{
- "description": "Apple Podcasts numeric show id (e.g. 173001861)",
+ "description": "Discogs master release id",
"in": "path",
"name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "26647"
}
],
"produces": [
@@ -237053,7 +269860,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.applePodcastsShowResponseDoc"
+ "$ref": "#/definitions/discogs.masterResponseDoc"
}
},
"400": {
@@ -237068,14 +269875,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -237086,86 +269893,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Apple Podcasts show from dataset",
+ "summary": "Get a Discogs master release",
"tags": [
- "Datasets"
+ "Discogs"
]
}
},
- "/datasets/apple-podcasts-shows/search": {
+ "/discogs/release/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the crawled public Apple Podcasts show catalog stored in a search index. One row per show. Discovered from a country x genre x collection chart grid and a search-term sweep — not a full catalog of every Apple Podcasts show. Sort enum: `relevance`, `popularity`, `track_count_desc`, `release_desc`, `title_asc`.",
- "operationId": "datasets-apple-podcasts-shows-search",
+ "description": "Returns a normalized Discogs release: artists, labels, formats, tracklist, credits, identifiers, videos, images, and community want/have/rating. Credential-free official Discogs database data (api.discogs.com).",
+ "operationId": "discogs-release",
"parameters": [
{
- "description": "Full-text query over show title and artist name, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact primary-genre filter (e.g. Comedy, True Crime), max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Exact Apple Podcasts genre id filter (e.g. 1303 for Comedy), max 128 characters",
- "in": "query",
- "name": "genre_id",
- "type": "string"
- },
- {
- "description": "Exact storefront country filter (the crawl's discovery storefront, e.g. us, gb), max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact explicitness filter as reported by Apple (e.g. explicit, cleaned), max 128 characters",
- "in": "query",
- "name": "explicitness",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum episode count (track_count), 0 or greater",
- "in": "query",
- "name": "min_track_count",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, popularity, track_count_desc, release_desc, title_asc",
- "enum": [
- "relevance",
- "popularity",
- "track_count_desc",
- "release_desc",
- "title_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "description": "Discogs release id",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "249504"
}
],
"produces": [
@@ -237175,7 +269923,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.applePodcastsShowsSearchResponseDoc"
+ "$ref": "#/definitions/discogs.releaseResponseDoc"
}
},
"400": {
@@ -237184,8 +269932,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -237195,6 +269943,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -237202,105 +269956,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Apple Podcasts shows dataset",
+ "summary": "Get a Discogs release",
"tags": [
- "Datasets"
+ "Discogs"
]
}
},
- "/datasets/apps-charts/search": {
+ "/discogs/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches daily top-chart snapshots scraped from the iOS App Store and Google Play, stored in a search index (one document per chart × snapshot × rank). With no `date` the latest snapshot is returned (today's chart); pair `app_id` with `sort=date_desc` for an app's rank over time. Store enum: `ios`, `android`. Chart type enum: `top_free`, `top_paid`, `top_grossing`, `new`. Platform enum (Apple device platforms, ios charts only): `phone`, `pad`, `mac`. Sort enum: `rank`, `rank_desc`, `date_desc`.",
- "operationId": "datasets-apps-charts-search",
+ "description": "Searches Discogs releases, masters, artists, and labels. Credential-free official Discogs database data.",
+ "operationId": "discogs-search",
"parameters": [
{
- "description": "Full-text query over chart-entry title and developer, max 256 characters",
+ "description": "Search query",
"in": "query",
"name": "q",
- "type": "string"
- },
- {
- "description": "Store enum: ios, android",
- "enum": [
- "ios",
- "android"
- ],
- "in": "query",
- "name": "store",
- "type": "string"
- },
- {
- "description": "Chart enum: top_free, top_paid, top_grossing, new",
- "enum": [
- "top_free",
- "top_paid",
- "top_grossing",
- "new"
- ],
- "in": "query",
- "name": "chart_type",
- "type": "string"
- },
- {
- "description": "Apple device-platform filter, iOS charts only; see platform enum above",
- "in": "query",
- "name": "platform",
- "type": "string"
- },
- {
- "description": "Raw store collection id filter (e.g. topgrossingapplications, GROSSING), max 128 characters",
- "in": "query",
- "name": "collection",
- "type": "string"
- },
- {
- "description": "Store category/genre filter, max 128 characters; empty for the overall charts",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact storefront country filter, max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact app filter — iOS numeric track id or Android package; pair with sort=date_desc for rank history",
- "in": "query",
- "name": "app_id",
- "type": "string"
- },
- {
- "description": "Snapshot date filter yyyy-MM-dd; defaults to the latest snapshot",
- "in": "query",
- "name": "date",
- "type": "string"
+ "required": true,
+ "type": "string",
+ "x-example": "Daft Punk Discovery"
},
{
- "description": "Sort enum: rank, rank_desc, date_desc",
+ "description": "Result type filter",
"enum": [
- "rank",
- "rank_desc",
- "date_desc"
+ "release",
+ "master",
+ "artist",
+ "label"
],
"in": "query",
- "name": "sort",
+ "name": "type",
"type": "string"
},
{
- "description": "Page number, defaults to 1",
+ "description": "1-based page number, default 1",
"in": "query",
"name": "page",
"type": "integer"
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Results per page, default 50, max 100",
"in": "query",
- "name": "page_size",
+ "name": "per_page",
"type": "integer"
}
],
@@ -237311,7 +270010,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.chartsSearchResponseDoc"
+ "$ref": "#/definitions/discogs.searchResponseDoc"
}
},
"400": {
@@ -237320,14 +270019,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -237338,77 +270037,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the app-charts dataset",
+ "summary": "Search the Discogs database",
"tags": [
- "Datasets"
+ "Discogs"
]
}
},
- "/datasets/apps-reviews/search": {
+ "/dominos/coupons": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches user reviews scraped from the iOS App Store and Google Play, stored in a search index (one document per review). Store enum: `ios`, `android`. Sort enum: `recent`, `score_desc`, `score_asc`, `helpful_desc`.",
- "operationId": "datasets-apps-reviews-search",
+ "description": "Returns one Domino's US store's available coupons and deals: standalone coupons (code, name, description, price, valid service methods, and any alternate promo/marketing codes that resolve to the same coupon), plus tiered volume-discount coupon groups (e.g. \"order 7+ pizzas, get 15% off\"). Reads the same structured menu response as GET /dominos/menu, so it costs no additional upstream request. A store can genuinely have zero active coupons -- an empty list is not an error. Store ids come from GET /dominos/store-locator. An unknown store id returns 404.",
+ "operationId": "dominos-coupons",
"parameters": [
{
- "description": "Full-text query over review text, title and author, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Store enum: ios, android",
- "enum": [
- "ios",
- "android"
- ],
- "in": "query",
- "name": "store",
- "type": "string"
- },
- {
- "description": "Exact app filter — iOS numeric track id or Android package, max 128 characters",
- "in": "query",
- "name": "app_id",
- "type": "string"
- },
- {
- "description": "Exact storefront country filter, max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Minimum star rating, 1 through 5",
- "in": "query",
- "name": "min_score",
- "type": "integer"
- },
- {
- "description": "Sort enum: recent, score_desc, score_asc, helpful_desc",
- "enum": [
- "recent",
- "score_desc",
- "score_asc",
- "helpful_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Domino's store id, from /dominos/store-locator",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "store_id",
+ "required": true,
+ "type": "string",
+ "x-example": "4336"
}
],
"produces": [
@@ -237418,7 +270067,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.reviewsSearchResponseDoc"
+ "$ref": "#/definitions/dominos.couponsResponseDoc"
}
},
"400": {
@@ -237427,14 +270076,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -237445,108 +270100,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the app-reviews dataset",
+ "summary": "Get one Domino's store's available coupons and deals",
"tags": [
- "Datasets"
+ "Dominos"
]
}
},
- "/datasets/apps/search": {
+ "/dominos/customization": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches resolved iOS App Store and Google Play apps stored in a search index. Store enum: `ios`, `android`, `both`. Platform enum (Apple device platforms, ios records only): `phone`, `pad`, `mac`, `tv`, `watch`, `vision`. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `installs_desc`, `updated_at_desc`, `popularity_desc`.",
- "operationId": "datasets-apps-search",
+ "description": "Returns one Domino's US store's full build-your-own customization catalog, grouped by product category (Domino's own internal names, e.g. \"BuildYourOwnDomino\" for pizza, \"GSalad\" for garden salads): every selectable size, crust/flavor style, topping, and side, each with its own code, name, description, dietary/placement flags (e.g. Meat, Vege, Sauce, WholeOnly), and any other attributes Domino's attaches (e.g. ExclusiveGroup for mutually-exclusive options). Also returns cooking instructions (bake level, cut style, seasoning), grouped. Reads the same structured menu response as GET /dominos/menu, so it costs no additional upstream request. Store ids come from GET /dominos/store-locator. An unknown store id returns 404.",
+ "operationId": "dominos-customization",
"parameters": [
{
- "description": "Full-text query over title, developer and category, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Store enum: ios, android, both",
- "enum": [
- "ios",
- "android",
- "both"
- ],
- "in": "query",
- "name": "store",
- "type": "string"
- },
- {
- "collectionFormat": "csv",
- "description": "Repeatable Apple device-platform filter (OR); see platform enum above",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "platforms",
- "type": "array"
- },
- {
- "description": "Exact app-store category filter, max 128 characters",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact storefront country filter, max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact developer/publisher name filter, max 128 characters",
- "in": "query",
- "name": "developer",
- "type": "string"
- },
- {
- "description": "Filter by price; true keeps only free apps, false only paid",
- "in": "query",
- "name": "free",
- "type": "boolean"
- },
- {
- "description": "Minimum store rating, 0 through 5",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum ratings/review count",
- "in": "query",
- "name": "min_reviews",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, rating_desc, reviews_desc, installs_desc, updated_at_desc, popularity_desc",
- "enum": [
- "relevance",
- "rating_desc",
- "reviews_desc",
- "installs_desc",
- "updated_at_desc",
- "popularity_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Domino's store id, from /dominos/store-locator",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "store_id",
+ "required": true,
+ "type": "string",
+ "x-example": "4336"
}
],
"produces": [
@@ -237556,7 +270130,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.appsSearchResponseDoc"
+ "$ref": "#/definitions/dominos.customizationResponseDoc"
}
},
"400": {
@@ -237565,14 +270139,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -237583,98 +270163,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the apps-intelligence dataset",
+ "summary": "Get one Domino's store's full build-your-own customization catalog",
"tags": [
- "Datasets"
+ "Dominos"
]
}
},
- "/datasets/bbb-businesses/facets": {
+ "/dominos/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns distribution counts over the BBB businesses index (dataset id enum value `bbb-businesses`), honoring the same filters as search. Facet enum: `category`, `state`, `city`, `rating`, `accredited`, `entity_type`, `run_id`.",
- "operationId": "datasets-bbb-businesses-facets",
+ "description": "Returns one Domino's US store's full menu, normalized into a flat list of categories (each with a stable code/name path, e.g. \"Pizza > Specialty Pizzas\") and their items. Each item carries its code, name, description, and product type, plus every purchasable variant (size/style) with its own code, name, and price. Store ids come from GET /dominos/store-locator. An unknown store id returns 404.",
+ "operationId": "dominos-menu",
"parameters": [
{
- "description": "Facet enum: category, state, city, rating, accredited, entity_type, run_id",
- "enum": [
- "category",
- "state",
- "city",
- "rating",
- "accredited",
- "entity_type",
- "run_id"
- ],
+ "description": "Domino's store id, from /dominos/store-locator",
"in": "query",
- "name": "facet",
+ "name": "store_id",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text match on the business name/category, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact category filter",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact 2-letter state/province filter",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact city filter",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Exact letter-grade rating filter. Enum: A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F",
- "enum": [
- "A+",
- "A",
- "A-",
- "B+",
- "B",
- "B-",
- "C+",
- "C",
- "C-",
- "D+",
- "D",
- "D-",
- "F"
- ],
- "in": "query",
- "name": "rating",
- "type": "string"
- },
- {
- "description": "Accreditation filter",
- "in": "query",
- "name": "accredited",
- "type": "boolean"
- },
- {
- "description": "Exact entity-type filter",
- "in": "query",
- "name": "entity_type",
- "type": "string"
- },
- {
- "description": "Exact crawl run id filter",
- "in": "query",
- "name": "run_id",
- "type": "string"
+ "type": "string",
+ "x-example": "4336"
}
],
"produces": [
@@ -237684,7 +270193,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.bbbBusinessesFacetResponseDoc"
+ "$ref": "#/definitions/dominos.menuResponseDoc"
}
},
"400": {
@@ -237693,14 +270202,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -237711,26 +270226,60 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the BBB businesses dataset",
+ "summary": "Get one Domino's store's full structured menu",
"tags": [
- "Datasets"
+ "Dominos"
]
}
},
- "/datasets/bbb-businesses/items/{id}": {
+ "/dominos/nutrition": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one business by id from dataset id enum value `bbb-businesses`. Returns 404 when the business is not in the index.",
- "operationId": "datasets-bbb-businesses-item",
+ "description": "Returns calorie information (Domino's own \"Cal-O-Meter\" data) for one product at one store. For a named/fixed menu item (a specialty pizza, bread, wing, pasta, sandwich, salad, drink, or dessert -- any item code from GET /dominos/menu), give only store_id and product_code; the item's default configuration is used. For a build-your-own pizza, also give size, base, and any topping codes -- calories are computed for that exact configuration, matching Domino's own live calculator. size and base must be given together; toppings requires both. Reads live, not from a cache -- each call creates and discards one anonymous cart server-side, so it is slower than this family's other endpoints. An unknown product code, or an invalid size/base/topping combination, returns an error.",
+ "operationId": "dominos-nutrition",
"parameters": [
{
- "description": "Business id (the - slug from the profile URL), e.g. 0825-1000223803",
- "in": "path",
- "name": "id",
+ "description": "Domino's store id, from /dominos/store-locator",
+ "in": "query",
+ "name": "store_id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "4336"
+ },
+ {
+ "description": "A product code from /dominos/menu's items[].code -- a named/fixed item, or a build-your-own base (e.g. S_PIZZA)",
+ "in": "query",
+ "name": "product_code",
+ "required": true,
+ "type": "string",
+ "x-example": "S_PIZZA"
+ },
+ {
+ "description": "Build-your-own size code, from /dominos/menu's variants. Required together with base.",
+ "in": "query",
+ "name": "size",
+ "type": "string",
+ "x-example": "14"
+ },
+ {
+ "description": "Build-your-own crust code. Required together with size.",
+ "in": "query",
+ "name": "base",
+ "type": "string",
+ "x-example": "HANDTOSS"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Repeatable. Topping codes to add to a build-your-own pizza. Only used together with size+base.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "toppings",
+ "type": "array",
+ "x-example": "P"
}
],
"produces": [
@@ -237740,7 +270289,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.bbbBusinessResponseDoc"
+ "$ref": "#/definitions/dominos.nutritionResponseDoc"
}
},
"400": {
@@ -237761,8 +270310,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -237773,114 +270322,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a business from the BBB businesses dataset",
+ "summary": "Get calorie information for one Domino's product configuration",
"tags": [
- "Datasets"
+ "Dominos"
]
}
},
- "/datasets/bbb-businesses/search": {
+ "/dominos/store": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the BBB (Better Business Bureau) businesses index (dataset id enum value `bbb-businesses`) — business profiles crawled from bbb.org's own search/category-browse pages: computed A+-F letter-grade rating, paid-accreditation status, category, contact info, business details, operating hours, and products/services. Complaints, full reviews, and the full \"reasons for rating\"/service-area detail are NOT embedded here; each record instead carries complaints_url/reviews_url/more_info_url pointing at the live bbb-business-complaints/bbb-business-reviews/bbb-business-more-info endpoints for on-demand lookup. rating enum: `A+`, `A`, `A-`, `B+`, `B`, `B-`, `C+`, `C`, `C-`, `D+`, `D`, `D-`, `F`. sort enum: `relevance`, `rating_desc`, `rating_asc`, `accredited_first`, `name_asc`, `years_in_business_desc`.",
- "operationId": "datasets-bbb-businesses-search",
+ "description": "Returns one Domino's US store's full profile -- richer than /dominos/store-locator's per-store summary. Includes the store's complete weekly hours (general hours and each service method's own hours, Monday-first, with every open/close window per day), Domino's own free-text hours summary per service method, per-service-method estimated wait windows, open/online status, per-service-method order availability (delivery, carryout, drive-up carryout, dine-in), contactless option status, and delivery/carryout order minimums. Store ids come from GET /dominos/store-locator. An unknown store id returns 404.",
+ "operationId": "dominos-store",
"parameters": [
{
- "description": "Full-text match on the business name/category, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact category filter, e.g. Plumber. Use the values returned by facets?facet=category",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact 2-letter state/province filter, parsed from the profile URL, e.g. tx",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact city filter, parsed from the profile URL",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Exact letter-grade rating filter. Enum: A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F",
- "enum": [
- "A+",
- "A",
- "A-",
- "B+",
- "B",
- "B-",
- "C+",
- "C",
- "C-",
- "D+",
- "D",
- "D-",
- "F"
- ],
- "in": "query",
- "name": "rating",
- "type": "string"
- },
- {
- "description": "Numeric floor against the denormalized rating rank (A+=12 down to F=0), e.g. 10 for 'A- and above'",
- "in": "query",
- "name": "min_rating_rank",
- "type": "integer"
- },
- {
- "description": "Accreditation filter; true keeps only accredited businesses",
- "in": "query",
- "name": "accredited",
- "type": "boolean"
- },
- {
- "description": "Exact entity-type filter, e.g. Limited Liability Company (LLC)",
- "in": "query",
- "name": "entity_type",
- "type": "string"
- },
- {
- "description": "Exact crawl run id filter",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Sort enum: relevance, rating_desc, rating_asc, accredited_first, name_asc, years_in_business_desc",
- "enum": [
- "relevance",
- "rating_desc",
- "rating_asc",
- "accredited_first",
- "name_asc",
- "years_in_business_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Domino's store id, from /dominos/store-locator",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "store_id",
+ "required": true,
+ "type": "string",
+ "x-example": "4336"
}
],
"produces": [
@@ -237890,7 +270352,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.bbbBusinessesSearchResponseDoc"
+ "$ref": "#/definitions/dominos.storeDetailResponseDoc"
}
},
"400": {
@@ -237899,14 +270361,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -237917,133 +270385,54 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the BBB businesses dataset",
+ "summary": "Get one Domino's store's full profile record",
"tags": [
- "Datasets"
+ "Dominos"
]
}
},
- "/datasets/boxofficemojo/facets": {
+ "/dominos/store-locator": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms-aggregation counts for one facet of the Box Office Mojo dataset, scoped to the same filters as search. Facet enum: `gross_band`, `years_active`, `lifetime_year`, `franchise_names`, `brand_names`, `genre_names`, `hydrated`, `is_billion_dollar`, `in_lifetime_top_1000_ww`. gross_band enum: `under_50m`, `50_100m`, `100_250m`, `250_500m`, `500m_1b`, `over_1b`.",
- "operationId": "datasets-boxofficemojo-facets",
+ "description": "Returns Domino's US stores that can serve a location: store id, address with coordinates, phone, open/online status, per-service-method availability (delivery, carryout, drive-up carryout), contactless option status, Domino's own hours summary per service method, and estimated wait windows. At least one of postal_code, or both city and state, is required; address is an optional street line that improves precision when combined with city/state. The response's query field echoes how Domino's own address resolver actually interpreted the input, including its granularity (e.g. resolved to a specific street range vs. only a city/region).",
+ "operationId": "dominos-store-locator",
"parameters": [
{
- "description": "Facet enum: gross_band, years_active, lifetime_year, franchise_names, brand_names, genre_names, hydrated, is_billion_dollar, in_lifetime_top_1000_ww",
- "enum": [
- "gross_band",
- "years_active",
- "lifetime_year",
- "franchise_names",
- "brand_names",
- "genre_names",
- "hydrated",
- "is_billion_dollar",
- "in_lifetime_top_1000_ww"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text query, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact title id (IMDb tt… id used by Box Office Mojo), max 32 characters",
- "in": "query",
- "name": "title_id",
- "type": "string"
- },
- {
- "description": "Year in years_active",
- "in": "query",
- "name": "year",
- "type": "integer"
- },
- {
- "description": "Primary lifetime chart year",
- "in": "query",
- "name": "lifetime_year",
- "type": "integer"
- },
- {
- "description": "Gross band filter",
- "in": "query",
- "name": "gross_band",
- "type": "string"
- },
- {
- "description": "Franchise name filter, max 128 characters",
- "in": "query",
- "name": "franchise",
- "type": "string"
- },
- {
- "description": "Brand name filter, max 128 characters",
- "in": "query",
- "name": "brand",
- "type": "string"
- },
- {
- "description": "Genre name filter, max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Only titles in the lifetime worldwide top 1000 chart",
- "in": "query",
- "name": "in_lifetime_top_1000",
- "type": "boolean"
- },
- {
- "description": "Minimum lifetime worldwide gross",
- "in": "query",
- "name": "min_worldwide",
- "type": "integer"
- },
- {
- "description": "Maximum lifetime worldwide gross",
- "in": "query",
- "name": "max_worldwide",
- "type": "integer"
- },
- {
- "description": "Minimum lifetime domestic gross",
+ "description": "Optional street address line",
"in": "query",
- "name": "min_domestic",
- "type": "integer"
+ "name": "address",
+ "type": "string",
+ "x-example": "1600 Pennsylvania Ave NW"
},
{
- "description": "Minimum foreign share of worldwide gross, 0 through 1",
+ "description": "City name (required together with state if postal_code is not given)",
"in": "query",
- "name": "min_foreign_share",
- "type": "number"
+ "name": "city",
+ "type": "string",
+ "x-example": "Washington"
},
{
- "description": "Maximum domestic share of worldwide gross, 0 through 1",
+ "description": "Two-letter US state code (required together with city if postal_code is not given)",
"in": "query",
- "name": "max_domestic_share",
- "type": "number"
+ "name": "state",
+ "type": "string",
+ "x-example": "DC"
},
{
- "description": "Hydrated filter",
+ "description": "US ZIP code (can be used alone instead of city/state)",
"in": "query",
- "name": "hydrated",
- "type": "boolean"
+ "name": "postal_code",
+ "type": "string",
+ "x-example": "20500"
},
{
- "description": "Only titles with worldwide gross of at least $1B",
+ "description": "One of: Delivery, Carryout. Default Delivery",
"in": "query",
- "name": "is_billion_dollar",
- "type": "boolean"
+ "name": "service_method",
+ "type": "string",
+ "x-example": "Delivery"
}
],
"produces": [
@@ -238053,7 +270442,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.boxOfficeMojoFacetResponseDoc"
+ "$ref": "#/definitions/dominos.storeLocatorResponseDoc"
}
},
"400": {
@@ -238068,8 +270457,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -238080,26 +270469,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Box Office Mojo dataset",
+ "summary": "Find Domino's stores near an address, city/state, or ZIP code",
"tags": [
- "Datasets"
+ "Dominos"
]
}
},
- "/datasets/boxofficemojo/items/{title_id}": {
+ "/doordash/explore": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Box Office Mojo dataset record by title id (IMDb `tt…` id used on Box Office Mojo title pages), including lifetime grosses, year history, release groups and market grosses when hydrated.",
- "operationId": "datasets-boxofficemojo-item",
+ "description": "Returns DoorDash's location-based \"nearby stores\" browse feed from the Android mobile guest experience. Unlike search or autocomplete, no search query is required. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-explore",
"parameters": [
{
- "description": "Title id (IMDb tt… id), e.g. tt0499549",
- "in": "path",
- "name": "title_id",
+ "description": "Consumer latitude",
+ "in": "query",
+ "name": "latitude",
"required": true,
- "type": "string"
+ "type": "number",
+ "x-example": 37.7825
+ },
+ {
+ "description": "Consumer longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
}
],
"produces": [
@@ -238109,7 +270507,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.boxOfficeMojoItemResponseDoc"
+ "$ref": "#/definitions/doordash.exploreResponseDoc"
}
},
"400": {
@@ -238118,20 +270516,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -238142,150 +270534,227 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Box Office Mojo title from the dataset",
+ "summary": "Get DoorDash nearby stores explore feed",
"tags": [
- "Datasets"
+ "DoorDash"
]
}
},
- "/datasets/boxofficemojo/search": {
+ "/doordash/feed": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches theatrical box-office records from public Box Office Mojo charts and title pages, stored in a search index. Filter by title id, year, franchise/brand/genre, gross band, lifetime top-1000 membership, hydration status, and worldwide/domestic gross ranges. Sort enum: `relevance`, `worldwide_desc`, `domestic_desc`, `peak_worldwide_desc`, `lifetime_rank_asc`, `year_desc`, `year_asc`. gross_band enum: `under_50m`, `50_100m`, `100_250m`, `250_500m`, `500m_1b`, `over_1b`.",
- "operationId": "datasets-boxofficemojo-search",
+ "description": "Returns nearby stores for a location from the Android mobile guest experience: store ID, name, cover image and tags, plus rating, price range, delivery fee and ETA when the upstream feed surface reports them. Those metric fields are omitted rather than estimated when it does not, so treat their absence as \"not reported\". No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-feed",
"parameters": [
{
- "description": "Full-text query over title and taxonomy names, max 256 characters",
+ "description": "Consumer latitude",
"in": "query",
- "name": "q",
- "type": "string"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Exact title id (IMDb tt… id used by Box Office Mojo), max 32 characters",
+ "description": "Consumer longitude",
"in": "query",
- "name": "title_id",
- "type": "string"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
},
{
- "description": "Year that must appear in years_active",
+ "description": "Number of stores to skip",
"in": "query",
- "name": "year",
- "type": "integer"
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
},
{
- "description": "Primary lifetime chart year",
+ "description": "Max stores to return",
"in": "query",
- "name": "lifetime_year",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/doordash.feedResponseDoc"
+ }
},
- {
- "description": "Gross band enum: under_50m, 50_100m, 100_250m, 250_500m, 500m_1b, over_1b",
- "enum": [
- "under_50m",
- "50_100m",
- "100_250m",
- "250_500m",
- "500m_1b",
- "over_1b"
- ],
- "in": "query",
- "name": "gross_band",
- "type": "string"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Franchise name filter, max 128 characters",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get DoorDash store discovery feed",
+ "tags": [
+ "DoorDash"
+ ]
+ }
+ },
+ "/doordash/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches the Android mobile guest catalog for pickup restaurants near a location and supports optional result filters. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-search",
+ "parameters": [
+ {
+ "description": "Restaurant, cuisine, or dish query",
"in": "query",
- "name": "franchise",
- "type": "string"
+ "name": "query",
+ "required": true,
+ "type": "string",
+ "x-example": "pizza"
},
{
- "description": "Brand name filter, max 128 characters",
+ "description": "Consumer latitude",
"in": "query",
- "name": "brand",
- "type": "string"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Genre name filter, max 128 characters",
+ "description": "Consumer longitude",
"in": "query",
- "name": "genre",
- "type": "string"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
},
{
- "description": "Only titles in the lifetime worldwide top 1000 chart",
+ "description": "Exact cuisine or store tag, case-insensitive",
"in": "query",
- "name": "in_lifetime_top_1000",
- "type": "boolean"
+ "name": "tag",
+ "type": "string",
+ "x-example": "Pizza"
},
{
- "description": "Only titles with hydrated release groups and market grosses",
+ "description": "Keep only DashPass-eligible stores",
"in": "query",
- "name": "hydrated",
+ "name": "dashPassOnly",
"type": "boolean"
},
{
- "description": "Only titles with worldwide gross of at least $1B",
+ "description": "Keep only stores currently available ASAP",
"in": "query",
- "name": "is_billion_dollar",
+ "name": "asapOnly",
"type": "boolean"
},
{
- "description": "Minimum lifetime worldwide gross in whole USD dollars",
+ "description": "Keep only pickup-enabled stores",
"in": "query",
- "name": "min_worldwide",
- "type": "integer"
+ "name": "pickupOnly",
+ "type": "boolean"
},
{
- "description": "Maximum lifetime worldwide gross in whole USD dollars",
+ "description": "Maximum displayed distance in miles, from 0 to 100",
"in": "query",
- "name": "max_worldwide",
- "type": "integer"
+ "name": "maxDistanceMiles",
+ "type": "number",
+ "x-example": 5
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/doordash.searchResponseDoc"
+ }
},
- {
- "description": "Minimum lifetime domestic gross in whole USD dollars",
- "in": "query",
- "name": "min_domestic",
- "type": "integer"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Minimum foreign share of worldwide gross, 0 through 1",
- "in": "query",
- "name": "min_foreign_share",
- "type": "number"
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Maximum domestic share of worldwide gross, 0 through 1",
- "in": "query",
- "name": "max_domestic_share",
- "type": "number"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Search DoorDash pickup restaurants",
+ "tags": [
+ "DoorDash"
+ ]
+ }
+ },
+ "/doordash/search/autocomplete": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns pickup restaurant matches from the Android mobile guest search experience near a location. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-search-autocomplete",
+ "parameters": [
{
- "description": "Sort enum: relevance, worldwide_desc, domestic_desc, peak_worldwide_desc, lifetime_rank_asc, year_desc, year_asc",
- "enum": [
- "relevance",
- "worldwide_desc",
- "domestic_desc",
- "peak_worldwide_desc",
- "lifetime_rank_asc",
- "year_desc",
- "year_asc"
- ],
+ "description": "Partial restaurant, cuisine, or dish query",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "query",
+ "required": true,
+ "type": "string",
+ "x-example": "piz"
},
{
- "description": "Page number, defaults to 1",
+ "description": "Consumer latitude",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Consumer longitude",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
}
],
"produces": [
@@ -238295,7 +270764,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.boxOfficeMojoSearchResponseDoc"
+ "$ref": "#/definitions/doordash.searchResponseDoc"
}
},
"400": {
@@ -238304,14 +270773,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -238322,38 +270791,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Box Office Mojo dataset",
+ "summary": "Get DoorDash pickup search suggestions",
"tags": [
- "Datasets"
+ "DoorDash"
]
}
},
- "/datasets/chrome-extensions/changes": {
+ "/doordash/search/filters": {
"get": {
- "description": "Returns recent change observations. Change type enum: `users`, `rating`, `rating_count`, `version`, `developer`, `permissions`, `privacy`, `status`.",
- "operationId": "datasets-chrome-extensions-changes",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the cuisines and filter values supported by the Android mobile guest search experience for a location. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-search-filters",
"parameters": [
{
- "description": "Change type enum: users, rating, rating_count, version, developer, permissions, privacy, status",
- "enum": [
- "users",
- "rating",
- "rating_count",
- "version",
- "developer",
- "permissions",
- "privacy",
- "status"
- ],
+ "description": "Consumer latitude",
"in": "query",
- "name": "change_type",
- "type": "string"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Maximum observations, default 100, max 500",
+ "description": "Consumer longitude",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
}
],
"produces": [
@@ -238363,7 +270829,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.chromeExtensionChangesResponseDoc"
+ "$ref": "#/definitions/doordash.searchFiltersResponseDoc"
}
},
"400": {
@@ -238372,14 +270838,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -238390,140 +270856,78 @@
"ApiKeyAuth": []
}
],
- "summary": "Get recent Chrome Web Store item changes",
+ "summary": "Get DoorDash search filter options",
"tags": [
- "Datasets"
+ "DoorDash"
]
}
},
- "/datasets/chrome-extensions/facets": {
+ "/doordash/search/items": {
"get": {
- "description": "Returns aggregation buckets. Facet enum: `item_type`, `category`, `developer`, `developer_email`, `manifest_version`, `permission`, `status`, `collects_data`, `has_broad_host_access`. Item type enum: `extension`, `theme`, `app`, `unknown`. Search sort, status and manifest-version enums match the search endpoint.",
- "operationId": "datasets-chrome-extensions-facets",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches menu items across nearby merchants from the Android mobile guest experience. Nearby candidate stores are selected first, then their menus are read and every item whose name or description matches the query is returned with its parent store. At most five proximity-ranked stores are inspected per request, and a store whose menu cannot be read is skipped, so results are best-effort across that candidate set. An empty result array means no candidate store menu matched, not that no nearby merchant sells the item. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-search-items",
"parameters": [
{
- "description": "Facet enum: item_type, category, developer, developer_email, manifest_version, permission, status, collects_data, has_broad_host_access",
- "enum": [
- "item_type",
- "category",
- "developer",
- "developer_email",
- "manifest_version",
- "permission",
- "status",
- "collects_data",
- "has_broad_host_access"
- ],
+ "description": "Dish or item search text",
"in": "query",
- "name": "facet",
+ "name": "query",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Item type enum: extension, theme, app, unknown",
- "enum": [
- "extension",
- "theme",
- "app",
- "unknown"
- ],
- "in": "query",
- "name": "item_type",
- "type": "string"
- },
- {
- "description": "Exact category",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact developer",
- "in": "query",
- "name": "developer",
- "type": "string"
- },
- {
- "description": "Exact developer email",
- "in": "query",
- "name": "developer_email",
- "type": "string"
- },
- {
- "description": "Exact permission",
- "in": "query",
- "name": "permission",
- "type": "string"
- },
- {
- "description": "Status enum: active, removed",
- "enum": [
- "active",
- "removed"
- ],
- "in": "query",
- "name": "status",
- "type": "string"
+ "type": "string",
+ "x-example": "pizza"
},
{
- "description": "Manifest version enum: 2, 3",
- "enum": [
- 2,
- 3
- ],
+ "description": "Cuisine or store tag used to narrow candidate stores",
"in": "query",
- "name": "manifest_version",
- "type": "integer"
+ "name": "tag",
+ "type": "string",
+ "x-example": "Pizza"
},
{
- "description": "Data-collection filter",
+ "description": "Keep only DashPass-eligible stores",
"in": "query",
- "name": "collects_data",
- "type": "boolean"
+ "name": "dashPassOnly",
+ "type": "boolean",
+ "x-example": false
},
{
- "description": "Broad-host-access filter",
+ "description": "Keep only stores currently available ASAP",
"in": "query",
- "name": "has_broad_host_access",
- "type": "boolean"
+ "name": "asapOnly",
+ "type": "boolean",
+ "x-example": false
},
{
- "description": "Minimum users",
+ "description": "Keep only pickup-enabled stores",
"in": "query",
- "name": "min_users",
- "type": "integer"
+ "name": "pickupOnly",
+ "type": "boolean",
+ "x-example": false
},
{
- "description": "Minimum rating",
+ "description": "Maximum displayed distance in miles",
"in": "query",
- "name": "min_rating",
- "type": "number"
+ "name": "maxDistanceMiles",
+ "type": "number",
+ "x-example": 5
},
{
- "description": "Minimum rating count",
+ "description": "Consumer latitude",
"in": "query",
- "name": "min_rating_count",
- "type": "integer"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Sort enum: relevance, users_desc, rating_desc, reviews_desc, updated_desc, trending_desc",
- "enum": [
- "relevance",
- "users_desc",
- "rating_desc",
- "reviews_desc",
- "updated_desc",
- "trending_desc"
- ],
+ "description": "Consumer longitude",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
}
],
"produces": [
@@ -238533,7 +270937,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.chromeExtensionFacetResponseDoc"
+ "$ref": "#/definitions/doordash.searchItemsResponseDoc"
}
},
"400": {
@@ -238542,14 +270946,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -238560,41 +270964,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Chrome Web Store dataset",
+ "summary": "Search DoorDash dishes and items",
"tags": [
- "Datasets"
+ "DoorDash"
]
}
},
- "/datasets/chrome-extensions/history/{id}": {
+ "/doordash/store/{store_id}": {
"get": {
- "description": "Returns chronological change-only observations for a Chrome Web Store item.",
- "operationId": "datasets-chrome-extensions-history",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns location-aware DoorDash store metadata through the Android mobile guest flow. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-store",
"parameters": [
{
- "description": "Chrome Web Store item id",
+ "description": "Numeric DoorDash store ID",
"in": "path",
- "name": "id",
+ "name": "store_id",
"required": true,
- "type": "string"
- },
- {
- "description": "Inclusive start date, YYYY-MM-DD",
- "in": "query",
- "name": "from",
- "type": "string"
+ "type": "string",
+ "x-example": "26282644"
},
{
- "description": "Inclusive end date, YYYY-MM-DD",
+ "description": "Delivery latitude",
"in": "query",
- "name": "to",
- "type": "string"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Maximum points, default 365, max 1000",
+ "description": "Delivery longitude",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
}
],
"produces": [
@@ -238604,7 +271010,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.chromeExtensionHistoryResponseDoc"
+ "$ref": "#/definitions/doordash.storeResponseDoc"
}
},
"400": {
@@ -238613,8 +271019,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -238624,6 +271030,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -238631,23 +271043,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chrome Web Store item history",
+ "summary": "Get a DoorDash store",
"tags": [
- "Datasets"
+ "DoorDash"
]
}
},
- "/datasets/chrome-extensions/items/{id}": {
+ "/doordash/store/{store_id}/fulfillment": {
"get": {
- "description": "Returns one stored extension, theme or legacy app snapshot by its 32-character Chrome Web Store id.",
- "operationId": "datasets-chrome-extensions-item",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns store fulfillment methods, delivery fee info, and scheduling details from the Android mobile guest experience. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-store-fulfillment",
"parameters": [
{
- "description": "Chrome Web Store item id",
+ "description": "Numeric DoorDash store ID",
"in": "path",
- "name": "id",
+ "name": "store_id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "26282644"
+ },
+ {
+ "description": "Delivery latitude",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
+ },
+ {
+ "description": "Delivery longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
}
],
"produces": [
@@ -238657,7 +271089,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.chromeExtensionItemResponseDoc"
+ "$ref": "#/definitions/doordash.storeFulfillmentResponseDoc"
}
},
"400": {
@@ -238672,14 +271104,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -238690,33 +271122,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Chrome Web Store dataset item",
+ "summary": "Get DoorDash store fulfillment details",
"tags": [
- "Datasets"
+ "DoorDash"
]
}
},
- "/datasets/chrome-extensions/metrics": {
+ "/doordash/store/{store_id}/info": {
"get": {
- "description": "Returns chart-ready coverage, adoption, rating, permission, privacy and recent-change aggregates for the stored Chrome Web Store dataset. Days enum: `7`, `30`, `90`.",
- "operationId": "datasets-chrome-extensions-metrics",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a lightweight store info card (map coordinates, address, phone number) from the Android mobile guest experience. This is a distinct upstream contract from the full store endpoint and reliably includes address and coordinates. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-store-info",
"parameters": [
{
- "description": "Recent-change window enum: 7, 30, 90; default 30",
- "enum": [
- 7,
- 30,
- 90
- ],
+ "description": "Numeric DoorDash store ID",
+ "in": "path",
+ "name": "store_id",
+ "required": true,
+ "type": "string",
+ "x-example": "26282644"
+ },
+ {
+ "description": "Delivery latitude",
"in": "query",
- "name": "days",
- "type": "integer"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Top category and permission buckets, default 10, min 5, max 25",
+ "description": "Delivery longitude",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
}
],
"produces": [
@@ -238726,7 +271168,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.chromeExtensionMetricsResponseDoc"
+ "$ref": "#/definitions/doordash.storeInfoResponseDoc"
}
},
"400": {
@@ -238735,8 +271177,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -238746,6 +271188,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -238753,134 +271201,51 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Chrome Web Store dataset metrics",
+ "summary": "Get DoorDash store contact info",
"tags": [
- "Datasets"
+ "DoorDash"
]
}
},
- "/datasets/chrome-extensions/search": {
+ "/doordash/store/{store_id}/item/{item_id}": {
"get": {
- "description": "Searches stored Chrome Web Store item snapshots. Item type enum: `extension`, `theme`, `app`, `unknown`. Sort enum: `relevance`, `users_desc`, `rating_desc`, `reviews_desc`, `updated_desc`, `trending_desc`. Status enum: `active`, `removed`. Manifest version enum: `2`, `3`.",
- "operationId": "datasets-chrome-extensions-search",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns details for a specific menu item from the Android mobile guest experience. The item is matched by name, case-insensitively, against the store menu: DoorDash's anonymous menu surface exposes no stable per-item identifier, so use a name returned by the store menu or item search. A name that is not on the menu returns 404; no substitute item is returned. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-store-item",
"parameters": [
{
- "description": "Full-text query, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Item type enum: extension, theme, app, unknown",
- "enum": [
- "extension",
- "theme",
- "app",
- "unknown"
- ],
- "in": "query",
- "name": "item_type",
- "type": "string"
- },
- {
- "description": "Exact Chrome Web Store category",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact displayed developer name",
- "in": "query",
- "name": "developer",
- "type": "string"
- },
- {
- "description": "Exact disclosed developer email",
- "in": "query",
- "name": "developer_email",
- "type": "string"
- },
- {
- "description": "Exact declared permission",
- "in": "query",
- "name": "permission",
- "type": "string"
- },
- {
- "description": "Status enum: active, removed",
- "enum": [
- "active",
- "removed"
- ],
- "in": "query",
- "name": "status",
- "type": "string"
- },
- {
- "description": "Manifest version enum: 2, 3",
- "enum": [
- 2,
- 3
- ],
- "in": "query",
- "name": "manifest_version",
- "type": "integer"
- },
- {
- "description": "Filter by public data-collection disclosure",
- "in": "query",
- "name": "collects_data",
- "type": "boolean"
- },
- {
- "description": "Filter by broad host access",
- "in": "query",
- "name": "has_broad_host_access",
- "type": "boolean"
- },
- {
- "description": "Minimum displayed user count",
- "in": "query",
- "name": "min_users",
- "type": "integer"
- },
- {
- "description": "Minimum rating, 0 through 5",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum rating count",
- "in": "query",
- "name": "min_rating_count",
- "type": "integer"
+ "description": "Numeric DoorDash store ID",
+ "in": "path",
+ "name": "store_id",
+ "required": true,
+ "type": "string",
+ "x-example": "26282644"
},
{
- "description": "Sort enum: relevance, users_desc, rating_desc, reviews_desc, updated_desc, trending_desc",
- "enum": [
- "relevance",
- "users_desc",
- "rating_desc",
- "reviews_desc",
- "updated_desc",
- "trending_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "description": "Menu item name, matched case-insensitively",
+ "in": "path",
+ "name": "item_id",
+ "required": true,
+ "type": "string",
+ "x-example": "Fluffy Pancakes"
},
{
- "description": "Page number, default 1",
+ "description": "Delivery latitude",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Page size, default 20, max 100",
+ "description": "Delivery longitude",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
}
],
"produces": [
@@ -238890,7 +271255,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.chromeExtensionsSearchResponseDoc"
+ "$ref": "#/definitions/doordash.storeItemResponseDoc"
}
},
"400": {
@@ -238899,8 +271264,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -238910,6 +271275,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -238917,120 +271288,122 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Chrome Web Store dataset",
+ "summary": "Get DoorDash menu item details",
"tags": [
- "Datasets"
+ "DoorDash"
]
}
},
- "/datasets/chrome-extensions/trending": {
+ "/doordash/store/{store_id}/menu": {
"get": {
- "description": "Returns stored Chrome Web Store items ranked by the latest observed user and rating-count movement. Filters match the search endpoint; sort is fixed to `trending_desc`.",
- "operationId": "datasets-chrome-extensions-trending",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the location-aware DoorDash mobile menu, grouped into sections with item names, descriptions, and displayed prices. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-store-menu",
"parameters": [
{
- "description": "Full-text query",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Item type enum: extension, theme, app, unknown",
- "enum": [
- "extension",
- "theme",
- "app",
- "unknown"
- ],
- "in": "query",
- "name": "item_type",
- "type": "string"
- },
- {
- "description": "Exact category",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact developer",
- "in": "query",
- "name": "developer",
- "type": "string"
- },
- {
- "description": "Exact developer email",
- "in": "query",
- "name": "developer_email",
- "type": "string"
- },
- {
- "description": "Exact permission",
- "in": "query",
- "name": "permission",
- "type": "string"
+ "description": "Numeric DoorDash store ID",
+ "in": "path",
+ "name": "store_id",
+ "required": true,
+ "type": "string",
+ "x-example": "26282644"
},
{
- "description": "Status enum: active, removed",
- "enum": [
- "active",
- "removed"
- ],
+ "description": "Delivery latitude",
"in": "query",
- "name": "status",
- "type": "string"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Manifest version enum: 2, 3",
- "enum": [
- 2,
- 3
- ],
+ "description": "Delivery longitude",
"in": "query",
- "name": "manifest_version",
- "type": "integer"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/doordash.menuResponseDoc"
+ }
},
- {
- "description": "Data-collection filter",
- "in": "query",
- "name": "collects_data",
- "type": "boolean"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Broad-host-access filter",
- "in": "query",
- "name": "has_broad_host_access",
- "type": "boolean"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Minimum users",
- "in": "query",
- "name": "min_users",
- "type": "integer"
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Minimum rating",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a DoorDash store menu",
+ "tags": [
+ "DoorDash"
+ ]
+ }
+ },
+ "/doordash/store/{store_id}/reviews": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns store ratings and customer reviews from the Android mobile guest experience for a location. No DoorDash account or caller-supplied token is required.",
+ "operationId": "doordash-store-reviews",
+ "parameters": [
{
- "description": "Minimum rating count",
- "in": "query",
- "name": "min_rating_count",
- "type": "integer"
+ "description": "Numeric DoorDash store ID",
+ "in": "path",
+ "name": "store_id",
+ "required": true,
+ "type": "string",
+ "x-example": "26282644"
},
{
- "description": "Page number",
+ "description": "Delivery latitude",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 37.7825
},
{
- "description": "Page size, max 100",
+ "description": "Delivery longitude",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -122.461
}
],
"produces": [
@@ -239040,7 +271413,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.chromeExtensionsSearchResponseDoc"
+ "$ref": "#/definitions/doordash.storeReviewsResponseDoc"
}
},
"400": {
@@ -239049,8 +271422,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -239060,6 +271433,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -239067,98 +271446,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get trending Chrome Web Store items",
+ "summary": "Get DoorDash store reviews",
"tags": [
- "Datasets"
+ "DoorDash"
]
}
},
- "/datasets/creators/search": {
+ "/draftkings/sportsbook/event": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches TikTok creators stored in a search index (one document per creator), with follower counts, verified status, niche, and engagement. Deleted and private accounts are excluded by default; set `include_inactive=true` to include them for historical lookups. Sort enum: `followers_desc`, `engagement_desc`, `engagement_qualified_desc`, `likes_desc`, `relevance`. Coverage note: `followers_desc`, `likes_desc`, and `relevance` are backed by profile fields present across the full dataset; the post-level engagement metrics (`engagement_rate`, `avg_views`, and the nested `post_stats` object) and the `engagement_desc`/`engagement_qualified_desc` sorts are currently populated for a growing subset of creators, prioritizing the highest-reach accounts. Creators without these metrics are still returned but sort last under `engagement_desc` and omit those fields; `engagement_qualified_desc` excludes them outright (they cannot clear its floors). `engagement_desc` ranks by raw `engagement_rate` with no eligibility floor — it surfaces a real stale-record + ratio-by-design trap: an account whose last real post was years ago can still carry an unrealistic rate computed from a handful of old posts. `engagement_qualified_desc` is the same metric restricted to creators with a recent post (`last_post_at` within 90 days), a minimum reach (`avg_views >= 10000`) and sample size (`post_stats.sampled_posts >= 10`), and a sanity ceiling (`engagement_rate <= 50%`) — use this, not the raw sort, for a \"best engagement\" leaderboard. Sound fields: `post_stats.top_sounds` holds only a creator's FIVE most-used sounds from the sampled posts, ranked by use count with ties broken by lowest `music_id`, so it is a top-5 view and not the creator's full sound list; `post_stats.distinct_sounds` gives the true number of different sounds the sample used. Use each sound's `original` boolean to tell TikTok-generated original audio from catalogue tracks - do NOT infer it from the title, because TikTok localizes the original-audio label (`sonido original`, `som original`, `оригинальный звук`, and at least fifteen more), so a title match silently reclassifies original audio as named tracks.",
- "operationId": "datasets-creators-search",
+ "description": "Returns one event's metadata (league id, sport id, teams, status, start time) from DraftKings' credential-free public JSON. `event_id` is a numeric DraftKings event identifier (find it from an event's DraftKings Sportsbook page, or from the `id` field of an event returned by /draftkings/sportsbook/odds). The returned `league_id` is accepted by /draftkings/sportsbook/odds and /draftkings/sportsbook/futures. This endpoint does not include betting markets/odds.",
+ "operationId": "draftkings-event",
"parameters": [
{
- "description": "Full-text query over handle, nickname and bio, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact handle lookup (case-insensitive), e.g. khaby.lame; returns the single creator with that exact @handle",
- "in": "query",
- "name": "handle",
- "type": "string"
- },
- {
- "description": "Exact content-niche filter, max 128 characters",
- "in": "query",
- "name": "niche",
- "type": "string"
- },
- {
- "description": "Exact creator country/region filter, max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Filter by verified badge; true keeps only verified creators",
- "in": "query",
- "name": "verified",
- "type": "boolean"
- },
- {
- "description": "Minimum follower count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
- },
- {
- "description": "Filter by contact-email presence; true keeps only creators with an email",
- "in": "query",
- "name": "has_email",
- "type": "boolean"
- },
- {
- "description": "Return the stored contact email instead of a blanked value. Off by default for everyone, and honoured only for entitled (non-Free) API keys",
- "in": "query",
- "name": "include_email",
- "type": "boolean"
- },
- {
- "description": "Include deleted/private accounts; defaults to false (only live accounts returned)",
- "in": "query",
- "name": "include_inactive",
- "type": "boolean"
- },
- {
- "description": "Sort enum: followers_desc, engagement_desc, engagement_qualified_desc, likes_desc, relevance. engagement_desc ranks by raw post-level engagement rate, currently populated for a subset of creators (highest-reach first); creators without it sort last. engagement_qualified_desc is the same metric restricted to creators with a recent post (<=90d), a minimum reach (avg_views>=10000) and sample size (>=10 posts), and a sanity ceiling (<=50%) -- use this, not the raw sort, for a 'best engagement' leaderboard",
- "enum": [
- "followers_desc",
- "engagement_desc",
- "engagement_qualified_desc",
- "likes_desc",
- "relevance"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Numeric DraftKings event id",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "event_id",
+ "required": true,
+ "type": "string",
+ "x-example": "34240140"
}
],
"produces": [
@@ -239168,7 +271476,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.creatorsSearchResponseDoc"
+ "$ref": "#/definitions/draftkings.eventResponseDoc"
}
},
"400": {
@@ -239177,14 +271485,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -239195,143 +271509,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the TikTok creators dataset",
+ "summary": "DraftKings Sportsbook event",
"tags": [
- "Datasets"
+ "DraftKings Sportsbook"
]
}
},
- "/datasets/facebook-pages/facets": {
+ "/draftkings/sportsbook/event-context": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns terms aggregation counts for the Facebook Pages dataset. Facet enum: `category`, `discovery_source`.",
- "operationId": "datasets-facebook-pages-facets",
+ "description": "Returns public sport, league, and event navigation identifiers for a numeric DraftKings event id. Use it to associate an event with DraftKings Sportsbook's public sport and league navigation.",
+ "operationId": "draftkings-event-context",
"parameters": [
{
- "description": "Facet values per response, default 50, maximum 200",
- "in": "query",
- "name": "limit",
- "type": "integer"
- },
- {
- "description": "count_desc returns most common values; value_asc pages through all values",
- "enum": [
- "count_desc",
- "value_asc"
- ],
- "in": "query",
- "name": "order",
- "type": "string"
- },
- {
- "description": "Continuation from next_after; requires order=value_asc and unchanged filters",
- "in": "query",
- "name": "after",
- "type": "string"
- },
- {
- "description": "Facet enum: category, discovery_source",
- "enum": [
- "category",
- "discovery_source"
- ],
+ "description": "Numeric DraftKings event id",
"in": "query",
- "name": "facet",
+ "name": "event_id",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over title and address, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact Facebook Page id filter, max 128 characters",
- "in": "query",
- "name": "page_id",
- "type": "string"
- },
- {
- "description": "Exact Page username/identifier filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "identifier",
- "type": "string"
- },
- {
- "description": "Exact Page category filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact filter for how the Page was discovered (e.g. business_search, warc_domain_scan, wikidata), max 128 characters",
- "in": "query",
- "name": "discovery_source",
- "type": "string"
- },
- {
- "description": "Filter by a linked website",
- "in": "query",
- "name": "has_website",
- "type": "boolean"
- },
- {
- "description": "Filter by a public contact email",
- "in": "query",
- "name": "has_email",
- "type": "boolean"
- },
- {
- "description": "Filter by at least one public phone number",
- "in": "query",
- "name": "has_phone",
- "type": "boolean"
- },
- {
- "description": "Filter by a public WhatsApp contact",
- "in": "query",
- "name": "has_whatsapp",
- "type": "boolean"
- },
- {
- "description": "Minimum Page like count",
- "in": "query",
- "name": "min_likes",
- "type": "integer"
- },
- {
- "description": "Maximum Page like count",
- "in": "query",
- "name": "max_likes",
- "type": "integer"
- },
- {
- "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "hydrated_after",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "hydrated_before",
- "type": "string"
- },
- {
- "description": "Sort enum: relevance, likes_desc, likes_asc, hydrated_at_desc, hydrated_at_asc",
- "enum": [
- "relevance",
- "likes_desc",
- "likes_asc",
- "hydrated_at_desc",
- "hydrated_at_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "type": "string",
+ "x-example": "34522271"
}
],
"produces": [
@@ -239341,7 +271536,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.facebookPagesFacetResponseDoc"
+ "$ref": "#/definitions/draftkings.eventContextResponseDoc"
}
},
"400": {
@@ -239350,14 +271545,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -239368,26 +271569,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Facebook Pages dataset",
+ "summary": "DraftKings Sportsbook event context",
"tags": [
- "Datasets"
+ "DraftKings Sportsbook"
]
}
},
- "/datasets/facebook-pages/items/{page_id}": {
+ "/draftkings/sportsbook/event-markets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Facebook Page record by page id from dataset id enum value `facebook-pages`.",
- "operationId": "datasets-facebook-pages-item",
+ "description": "Returns one event's betting markets and selections for a specific market category, from DraftKings' credential-free public JSON. `event_id` is a numeric DraftKings event identifier (find it from the `id` field of an event returned by /draftkings/sportsbook/odds). `subcategory_id` selects the market category (e.g. game lines, a player-prop category, an alternate-line category) -- find one from the `subcategory_id` field on a market returned by /draftkings/sportsbook/odds, or from a DraftKings Sportsbook event page's own network traffic. An empty `markets` list is a valid response when the category has no markets currently posted for this event.",
+ "operationId": "draftkings-event-markets",
"parameters": [
{
- "description": "Facebook Page id, max 128 characters",
- "in": "path",
- "name": "page_id",
+ "description": "Numeric DraftKings event id",
+ "in": "query",
+ "name": "event_id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "34497667"
+ },
+ {
+ "description": "Numeric DraftKings market subcategory id",
+ "in": "query",
+ "name": "subcategory_id",
+ "required": true,
+ "type": "string",
+ "x-example": "6354"
}
],
"produces": [
@@ -239397,7 +271607,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.facebookPageResponseDoc"
+ "$ref": "#/definitions/draftkings.eventMarketsResponseDoc"
}
},
"400": {
@@ -239418,8 +271628,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -239430,124 +271640,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Facebook Page from the dataset",
+ "summary": "DraftKings Sportsbook event markets",
"tags": [
- "Datasets"
+ "DraftKings Sportsbook"
]
}
},
- "/datasets/facebook-pages/search": {
+ "/draftkings/sportsbook/featured-leagues": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches public Facebook Page contact records stored in a search index — website, email, phone, WhatsApp, category and like count, discovered through business-search enumeration, domain-scoped scans, and Wikidata seeding, then hydrated from each Page's public About tab. Sort enum: `relevance`, `likes_desc`, `likes_asc`, `hydrated_at_desc`, `hydrated_at_asc`.",
- "operationId": "datasets-facebook-pages-search",
- "parameters": [
- {
- "description": "Full-text query over title and address, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact Facebook Page id filter, max 128 characters",
- "in": "query",
- "name": "page_id",
- "type": "string"
- },
- {
- "description": "Exact Page username/identifier filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "identifier",
- "type": "string"
- },
- {
- "description": "Exact Page category filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact filter for how the Page was discovered (e.g. business_search, warc_domain_scan, wikidata), max 128 characters",
- "in": "query",
- "name": "discovery_source",
- "type": "string"
- },
- {
- "description": "Filter by a linked website",
- "in": "query",
- "name": "has_website",
- "type": "boolean"
- },
- {
- "description": "Filter by a public contact email",
- "in": "query",
- "name": "has_email",
- "type": "boolean"
- },
- {
- "description": "Filter by at least one public phone number",
- "in": "query",
- "name": "has_phone",
- "type": "boolean"
- },
- {
- "description": "Filter by a public WhatsApp contact",
- "in": "query",
- "name": "has_whatsapp",
- "type": "boolean"
- },
- {
- "description": "Minimum Page like count",
- "in": "query",
- "name": "min_likes",
- "type": "integer"
- },
- {
- "description": "Maximum Page like count",
- "in": "query",
- "name": "max_likes",
- "type": "integer"
- },
- {
- "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "hydrated_after",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "hydrated_before",
- "type": "string"
- },
- {
- "description": "Sort enum: relevance, likes_desc, likes_asc, hydrated_at_desc, hydrated_at_asc",
- "enum": [
- "relevance",
- "likes_desc",
- "likes_asc",
- "hydrated_at_desc",
- "hydrated_at_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
- }
- ],
+ "description": "Returns public DraftKings Sportsbook leagues currently marked as featured in its sport navigation. Each item includes its numeric `id`, capability `tags`, live-offer status, and upstream featured ordering. Use the `id` as `league_id` with /draftkings/sportsbook/odds and /draftkings/sportsbook/futures.",
+ "operationId": "draftkings-featured-leagues",
"produces": [
"application/json"
],
@@ -239555,13 +271660,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.facebookPagesSearchResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/draftkings.featuredLeaguesResponseDoc"
}
},
"429": {
@@ -239570,8 +271669,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -239582,228 +271681,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Facebook Pages dataset",
+ "summary": "DraftKings Sportsbook featured leagues",
"tags": [
- "Datasets"
+ "DraftKings Sportsbook"
]
}
},
- "/datasets/github-users/facets": {
+ "/draftkings/sportsbook/futures": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the GitHub users dataset. Facet enum: `influence_tier`, `type`, `country`, `country_code`, `state`, `city`, `domains`, `company`, `reachable`, `has_email`, `has_twitter`, `has_blog`, `active_90d`, `hireable`, `is_org`, `is_bot`, `is_suspected_automation`. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`. Suspected-automation records are excluded by default unless is_suspected_automation is set.",
- "operationId": "datasets-github-users-facets",
+ "description": "Returns league-level futures markets and selections for a specific DraftKings market category, from DraftKings' credential-free public JSON. `league_id` is a numeric DraftKings league identifier and `subcategory_id` is a numeric futures category identifier. An empty `events` list is a valid response when the category has no markets currently posted for that league.",
+ "operationId": "draftkings-futures",
"parameters": [
{
- "description": "Facet enum: influence_tier, type, country, country_code, state, city, domains, company, reachable, has_email, has_twitter, has_blog, active_90d, hireable, is_org, is_bot, is_suspected_automation",
- "enum": [
- "influence_tier",
- "type",
- "country",
- "country_code",
- "state",
- "city",
- "domains",
- "company",
- "reachable",
- "has_email",
- "has_twitter",
- "has_blog",
- "active_90d",
- "hireable",
- "is_org",
- "is_bot",
- "is_suspected_automation"
- ],
+ "description": "Numeric DraftKings league id",
"in": "query",
- "name": "facet",
+ "name": "league_id",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over login, name, company, bio and location, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact login filter, max 128 characters",
- "in": "query",
- "name": "login",
- "type": "string"
- },
- {
- "description": "Exact normalized-company filter, max 128 characters",
- "in": "query",
- "name": "company",
- "type": "string"
- },
- {
- "description": "Follower-tier enum: nano, micro, mid, macro, mega",
- "enum": [
- "nano",
- "micro",
- "mid",
- "macro",
- "mega"
- ],
- "in": "query",
- "name": "influence_tier",
- "type": "string"
- },
- {
- "description": "Exact geocoded country filter, max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact ISO country-code filter, max 128 characters",
- "in": "query",
- "name": "country_code",
- "type": "string"
- },
- {
- "description": "Exact geocoded state filter, max 128 characters",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact geocoded city filter, max 128 characters",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Interest-domain tag filter, max 128 characters",
- "in": "query",
- "name": "domain",
- "type": "string"
- },
- {
- "description": "Filter by public email presence",
- "in": "query",
- "name": "has_email",
- "type": "boolean"
- },
- {
- "description": "Filter by public Twitter/X handle presence",
- "in": "query",
- "name": "has_twitter",
- "type": "boolean"
- },
- {
- "description": "Filter by public blog/website presence",
- "in": "query",
- "name": "has_blog",
- "type": "boolean"
- },
- {
- "description": "Filter by any public contact channel",
- "in": "query",
- "name": "reachable",
- "type": "boolean"
- },
- {
- "description": "Filter by activity within the last 90 days",
- "in": "query",
- "name": "active_90d",
- "type": "boolean"
- },
- {
- "description": "Filter by the GitHub available-for-hire flag",
- "in": "query",
- "name": "hireable",
- "type": "boolean"
- },
- {
- "description": "Organization filter",
- "in": "query",
- "name": "is_org",
- "type": "boolean"
- },
- {
- "description": "Bot filter",
- "in": "query",
- "name": "is_bot",
- "type": "boolean"
- },
- {
- "description": "Suspected automation filter; omitted these are hidden by default",
- "in": "query",
- "name": "is_suspected_automation",
- "type": "boolean"
- },
- {
- "description": "Minimum follower count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
- },
- {
- "description": "Maximum follower count",
- "in": "query",
- "name": "max_followers",
- "type": "integer"
- },
- {
- "description": "Minimum public repository count",
- "in": "query",
- "name": "min_repos",
- "type": "integer"
- },
- {
- "description": "Minimum composite rank score",
- "in": "query",
- "name": "min_rank_score",
- "type": "integer"
- },
- {
- "description": "Minimum account age in years",
- "in": "query",
- "name": "min_account_age_years",
- "type": "number"
- },
- {
- "description": "Maximum account age in years",
- "in": "query",
- "name": "max_account_age_years",
- "type": "number"
- },
- {
- "description": "Latitude for radius filtering",
- "in": "query",
- "name": "lat",
- "type": "number"
- },
- {
- "description": "Longitude for radius filtering",
- "in": "query",
- "name": "lon",
- "type": "number"
- },
- {
- "description": "Radius in meters, 1 through 50000; requires lat and lon when supplied",
- "in": "query",
- "name": "radius_m",
- "type": "integer"
+ "type": "string",
+ "x-example": "84240"
},
{
- "description": "Sort enum: relevance, rank_score_desc, followers_desc, account_age_desc, account_age_asc, distance_asc",
- "enum": [
- "relevance",
- "rank_score_desc",
- "followers_desc",
- "account_age_desc",
- "account_age_asc",
- "distance_asc"
- ],
+ "description": "Numeric DraftKings futures market subcategory id",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "subcategory_id",
+ "required": true,
+ "type": "string",
+ "x-example": "17279"
}
],
"produces": [
@@ -239813,7 +271719,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.githubUsersFacetResponseDoc"
+ "$ref": "#/definitions/draftkings.futuresResponseDoc"
}
},
"400": {
@@ -239822,14 +271728,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -239840,26 +271752,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the GitHub users dataset",
+ "summary": "DraftKings Sportsbook futures",
"tags": [
- "Datasets"
+ "DraftKings Sportsbook"
]
}
},
- "/datasets/github-users/items/{login}": {
+ "/draftkings/sportsbook/league-events": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one enriched GitHub user record by login from dataset id enum value `github-users`.",
- "operationId": "datasets-github-users-item",
+ "description": "Returns a DraftKings Sportsbook league's current public event directory, including event IDs, teams or other participants, start times, status, and public availability tags. Supply a numeric `league_id` from /draftkings/sportsbook/leagues, /draftkings/sportsbook/quick-links, /draftkings/sportsbook/featured-leagues, or /draftkings/sportsbook/event. This endpoint does not include betting markets or odds.",
+ "operationId": "draftkings-league-events",
"parameters": [
{
- "description": "GitHub login, max 128 characters",
- "in": "path",
- "name": "login",
+ "description": "Numeric DraftKings league id",
+ "in": "query",
+ "name": "league_id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "84240"
}
],
"produces": [
@@ -239869,7 +271782,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.githubUserResponseDoc"
+ "$ref": "#/definitions/draftkings.leagueEventsResponseDoc"
}
},
"400": {
@@ -239890,8 +271803,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -239902,77 +271815,109 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a GitHub user from the dataset",
+ "summary": "DraftKings Sportsbook league event directory",
"tags": [
- "Datasets"
+ "DraftKings Sportsbook"
]
}
},
- "/datasets/github-users/nearby": {
+ "/draftkings/sportsbook/leagues": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches enriched GitHub users near a coordinate, sorted by distance, in dataset id enum value `github-users`. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`.",
- "operationId": "datasets-github-users-nearby",
- "parameters": [
- {
- "description": "Latitude",
- "in": "query",
- "name": "lat",
- "required": true,
- "type": "number"
- },
- {
- "description": "Longitude",
- "in": "query",
- "name": "lon",
- "required": true,
- "type": "number"
- },
- {
- "description": "Radius in meters, max 50000",
- "in": "query",
- "name": "radius_m",
- "required": true,
- "type": "integer"
+ "description": "Returns DraftKings Sportsbook's current public sport and league directory. Each league `id` is accepted as `league_id` by /draftkings/sportsbook/odds and /draftkings/sportsbook/futures.",
+ "operationId": "draftkings-leagues",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/draftkings.leaguesResponseDoc"
+ }
},
- {
- "description": "Follower-tier enum: nano, micro, mid, macro, mega",
- "enum": [
- "nano",
- "micro",
- "mid",
- "macro",
- "mega"
- ],
- "in": "query",
- "name": "influence_tier",
- "type": "string"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Filter by any public contact channel",
- "in": "query",
- "name": "reachable",
- "type": "boolean"
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "DraftKings Sportsbook sports and leagues",
+ "tags": [
+ "DraftKings Sportsbook"
+ ]
+ }
+ },
+ "/draftkings/sportsbook/live": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the live events currently shown by DraftKings Sportsbook, including score state, period, primary markets, and market categories that can be used with /draftkings/sportsbook/event-markets. An empty `events` list is valid when DraftKings has no live events at request time.",
+ "operationId": "draftkings-live",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/draftkings.liveResponseDoc"
+ }
},
- {
- "description": "Minimum follower count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "DraftKings Sportsbook live events",
+ "tags": [
+ "DraftKings Sportsbook"
+ ]
+ }
+ },
+ "/draftkings/sportsbook/odds": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the primary betting markets (moneyline, spread, total) for every upcoming event in a DraftKings Sportsbook league, from DraftKings' credential-free public JSON. `league_id` is a numeric DraftKings league identifier (find it from a league's DraftKings Sportsbook page). An empty `events` list is a valid response when nothing is currently scheduled.",
+ "operationId": "draftkings-odds",
+ "parameters": [
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Numeric DraftKings league id",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "league_id",
+ "required": true,
+ "type": "string",
+ "x-example": "84240"
}
],
"produces": [
@@ -239982,7 +271927,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.githubUsersSearchResponseDoc"
+ "$ref": "#/definitions/draftkings.oddsResponseDoc"
}
},
"400": {
@@ -239991,14 +271936,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -240009,214 +271960,90 @@
"ApiKeyAuth": []
}
],
- "summary": "Search nearby GitHub users",
+ "summary": "DraftKings Sportsbook odds",
"tags": [
- "Datasets"
+ "DraftKings Sportsbook"
]
}
},
- "/datasets/github-users/search": {
+ "/draftkings/sportsbook/quick-links": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches enriched public GitHub user profiles stored in a search index. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`. Sort enum: `relevance`, `rank_score_desc`, `followers_desc`, `account_age_desc`, `account_age_asc`, `distance_asc`.",
- "operationId": "datasets-github-users-search",
- "parameters": [
- {
- "description": "Full-text query over login, name, company, bio and location, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact login filter, max 128 characters",
- "in": "query",
- "name": "login",
- "type": "string"
- },
- {
- "description": "Exact normalized-company filter, max 128 characters",
- "in": "query",
- "name": "company",
- "type": "string"
- },
- {
- "description": "Follower-tier enum: nano, micro, mid, macro, mega",
- "enum": [
- "nano",
- "micro",
- "mid",
- "macro",
- "mega"
- ],
- "in": "query",
- "name": "influence_tier",
- "type": "string"
- },
- {
- "description": "Exact geocoded country filter, max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact ISO country-code filter, max 128 characters",
- "in": "query",
- "name": "country_code",
- "type": "string"
- },
- {
- "description": "Exact geocoded state filter, max 128 characters",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact geocoded city filter, max 128 characters",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Interest-domain tag filter (e.g. ml-ai, web, devops), max 128 characters",
- "in": "query",
- "name": "domain",
- "type": "string"
- },
- {
- "description": "Filter by public email presence",
- "in": "query",
- "name": "has_email",
- "type": "boolean"
- },
- {
- "description": "Filter by public Twitter/X handle presence",
- "in": "query",
- "name": "has_twitter",
- "type": "boolean"
- },
- {
- "description": "Filter by public blog/website presence",
- "in": "query",
- "name": "has_blog",
- "type": "boolean"
- },
- {
- "description": "Filter by any public contact channel",
- "in": "query",
- "name": "reachable",
- "type": "boolean"
- },
- {
- "description": "Filter by activity within the last 90 days",
- "in": "query",
- "name": "active_90d",
- "type": "boolean"
- },
- {
- "description": "Filter by the GitHub available-for-hire flag",
- "in": "query",
- "name": "hireable",
- "type": "boolean"
- },
- {
- "description": "Organization filter (normally false; the crawl indexes individuals)",
- "in": "query",
- "name": "is_org",
- "type": "boolean"
- },
- {
- "description": "Bot filter (normally false; the crawl skips bots)",
- "in": "query",
- "name": "is_bot",
- "type": "boolean"
- },
- {
- "description": "Suspected automation (commit-farm/mass-repo bots); omitted these are hidden by default, pass true to isolate them",
- "in": "query",
- "name": "is_suspected_automation",
- "type": "boolean"
- },
- {
- "description": "Minimum follower count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
- },
- {
- "description": "Maximum follower count",
- "in": "query",
- "name": "max_followers",
- "type": "integer"
- },
- {
- "description": "Minimum public repository count",
- "in": "query",
- "name": "min_repos",
- "type": "integer"
- },
- {
- "description": "Minimum composite rank score",
- "in": "query",
- "name": "min_rank_score",
- "type": "integer"
- },
- {
- "description": "Minimum account age in years",
- "in": "query",
- "name": "min_account_age_years",
- "type": "number"
- },
- {
- "description": "Maximum account age in years",
- "in": "query",
- "name": "max_account_age_years",
- "type": "number"
+ "description": "Returns the ordered league shortcuts currently prioritized on DraftKings Sportsbook's public home page. Each item includes a numeric `league_id` accepted by /draftkings/sportsbook/odds and /draftkings/sportsbook/futures.",
+ "operationId": "draftkings-quick-links",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/draftkings.quickLinksResponseDoc"
+ }
},
- {
- "description": "Latitude for radius filtering or distance sort",
- "in": "query",
- "name": "lat",
- "type": "number"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Longitude for radius filtering or distance sort",
- "in": "query",
- "name": "lon",
- "type": "number"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "DraftKings Sportsbook quick links",
+ "tags": [
+ "DraftKings Sportsbook"
+ ]
+ }
+ },
+ "/draftkings/sportsbook/team": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns stable team metadata embedded in a public DraftKings Sportsbook team page. Supply `team_id`, `sport`, and `slug` from an item returned by /draftkings/sportsbook/teams. Allowed `sport` values: `football`, `hockey`, `basketball`, `baseball`.",
+ "operationId": "draftkings-team",
+ "parameters": [
{
- "description": "Radius in meters, 1 through 50000; requires lat and lon when supplied",
+ "description": "Numeric DraftKings team id",
"in": "query",
- "name": "radius_m",
- "type": "integer"
+ "name": "team_id",
+ "required": true,
+ "type": "string",
+ "x-example": "18454"
},
{
- "description": "Sort enum: relevance, rank_score_desc, followers_desc, account_age_desc, account_age_asc, distance_asc",
+ "description": "Sport: football, hockey, basketball, baseball",
"enum": [
- "relevance",
- "rank_score_desc",
- "followers_desc",
- "account_age_desc",
- "account_age_asc",
- "distance_asc"
+ "football",
+ "hockey",
+ "basketball",
+ "baseball"
],
"in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "name": "sport",
+ "required": true,
+ "type": "string",
+ "x-example": "football"
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Lowercase DraftKings team slug",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "arizona-cardinals"
}
],
"produces": [
@@ -240226,7 +272053,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.githubUsersSearchResponseDoc"
+ "$ref": "#/definitions/draftkings.teamResponseDoc"
}
},
"400": {
@@ -240235,14 +272062,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -240253,66 +272086,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the GitHub users dataset",
+ "summary": "DraftKings Sportsbook team",
"tags": [
- "Datasets"
+ "DraftKings Sportsbook"
]
}
},
- "/datasets/goodreads-authors/facets": {
+ "/draftkings/sportsbook/teams": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the Goodreads authors dataset. Facet enum: `genres`, `run_id`.",
- "operationId": "datasets-goodreads-authors-facets",
+ "description": "Returns the teams listed on DraftKings Sportsbook's public Teams page for one league. Allowed `league` values: `nfl`, `nhl`, `nba`, `cbb`, `mlb`, `cfb`.",
+ "operationId": "draftkings-teams",
"parameters": [
{
- "description": "Facet enum: genres, run_id",
+ "description": "League: nfl, nhl, nba, cbb, mlb, cfb",
"enum": [
- "genres",
- "run_id"
+ "nfl",
+ "nhl",
+ "nba",
+ "cbb",
+ "mlb",
+ "cfb"
],
"in": "query",
- "name": "facet",
+ "name": "league",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over name, about and genres, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact author name filter, max 128 characters",
- "in": "query",
- "name": "name",
- "type": "string"
- },
- {
- "description": "Exact genre filter, max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum average rating, 0 through 5",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum number of ratings",
- "in": "query",
- "name": "min_ratings_count",
- "type": "integer"
+ "type": "string",
+ "x-example": "nfl"
}
],
"produces": [
@@ -240322,7 +272124,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.goodreadsAuthorsFacetResponseDoc"
+ "$ref": "#/definitions/draftkings.teamsResponseDoc"
}
},
"400": {
@@ -240337,8 +272139,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -240349,26 +272151,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet Goodreads authors dataset",
+ "summary": "DraftKings Sportsbook league teams",
"tags": [
- "Datasets"
+ "DraftKings Sportsbook"
]
}
},
- "/datasets/goodreads-authors/items/{id}": {
+ "/duckduckgo/image": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled Goodreads author profile record by id from dataset id enum value `goodreads-authors`.",
- "operationId": "datasets-goodreads-authors-item",
+ "description": "Returns normalized DuckDuckGo image results for a query string: title, source page URL, image URL, thumbnail, dimensions, and hostname, plus page-based pagination. Results are fetched from DuckDuckGo's own image JSON API.",
+ "operationId": "duckduckgo-image",
"parameters": [
{
- "description": "Goodreads author id, e.g. 153394",
- "in": "path",
- "name": "id",
+ "description": "Search query",
+ "in": "query",
+ "name": "q",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "openai"
+ },
+ {
+ "description": "1-based page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "DuckDuckGo region/locale code, e.g. us-en, uk-en, wt-wt (worldwide, the default)",
+ "in": "query",
+ "name": "region",
+ "type": "string",
+ "x-example": "us-en"
}
],
"produces": [
@@ -240378,7 +272195,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.goodreadsAuthorResponseDoc"
+ "$ref": "#/definitions/duckduckgo.imageResponseDoc"
}
},
"400": {
@@ -240404,6 +272221,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -240411,79 +272234,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Goodreads author from dataset",
+ "summary": "Search DuckDuckGo image results",
"tags": [
- "Datasets"
+ "DuckDuckGo Search"
]
}
},
- "/datasets/goodreads-authors/search": {
+ "/duckduckgo/news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the crawled public Goodreads author profile index. Authors are discovered as a byproduct of the books crawl (every credited book contributor, plus the genre/search/list seed sources) — not a full catalog. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `name_asc`.",
- "operationId": "datasets-goodreads-authors-search",
+ "description": "Returns normalized DuckDuckGo news results for a query string: title, destination URL, source, excerpt, thumbnail, and relative/published time, plus page-based pagination. Results are fetched from DuckDuckGo's own news JSON API.",
+ "operationId": "duckduckgo-news",
"parameters": [
{
- "description": "Full-text query over name, about and genres, max 256 characters",
+ "description": "Search query",
"in": "query",
"name": "q",
- "type": "string"
- },
- {
- "description": "Exact author name filter, max 128 characters",
- "in": "query",
- "name": "name",
- "type": "string"
- },
- {
- "description": "Exact genre filter (e.g. Fantasy, Romance, Nonfiction), max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum average rating, 0 through 5",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum number of ratings",
- "in": "query",
- "name": "min_ratings_count",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, rating_desc, reviews_desc, name_asc",
- "enum": [
- "relevance",
- "rating_desc",
- "reviews_desc",
- "name_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "required": true,
+ "type": "string",
+ "x-example": "openai"
},
{
- "description": "Page number, defaults to 1",
+ "description": "1-based page number, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "DuckDuckGo region/locale code, e.g. us-en, uk-en, wt-wt (worldwide, the default)",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "region",
+ "type": "string",
+ "x-example": "us-en"
}
],
"produces": [
@@ -240493,7 +272278,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.goodreadsAuthorsSearchResponseDoc"
+ "$ref": "#/definitions/duckduckgo.newsResponseDoc"
}
},
"400": {
@@ -240502,6 +272287,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -240513,6 +272304,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -240520,139 +272317,64 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Goodreads authors dataset",
+ "summary": "Search DuckDuckGo news results",
"tags": [
- "Datasets"
+ "DuckDuckGo Search"
]
}
},
- "/datasets/goodreads-books/facets": {
+ "/duckduckgo/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the Goodreads books dataset. Facet enum: `genres`, `format`, `language`, `publisher`, `primary_author`, `primary_author_id`, `series_name`, `publication_year`, `run_id`.",
- "operationId": "datasets-goodreads-books-facets",
+ "description": "Returns normalized DuckDuckGo web search results for a query string: title, destination URL, description, and hostname, plus page-based pagination. DuckDuckGo wraps every result link in its own click-tracking redirect; this endpoint always returns the decoded destination URL, never the raw redirect link. Results are fetched from DuckDuckGo's own server-rendered search page.",
+ "operationId": "duckduckgo-search",
"parameters": [
{
- "description": "Facet enum: genres, format, language, publisher, primary_author, primary_author_id, series_name, publication_year, run_id",
- "enum": [
- "genres",
- "format",
- "language",
- "publisher",
- "primary_author",
- "primary_author_id",
- "series_name",
- "publication_year",
- "run_id"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over title, author and description, max 256 characters",
+ "description": "Search query",
"in": "query",
"name": "q",
- "type": "string"
- },
- {
- "description": "Exact genre filter, max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Exact format filter, max 128 characters",
- "in": "query",
- "name": "format",
- "type": "string"
- },
- {
- "description": "Exact language filter, max 128 characters",
- "in": "query",
- "name": "language",
- "type": "string"
- },
- {
- "description": "Exact publisher filter, max 128 characters",
- "in": "query",
- "name": "publisher",
- "type": "string"
- },
- {
- "description": "Exact author name filter, max 128 characters",
- "in": "query",
- "name": "author",
- "type": "string"
- },
- {
- "description": "Exact Goodreads author id filter, max 128 characters",
- "in": "query",
- "name": "author_id",
- "type": "string"
+ "required": true,
+ "type": "string",
+ "x-example": "openai"
},
{
- "description": "Exact series name filter, max 128 characters",
+ "description": "1-based page number, defaults to 1",
"in": "query",
- "name": "series",
- "type": "string"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Exact ISBN-10 filter, max 128 characters",
+ "description": "DuckDuckGo region/locale code, e.g. us-en, uk-en, wt-wt (worldwide, the default)",
"in": "query",
- "name": "isbn",
- "type": "string"
+ "name": "region",
+ "type": "string",
+ "x-example": "us-en"
},
{
- "description": "Exact ISBN-13 filter, max 128 characters",
+ "description": "Restrict results to a recency window",
+ "enum": [
+ "d",
+ "w",
+ "m",
+ "y"
+ ],
"in": "query",
- "name": "isbn13",
+ "name": "time_range",
"type": "string"
},
{
- "description": "Exact crawl run-id filter, max 128 characters",
+ "description": "Safe search level, defaults to DuckDuckGo's own moderate setting when omitted",
+ "enum": [
+ "strict",
+ "moderate",
+ "off"
+ ],
"in": "query",
- "name": "run_id",
+ "name": "safe_search",
"type": "string"
- },
- {
- "description": "Minimum average rating, 0 through 5",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum number of ratings",
- "in": "query",
- "name": "min_ratings_count",
- "type": "integer"
- },
- {
- "description": "Minimum page count",
- "in": "query",
- "name": "min_pages",
- "type": "integer"
- },
- {
- "description": "Maximum page count",
- "in": "query",
- "name": "max_pages",
- "type": "integer"
- },
- {
- "description": "Minimum publication year",
- "in": "query",
- "name": "min_publication_year",
- "type": "integer"
- },
- {
- "description": "Maximum publication year",
- "in": "query",
- "name": "max_publication_year",
- "type": "integer"
}
],
"produces": [
@@ -240662,7 +272384,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.goodreadsBooksFacetResponseDoc"
+ "$ref": "#/definitions/duckduckgo.searchResponseDoc"
}
},
"400": {
@@ -240671,6 +272393,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -240682,6 +272410,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -240689,26 +272423,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet Goodreads books dataset",
+ "summary": "Search DuckDuckGo web results",
"tags": [
- "Datasets"
+ "DuckDuckGo Search"
]
}
},
- "/datasets/goodreads-books/items/{id}": {
+ "/duckduckgo/shopping": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled Goodreads book record by id from dataset id enum value `goodreads-books`.",
- "operationId": "datasets-goodreads-books-item",
+ "description": "Returns normalized DuckDuckGo shopping results for a query string: title, brand, merchant, description, price, rating, and review count, plus total page count. DuckDuckGo's shopping vertical is ad-funded, syndicated product listings, not organic content; every product link is wrapped in an ad-click-tracking redirect with no clean destination to unwrap, so no destination URL is returned. DuckDuckGo's own pagination token for this vertical is an opaque per-response blob rather than a plain page offset, so only the first page is supported.",
+ "operationId": "duckduckgo-shopping",
"parameters": [
{
- "description": "Goodreads book id, e.g. 2767052",
- "in": "path",
- "name": "id",
+ "description": "Search query",
+ "in": "query",
+ "name": "q",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "running shoes"
+ },
+ {
+ "description": "DuckDuckGo market code, e.g. us-en, uk-en",
+ "in": "query",
+ "name": "region",
+ "type": "string",
+ "x-example": "us-en"
}
],
"produces": [
@@ -240718,7 +272460,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.goodreadsBookResponseDoc"
+ "$ref": "#/definitions/duckduckgo.shoppingResponseDoc"
}
},
"400": {
@@ -240744,6 +272486,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -240751,149 +272499,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Goodreads book from dataset",
+ "summary": "Search DuckDuckGo shopping results",
"tags": [
- "Datasets"
+ "DuckDuckGo Search"
]
}
},
- "/datasets/goodreads-books/search": {
+ "/duckduckgo/video": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the crawled public Goodreads book catalog stored in a search index. Discovered from curated Listopia \"best of\" lists, a search-term sweep, and author bibliography expansion — not a full catalog. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `publication_desc`, `publication_asc`, `pages_desc`, `pages_asc`, `title_asc`.",
- "operationId": "datasets-goodreads-books-search",
+ "description": "Returns normalized DuckDuckGo video results for a query string: title, destination URL, description, duration, thumbnail, publisher/uploader, published time, and view count, plus page-based pagination. Results are fetched from DuckDuckGo's own video JSON API.",
+ "operationId": "duckduckgo-video",
"parameters": [
{
- "description": "Full-text query over title, author and description, max 256 characters",
+ "description": "Search query",
"in": "query",
"name": "q",
- "type": "string"
- },
- {
- "description": "Exact genre filter (e.g. Fantasy, Romance, Nonfiction), max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Exact format filter (e.g. Hardcover, Paperback, Kindle Edition), max 128 characters",
- "in": "query",
- "name": "format",
- "type": "string"
- },
- {
- "description": "Exact language filter (e.g. English, Spanish), max 128 characters",
- "in": "query",
- "name": "language",
- "type": "string"
- },
- {
- "description": "Exact publisher filter, max 128 characters",
- "in": "query",
- "name": "publisher",
- "type": "string"
- },
- {
- "description": "Exact author name filter (matches any credited contributor), max 128 characters",
- "in": "query",
- "name": "author",
- "type": "string"
- },
- {
- "description": "Exact Goodreads author id filter, max 128 characters",
- "in": "query",
- "name": "author_id",
- "type": "string"
- },
- {
- "description": "Exact series name filter, max 128 characters",
- "in": "query",
- "name": "series",
- "type": "string"
- },
- {
- "description": "Exact ISBN-10 filter, max 128 characters",
- "in": "query",
- "name": "isbn",
- "type": "string"
- },
- {
- "description": "Exact ISBN-13 filter, max 128 characters",
- "in": "query",
- "name": "isbn13",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum average rating, 0 through 5",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum number of ratings",
- "in": "query",
- "name": "min_ratings_count",
- "type": "integer"
- },
- {
- "description": "Minimum page count",
- "in": "query",
- "name": "min_pages",
- "type": "integer"
- },
- {
- "description": "Maximum page count",
- "in": "query",
- "name": "max_pages",
- "type": "integer"
- },
- {
- "description": "Minimum publication year",
- "in": "query",
- "name": "min_publication_year",
- "type": "integer"
- },
- {
- "description": "Maximum publication year",
- "in": "query",
- "name": "max_publication_year",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, rating_desc, reviews_desc, publication_desc, publication_asc, pages_desc, pages_asc, title_asc",
- "enum": [
- "relevance",
- "rating_desc",
- "reviews_desc",
- "publication_desc",
- "publication_asc",
- "pages_desc",
- "pages_asc",
- "title_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "required": true,
+ "type": "string",
+ "x-example": "openai"
},
{
- "description": "Page number, defaults to 1",
+ "description": "1-based page number, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "DuckDuckGo region/locale code, e.g. us-en, uk-en, wt-wt (worldwide, the default)",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "region",
+ "type": "string",
+ "x-example": "us-en"
}
],
"produces": [
@@ -240903,7 +272543,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.goodreadsBooksSearchResponseDoc"
+ "$ref": "#/definitions/duckduckgo.videoResponseDoc"
}
},
"400": {
@@ -240912,6 +272552,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -240923,6 +272569,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -240930,158 +272582,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Goodreads books dataset",
+ "summary": "Search DuckDuckGo video results",
"tags": [
- "Datasets"
+ "DuckDuckGo Search"
]
}
},
- "/datasets/google-map-businesses/facets": {
+ "/dunkin/directory": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for Google Maps businesses. Facet enum: `category`, `country`, `state`, `state_code`, `county`, `county_code`, `city`, `town`, `website_status`. Category facet values are exact locale-specific Google Maps labels and can be localized, non-ASCII, or contain punctuation; pass a returned value unchanged to the category filter. `state` and `county` keep each country's own administrative vocabulary (e.g. `Provincia de Madrid`, `Département du Nord`); `state_code` and `county_code` are the matching ISO 3166-2 codes (e.g. `ES-MD`, `FR-59`) and are the stable cross-country grouping key. Rows not yet resolved carry no code and are absent from the code facets.",
- "operationId": "datasets-google-map-businesses-facets",
+ "description": "Returns one level of Dunkin's store directory tree. Omit path for the root, which lists every US state Dunkin operates in; pass a state's path (e.g. \"ny\") to list its cities, or a state/city path (e.g. \"ny/new-york\") to list its stores. Each child carries its name, path, URL and how many stores sit under that branch. A child with is_store true is a store rather than another directory level -- pass its path (a store id) to GET /dunkin/store. This is a directory browse, not a proximity search: use GET /dunkin/nearby for a radius lookup.",
+ "operationId": "dunkin-directory",
"parameters": [
{
- "description": "Facet enum: category, country, state, state_code, county, county_code, city, town, website_status",
- "enum": [
- "category",
- "country",
- "state",
- "state_code",
- "county",
- "county_code",
- "city",
- "town",
- "website_status"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text business search query, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact locale-specific Google Maps category label; use the category facet to discover values, max 128 characters",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Country filter. Accepts the full English name (\\",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact state filter, max 128 characters",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact county filter, max 128 characters",
- "in": "query",
- "name": "county",
- "type": "string"
- },
- {
- "description": "Exact ISO 3166-2 state/region code filter, e.g. US-CA or FR-HDF, max 128 characters; use facet=state_code to discover values",
- "in": "query",
- "name": "state_code",
- "type": "string"
- },
- {
- "description": "Exact ISO 3166-2 county/district code filter, e.g. FR-59 or IT-RM, max 128 characters; use facet=county_code to discover values",
- "in": "query",
- "name": "county_code",
- "type": "string"
- },
- {
- "description": "Exact city filter, max 128 characters",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Exact town filter, max 128 characters",
- "in": "query",
- "name": "town",
- "type": "string"
- },
- {
- "description": "Minimum rating, 0 through 5. Businesses with no aggregate Google rating are returned with rating null, so any min_rating above 0 excludes them.",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum review count",
- "in": "query",
- "name": "min_review_count",
- "type": "integer"
- },
- {
- "description": "Filter by website presence",
- "in": "query",
- "name": "has_website",
- "type": "boolean"
- },
- {
- "description": "Filter by phone presence",
- "in": "query",
- "name": "has_phone",
- "type": "boolean"
- },
- {
- "description": "Filter by location presence: true keeps only mappable businesses with coordinates; false isolates locationless service-area businesses that have no map location",
- "in": "query",
- "name": "has_geo",
- "type": "boolean"
- },
- {
- "description": "Closure filter. true keeps only businesses Google marks Permanently closed; false excludes them, keeping every business not known to be closed. Most rows have never been status-checked and are returned with permanently_closed null, which means unknown, not open.",
- "in": "query",
- "name": "permanently_closed",
- "type": "boolean"
- },
- {
- "description": "Latitude for radius filtering",
- "in": "query",
- "name": "lat",
- "type": "number"
- },
- {
- "description": "Longitude for radius filtering",
- "in": "query",
- "name": "lon",
- "type": "number"
- },
- {
- "description": "Radius in meters, 1 through 50000; requires lat and lon when supplied",
- "in": "query",
- "name": "radius_m",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, updated_at_desc, rating_desc, review_count_desc, distance_asc",
- "enum": [
- "relevance",
- "updated_at_desc",
- "rating_desc",
- "review_count_desc",
- "distance_asc"
- ],
+ "description": "Directory path from a previous response's children[].path: a state code (e.g. \\",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "path",
+ "type": "string",
+ "x-example": "ny"
}
],
"produces": [
@@ -241091,7 +272611,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.googleMapBusinessesFacetResponseDoc"
+ "$ref": "#/definitions/dunkin.directoryResponseDoc"
}
},
"400": {
@@ -241100,14 +272620,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -241118,28 +272644,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet stored Google Maps businesses",
+ "summary": "Browse the Dunkin store directory",
"tags": [
- "Datasets"
+ "Dunkin"
]
}
},
- "/datasets/google-map-businesses/items/{place_id}": {
+ "/dunkin/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one stored Google Maps business by Google place_id from dataset id enum value `google-map-businesses`. The `category` field contains the exact Google Maps category label returned for the business locale and can be localized, non-ASCII, or contain punctuation. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. Locationless service-area businesses (online/mobile/home-based) have a `null` `geo`. A `permanently_closed` of `true` means Google marks the business permanently closed; `false` means a crawl confirmed it does not; `null` means the business has not been status-checked since capture shipped on 2026-08-31 and is UNKNOWN, not open — so any total computed from this dataset includes an unknown number of closed businesses.",
- "operationId": "datasets-google-map-businesses-item",
- "parameters": [
- {
- "description": "Google Place ID, max 256 characters",
- "in": "path",
- "name": "place_id",
- "required": true,
- "type": "string"
- }
- ],
+ "description": "Returns Dunkin's national menu: item names, descriptions and photos grouped into categories (Iced Drinks, Hot Drinks, Frozen Drinks, Sandwiches & Wraps, Savory Bites, Donuts & Bakery, Snacks and Sides). Dunkin publishes one shared menu across every US store, so this takes no store parameter. Does not carry prices or nutrition -- pricing varies by market/franchisee and isn't part of this content.",
+ "operationId": "dunkin-menu",
"produces": [
"application/json"
],
@@ -241147,19 +272664,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.googleMapBusinessResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/dunkin.menuResponseDoc"
}
},
"429": {
@@ -241168,8 +272673,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -241180,70 +272685,56 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a stored Google Maps business",
+ "summary": "Get Dunkin's national menu",
"tags": [
- "Datasets"
+ "Dunkin"
]
}
},
- "/datasets/google-map-businesses/nearby": {
+ "/dunkin/nearby": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches stored Google Maps businesses near a coordinate in dataset id enum value `google-map-businesses`. `category` is the exact Google Maps category label returned for the business locale; it can be localized, non-ASCII, or contain punctuation, so use the category facet to discover exact filter values. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. `min_rating` above 0 excludes unrated businesses.",
- "operationId": "datasets-google-map-businesses-nearby",
+ "description": "Returns Dunkin restaurants within a radius of a latitude/longitude, ordered nearest first, each with its distance in miles and kilometres, full address, phone, coordinates, the published week of hours, whether it's permanently closed, amenities, payment methods, pickup/delivery service types, which third-party delivery platforms are active, its Google Place id, timezone, and website/menu/order URLs. This is the proximity search the directory browse cannot do -- GET /dunkin/directory walks a state to city to store tree, which requires knowing the administrative path in advance. Each result carries the store id as `path`, which GET /dunkin/store also takes, so the two chain directly. `total_in_radius` reports how many stores fall inside the radius overall, which is usually far more than one page; use `offset` to walk it. A coordinate with no Dunkin nearby returns an empty list rather than an error.",
+ "operationId": "dunkin-nearby",
"parameters": [
{
- "description": "Latitude",
- "in": "query",
- "name": "lat",
- "required": true,
- "type": "number"
- },
- {
- "description": "Longitude",
+ "description": "Search center latitude",
"in": "query",
- "name": "lon",
+ "name": "latitude",
"required": true,
- "type": "number"
+ "type": "number",
+ "x-example": 40.7128
},
{
- "description": "Radius in meters, max 50000",
+ "description": "Search center longitude",
"in": "query",
- "name": "radius_m",
+ "name": "longitude",
"required": true,
- "type": "integer"
- },
- {
- "description": "Exact locale-specific Google Maps category label; use the category facet to discover values, max 128 characters",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Minimum rating, 0 through 5. Businesses with no aggregate Google rating are returned with rating null, so any min_rating above 0 excludes them.",
- "in": "query",
- "name": "min_rating",
- "type": "number"
+ "type": "number",
+ "x-example": -74.006
},
{
- "description": "Minimum review count",
+ "description": "Search radius in miles, 1-100 (default 25)",
"in": "query",
- "name": "min_review_count",
- "type": "integer"
+ "name": "radius",
+ "type": "integer",
+ "x-example": 25
},
{
- "description": "Page number, defaults to 1",
+ "description": "Maximum stores to return, 1-50 (default 10)",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Result offset for paging through total_in_radius (default 0)",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -241253,7 +272744,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.googleMapBusinessesSearchResponseDoc"
+ "$ref": "#/definitions/dunkin.nearbyResponseDoc"
}
},
"400": {
@@ -241262,14 +272753,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -241280,152 +272777,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search nearby stored Google Maps businesses",
+ "summary": "Find Dunkin stores near a coordinate, nearest first",
"tags": [
- "Datasets"
+ "Dunkin"
]
}
},
- "/datasets/google-map-businesses/search": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Google Maps business records stored in a search index. Sort enum: `relevance`, `updated_at_desc`, `rating_desc`, `review_count_desc`, `distance_asc`. `category` is the exact Google Maps category label returned for the business locale; it can be localized, non-ASCII, or contain punctuation, so use the category facet to discover exact filter values. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. `rating_desc` sorts unrated businesses last, and `min_rating` above 0 excludes them. Use `has_geo=false` to isolate locationless service-area businesses (which have a `null` `geo`). A `permanently_closed` of `true` means Google marks the business permanently closed; `false` means a crawl confirmed it does not; `null` means the business has not been status-checked since capture shipped on 2026-08-31 and is UNKNOWN, not open — so any total computed from this dataset includes an unknown number of closed businesses. Use `permanently_closed=false` to exclude the confirmed-closed ones.",
- "operationId": "datasets-google-map-businesses-search",
- "parameters": [
- {
- "description": "Full-text business search query, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact locale-specific Google Maps category label; use the category facet to discover values, max 128 characters",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Country filter. Accepts the full English name (\\",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact state filter, max 128 characters",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact county filter, max 128 characters",
- "in": "query",
- "name": "county",
- "type": "string"
- },
- {
- "description": "Exact ISO 3166-2 state/region code filter, e.g. US-CA or FR-HDF, max 128 characters; use facet=state_code to discover values",
- "in": "query",
- "name": "state_code",
- "type": "string"
- },
- {
- "description": "Exact ISO 3166-2 county/district code filter, e.g. FR-59 or IT-RM, max 128 characters; use facet=county_code to discover values",
- "in": "query",
- "name": "county_code",
- "type": "string"
- },
- {
- "description": "Exact city filter, max 128 characters",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Exact town filter, max 128 characters",
- "in": "query",
- "name": "town",
- "type": "string"
- },
- {
- "description": "Minimum rating, 0 through 5. Businesses with no aggregate Google rating are returned with rating null, so any min_rating above 0 excludes them.",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Minimum review count",
- "in": "query",
- "name": "min_review_count",
- "type": "integer"
- },
- {
- "description": "Filter by website presence",
- "in": "query",
- "name": "has_website",
- "type": "boolean"
- },
- {
- "description": "Filter by phone presence",
- "in": "query",
- "name": "has_phone",
- "type": "boolean"
- },
- {
- "description": "Filter by location presence: true keeps only mappable businesses with coordinates; false isolates locationless service-area businesses that have no map location",
- "in": "query",
- "name": "has_geo",
- "type": "boolean"
- },
- {
- "description": "Closure filter. true keeps only businesses Google marks Permanently closed; false excludes them, keeping every business not known to be closed. Most rows have never been status-checked and are returned with permanently_closed null, which means unknown, not open.",
- "in": "query",
- "name": "permanently_closed",
- "type": "boolean"
- },
- {
- "description": "Latitude for radius filtering or distance sort",
- "in": "query",
- "name": "lat",
- "type": "number"
- },
- {
- "description": "Longitude for radius filtering or distance sort",
- "in": "query",
- "name": "lon",
- "type": "number"
- },
- {
- "description": "Radius in meters, 1 through 50000; requires lat and lon when supplied",
- "in": "query",
- "name": "radius_m",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, updated_at_desc, rating_desc, review_count_desc, distance_asc",
- "enum": [
- "relevance",
- "updated_at_desc",
- "rating_desc",
- "review_count_desc",
- "distance_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
+ "/dunkin/store": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Dunkin store: name, full postal address, phone, coordinates, opening hours for every day of the week, whether it's permanently closed, amenities (curbside pickup, drive-thru, wifi, kosher, turbo oven, K-Cup pods), Dunkin's own free-text feature labels, accepted payment methods, pickup/delivery service types, which third-party delivery platforms are active, the Google Place id, and the store's website/menu/order URLs. path is a store id -- from a /dunkin/directory child with is_store true, a /dunkin/nearby result's path, or the trailing digits of a dunkindonuts.com store URL. An unknown id returns a 404.",
+ "operationId": "dunkin-store",
+ "parameters": [
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "A Dunkin store id, from a /dunkin/directory child with is_store true, a /dunkin/nearby result's path, or the trailing digits of a dunkindonuts.com store URL",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "path",
+ "required": true,
+ "type": "string",
+ "x-example": "307107"
}
],
"produces": [
@@ -241435,7 +272807,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.googleMapBusinessesSearchResponseDoc"
+ "$ref": "#/definitions/dunkin.storeResponseDoc"
}
},
"400": {
@@ -241444,14 +272816,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -241462,169 +272840,152 @@
"ApiKeyAuth": []
}
],
- "summary": "Search stored Google Maps businesses",
+ "summary": "Get one Dunkin store's detail",
"tags": [
- "Datasets"
+ "Dunkin"
]
}
},
- "/datasets/housing-markets/facets": {
+ "/dw/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns terms aggregation counts for the housing markets dataset. Facet enum: `region_type`, `state_code`, `property_type`, `parent_metro`, `parent_metro_code`, `income_vintage`, `is_latest`, `period_begin`. region_type enum: `national`, `metro`, `county`, `city`, `zip`. property_type enum: `All Residential`, `Single Family Residential`, `Condo/Co-op`, `Townhouse`, `Multi-Family (2-4 Unit)`, `Single Units Only`.",
- "operationId": "datasets-housing-markets-facets",
+ "description": "Returns public Deutsche Welle article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "dw-article",
"parameters": [
{
- "description": "Facet enum: region_type, state_code, property_type, parent_metro, parent_metro_code, income_vintage, is_latest, period_begin",
- "enum": [
- "region_type",
- "state_code",
- "property_type",
- "parent_metro",
- "parent_metro_code",
- "income_vintage",
- "is_latest",
- "period_begin"
- ],
+ "description": "Canonical DW article URL",
"in": "query",
- "name": "facet",
+ "name": "url",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over region name and city, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Region level enum: national, metro, county, city, zip",
- "enum": [
- "national",
- "metro",
- "county",
- "city",
- "zip"
- ],
- "in": "query",
- "name": "region_type",
- "type": "string"
- },
- {
- "description": "Exact two-letter state code filter, e.g. CA",
- "in": "query",
- "name": "state_code",
- "type": "string"
- },
- {
- "description": "Property type enum: All Residential, Single Family Residential, Condo/Co-op, Townhouse, Multi-Family (2-4 Unit), Single Units Only",
- "in": "query",
- "name": "property_type",
- "type": "string"
- },
- {
- "description": "Exact parent metro (CBSA) code filter, e.g. 16980",
- "in": "query",
- "name": "parent_metro_code",
- "type": "string"
- },
- {
- "description": "Exact zip code filter (zip-level rows only), e.g. 60616",
- "in": "query",
- "name": "zip_code",
- "type": "string"
- },
- {
- "description": "Exact period start date filter, YYYY-MM-DD",
- "in": "query",
- "name": "period",
- "type": "string"
- },
- {
- "description": "Filter for the most recent period per region and property type",
- "in": "query",
- "name": "latest",
- "type": "boolean"
- },
- {
- "description": "Minimum median sale price in USD",
- "in": "query",
- "name": "min_median_sale_price",
- "type": "number"
- },
- {
- "description": "Maximum median sale price in USD",
- "in": "query",
- "name": "max_median_sale_price",
- "type": "number"
- },
- {
- "description": "Minimum median list price in USD",
- "in": "query",
- "name": "min_median_list_price",
- "type": "number"
- },
- {
- "description": "Maximum median list price in USD",
- "in": "query",
- "name": "max_median_list_price",
- "type": "number"
- },
- {
- "description": "Minimum price-to-income ratio",
- "in": "query",
- "name": "min_price_to_income",
- "type": "number"
+ "type": "string",
+ "x-example": "https://www.dw.com/en/south-africa-11-killed-in-attack-on-house-party/a-79382743"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
+ }
},
- {
- "description": "Maximum price-to-income ratio",
- "in": "query",
- "name": "max_price_to_income",
- "type": "number"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Minimum salary needed to buy in USD per year",
- "in": "query",
- "name": "min_salary_to_buy",
- "type": "integer"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Maximum salary needed to buy in USD per year",
- "in": "query",
- "name": "max_salary_to_buy",
- "type": "integer"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get DW article content",
+ "tags": [
+ "DW"
+ ]
+ }
+ },
+ "/dw/author": {
+ "get": {
+ "description": "Returns one Deutsche Welle correspondent's public profile (name, expertise, biography) and their recent articles from a canonical person-profile URL. Many DW breaking-news items are bylined to the \"Deutsche Welle\" editorial organization rather than a named person; those articles have no person-profile URL to look up.",
+ "operationId": "dw-author",
+ "parameters": [
{
- "description": "Minimum median days on market",
+ "description": "Canonical www.dw.com/en//person- URL",
"in": "query",
- "name": "min_median_dom",
- "type": "number"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.dw.com/en/cathrin-schaer/person-55594156"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.dwAuthorResponseDoc"
+ }
},
- {
- "description": "Maximum median days on market",
- "in": "query",
- "name": "max_median_dom",
- "type": "number"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Minimum active inventory",
- "in": "query",
- "name": "min_inventory",
- "type": "integer"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Maximum active inventory",
- "in": "query",
- "name": "max_inventory",
- "type": "integer"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a DW author profile",
+ "tags": [
+ "DW"
+ ]
+ }
+ },
+ "/dw/headlines": {
+ "get": {
+ "description": "Returns fresh headlines from one public Deutsche Welle section.",
+ "operationId": "dw-headlines",
+ "parameters": [
{
- "description": "Minimum homes sold in the period",
+ "description": "DW section slug",
+ "enum": [
+ "africa",
+ "asia",
+ "europe",
+ "latin-america",
+ "middle-east",
+ "north-america",
+ "germany",
+ "climate",
+ "equality",
+ "health",
+ "human-rights",
+ "migration",
+ "technology",
+ "business",
+ "science",
+ "environment",
+ "culture",
+ "sports"
+ ],
"in": "query",
- "name": "min_homes_sold",
- "type": "integer"
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "africa"
}
],
"produces": [
@@ -241634,7 +272995,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.housingMarketsFacetResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -241643,14 +273004,40 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get DW section headlines",
+ "tags": [
+ "DW"
+ ]
+ }
+ },
+ "/dw/news": {
+ "get": {
+ "description": "Returns fresh Deutsche Welle stories from the public RSS feed.",
+ "operationId": "dw-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -241661,58 +273048,53 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the US housing markets dataset",
+ "summary": "Get DW top stories",
"tags": [
- "Datasets"
+ "DW"
]
}
},
- "/datasets/housing-markets/items/{region_type}/{table_id}": {
+ "/dw/sections": {
+ "get": {
+ "description": "Returns the complete public Deutsche Welle English-edition section inventory (regions, topics, and categories) accepted by /dw/headlines.",
+ "operationId": "dw-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get DW sections",
+ "tags": [
+ "DW"
+ ]
+ }
+ },
+ "/ebay/item/{item_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one housing-market record by region_type and Redfin table_id from dataset id enum value `housing-markets`. region_type enum: `national`, `metro`, `county`, `city`, `zip`. property_type enum: `All Residential`, `Single Family Residential`, `Condo/Co-op`, `Townhouse`, `Multi-Family (2-4 Unit)`, `Single Units Only` (defaults to `All Residential`). `period` defaults to the most recent period on record. Pass `history=true` to get the full monthly series (a `{dataset, region_type, table_id, property_type, items}` envelope, sorted by period ascending) instead of a single record.",
- "operationId": "datasets-housing-markets-item",
+ "description": "Returns normalized details for a public eBay item listing.",
+ "operationId": "ebay-item",
"parameters": [
{
- "description": "Region level enum: national, metro, county, city, zip",
- "enum": [
- "national",
- "metro",
- "county",
- "city",
- "zip"
- ],
- "in": "path",
- "name": "region_type",
- "required": true,
- "type": "string"
- },
- {
- "description": "Redfin table id (the region's stable numeric id)",
+ "description": "eBay item ID",
"in": "path",
- "name": "table_id",
+ "name": "item_id",
"required": true,
- "type": "integer"
- },
- {
- "description": "Exact period start date, YYYY-MM-DD; defaults to the latest period",
- "in": "query",
- "name": "period",
- "type": "string"
- },
- {
- "description": "Property type enum: All Residential, Single Family Residential, Condo/Co-op, Townhouse, Multi-Family (2-4 Unit), Single Units Only; defaults to All Residential",
- "in": "query",
- "name": "property_type",
- "type": "string"
- },
- {
- "description": "Return the full monthly series instead of a single period",
- "in": "query",
- "name": "history",
- "type": "boolean"
+ "type": "string",
+ "x-example": "196435705622"
}
],
"produces": [
@@ -241722,7 +273104,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.housingMarketItemResponseDoc"
+ "$ref": "#/definitions/ebay.itemResponseDoc"
}
},
"400": {
@@ -241748,6 +273130,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -241755,186 +273143,56 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a US housing market record from the dataset",
+ "summary": "Get eBay item details",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/housing-markets/search": {
+ "/ebay/live/streams": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches monthly Redfin housing-market statistics per region and property type since 2012, joined to Census ACS income for affordability metrics. region_type enum: `national`, `metro`, `county`, `city`, `zip`. property_type enum: `All Residential`, `Single Family Residential`, `Condo/Co-op`, `Townhouse`, `Multi-Family (2-4 Unit)`, `Single Units Only`. Sort enum: `relevance`, `price_desc`, `price_asc`, `list_price_desc`, `list_price_asc`, `price_to_income_desc`, `price_to_income_asc`, `salary_to_buy_desc`, `salary_to_buy_asc`, `dom_asc`, `dom_desc`, `inventory_desc`, `homes_sold_desc`, `period_desc`. Use `latest=true` for the most recent period per region series.",
- "operationId": "datasets-housing-markets-search",
+ "description": "Returns currently live and upcoming eBay Live streams for a category channel.",
+ "operationId": "ebay-live-streams",
"parameters": [
{
- "description": "Full-text query over region name and city, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Region level enum: national, metro, county, city, zip",
+ "description": "eBay Live category channel, defaults to explore",
"enum": [
- "national",
- "metro",
- "county",
- "city",
- "zip"
+ "explore",
+ "IPqZx79LNuwFcSVt",
+ "oHjQFTlZ5cYgWkjB",
+ "l68DJtBAVZge4x4n",
+ "2Nk3OYiOJHfXqpWG",
+ "5quuEnjO3axyz46U",
+ "nGpMTpm13Q86Eaoo",
+ "sYRxeaskGmNC6xaB",
+ "iYaYo88zN2vtQorh",
+ "GYAbsFw6onSNloAb",
+ "WJ9zLwYjK8njaBtN",
+ "rALkRyk8gXHzIBR6",
+ "DNta0sJ8Y6NXZsC9",
+ "GU4UfBzZSF4jiteS",
+ "IO7Oih07PtNJSWhU",
+ "cF4xtF8z9riubmLh",
+ "bywKDIdtxhi4hUSO"
],
"in": "query",
- "name": "region_type",
- "type": "string"
- },
- {
- "description": "Exact two-letter state code filter, e.g. CA",
- "in": "query",
- "name": "state_code",
- "type": "string"
- },
- {
- "description": "Property type enum: All Residential, Single Family Residential, Condo/Co-op, Townhouse, Multi-Family (2-4 Unit), Single Units Only",
- "in": "query",
- "name": "property_type",
- "type": "string"
- },
- {
- "description": "Exact parent metro (CBSA) code filter, e.g. 16980",
- "in": "query",
- "name": "parent_metro_code",
- "type": "string"
- },
- {
- "description": "Exact zip code filter (zip-level rows only), e.g. 60616",
- "in": "query",
- "name": "zip_code",
- "type": "string"
- },
- {
- "description": "Exact period start date filter, YYYY-MM-DD",
- "in": "query",
- "name": "period",
+ "name": "category",
"type": "string"
},
{
- "description": "Filter for the most recent period per region and property type",
- "in": "query",
- "name": "latest",
- "type": "boolean"
- },
- {
- "description": "Minimum median sale price in USD",
- "in": "query",
- "name": "min_median_sale_price",
- "type": "number"
- },
- {
- "description": "Maximum median sale price in USD",
- "in": "query",
- "name": "max_median_sale_price",
- "type": "number"
- },
- {
- "description": "Minimum median list price in USD",
- "in": "query",
- "name": "min_median_list_price",
- "type": "number"
- },
- {
- "description": "Maximum median list price in USD",
- "in": "query",
- "name": "max_median_list_price",
- "type": "number"
- },
- {
- "description": "Minimum price-to-income ratio",
- "in": "query",
- "name": "min_price_to_income",
- "type": "number"
- },
- {
- "description": "Maximum price-to-income ratio",
- "in": "query",
- "name": "max_price_to_income",
- "type": "number"
- },
- {
- "description": "Minimum salary needed to buy in USD per year",
- "in": "query",
- "name": "min_salary_to_buy",
- "type": "integer"
- },
- {
- "description": "Maximum salary needed to buy in USD per year",
- "in": "query",
- "name": "max_salary_to_buy",
- "type": "integer"
- },
- {
- "description": "Minimum median days on market",
- "in": "query",
- "name": "min_median_dom",
- "type": "number"
- },
- {
- "description": "Maximum median days on market",
- "in": "query",
- "name": "max_median_dom",
- "type": "number"
- },
- {
- "description": "Minimum active inventory",
- "in": "query",
- "name": "min_inventory",
- "type": "integer"
- },
- {
- "description": "Maximum active inventory",
- "in": "query",
- "name": "max_inventory",
- "type": "integer"
- },
- {
- "description": "Minimum homes sold in the period",
+ "description": "Pagination cursor from a previous response's next_request_number, defaults to 0",
"in": "query",
- "name": "min_homes_sold",
+ "name": "request_number",
"type": "integer"
},
{
- "description": "Sort enum: relevance, price_desc, price_asc, list_price_desc, list_price_asc, price_to_income_desc, price_to_income_asc, salary_to_buy_desc, salary_to_buy_asc, dom_asc, dom_desc, inventory_desc, homes_sold_desc, period_desc",
- "enum": [
- "relevance",
- "price_desc",
- "price_asc",
- "list_price_desc",
- "list_price_asc",
- "price_to_income_desc",
- "price_to_income_asc",
- "salary_to_buy_desc",
- "salary_to_buy_asc",
- "dom_asc",
- "dom_desc",
- "inventory_desc",
- "homes_sold_desc",
- "period_desc"
- ],
+ "description": "Pagination session id from a previous response's session_id",
"in": "query",
- "name": "sort",
+ "name": "session_id",
"type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
}
],
"produces": [
@@ -241944,7 +273202,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.housingMarketsSearchResponseDoc"
+ "$ref": "#/definitions/ebay.liveStreamsResponseDoc"
}
},
"400": {
@@ -241964,6 +273222,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -241971,157 +273235,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the US housing markets dataset",
+ "summary": "List eBay Live streams",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/instagram-users/facets": {
+ "/ebay/live/streams/batch": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the Instagram users dataset. Facet enum: `is_verified`, `is_business_account`, `has_bio`, `has_external_url`, `category_name`, `source_tier`.",
- "operationId": "datasets-instagram-users-facets",
+ "description": "Returns normalized summaries for multiple eBay Live streams/events in one call, up to 9 ids per request.",
+ "operationId": "ebay-live-streams-batch",
"parameters": [
{
- "description": "Facet enum: is_verified, is_business_account, has_bio, has_external_url, category_name, source_tier",
- "enum": [
- "is_verified",
- "is_business_account",
- "has_bio",
- "has_external_url",
- "category_name",
- "source_tier"
- ],
+ "description": "One or more eBay Live stream/event ids, up to 9. Comma-separated or repeated query values are both accepted.",
"in": "query",
- "name": "facet",
+ "name": "ids",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over username, full_name and biography, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact username filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "username",
- "type": "string"
- },
- {
- "description": "Exact category filter (case-insensitive, e.g. Digital Creator), max 128 characters",
- "in": "query",
- "name": "category_name",
- "type": "string"
- },
- {
- "description": "Exact filter for seed tier (e.g. crossref, vertical-hashtags, mention-graph, head-directory)",
- "in": "query",
- "name": "source_tier",
- "type": "string"
- },
- {
- "description": "Filter by the Instagram verification checkmark",
- "in": "query",
- "name": "is_verified",
- "type": "boolean"
- },
- {
- "description": "Filter by business or creator accounts",
- "in": "query",
- "name": "is_business_account",
- "type": "boolean"
- },
- {
- "description": "Filter by a non-empty profile biography",
- "in": "query",
- "name": "has_bio",
- "type": "boolean"
- },
- {
- "description": "Filter by a linked external URL",
- "in": "query",
- "name": "has_external_url",
- "type": "boolean"
- },
- {
- "description": "Minimum follower count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
- },
- {
- "description": "Maximum follower count",
- "in": "query",
- "name": "max_followers",
- "type": "integer"
- },
- {
- "description": "Minimum follower-to-following ratio",
- "in": "query",
- "name": "min_ratio",
- "type": "number"
- },
- {
- "description": "Maximum follower-to-following ratio",
- "in": "query",
- "name": "max_ratio",
- "type": "number"
- },
- {
- "description": "Accounts created on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "created_after",
- "type": "string"
- },
- {
- "description": "Accounts created on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "created_before",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "crawled_after",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "crawled_before",
- "type": "string"
- },
- {
- "description": "Sort enum: relevance, followers_desc, followers_asc, crawled_at_desc, crawled_at_asc, created_at_desc, created_at_asc",
- "enum": [
- "relevance",
- "followers_desc",
- "followers_asc",
- "crawled_at_desc",
- "crawled_at_asc",
- "created_at_desc",
- "created_at_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "type": "string",
+ "x-example": "FncRQ8VJGxKzLase"
}
],
"produces": [
@@ -242131,7 +273265,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.instagramUsersFacetResponseDoc"
+ "$ref": "#/definitions/ebay.liveStreamsBatchResponseDoc"
}
},
"400": {
@@ -242151,6 +273285,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -242158,26 +273298,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Instagram users dataset",
+ "summary": "Get multiple eBay Live streams",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/instagram-users/items/{username}": {
+ "/ebay/live/streams/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Instagram user record by username from dataset id enum value `instagram-users`.",
- "operationId": "datasets-instagram-users-item",
+ "description": "Returns normalized detail for a single eBay Live stream/event, including each host's feedback summary for the last 365 days.",
+ "operationId": "ebay-live-stream",
"parameters": [
{
- "description": "Instagram username, with or without a leading @, max 128 characters",
+ "description": "eBay Live stream/event id",
"in": "path",
- "name": "username",
+ "name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "qrJnMkM8X2hJuIf3"
}
],
"produces": [
@@ -242187,7 +273328,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.instagramUserResponseDoc"
+ "$ref": "#/definitions/ebay.liveStreamResponseDoc"
}
},
"400": {
@@ -242213,6 +273354,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -242220,142 +273367,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Instagram user from the dataset",
+ "summary": "Get an eBay Live stream",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/instagram-users/search": {
+ "/ebay/live/streams/{id}/items": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches public Instagram user profiles stored in a search index. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `crawled_at_desc`, `crawled_at_asc`, `created_at_desc`, `created_at_asc`.",
- "operationId": "datasets-instagram-users-search",
+ "description": "Returns the currently featured/auction items for an eBay Live stream, including live bidding state.",
+ "operationId": "ebay-live-stream-items",
"parameters": [
{
- "description": "Full-text query over username, full_name and biography, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact username filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "username",
- "type": "string"
- },
- {
- "description": "Exact category filter (case-insensitive, e.g. Digital Creator), max 128 characters",
- "in": "query",
- "name": "category_name",
- "type": "string"
- },
- {
- "description": "Exact filter for seed tier (e.g. crossref, vertical-hashtags, mention-graph, head-directory), max 128 characters",
- "in": "query",
- "name": "source_tier",
- "type": "string"
- },
- {
- "description": "Filter by the Instagram verification checkmark",
- "in": "query",
- "name": "is_verified",
- "type": "boolean"
- },
- {
- "description": "Filter by business or creator accounts",
- "in": "query",
- "name": "is_business_account",
- "type": "boolean"
- },
- {
- "description": "Filter by a non-empty profile biography",
- "in": "query",
- "name": "has_bio",
- "type": "boolean"
- },
- {
- "description": "Filter by a linked external URL",
- "in": "query",
- "name": "has_external_url",
- "type": "boolean"
- },
- {
- "description": "Minimum follower count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
- },
- {
- "description": "Maximum follower count",
- "in": "query",
- "name": "max_followers",
- "type": "integer"
- },
- {
- "description": "Minimum follower-to-following ratio",
- "in": "query",
- "name": "min_ratio",
- "type": "number"
- },
- {
- "description": "Maximum follower-to-following ratio",
- "in": "query",
- "name": "max_ratio",
- "type": "number"
- },
- {
- "description": "Accounts created on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "created_after",
- "type": "string"
- },
- {
- "description": "Accounts created on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "created_before",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "crawled_after",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "crawled_before",
- "type": "string"
- },
- {
- "description": "Sort enum: relevance, followers_desc, followers_asc, crawled_at_desc, crawled_at_asc, created_at_desc, created_at_asc",
- "enum": [
- "relevance",
- "followers_desc",
- "followers_asc",
- "crawled_at_desc",
- "crawled_at_asc",
- "created_at_desc",
- "created_at_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "description": "eBay Live stream/event id",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "qrJnMkM8X2hJuIf3"
}
],
"produces": [
@@ -242365,7 +273397,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.instagramUsersSearchResponseDoc"
+ "$ref": "#/definitions/ebay.liveStreamItemsResponseDoc"
}
},
"400": {
@@ -242385,6 +273417,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -242392,103 +273430,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Instagram users dataset",
+ "summary": "List an eBay Live stream's featured items",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/jobs/companies": {
- "get": {
+ "/ebay/search": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Searches the discovered company board registry — which companies are hiring, on which ATS (or, for the 5 single-company big-tech providers, which platform), with how many open roles. Set sponsors_visa=true to keep companies with certified employer filings in recent public U.S. Department of Labor LCA disclosure data. This is company-level historical evidence, not a guarantee for a specific role or candidate. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. status enum: `active`, `empty`, `gone`, `blocked`, `pending`, `invalid`. sort enum: `open_desc`, `company_asc`, `crawled_desc`.",
- "operationId": "datasets-jobs-companies",
+ "description": "Returns normalized eBay search results.",
+ "operationId": "ebay-search",
"parameters": [
{
- "description": "Match on company name / domain",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Provider filter",
- "enum": [
- "greenhouse",
- "lever",
- "ashby",
- "workday",
- "smartrecruiters",
- "workable",
- "recruitee",
- "rippling",
- "personio",
- "teamtailor",
- "oracle",
- "ukg",
- "icims",
- "eightfold",
- "gem",
- "pinpoint",
- "amazon-jobs",
- "apple-jobs",
- "google-jobs",
- "meta-jobs",
- "tesla-jobs"
- ],
- "in": "query",
- "name": "provider",
- "type": "string"
- },
- {
- "description": "Board status. Enum: active, empty, gone, blocked, pending, invalid",
- "enum": [
- "active",
- "empty",
- "gone",
- "blocked",
- "pending",
- "invalid"
- ],
- "in": "query",
- "name": "status",
- "type": "string"
- },
- {
- "description": "Minimum open roles",
- "in": "query",
- "name": "min_open_roles",
- "type": "integer"
- },
- {
- "description": "Keep companies with recent certified DOL LCA filings (default false)",
- "in": "query",
- "name": "sponsors_visa",
- "type": "boolean"
- },
- {
- "description": "Sort enum: open_desc, company_asc, crawled_desc",
- "enum": [
- "open_desc",
- "company_asc",
- "crawled_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, default 20, max 100",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "description": "eBay search payload",
+ "in": "body",
+ "name": "option",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/ebay.SearchOption"
+ }
}
],
"produces": [
@@ -242498,7 +273461,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.jobsCompaniesResponseDoc"
+ "$ref": "#/definitions/ebay.searchResponseDoc"
}
},
"400": {
@@ -242507,11 +273470,23 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -242519,26 +273494,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Find which companies are hiring",
+ "summary": "Search eBay listings",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/jobs/companies/{id}": {
+ "/ebay/seller/{seller}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one discovered company board by its dataset board id. When the company name matches recent public U.S. Department of Labor LCA disclosure data, the response includes `lca_sponsorship` with filing counts and observed fiscal-quarter range; this is company-level historical evidence, not a guarantee for a specific role or candidate. When the board carries a known domain, the response also includes a `tech_stack` firmographic hint. Returns 404 when the board id is not in the registry.",
- "operationId": "datasets-jobs-company-item",
+ "description": "Returns normalized details for a public eBay seller profile.",
+ "operationId": "ebay-seller",
"parameters": [
{
- "description": "Dataset board id",
+ "description": "eBay seller username",
"in": "path",
- "name": "id",
+ "name": "seller",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "poloblade"
}
],
"produces": [
@@ -242548,7 +273524,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.jobsItemResponseDoc"
+ "$ref": "#/definitions/ebay.sellerResponseDoc"
}
},
"400": {
@@ -242563,11 +273539,23 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -242575,25 +273563,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a single company by board id",
+ "summary": "Get eBay seller profile",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/jobs/facets": {
+ "/ebay/seller/{seller}/about": {
"get": {
"consumes": [
"application/json"
],
- "description": "Aggregations over all open postings: top companies hiring, breakdown by provider (every provider filterable via /datasets/jobs/search's `provider` param), department, location, employment type, skill, benefit, education, security clearance, seniority, and ESCO/ISCO job family, plus the remote share — a live hiring-market snapshot. Seniority uses one mutually exclusive value: `entry`, `mid`, or `senior`; ambiguous occupations are omitted from job-family buckets.",
- "operationId": "datasets-jobs-facets",
+ "description": "Returns normalized seller about information from the public eBay store about tab, including seller stats, top-rated status, optional location/member-since fields, and cleaned store categories.",
+ "operationId": "ebay-seller-about",
"parameters": [
{
- "description": "Buckets per facet, default 20, max 100",
- "in": "query",
- "name": "size",
- "type": "integer"
+ "description": "eBay seller username",
+ "in": "path",
+ "name": "seller",
+ "required": true,
+ "type": "string",
+ "x-example": "poloblade"
}
],
"produces": [
@@ -242603,7 +273593,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.jobsFacetResponseDoc"
+ "$ref": "#/definitions/ebay.sellerAboutResponseDoc"
}
},
"400": {
@@ -242612,11 +273602,29 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -242624,26 +273632,46 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the jobs dataset (hiring market aggregates)",
+ "summary": "Get eBay seller about details",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/jobs/items/{id}": {
+ "/ebay/seller/{seller}/feedback": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled job posting by its dataset posting id. Returns 404 when absent.",
- "operationId": "datasets-jobs-item",
+ "description": "Returns normalized seller feedback summary, detailed ratings, and recent review cards from the public eBay seller feedback tab.",
+ "operationId": "ebay-seller-feedback",
"parameters": [
{
- "description": "Dataset posting id",
+ "description": "eBay seller username",
"in": "path",
- "name": "id",
+ "name": "seller",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "poloblade"
+ },
+ {
+ "default": 1,
+ "description": "Feedback page number",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "default": 48,
+ "description": "Reviews per page",
+ "enum": [
+ 24,
+ 48,
+ 72
+ ],
+ "in": "query",
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -242653,7 +273681,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.jobsItemResponseDoc"
+ "$ref": "#/definitions/ebay.sellerFeedbackResponseDoc"
}
},
"400": {
@@ -242668,11 +273696,23 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -242680,86 +273720,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a single posting from the jobs dataset",
+ "summary": "Get eBay seller feedback",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/jobs/nearby": {
+ "/ebay/seller/{seller}/shop": {
"get": {
"consumes": [
"application/json"
],
- "description": "Finds crawled job postings within `radius_km` of a `lat`/`lon`, nearest first. Only geocoded postings participate (the geo-enrich worker back-fills coordinates from each posting's location). Open roles only by default. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`.",
- "operationId": "datasets-jobs-nearby",
+ "description": "Returns normalized listings from the public eBay seller shop tab, with pagination backed by the store odtRefresh response.",
+ "operationId": "ebay-seller-shop",
"parameters": [
{
- "description": "Latitude, -90..90",
- "in": "query",
- "name": "lat",
- "required": true,
- "type": "number"
- },
- {
- "description": "Longitude, -180..180",
- "in": "query",
- "name": "lon",
+ "description": "eBay seller username",
+ "in": "path",
+ "name": "seller",
"required": true,
- "type": "number"
- },
- {
- "description": "Search radius in km, default 50, max 500",
- "in": "query",
- "name": "radius_km",
- "type": "number"
- },
- {
- "description": "Provider filter",
- "enum": [
- "greenhouse",
- "lever",
- "ashby",
- "workday",
- "smartrecruiters",
- "workable",
- "recruitee",
- "rippling",
- "personio",
- "teamtailor",
- "oracle",
- "ukg",
- "icims",
- "eightfold",
- "gem",
- "pinpoint",
- "amazon-jobs",
- "apple-jobs",
- "google-jobs",
- "meta-jobs",
- "tesla-jobs"
- ],
- "in": "query",
- "name": "provider",
- "type": "string"
- },
- {
- "description": "Include closed/filled roles (default false)",
- "in": "query",
- "name": "include_closed",
- "type": "boolean"
+ "type": "string",
+ "x-example": "poloblade"
},
{
- "description": "Page number, default 1",
+ "default": 1,
+ "description": "Shop page number",
"in": "query",
"name": "page",
"type": "integer"
- },
- {
- "description": "Page size, default 20, max 100",
- "in": "query",
- "name": "page_size",
- "type": "integer"
}
],
"produces": [
@@ -242769,7 +273757,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.jobsSearchResponseDoc"
+ "$ref": "#/definitions/ebay.sellerShopResponseDoc"
}
},
"400": {
@@ -242778,11 +273766,29 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -242790,166 +273796,84 @@
"ApiKeyAuth": []
}
],
- "summary": "Find postings near a coordinate",
+ "summary": "Get eBay seller shop listings",
"tags": [
- "Datasets"
+ "eBay"
]
}
},
- "/datasets/jobs/search": {
+ "/economictimes/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Full-text + faceted search over every job posting crawled from every discovered company ATS board (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Rippling, Personio, Teamtailor, Oracle, UKG, iCIMS, Eightfold, Gem, Pinpoint) plus 5 single-company big-tech careers platforms (Amazon, Apple, Google, Meta, Tesla). Open roles only by default (set include_closed=true for historical/filled roles). Salary is parsed from a structured field when the provider has one, or from an explicit pay figure stated in the description otherwise, so coverage varies by posting rather than by provider; min_salary/max_salary filter on it and require salary_currency, since comparing raw compensation numbers across currencies is meaningless. Location is also exposed as structured city/state/country fields alongside the free-text location string, so city/state/country filter on an exact match of those parsed components rather than substring-matching the display string. job_family is an exact level-2 ISCO family label assigned from ESCO occupation evidence; ambiguous postings remain unclassified and do not match that filter. employment_type is never populated for google-jobs/meta-jobs, and posted_at (so sort=posted_desc) is never populated for meta-jobs/tesla-jobs -- their upstream APIs expose no such field. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. workplace_type enum: `onsite`, `hybrid`, `remote`. sort enum: `relevance`, `posted_desc`, `company_asc`.",
- "operationId": "datasets-jobs-search",
+ "description": "Returns public Economic Times article metadata (title, author(s), published/updated dates, section, lead image) and body paragraphs from a canonical article URL. An ETPrime subscription-gated story returns a permission error instead of a truncated or fabricated body.",
+ "operationId": "economictimes-article",
"parameters": [
{
- "description": "Full-text over title, company, description",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Company name match",
- "in": "query",
- "name": "company",
- "type": "string"
- },
- {
- "description": "Provider filter",
- "enum": [
- "greenhouse",
- "lever",
- "ashby",
- "workday",
- "smartrecruiters",
- "workable",
- "recruitee",
- "rippling",
- "personio",
- "teamtailor",
- "oracle",
- "ukg",
- "icims",
- "eightfold",
- "gem",
- "pinpoint",
- "amazon-jobs",
- "apple-jobs",
- "google-jobs",
- "meta-jobs",
- "tesla-jobs"
- ],
- "in": "query",
- "name": "provider",
- "type": "string"
- },
- {
- "description": "Exact department filter",
- "in": "query",
- "name": "department",
- "type": "string"
- },
- {
- "description": "Location match",
- "in": "query",
- "name": "location",
- "type": "string"
- },
- {
- "description": "Exact city filter (parsed location component)",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Exact state/region filter (parsed location component)",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact country filter (parsed location component); ISO country code or name, matched case-insensitively",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact employment-type filter",
- "in": "query",
- "name": "employment_type",
- "type": "string"
- },
- {
- "description": "Exact ESCO/ISCO job-family label filter",
- "in": "query",
- "name": "job_family",
- "type": "string"
- },
- {
- "description": "Filter by remote (true or false)",
- "in": "query",
- "name": "remote",
- "type": "boolean"
- },
- {
- "description": "Workplace type filter",
- "enum": [
- "onsite",
- "hybrid",
- "remote"
- ],
- "in": "query",
- "name": "workplace_type",
- "type": "string"
- },
- {
- "description": "Include closed/filled roles (default false = open only)",
- "in": "query",
- "name": "include_closed",
- "type": "boolean"
- },
- {
- "description": "Minimum salary (matches postings whose range reaches at least this); requires salary_currency",
+ "description": "Canonical Economic Times article URL",
"in": "query",
- "name": "min_salary",
- "type": "number"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://economictimes.indiatimes.com/markets/aif-pms/example-story/articleshow/134466306.cms"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
+ }
},
- {
- "description": "Maximum salary (matches postings whose range starts at or below this); requires salary_currency",
- "in": "query",
- "name": "max_salary",
- "type": "number"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "3-letter ISO currency code (e.g. USD) the min_salary/max_salary bounds are in; required when either bound is set",
- "in": "query",
- "name": "salary_currency",
- "type": "string"
+ "403": {
+ "description": "Forbidden",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Sort enum: relevance, posted_desc, company_asc",
- "enum": [
- "relevance",
- "posted_desc",
- "company_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Economic Times article content",
+ "tags": [
+ "Economic Times"
+ ]
+ }
+ },
+ "/economictimes/author": {
+ "get": {
+ "description": "Returns one Economic Times reporter's public profile: name, job title, biography, headshot, and their recent articles.",
+ "operationId": "economictimes-author",
+ "parameters": [
{
- "description": "Page size, default 20, max 100; page*page_size must be <= 10000",
+ "description": "Canonical Economic Times author URL",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://economictimes.indiatimes.com/etreporter/author-kshitij-anand-479257392.cms"
}
],
"produces": [
@@ -242959,7 +273883,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.jobsSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.economicTimesAuthorResponseDoc"
}
},
"400": {
@@ -242968,8 +273892,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -242980,158 +273910,184 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the jobs dataset (all companies' live postings)",
+ "summary": "Get an Economic Times author profile",
"tags": [
- "Datasets"
+ "Economic Times"
]
}
},
- "/datasets/journalists/facets": {
+ "/economictimes/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns distribution counts over the journalists index (dataset id enum value `journalists`), honoring the same filters as search. Facet enum: `outlet`, `vertical`, `topic`, `contact_type`, `record_type`, `role_type`, `email_kind`, `outreach_readiness_band`. `facet=outlet` returns every outlet (up to 1000) in one response; other facets return their top 50 values. Facets are not paginated: `page` and `page_size` are ignored.",
- "operationId": "datasets-journalists-facets",
+ "description": "Returns fresh headlines from one public Economic Times section feed.",
+ "operationId": "economictimes-headlines",
"parameters": [
{
- "description": "Facet enum: outlet, vertical, topic, contact_type, record_type, role_type, email_kind, outreach_readiness_band",
- "enum": [
- "outlet",
- "vertical",
- "topic",
- "contact_type",
- "record_type",
- "role_type",
- "email_kind",
- "outreach_readiness_band"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text match on the journalist's name, title, and bio, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact outlet id filter",
- "in": "query",
- "name": "outlet",
- "type": "string"
- },
- {
- "description": "Exact beat-vertical filter. Enum: tech, crypto, marketing, consumer_tech, consumer_policy, cybersecurity, health, gaming, climate, business, entertainment, sports, legal, science, politics, real_estate, automotive, travel, food, education, design, film_tv, fashion, music, personal_finance, tech_independent, culture_independent, local_news, construction, banking, retail, aerospace_defense, energy, agriculture, local_business, general_news",
+ "description": "Economic Times section slug",
"enum": [
+ "top-stories",
+ "ai",
+ "ai-ai-insights",
+ "astrology-chalisa-bhajan",
+ "astrology-horoscope",
+ "astrology-love-horoscope",
+ "astrology-numerology-predictions",
+ "astrology-others",
+ "astrology-panchang",
+ "astrology-planets-transits",
+ "astrology-tarot-readings",
+ "astrology-us",
+ "industry",
+ "industry-auto",
+ "industry-banking-finance",
+ "industry-cons-products",
+ "industry-csr",
+ "industry-energy",
+ "industry-healthcare-biotech",
+ "industry-indl-goods-svs",
+ "industry-media-entertainment",
+ "industry-miscellaneous",
+ "industry-renewables",
+ "industry-services",
+ "industry-telecom",
+ "industry-transportation",
+ "jobs",
+ "jobs-c-suite",
+ "jobs-exams-results",
+ "jobs-fresher",
+ "jobs-government-jobs",
+ "jobs-hr-policies-trends",
+ "jobs-mid-career",
+ "magazines",
+ "magazines-et-magazine",
+ "magazines-luxury",
+ "magazines-panache",
+ "market-data",
+ "market-data-etlearn",
+ "markets",
+ "markets-aif-pms",
+ "markets-bonds",
+ "markets-commodities",
+ "markets-cryptocurrency",
+ "markets-digital-real-estate",
+ "markets-expert-view",
+ "markets-forex",
+ "markets-investment-ideas",
+ "markets-ipos-fpos",
+ "markets-market-moguls",
+ "markets-mind-over-money",
+ "markets-options",
+ "markets-stocks",
+ "markets-stocks-podcast",
+ "markets-us-stocks",
+ "markets-web-stories",
+ "mf",
+ "mf-analysis",
+ "mf-elss",
+ "mf-learn",
+ "mf-mf-news",
+ "mf-web-stories",
+ "news",
+ "news-top-trending-products",
+ "news-bengaluru-news",
+ "news-company",
+ "news-defence",
+ "news-economy",
+ "news-elections",
+ "news-environment",
+ "news-et-evoke",
+ "news-et-explains",
+ "news-india",
+ "news-international",
+ "news-latest-news",
+ "news-morning-brief-podcast",
+ "news-mumbai-news",
+ "news-new-updates",
+ "news-newsblogs",
+ "news-politics-and-nation",
+ "news-pune-news",
+ "news-science",
+ "news-sports",
+ "news-videos",
+ "nri",
+ "nri-country-pages",
+ "nri-invest",
+ "nri-latest-updates",
+ "nri-migrate",
+ "nri-study",
+ "nri-test-guide",
+ "nri-visit",
+ "nri-web-stories",
+ "nri-work",
+ "opinion",
+ "opinion-bliss-of-everyday-life",
+ "opinion-et-commentary",
+ "opinion-et-editorial",
+ "opinion-et-view",
+ "opinion-just-in-jest",
+ "opinion-speaking-tree",
+ "podcasts",
+ "prime",
+ "prime-collections",
+ "prime-consumer",
+ "prime-corporate-governance",
+ "prime-economy-and-policy",
+ "prime-energy",
+ "prime-environment",
+ "prime-fintech-and-bfsi",
+ "prime-infrastructure",
+ "prime-media-and-communications",
+ "prime-money-and-markets",
+ "prime-pharma-and-healthcare",
+ "prime-prime-decoder",
+ "prime-prime-vantage",
+ "prime-primeshots",
+ "prime-technology-and-startups",
+ "prime-transportation",
+ "small-biz",
+ "small-biz-entrepreneurship",
+ "small-biz-gst",
+ "small-biz-hr-leadership",
+ "small-biz-legal",
+ "small-biz-marketing-branding",
+ "small-biz-money",
+ "small-biz-policy-trends",
+ "small-biz-resources",
+ "small-biz-security-tech",
+ "small-biz-sme-sector",
+ "small-biz-sme-summits",
+ "small-biz-sustainability",
+ "small-biz-trade",
"tech",
- "crypto",
- "marketing",
- "consumer_tech",
- "consumer_policy",
- "cybersecurity",
- "health",
- "gaming",
- "climate",
- "business",
- "entertainment",
- "sports",
- "legal",
- "science",
- "politics",
- "real_estate",
- "automotive",
- "travel",
- "food",
- "education",
- "design",
- "film_tv",
- "fashion",
- "music",
- "personal_finance",
- "tech_independent",
- "culture_independent",
- "local_news",
- "construction",
- "banking",
- "retail",
- "aerospace_defense",
- "energy",
- "agriculture",
- "local_business",
- "general_news"
- ],
- "in": "query",
- "name": "vertical",
- "type": "string"
- },
- {
- "description": "Exact topic filter",
- "in": "query",
- "name": "topic",
- "type": "string"
- },
- {
- "description": "Contact-availability filter. Enum: email, social, none",
- "enum": [
- "email",
- "social",
- "none"
- ],
- "in": "query",
- "name": "contact_type",
- "type": "string"
- },
- {
- "description": "Record classification filter. Enum: person, desk, organization, syndicated_byline, unknown",
- "enum": [
- "person",
- "desk",
- "organization",
- "syndicated_byline",
- "unknown"
- ],
- "in": "query",
- "name": "record_type",
- "type": "string"
- },
- {
- "description": "Role classification filter. Enum: staff, editor, reporter, contributor, freelancer, columnist, non_editorial, unknown",
- "enum": [
- "staff",
- "editor",
- "reporter",
- "contributor",
- "freelancer",
- "columnist",
- "non_editorial",
- "unknown"
- ],
- "in": "query",
- "name": "role_type",
- "type": "string"
- },
- {
- "description": "Email semantics filter. Enum: individual_work, individual_personal_public, shared_desk, tips_or_submissions, outlet_generic, unknown",
- "enum": [
- "individual_work",
- "individual_personal_public",
- "shared_desk",
- "tips_or_submissions",
- "outlet_generic",
- "unknown"
+ "tech-artificial-intelligence",
+ "tech-catalysts",
+ "tech-funding",
+ "tech-information-tech",
+ "tech-newsletters",
+ "tech-startups",
+ "tech-tech-and-gadgets",
+ "tech-tech-bytes",
+ "tech-technology",
+ "wealth",
+ "wealth-borrow",
+ "wealth-earn",
+ "wealth-et-wealth",
+ "wealth-insure",
+ "wealth-invest",
+ "wealth-legal-will",
+ "wealth-mutual-funds",
+ "wealth-p2p",
+ "wealth-personal-finance-news",
+ "wealth-plan",
+ "wealth-real-estate",
+ "wealth-save",
+ "wealth-spend",
+ "wealth-tax"
],
"in": "query",
- "name": "email_kind",
- "type": "string"
- },
- {
- "description": "Minimum outreach-readiness score, from 0 to 100",
- "in": "query",
- "name": "min_outreach_readiness",
- "type": "integer"
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "top-stories"
}
],
"produces": [
@@ -243141,7 +274097,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.journalistsFacetResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -243150,14 +274106,46 @@
"$ref": "#/definitions/app.Response"
}
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get The Economic Times section headlines",
+ "tags": [
+ "Economic Times"
+ ]
+ }
+ },
+ "/economictimes/news": {
+ "get": {
+ "description": "Returns fresh Economic Times top-stories headline metadata from its public RSS feed.",
+ "operationId": "economictimes-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -243168,33 +274156,54 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the journalists dataset",
+ "summary": "Get The Economic Times top stories",
"tags": [
- "Datasets"
+ "Economic Times"
]
}
},
- "/datasets/journalists/items/{outlet}/{slug}": {
+ "/economictimes/sections": {
"get": {
+ "description": "Returns the complete public section inventory accepted by /api/v1/economictimes/headlines: business/markets verticals, industry, tech, wealth, mutual funds, small business, NRI, careers, opinion, astrology, and ETPrime (subscription-gated) sections.",
+ "operationId": "economictimes-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get The Economic Times sections",
+ "tags": [
+ "Economic Times"
+ ]
+ }
+ },
+ "/email/verify": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns one journalist by outlet id and slug from dataset id enum value `journalists`. Returns 404 when the outlet is not supported or the journalist is not in the index.",
- "operationId": "datasets-journalists-item",
+ "description": "Classifies up to 50 caller-supplied email addresses and returns each one's `status` (`verified` — the mailbox accepts mail; `risky` — catch-all, role or disposable; `invalid` — bad syntax or no MX; `unverified` — could not be determined) and `type` (`generic`, `role`, `personal`). Crawls nothing: pass the addresses you already hold. This is the same classifier the Contact API applies to addresses it discovers, so statuses are directly comparable. When `smtp_enabled` is false, mailbox probing was unavailable for the call and nothing can be reported `verified` — an honest `unverified` rather than a guess.",
+ "operationId": "email-verify",
"parameters": [
{
- "description": "Outlet id, e.g. techcrunch. Use the ids returned by facets?facet=outlet",
- "in": "path",
- "name": "outlet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Journalist slug within the outlet, e.g. zack-whittaker",
- "in": "path",
- "name": "slug",
+ "description": "Addresses to verify",
+ "in": "body",
+ "name": "option",
"required": true,
- "type": "string"
+ "schema": {
+ "$ref": "#/definitions/contact.VerifyRequest"
+ }
}
],
"produces": [
@@ -243204,29 +274213,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.journalistsItemResponseDoc"
+ "$ref": "#/definitions/contact.verifyResponseDoc"
}
},
"400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Invalid input, or no usable address in the batch",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal Server Error",
+ "description": "Internal server error during verification",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -243237,166 +274240,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a journalist from the journalists dataset",
+ "summary": "Email verification — deliverability status for a batch of addresses",
"tags": [
- "Datasets"
+ "Web"
]
}
},
- "/datasets/journalists/search": {
+ "/engadget/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches the journalists index (dataset id enum value `journalists`) — public journalist and reporter records crawled from news outlets' own staff/author pages, for PR outreach. Each record carries the outlet, title, best-effort beat topics, and any public contact info found on that outlet's own page, plus deterministic record_type, role_type, email_kind, and outreach-readiness quality signals. There is no cross-outlet upstream search; this dataset is built by crawling a curated roster of outlets ourselves. vertical enum: `tech`, `crypto`, `marketing`, `consumer_tech`, `consumer_policy`, `cybersecurity`, `health`, `gaming`, `climate`, `business`, `entertainment`, `sports`, `legal`, `science`, `politics`, `real_estate`, `automotive`, `travel`, `food`, `education`, `design`, `film_tv`, `fashion`, `music`, `personal_finance`, `tech_independent`, `culture_independent`, `local_news`, `construction`, `banking`, `retail`, `aerospace_defense`, `energy`, `agriculture`, `local_business`. contact_type enum: `email`, `social`, `none`. record_type enum: `person`, `desk`, `organization`, `syndicated_byline`, `unknown`. role_type enum: `staff`, `editor`, `reporter`, `contributor`, `freelancer`, `columnist`, `non_editorial`, `unknown`. email_kind enum: `individual_work`, `individual_personal_public`, `shared_desk`, `tips_or_submissions`, `outlet_generic`, `unknown`. sort enum: `relevance`, `name_asc`, `outlet_asc`, `crawled_desc`, `readiness_desc`.",
- "operationId": "datasets-journalists-search",
+ "description": "Returns public Engadget article metadata and body paragraphs from a canonical article URL. Engadget articles are free to read, so the full body is returned.",
+ "operationId": "engadget-article",
"parameters": [
{
- "description": "Full-text match on the journalist's name, title, and bio, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact outlet id filter, e.g. techcrunch, coindesk. Use the ids returned by facets?facet=outlet",
- "in": "query",
- "name": "outlet",
- "type": "string"
- },
- {
- "description": "Exact beat-vertical filter. Enum: tech, crypto, marketing, consumer_tech, consumer_policy, cybersecurity, health, gaming, climate, business, entertainment, sports, legal, science, politics, real_estate, automotive, travel, food, education, design, film_tv, fashion, music, personal_finance, tech_independent, culture_independent, local_news, construction, banking, retail, aerospace_defense, energy, agriculture, local_business, general_news",
- "enum": [
- "tech",
- "crypto",
- "marketing",
- "consumer_tech",
- "consumer_policy",
- "cybersecurity",
- "health",
- "gaming",
- "climate",
- "business",
- "entertainment",
- "sports",
- "legal",
- "science",
- "politics",
- "real_estate",
- "automotive",
- "travel",
- "food",
- "education",
- "design",
- "film_tv",
- "fashion",
- "music",
- "personal_finance",
- "tech_independent",
- "culture_independent",
- "local_news",
- "construction",
- "banking",
- "retail",
- "aerospace_defense",
- "energy",
- "agriculture",
- "local_business",
- "general_news"
- ],
- "in": "query",
- "name": "vertical",
- "type": "string"
- },
- {
- "description": "Exact topic filter, e.g. security, stablecoins. Use the values returned by facets?facet=topic",
- "in": "query",
- "name": "topic",
- "type": "string"
- },
- {
- "description": "Contact-availability filter. Enum: email, social, none",
- "enum": [
- "email",
- "social",
- "none"
- ],
- "in": "query",
- "name": "contact_type",
- "type": "string"
- },
- {
- "description": "Record classification filter. Enum: person, desk, organization, syndicated_byline, unknown",
- "enum": [
- "person",
- "desk",
- "organization",
- "syndicated_byline",
- "unknown"
- ],
- "in": "query",
- "name": "record_type",
- "type": "string"
- },
- {
- "description": "Role classification filter. Enum: staff, editor, reporter, contributor, freelancer, columnist, non_editorial, unknown",
- "enum": [
- "staff",
- "editor",
- "reporter",
- "contributor",
- "freelancer",
- "columnist",
- "non_editorial",
- "unknown"
- ],
- "in": "query",
- "name": "role_type",
- "type": "string"
- },
- {
- "description": "Email semantics filter. Enum: individual_work, individual_personal_public, shared_desk, tips_or_submissions, outlet_generic, unknown",
- "enum": [
- "individual_work",
- "individual_personal_public",
- "shared_desk",
- "tips_or_submissions",
- "outlet_generic",
- "unknown"
- ],
- "in": "query",
- "name": "email_kind",
- "type": "string"
- },
- {
- "description": "Minimum outreach-readiness score, from 0 to 100",
- "in": "query",
- "name": "min_outreach_readiness",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, name_asc, outlet_asc, crawled_desc, readiness_desc",
- "enum": [
- "relevance",
- "name_asc",
- "outlet_asc",
- "crawled_desc",
- "readiness_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Canonical Engadget article URL",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.engadget.com/2267229/meta-put-muse-in-a-tamagotchi-like-charm-device/"
}
],
"produces": [
@@ -243406,7 +274267,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.journalistsSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -243415,14 +274276,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -243433,95 +274294,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the journalists dataset",
+ "summary": "Get Engadget article content",
"tags": [
- "Datasets"
+ "Engadget"
]
}
},
- "/datasets/numbeo-cities/facets": {
+ "/engadget/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns terms aggregation counts for the Numbeo cities dataset. Facet enum: `country`.",
- "operationId": "datasets-numbeo-cities-facets",
+ "description": "Returns one Engadget author's public profile: name, biography, expertise, social links, and the latest stories listed on their page (a single fixed batch; the page has no further pagination).",
+ "operationId": "engadget-author",
"parameters": [
{
- "description": "Facet enum: country",
- "enum": [
- "country"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over the city name, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact country filter, max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Minimum Cost of Living Index (New York = 100)",
- "in": "query",
- "name": "min_cost_of_living_index",
- "type": "number"
- },
- {
- "description": "Maximum Cost of Living Index (New York = 100)",
- "in": "query",
- "name": "max_cost_of_living_index",
- "type": "number"
- },
- {
- "description": "Minimum Quality of Life Index",
- "in": "query",
- "name": "min_quality_of_life_index",
- "type": "number"
- },
- {
- "description": "Minimum Crime Index",
- "in": "query",
- "name": "min_crime_index",
- "type": "number"
- },
- {
- "description": "Maximum Crime Index",
- "in": "query",
- "name": "max_crime_index",
- "type": "number"
- },
- {
- "description": "Minimum Safety Index",
- "in": "query",
- "name": "min_safety_index",
- "type": "number"
- },
- {
- "description": "Minimum Health Care Index",
- "in": "query",
- "name": "min_health_care_index",
- "type": "number"
- },
- {
- "description": "Maximum Pollution Index",
+ "description": "Author slug, e.g. mariella-moon",
"in": "query",
- "name": "max_pollution_index",
- "type": "number"
+ "name": "slug",
+ "type": "string",
+ "x-example": "mariella-moon"
},
{
- "description": "Maximum Traffic Index",
+ "description": "Canonical engadget.com/author/ URL; alternative to slug",
"in": "query",
- "name": "max_traffic_index",
- "type": "number"
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.engadget.com/author/mariella-moon/"
}
],
"produces": [
@@ -243531,7 +274327,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.numbeoCitiesFacetResponseDoc"
+ "$ref": "#/definitions/publicnews.engadgetAuthorResponseDoc"
}
},
"400": {
@@ -243540,14 +274336,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -243558,27 +274354,74 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Numbeo cities dataset",
+ "summary": "Get an Engadget author profile",
"tags": [
- "Datasets"
+ "Engadget"
]
}
},
- "/datasets/numbeo-cities/items/{slug}": {
+ "/engadget/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one composite Numbeo city record by city slug from dataset id enum value `numbeo-cities`.",
- "operationId": "datasets-numbeo-cities-item",
+ "description": "Returns fresh Engadget headlines from one public category feed.",
+ "operationId": "engadget-headlines",
"parameters": [
{
- "description": "Numbeo city slug",
- "in": "path",
- "name": "slug",
+ "description": "Engadget category slug",
+ "enum": [
+ "ai",
+ "amazon",
+ "apple",
+ "apps",
+ "best-tech",
+ "big-tech",
+ "computer-accessories",
+ "computing",
+ "cybersecurity",
+ "entertainment",
+ "features",
+ "gaming",
+ "gaming-reviews",
+ "google",
+ "headphones-buying-guides",
+ "headphones-reviews",
+ "home-product-reviews",
+ "laptop-buying-guides",
+ "laptop-pc-reviews",
+ "laptops",
+ "meta",
+ "microsoft",
+ "mobile",
+ "news",
+ "nintendo",
+ "pc",
+ "photography-reviews",
+ "playstation",
+ "reviews",
+ "robotics",
+ "samsung",
+ "science",
+ "smart-home-buying-guides",
+ "smart-home-reviews",
+ "smartphone-reviews",
+ "smartphones",
+ "social-media",
+ "space",
+ "streaming",
+ "tablet-reviews",
+ "tablets",
+ "tomorrow",
+ "transportation-evs",
+ "tv-movies",
+ "vpn",
+ "wearable-reviews",
+ "wearables",
+ "xbox"
+ ],
+ "in": "query",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "Los-Angeles"
+ "x-example": "ai"
}
],
"produces": [
@@ -243588,7 +274431,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.numbeoCityResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -243597,11 +274440,37 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Engadget section headlines",
+ "tags": [
+ "Engadget"
+ ]
+ }
+ },
+ "/engadget/news": {
+ "get": {
+ "description": "Returns fresh Engadget technology news from the public homepage feed. Engadget articles are free to read.",
+ "operationId": "engadget-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
"429": {
"description": "Too Many Requests",
@@ -243609,8 +274478,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -243621,114 +274490,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Numbeo city from the dataset",
+ "summary": "Get Engadget top stories",
"tags": [
- "Datasets"
+ "Engadget"
]
}
},
- "/datasets/numbeo-cities/search": {
+ "/engadget/sections": {
"get": {
- "consumes": [
+ "description": "Returns the public Engadget category taxonomy (48 categories) accepted by the headlines endpoint.",
+ "operationId": "engadget-sections",
+ "produces": [
"application/json"
],
- "description": "Searches the composite Numbeo cities dataset, merged from the current global rankings of all seven index families (cost of living, quality of life, crime, health care, pollution, traffic, property investment). A city appears once it is ranked by at least one family; coverage varies per city. Sort enum: `name_asc`, `cost_of_living_asc`, `cost_of_living_desc`, `quality_of_life_desc`, `safety_desc`, `crime_asc`, `health_care_desc`, `pollution_asc`, `traffic_asc`.",
- "operationId": "datasets-numbeo-cities-search",
- "parameters": [
- {
- "description": "Full-text query over the city name, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact country filter, max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Minimum Cost of Living Index (New York = 100)",
- "in": "query",
- "name": "min_cost_of_living_index",
- "type": "number"
- },
- {
- "description": "Maximum Cost of Living Index (New York = 100)",
- "in": "query",
- "name": "max_cost_of_living_index",
- "type": "number"
- },
- {
- "description": "Minimum Quality of Life Index",
- "in": "query",
- "name": "min_quality_of_life_index",
- "type": "number"
- },
- {
- "description": "Minimum Crime Index",
- "in": "query",
- "name": "min_crime_index",
- "type": "number"
- },
- {
- "description": "Maximum Crime Index",
- "in": "query",
- "name": "max_crime_index",
- "type": "number"
- },
- {
- "description": "Minimum Safety Index",
- "in": "query",
- "name": "min_safety_index",
- "type": "number"
- },
- {
- "description": "Minimum Health Care Index",
- "in": "query",
- "name": "min_health_care_index",
- "type": "number"
- },
- {
- "description": "Maximum Pollution Index",
- "in": "query",
- "name": "max_pollution_index",
- "type": "number"
- },
- {
- "description": "Maximum Traffic Index",
- "in": "query",
- "name": "max_traffic_index",
- "type": "number"
- },
- {
- "description": "Sort enum: name_asc, cost_of_living_asc, cost_of_living_desc, quality_of_life_desc, safety_desc, crime_asc, health_care_desc, pollution_asc, traffic_asc",
- "enum": [
- "name_asc",
- "cost_of_living_asc",
- "cost_of_living_desc",
- "quality_of_life_desc",
- "safety_desc",
- "crime_asc",
- "health_care_desc",
- "pollution_asc",
- "traffic_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
{
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Engadget sections",
+ "tags": [
+ "Engadget"
+ ]
+ }
+ },
+ "/eonline/article": {
+ "get": {
+ "description": "Returns public E! News article metadata, byline and body paragraphs from a canonical article URL.",
+ "operationId": "eonline-article",
+ "parameters": [
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Canonical E! News article URL",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.eonline.com/news/1436400/inside-taylor-swift-dakota-johnsons-friendship"
}
],
"produces": [
@@ -243738,7 +274543,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.numbeoCitiesSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -243747,14 +274552,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -243765,27 +274570,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Numbeo cities dataset",
+ "summary": "Get E! News article content",
"tags": [
- "Datasets"
+ "E! News"
]
}
},
- "/datasets/numbeo-countries/items/{country}": {
+ "/eonline/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one composite Numbeo country record by country name from dataset id enum value `numbeo-countries`.",
- "operationId": "datasets-numbeo-countries-item",
+ "description": "Returns an E! News writer's name and the articles listed on their author page, from a canonical author URL.",
+ "operationId": "eonline-author",
"parameters": [
{
- "description": "Country name as Numbeo spells it",
- "in": "path",
- "name": "country",
+ "description": "Canonical E! News author URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "Vietnam"
+ "x-example": "https://www.eonline.com/authors/natalie-finn"
}
],
"produces": [
@@ -243795,7 +274597,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.numbeoCountryResponseDoc"
+ "$ref": "#/definitions/publicnews.eonlineAuthorResponseDoc"
}
},
"400": {
@@ -243810,14 +274612,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -243828,108 +274624,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Numbeo country from the dataset",
+ "summary": "Get an E! News author page",
"tags": [
- "Datasets"
+ "E! News"
]
}
},
- "/datasets/numbeo-countries/search": {
+ "/eonline/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches the composite Numbeo countries dataset, merged from the current global by-country rankings of all seven index families. Sort enum: `name_asc`, `cost_of_living_asc`, `cost_of_living_desc`, `quality_of_life_desc`, `safety_desc`, `crime_asc`, `health_care_desc`, `pollution_asc`, `traffic_asc`.",
- "operationId": "datasets-numbeo-countries-search",
+ "description": "Returns fresh headlines from one E! News section feed.",
+ "operationId": "eonline-headlines",
"parameters": [
{
- "description": "Full-text query over the country name, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Minimum Cost of Living Index (New York = 100)",
- "in": "query",
- "name": "min_cost_of_living_index",
- "type": "number"
- },
- {
- "description": "Maximum Cost of Living Index (New York = 100)",
- "in": "query",
- "name": "max_cost_of_living_index",
- "type": "number"
- },
- {
- "description": "Minimum Quality of Life Index",
- "in": "query",
- "name": "min_quality_of_life_index",
- "type": "number"
- },
- {
- "description": "Minimum Crime Index",
- "in": "query",
- "name": "min_crime_index",
- "type": "number"
- },
- {
- "description": "Maximum Crime Index",
- "in": "query",
- "name": "max_crime_index",
- "type": "number"
- },
- {
- "description": "Minimum Safety Index",
- "in": "query",
- "name": "min_safety_index",
- "type": "number"
- },
- {
- "description": "Minimum Health Care Index",
- "in": "query",
- "name": "min_health_care_index",
- "type": "number"
- },
- {
- "description": "Maximum Pollution Index",
- "in": "query",
- "name": "max_pollution_index",
- "type": "number"
- },
- {
- "description": "Maximum Traffic Index",
- "in": "query",
- "name": "max_traffic_index",
- "type": "number"
- },
- {
- "description": "Sort enum: name_asc, cost_of_living_asc, cost_of_living_desc, quality_of_life_desc, safety_desc, crime_asc, health_care_desc, pollution_asc, traffic_asc",
+ "description": "E! News section slug",
"enum": [
- "name_asc",
- "cost_of_living_asc",
- "cost_of_living_desc",
- "quality_of_life_desc",
- "safety_desc",
- "crime_asc",
- "health_care_desc",
- "pollution_asc",
- "traffic_asc"
+ "top_stories",
+ "tv",
+ "movies",
+ "music",
+ "celebrities",
+ "couples",
+ "royals",
+ "red_carpet",
+ "influencer",
+ "style",
+ "fashion",
+ "shop"
],
"in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "top_stories"
}
],
"produces": [
@@ -243939,7 +274665,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.numbeoCountriesSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -243948,14 +274674,46 @@
"$ref": "#/definitions/app.Response"
}
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get E! News section headlines",
+ "tags": [
+ "E! News"
+ ]
+ }
+ },
+ "/eonline/news": {
+ "get": {
+ "description": "Returns fresh E! News (US edition) top stories from its public RSS feed.",
+ "operationId": "eonline-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -243966,74 +274724,93 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Numbeo countries dataset",
+ "summary": "Get E! News top stories",
"tags": [
- "Datasets"
+ "E! News"
]
}
},
- "/datasets/pitchbook-advisors/facets": {
+ "/eonline/sections": {
+ "get": {
+ "description": "Returns the E! News section inventory used by the headlines endpoint.",
+ "operationId": "eonline-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get E! News sections",
+ "tags": [
+ "E! News"
+ ]
+ }
+ },
+ "/espn/athlete": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the PitchBook advisors dataset. Facet enum: `service_type`, `hq_country`, `hq_state`, `run_id`.",
- "operationId": "datasets-pitchbook-advisors-facets",
+ "description": "Returns one athlete's bio/overview (name, position, jersey, physicals, current team) from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
+ "operationId": "espn-athlete",
"parameters": [
{
- "description": "Facet enum: service_type, hq_country, hq_state, run_id",
+ "description": "Sport key",
"enum": [
- "service_type",
- "hq_country",
- "hq_state",
- "run_id"
+ "football",
+ "basketball",
+ "baseball",
+ "hockey",
+ "soccer"
],
"in": "query",
- "name": "facet",
+ "name": "sport",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over name and description, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact service provider type filter, max 128 characters",
- "in": "query",
- "name": "service_type",
- "type": "string"
- },
- {
- "description": "Exact headquarters country filter, max 128 characters",
- "in": "query",
- "name": "hq_country",
- "type": "string"
- },
- {
- "description": "Exact headquarters state/region filter, max 128 characters",
- "in": "query",
- "name": "hq_state",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
+ "type": "string",
+ "x-example": "football"
},
{
- "description": "Minimum founding year",
+ "description": "League key (must be valid for the sport)",
+ "enum": [
+ "nfl",
+ "college-football",
+ "nba",
+ "wnba",
+ "mens-college-basketball",
+ "womens-college-basketball",
+ "mlb",
+ "nhl",
+ "eng.1",
+ "esp.1",
+ "ita.1",
+ "ger.1",
+ "fra.1",
+ "usa.1",
+ "uefa.champions"
+ ],
"in": "query",
- "name": "min_year_founded",
- "type": "integer"
+ "name": "league",
+ "required": true,
+ "type": "string",
+ "x-example": "nfl"
},
{
- "description": "Maximum founding year",
+ "description": "Numeric ESPN athlete (player) id",
"in": "query",
- "name": "max_year_founded",
- "type": "integer"
+ "name": "athlete",
+ "required": true,
+ "type": "string",
+ "x-example": "3139477"
}
],
"produces": [
@@ -244043,7 +274820,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookAdvisorsFacetResponseDoc"
+ "$ref": "#/definitions/espn.athleteResponseDoc"
}
},
"400": {
@@ -244052,14 +274829,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -244070,26 +274853,67 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet PitchBook advisors dataset",
+ "summary": "ESPN athlete",
"tags": [
- "Datasets"
+ "ESPN"
]
}
},
- "/datasets/pitchbook-advisors/items/{id}": {
+ "/espn/game-summary": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled PitchBook advisor record by id from dataset id enum value `pitchbook-advisors`.",
- "operationId": "datasets-pitchbook-advisors-item",
+ "description": "Returns one game's matchup, betting odds, and boxscore stat totals from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport. Get an `event` id from the scoreboard endpoint.",
+ "operationId": "espn-game-summary",
"parameters": [
{
- "description": "PitchBook advisor id, e.g. 676215-64",
- "in": "path",
- "name": "id",
+ "description": "Sport key",
+ "enum": [
+ "football",
+ "basketball",
+ "baseball",
+ "hockey",
+ "soccer"
+ ],
+ "in": "query",
+ "name": "sport",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "baseball"
+ },
+ {
+ "description": "League key (must be valid for the sport)",
+ "enum": [
+ "nfl",
+ "college-football",
+ "nba",
+ "wnba",
+ "mens-college-basketball",
+ "womens-college-basketball",
+ "mlb",
+ "nhl",
+ "eng.1",
+ "esp.1",
+ "ita.1",
+ "ger.1",
+ "fra.1",
+ "usa.1",
+ "uefa.champions"
+ ],
+ "in": "query",
+ "name": "league",
+ "required": true,
+ "type": "string",
+ "x-example": "mlb"
+ },
+ {
+ "description": "Numeric ESPN event (game) id",
+ "in": "query",
+ "name": "event",
+ "required": true,
+ "type": "string",
+ "x-example": "401816033"
}
],
"produces": [
@@ -244099,7 +274923,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookAdvisorResponseDoc"
+ "$ref": "#/definitions/espn.gameSummaryResponseDoc"
}
},
"400": {
@@ -244120,8 +274944,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -244132,85 +274956,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a PitchBook advisor from dataset",
+ "summary": "ESPN game summary",
"tags": [
- "Datasets"
+ "ESPN"
]
}
},
- "/datasets/pitchbook-advisors/search": {
+ "/espn/news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the crawled public PitchBook advisor (service provider — e.g. investment bank, lender, financing advisory firm) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `recently_crawled_desc`.",
- "operationId": "datasets-pitchbook-advisors-search",
+ "description": "Returns recent news articles (headline, description, link) for a league from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
+ "operationId": "espn-news",
"parameters": [
{
- "description": "Full-text query over name and description, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact service provider type filter (e.g. Commercial Bank, Investment Bank, Financing Advisory), max 128 characters",
- "in": "query",
- "name": "service_type",
- "type": "string"
- },
- {
- "description": "Exact headquarters country filter, max 128 characters",
- "in": "query",
- "name": "hq_country",
- "type": "string"
- },
- {
- "description": "Exact headquarters state/region filter, max 128 characters",
- "in": "query",
- "name": "hq_state",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum founding year",
- "in": "query",
- "name": "min_year_founded",
- "type": "integer"
- },
- {
- "description": "Maximum founding year",
- "in": "query",
- "name": "max_year_founded",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, name_asc, year_founded_desc, recently_crawled_desc",
+ "description": "Sport key",
"enum": [
- "relevance",
- "name_asc",
- "year_founded_desc",
- "recently_crawled_desc"
+ "football",
+ "basketball",
+ "baseball",
+ "hockey",
+ "soccer"
],
"in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "name": "sport",
+ "required": true,
+ "type": "string",
+ "x-example": "basketball"
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "League key (must be valid for the sport)",
+ "enum": [
+ "nfl",
+ "college-football",
+ "nba",
+ "wnba",
+ "mens-college-basketball",
+ "womens-college-basketball",
+ "mlb",
+ "nhl",
+ "eng.1",
+ "esp.1",
+ "ita.1",
+ "ger.1",
+ "fra.1",
+ "usa.1",
+ "uefa.champions"
+ ],
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "league",
+ "required": true,
+ "type": "string",
+ "x-example": "nba"
}
],
"produces": [
@@ -244220,7 +275018,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookAdvisorsSearchResponseDoc"
+ "$ref": "#/definitions/espn.newsResponseDoc"
}
},
"400": {
@@ -244229,14 +275027,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -244247,101 +275051,44 @@
"ApiKeyAuth": []
}
],
- "summary": "Search PitchBook advisors dataset",
+ "summary": "ESPN league news",
"tags": [
- "Datasets"
+ "ESPN"
]
}
},
- "/datasets/pitchbook-companies/facets": {
+ "/espn/rankings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the PitchBook companies dataset. Facet enum: `status`, `primary_industry`, `financing_status`, `ownership_status`, `hq_country`, `hq_state`, `run_id`.",
- "operationId": "datasets-pitchbook-companies-facets",
+ "description": "Returns poll rankings (e.g. AP Top 25) for a college league from ESPN's credential-free public JSON. Rankings are only published for college leagues: the `sport` enum accepts `football` and `basketball`, and the `league` enum accepts `college-football`, `mens-college-basketball`, and `womens-college-basketball`.",
+ "operationId": "espn-rankings",
"parameters": [
{
- "description": "Facet enum: status, primary_industry, financing_status, ownership_status, hq_country, hq_state, run_id",
+ "description": "Sport key",
"enum": [
- "status",
- "primary_industry",
- "financing_status",
- "ownership_status",
- "hq_country",
- "hq_state",
- "run_id"
+ "football",
+ "basketball"
],
"in": "query",
- "name": "facet",
+ "name": "sport",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over name and description, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact status filter, max 128 characters",
- "in": "query",
- "name": "status",
- "type": "string"
- },
- {
- "description": "Exact primary industry filter, max 128 characters",
- "in": "query",
- "name": "primary_industry",
- "type": "string"
- },
- {
- "description": "Exact financing status filter, max 128 characters",
- "in": "query",
- "name": "financing_status",
- "type": "string"
- },
- {
- "description": "Exact ownership status filter, max 128 characters",
- "in": "query",
- "name": "ownership_status",
- "type": "string"
- },
- {
- "description": "Exact headquarters country filter, max 128 characters",
- "in": "query",
- "name": "hq_country",
- "type": "string"
- },
- {
- "description": "Exact headquarters state/region filter, max 128 characters",
- "in": "query",
- "name": "hq_state",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum founding year",
- "in": "query",
- "name": "min_year_founded",
- "type": "integer"
- },
- {
- "description": "Maximum founding year",
- "in": "query",
- "name": "max_year_founded",
- "type": "integer"
+ "type": "string",
+ "x-example": "football"
},
{
- "description": "Minimum number of investors",
+ "description": "College league key",
+ "enum": [
+ "college-football",
+ "mens-college-basketball",
+ "womens-college-basketball"
+ ],
"in": "query",
- "name": "min_investor_count",
- "type": "integer"
+ "name": "league",
+ "required": true,
+ "type": "string",
+ "x-example": "college-football"
}
],
"produces": [
@@ -244351,7 +275098,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookCompaniesFacetResponseDoc"
+ "$ref": "#/definitions/espn.rankingsResponseDoc"
}
},
"400": {
@@ -244360,14 +275107,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -244378,26 +275131,86 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet PitchBook companies dataset",
+ "summary": "ESPN poll rankings",
"tags": [
- "Datasets"
+ "ESPN"
]
}
},
- "/datasets/pitchbook-companies/items/{id}": {
+ "/espn/scoreboard": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled PitchBook company record by id from dataset id enum value `pitchbook-companies`.",
- "operationId": "datasets-pitchbook-companies-item",
+ "description": "Returns games (scores, schedule, status, and odds when available) for a sport and league from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport. The `seasontype` enum accepts `1` (preseason), `2` (regular season), `3` (postseason), and `4` (offseason).",
+ "operationId": "espn-scoreboard",
"parameters": [
{
- "description": "PitchBook company id, e.g. 752821-12",
- "in": "path",
- "name": "id",
+ "description": "Sport key",
+ "enum": [
+ "football",
+ "basketball",
+ "baseball",
+ "hockey",
+ "soccer"
+ ],
+ "in": "query",
+ "name": "sport",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "football"
+ },
+ {
+ "description": "League key (must be valid for the sport)",
+ "enum": [
+ "nfl",
+ "college-football",
+ "nba",
+ "wnba",
+ "mens-college-basketball",
+ "womens-college-basketball",
+ "mlb",
+ "nhl",
+ "eng.1",
+ "esp.1",
+ "ita.1",
+ "ger.1",
+ "fra.1",
+ "usa.1",
+ "uefa.champions"
+ ],
+ "in": "query",
+ "name": "league",
+ "required": true,
+ "type": "string",
+ "x-example": "nfl"
+ },
+ {
+ "description": "Date or range as YYYYMMDD, YYYYMMDD-YYYYMMDD, or YYYY; defaults to the current scoreboard",
+ "in": "query",
+ "name": "dates",
+ "type": "string",
+ "x-example": "20260910"
+ },
+ {
+ "description": "Week number (football leagues)",
+ "in": "query",
+ "name": "week",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Season type",
+ "enum": [
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "in": "query",
+ "name": "seasontype",
+ "type": "integer",
+ "x-example": 2
}
],
"produces": [
@@ -244407,7 +275220,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookCompanyResponseDoc"
+ "$ref": "#/definitions/espn.scoreboardResponseDoc"
}
},
"400": {
@@ -244428,8 +275241,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -244440,110 +275253,78 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a PitchBook company from dataset",
+ "summary": "ESPN scoreboard",
"tags": [
- "Datasets"
+ "ESPN"
]
}
},
- "/datasets/pitchbook-companies/search": {
+ "/espn/standings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the crawled public PitchBook company profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `investor_count_desc`, `recently_crawled_desc`.",
- "operationId": "datasets-pitchbook-companies-search",
+ "description": "Returns league standings grouped by conference/division from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport. The `seasontype` enum accepts `1` (preseason), `2` (regular season), and `3` (postseason).",
+ "operationId": "espn-standings",
"parameters": [
{
- "description": "Full-text query over name and description, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact status filter (e.g. Private, Public, Acquired, Out of Business), max 128 characters",
- "in": "query",
- "name": "status",
- "type": "string"
- },
- {
- "description": "Exact primary industry filter, max 128 characters",
- "in": "query",
- "name": "primary_industry",
- "type": "string"
- },
- {
- "description": "Exact financing status filter, max 128 characters",
- "in": "query",
- "name": "financing_status",
- "type": "string"
- },
- {
- "description": "Exact ownership status filter, max 128 characters",
- "in": "query",
- "name": "ownership_status",
- "type": "string"
- },
- {
- "description": "Exact headquarters country filter, max 128 characters",
- "in": "query",
- "name": "hq_country",
- "type": "string"
- },
- {
- "description": "Exact headquarters state/region filter, max 128 characters",
- "in": "query",
- "name": "hq_state",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum founding year",
- "in": "query",
- "name": "min_year_founded",
- "type": "integer"
- },
- {
- "description": "Maximum founding year",
- "in": "query",
- "name": "max_year_founded",
- "type": "integer"
- },
- {
- "description": "Minimum number of investors",
+ "description": "Sport key",
+ "enum": [
+ "football",
+ "basketball",
+ "baseball",
+ "hockey",
+ "soccer"
+ ],
"in": "query",
- "name": "min_investor_count",
- "type": "integer"
+ "name": "sport",
+ "required": true,
+ "type": "string",
+ "x-example": "football"
},
{
- "description": "Sort enum: relevance, name_asc, year_founded_desc, investor_count_desc, recently_crawled_desc",
+ "description": "League key (must be valid for the sport)",
"enum": [
- "relevance",
- "name_asc",
- "year_founded_desc",
- "investor_count_desc",
- "recently_crawled_desc"
+ "nfl",
+ "college-football",
+ "nba",
+ "wnba",
+ "mens-college-basketball",
+ "womens-college-basketball",
+ "mlb",
+ "nhl",
+ "eng.1",
+ "esp.1",
+ "ita.1",
+ "ger.1",
+ "fra.1",
+ "usa.1",
+ "uefa.champions"
],
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "league",
+ "required": true,
+ "type": "string",
+ "x-example": "nfl"
},
{
- "description": "Page number, defaults to 1",
+ "description": "Four-digit season year; defaults to the current season",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "season",
+ "type": "integer",
+ "x-example": 2024
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Season type",
+ "enum": [
+ 1,
+ 2,
+ 3
+ ],
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "seasontype",
+ "type": "integer",
+ "x-example": 2
}
],
"produces": [
@@ -244553,7 +275334,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookCompaniesSearchResponseDoc"
+ "$ref": "#/definitions/espn.standingsResponseDoc"
}
},
"400": {
@@ -244562,14 +275343,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -244580,67 +275367,67 @@
"ApiKeyAuth": []
}
],
- "summary": "Search PitchBook companies dataset",
+ "summary": "ESPN standings",
"tags": [
- "Datasets"
+ "ESPN"
]
}
},
- "/datasets/pitchbook-funds/facets": {
+ "/espn/team": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the PitchBook funds dataset. Facet enum: `fund_strategy`, `fund_status`, `run_id`.",
- "operationId": "datasets-pitchbook-funds-facets",
+ "description": "Returns one team's detail (identity, colors, record, standing summary) from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
+ "operationId": "espn-team",
"parameters": [
{
- "description": "Facet enum: fund_strategy, fund_status, run_id",
+ "description": "Sport key",
"enum": [
- "fund_strategy",
- "fund_status",
- "run_id"
+ "football",
+ "basketball",
+ "baseball",
+ "hockey",
+ "soccer"
],
"in": "query",
- "name": "facet",
+ "name": "sport",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over name and description, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact fund strategy filter, max 128 characters",
- "in": "query",
- "name": "fund_strategy",
- "type": "string"
- },
- {
- "description": "Exact fund status filter, max 128 characters",
- "in": "query",
- "name": "fund_status",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
+ "type": "string",
+ "x-example": "football"
},
{
- "description": "Minimum vintage year",
+ "description": "League key (must be valid for the sport)",
+ "enum": [
+ "nfl",
+ "college-football",
+ "nba",
+ "wnba",
+ "mens-college-basketball",
+ "womens-college-basketball",
+ "mlb",
+ "nhl",
+ "eng.1",
+ "esp.1",
+ "ita.1",
+ "ger.1",
+ "fra.1",
+ "usa.1",
+ "uefa.champions"
+ ],
"in": "query",
- "name": "min_vintage_year",
- "type": "integer"
+ "name": "league",
+ "required": true,
+ "type": "string",
+ "x-example": "nfl"
},
{
- "description": "Maximum vintage year",
+ "description": "Team id (numeric) or abbreviation",
"in": "query",
- "name": "max_vintage_year",
- "type": "integer"
+ "name": "team",
+ "required": true,
+ "type": "string",
+ "x-example": "KC"
}
],
"produces": [
@@ -244650,7 +275437,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookFundsFacetResponseDoc"
+ "$ref": "#/definitions/espn.teamResponseDoc"
}
},
"400": {
@@ -244659,14 +275446,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -244677,26 +275470,67 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet PitchBook funds dataset",
+ "summary": "ESPN team detail",
"tags": [
- "Datasets"
+ "ESPN"
]
}
},
- "/datasets/pitchbook-funds/items/{id}": {
+ "/espn/team-roster": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled PitchBook fund record by id from dataset id enum value `pitchbook-funds`.",
- "operationId": "datasets-pitchbook-funds-item",
+ "description": "Returns a team's roster (players with position, jersey, age, and experience) plus head coach from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
+ "operationId": "espn-team-roster",
"parameters": [
{
- "description": "PitchBook fund id, e.g. 19719-91F",
- "in": "path",
- "name": "id",
+ "description": "Sport key",
+ "enum": [
+ "football",
+ "basketball",
+ "baseball",
+ "hockey",
+ "soccer"
+ ],
+ "in": "query",
+ "name": "sport",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "football"
+ },
+ {
+ "description": "League key (must be valid for the sport)",
+ "enum": [
+ "nfl",
+ "college-football",
+ "nba",
+ "wnba",
+ "mens-college-basketball",
+ "womens-college-basketball",
+ "mlb",
+ "nhl",
+ "eng.1",
+ "esp.1",
+ "ita.1",
+ "ger.1",
+ "fra.1",
+ "usa.1",
+ "uefa.champions"
+ ],
+ "in": "query",
+ "name": "league",
+ "required": true,
+ "type": "string",
+ "x-example": "nfl"
+ },
+ {
+ "description": "Team id (numeric) or abbreviation",
+ "in": "query",
+ "name": "team",
+ "required": true,
+ "type": "string",
+ "x-example": "KC"
}
],
"produces": [
@@ -244706,7 +275540,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookFundResponseDoc"
+ "$ref": "#/definitions/espn.rosterResponseDoc"
}
},
"400": {
@@ -244727,8 +275561,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -244739,79 +275573,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a PitchBook fund from dataset",
+ "summary": "ESPN team roster",
"tags": [
- "Datasets"
+ "ESPN"
]
}
},
- "/datasets/pitchbook-funds/search": {
+ "/espn/teams": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the crawled public PitchBook fund profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `vintage_desc`, `recently_crawled_desc`.",
- "operationId": "datasets-pitchbook-funds-search",
+ "description": "Returns the full team list for a sport and league from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
+ "operationId": "espn-teams",
"parameters": [
{
- "description": "Full-text query over name and description, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact fund strategy filter (e.g. Early Stage VC, Buyout), max 128 characters",
- "in": "query",
- "name": "fund_strategy",
- "type": "string"
- },
- {
- "description": "Exact fund status filter (e.g. Closed, Raising), max 128 characters",
- "in": "query",
- "name": "fund_status",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum vintage year",
- "in": "query",
- "name": "min_vintage_year",
- "type": "integer"
- },
- {
- "description": "Maximum vintage year",
- "in": "query",
- "name": "max_vintage_year",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, name_asc, vintage_desc, recently_crawled_desc",
+ "description": "Sport key",
"enum": [
- "relevance",
- "name_asc",
- "vintage_desc",
- "recently_crawled_desc"
+ "football",
+ "basketball",
+ "baseball",
+ "hockey",
+ "soccer"
],
"in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "name": "sport",
+ "required": true,
+ "type": "string",
+ "x-example": "basketball"
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "League key (must be valid for the sport)",
+ "enum": [
+ "nfl",
+ "college-football",
+ "nba",
+ "wnba",
+ "mens-college-basketball",
+ "womens-college-basketball",
+ "mlb",
+ "nhl",
+ "eng.1",
+ "esp.1",
+ "ita.1",
+ "ger.1",
+ "fra.1",
+ "usa.1",
+ "uefa.champions"
+ ],
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "league",
+ "required": true,
+ "type": "string",
+ "x-example": "nba"
}
],
"produces": [
@@ -244821,7 +275635,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookFundsSearchResponseDoc"
+ "$ref": "#/definitions/espn.teamsResponseDoc"
}
},
"400": {
@@ -244830,14 +275644,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -244848,81 +275668,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search PitchBook funds dataset",
+ "summary": "ESPN team list",
"tags": [
- "Datasets"
+ "ESPN"
]
}
},
- "/datasets/pitchbook-investors/facets": {
+ "/etsy/listing/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the PitchBook investors dataset. Facet enum: `status`, `investor_type`, `hq_country`, `hq_state`, `run_id`.",
- "operationId": "datasets-pitchbook-investors-facets",
+ "description": "Returns Etsy listing detail: title, price, images, materials, tags, and shop.",
+ "operationId": "etsy-listing",
"parameters": [
{
- "description": "Facet enum: status, investor_type, hq_country, hq_state, run_id",
- "enum": [
- "status",
- "investor_type",
- "hq_country",
- "hq_state",
- "run_id"
- ],
- "in": "query",
- "name": "facet",
+ "description": "Numeric Etsy listing id",
+ "in": "path",
+ "name": "id",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over name and description, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact status filter, max 128 characters",
- "in": "query",
- "name": "status",
- "type": "string"
- },
- {
- "description": "Exact investor type filter, max 128 characters",
- "in": "query",
- "name": "investor_type",
- "type": "string"
- },
- {
- "description": "Exact headquarters country filter, max 128 characters",
- "in": "query",
- "name": "hq_country",
- "type": "string"
- },
- {
- "description": "Exact headquarters state/region filter, max 128 characters",
- "in": "query",
- "name": "hq_state",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum current portfolio size",
- "in": "query",
- "name": "min_portfolio_count",
- "type": "integer"
- },
- {
- "description": "Minimum number of exits",
- "in": "query",
- "name": "min_exits_count",
- "type": "integer"
+ "type": "string",
+ "x-example": "1044347578"
}
],
"produces": [
@@ -244932,7 +275698,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookInvestorsFacetResponseDoc"
+ "$ref": "#/definitions/etsy.listingResponseDoc"
}
},
"400": {
@@ -244941,6 +275707,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -244952,6 +275724,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -244959,26 +275737,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet PitchBook investors dataset",
+ "summary": "Get Etsy listing detail",
"tags": [
- "Datasets"
+ "Etsy"
]
}
},
- "/datasets/pitchbook-investors/items/{id}": {
+ "/etsy/listing/{id}/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled PitchBook investor record by id from dataset id enum value `pitchbook-investors`.",
- "operationId": "datasets-pitchbook-investors-item",
+ "description": "Returns buyer reviews for an Etsy listing.",
+ "operationId": "etsy-listing-reviews",
"parameters": [
{
- "description": "PitchBook investor id, e.g. 294471-37",
+ "description": "Numeric Etsy listing id",
"in": "path",
"name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "1044347578"
+ },
+ {
+ "description": "0-based review offset",
+ "in": "query",
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
+ },
+ {
+ "description": "Review sort order",
+ "enum": [
+ "newest",
+ "oldest",
+ "highest_rating",
+ "lowest_rating",
+ "most_relevant"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "newest"
}
],
"produces": [
@@ -244988,7 +275788,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookInvestorResponseDoc"
+ "$ref": "#/definitions/etsy.listingReviewsResponseDoc"
}
},
"400": {
@@ -245014,6 +275814,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -245021,91 +275827,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a PitchBook investor from dataset",
+ "summary": "Get Etsy listing reviews",
"tags": [
- "Datasets"
+ "Etsy"
]
}
},
- "/datasets/pitchbook-investors/search": {
+ "/etsy/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the crawled public PitchBook investor (fund manager/firm) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `portfolio_count_desc`, `recently_crawled_desc`.",
- "operationId": "datasets-pitchbook-investors-search",
+ "description": "Returns Etsy product search results across shops for a keyword query.",
+ "operationId": "etsy-search",
"parameters": [
{
- "description": "Full-text query over name and description, max 256 characters",
+ "description": "Search keywords",
"in": "query",
"name": "q",
- "type": "string"
- },
- {
- "description": "Exact status filter (e.g. Active, Inactive), max 128 characters",
- "in": "query",
- "name": "status",
- "type": "string"
- },
- {
- "description": "Exact investor type filter (e.g. Venture Capital, Private Equity, Angel), max 128 characters",
- "in": "query",
- "name": "investor_type",
- "type": "string"
- },
- {
- "description": "Exact headquarters country filter, max 128 characters",
- "in": "query",
- "name": "hq_country",
- "type": "string"
- },
- {
- "description": "Exact headquarters state/region filter, max 128 characters",
- "in": "query",
- "name": "hq_state",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum current portfolio size",
- "in": "query",
- "name": "min_portfolio_count",
- "type": "integer"
- },
- {
- "description": "Minimum number of exits",
- "in": "query",
- "name": "min_exits_count",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, name_asc, portfolio_count_desc, recently_crawled_desc",
- "enum": [
- "relevance",
- "name_asc",
- "portfolio_count_desc",
- "recently_crawled_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "required": true,
+ "type": "string",
+ "x-example": "handmade mug"
},
{
- "description": "Page number, defaults to 1",
+ "description": "0-based result offset",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Page size (default 36, max 100)",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 36
}
],
"produces": [
@@ -245115,7 +275871,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookInvestorsSearchResponseDoc"
+ "$ref": "#/definitions/etsy.searchResponseDoc"
}
},
"400": {
@@ -245135,6 +275891,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -245142,74 +275904,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Search PitchBook investors dataset",
+ "summary": "Search Etsy listings",
"tags": [
- "Datasets"
+ "Etsy"
]
}
},
- "/datasets/pitchbook-limited-partners/facets": {
+ "/etsy/shop/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the PitchBook limited partners dataset. Facet enum: `institution_type`, `hq_country`, `hq_state`, `run_id`.",
- "operationId": "datasets-pitchbook-limited-partners-facets",
+ "description": "Returns Etsy shops matching a keyword.",
+ "operationId": "etsy-shop-search",
"parameters": [
{
- "description": "Facet enum: institution_type, hq_country, hq_state, run_id",
- "enum": [
- "institution_type",
- "hq_country",
- "hq_state",
- "run_id"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over name and description, max 256 characters",
+ "description": "Shop search keyword",
"in": "query",
"name": "q",
- "type": "string"
- },
- {
- "description": "Exact institution type filter, max 128 characters",
- "in": "query",
- "name": "institution_type",
- "type": "string"
- },
- {
- "description": "Exact headquarters country filter, max 128 characters",
- "in": "query",
- "name": "hq_country",
- "type": "string"
- },
- {
- "description": "Exact headquarters state/region filter, max 128 characters",
- "in": "query",
- "name": "hq_state",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum founding year",
- "in": "query",
- "name": "min_year_founded",
- "type": "integer"
+ "required": true,
+ "type": "string",
+ "x-example": "ceramic"
},
{
- "description": "Maximum founding year",
+ "description": "Max shops to return (default 10)",
"in": "query",
- "name": "max_year_founded",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -245219,7 +275941,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookLimitedPartnersFacetResponseDoc"
+ "$ref": "#/definitions/etsy.shopSearchResponseDoc"
}
},
"400": {
@@ -245239,6 +275961,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -245246,26 +275974,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet PitchBook limited partners dataset",
+ "summary": "Search Etsy shops",
"tags": [
- "Datasets"
+ "Etsy"
]
}
},
- "/datasets/pitchbook-limited-partners/items/{id}": {
+ "/etsy/shop/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled PitchBook limited partner record by id from dataset id enum value `pitchbook-limited-partners`.",
- "operationId": "datasets-pitchbook-limited-partners-item",
+ "description": "Returns an Etsy shop profile: seller, headline, rating, and sold count. Accepts a numeric shop id or a shop name.",
+ "operationId": "etsy-shop",
"parameters": [
{
- "description": "PitchBook limited partner id, e.g. 864326-44",
+ "description": "Numeric Etsy shop id or shop name",
"in": "path",
"name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "gaguatelier"
}
],
"produces": [
@@ -245275,7 +276004,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookLimitedPartnerResponseDoc"
+ "$ref": "#/definitions/etsy.shopResponseDoc"
}
},
"400": {
@@ -245301,6 +276030,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -245308,85 +276043,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a PitchBook limited partner from dataset",
+ "summary": "Get Etsy shop profile",
"tags": [
- "Datasets"
+ "Etsy"
]
}
},
- "/datasets/pitchbook-limited-partners/search": {
+ "/etsy/shop/{id}/listings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the crawled public PitchBook limited partner (institutional investor — e.g. pension fund, endowment, insurance company) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Some limited partner profiles have no FAQ section -- this is normal, not a sign of missing data. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `recently_crawled_desc`.",
- "operationId": "datasets-pitchbook-limited-partners-search",
+ "description": "Returns a shop's listing catalog, optionally filtered by keyword. Accepts a numeric shop id or a shop name.",
+ "operationId": "etsy-shop-listings",
"parameters": [
{
- "description": "Full-text query over name and description, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact institution type filter (e.g. Corporate Pension, Private Investment Fund, Endowment), max 128 characters",
- "in": "query",
- "name": "institution_type",
- "type": "string"
- },
- {
- "description": "Exact headquarters country filter, max 128 characters",
- "in": "query",
- "name": "hq_country",
- "type": "string"
- },
- {
- "description": "Exact headquarters state/region filter, max 128 characters",
- "in": "query",
- "name": "hq_state",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Minimum founding year",
- "in": "query",
- "name": "min_year_founded",
- "type": "integer"
- },
- {
- "description": "Maximum founding year",
- "in": "query",
- "name": "max_year_founded",
- "type": "integer"
+ "description": "Numeric Etsy shop id or shop name",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "gaguatelier"
},
{
- "description": "Sort enum: relevance, name_asc, year_founded_desc, recently_crawled_desc",
- "enum": [
- "relevance",
- "name_asc",
- "year_founded_desc",
- "recently_crawled_desc"
- ],
+ "description": "Keyword filter within the shop's own catalog",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "q",
+ "type": "string",
+ "x-example": "mug"
},
{
- "description": "Page number, defaults to 1",
+ "description": "0-based listing offset",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Page size (default 24)",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 24
}
],
"produces": [
@@ -245396,7 +276094,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.pitchbookLimitedPartnersSearchResponseDoc"
+ "$ref": "#/definitions/etsy.shopListingsResponseDoc"
}
},
"400": {
@@ -245405,6 +276103,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -245416,6 +276120,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -245423,202 +276133,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Search PitchBook limited partners dataset",
+ "summary": "Get an Etsy shop's listings",
"tags": [
- "Datasets"
+ "Etsy"
]
}
},
- "/datasets/playstation-games/facets": {
+ "/etsy/shop/{id}/reviews": {
"get": {
"consumes": [
- "application/json"
- ],
- "description": "Returns terms aggregation counts for the PlayStation games dataset. Facet enum: `publisher`, `classification`, `genres`, `platforms`, `content_rating_authority`, `content_descriptors`, `price_tier`, `service_branding`, `region`, `release_year`, `run_id`, `is_free`, `is_addon`, `is_tied_to_subscription`, `coming_soon`. price_tier enum: `free`, `under_5`, `5_to_10`, `10_to_20`, `20_to_40`, `40_to_60`, `60_plus`.",
- "operationId": "datasets-playstation-games-facets",
- "parameters": [
- {
- "description": "Facet enum: publisher, classification, genres, platforms, content_rating_authority, content_descriptors, price_tier, service_branding, region, release_year, run_id, is_free, is_addon, is_tied_to_subscription, coming_soon",
- "enum": [
- "publisher",
- "classification",
- "genres",
- "platforms",
- "content_rating_authority",
- "content_descriptors",
- "price_tier",
- "service_branding",
- "region",
- "release_year",
- "run_id",
- "is_free",
- "is_addon",
- "is_tied_to_subscription",
- "coming_soon"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over name and publisher, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact publisher filter, max 128 characters",
- "in": "query",
- "name": "publisher",
- "type": "string"
- },
- {
- "description": "Exact classification filter, max 128 characters",
- "in": "query",
- "name": "classification",
- "type": "string"
- },
- {
- "description": "Exact genre filter, max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Exact platform filter: PS4 or PS5",
- "in": "query",
- "name": "platform",
- "type": "string"
- },
- {
- "description": "Exact content-rating authority filter, max 128 characters",
- "in": "query",
- "name": "content_rating",
- "type": "string"
- },
- {
- "description": "Exact content-descriptor filter, max 128 characters",
- "in": "query",
- "name": "content_descriptor",
- "type": "string"
- },
- {
- "description": "Price-tier enum: free, under_5, 5_to_10, 10_to_20, 20_to_40, 40_to_60, 60_plus",
- "enum": [
- "free",
- "under_5",
- "5_to_10",
- "10_to_20",
- "20_to_40",
- "40_to_60",
- "60_plus"
- ],
- "in": "query",
- "name": "price_tier",
- "type": "string"
- },
- {
- "description": "Exact subscription/service-branding filter, max 128 characters",
- "in": "query",
- "name": "branding",
- "type": "string"
- },
- {
- "description": "Exact store region (country code) filter, max 128 characters",
- "in": "query",
- "name": "region",
- "type": "string"
- },
- {
- "description": "Exact concept id filter, max 128 characters",
- "in": "query",
- "name": "concept_id",
- "type": "string"
- },
- {
- "description": "Exact np_title_id filter, max 128 characters",
- "in": "query",
- "name": "np_title_id",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Filter by free flag",
- "in": "query",
- "name": "is_free",
- "type": "boolean"
- },
- {
- "description": "Filter add-ons vs games",
- "in": "query",
- "name": "is_addon",
- "type": "boolean"
- },
- {
- "description": "Filter subscription-included titles",
- "in": "query",
- "name": "is_tied_to_subscription",
- "type": "boolean"
- },
- {
- "description": "Filter for pre-release titles",
- "in": "query",
- "name": "coming_soon",
- "type": "boolean"
- },
- {
- "description": "Filter by titles currently discounted (discount_pct > 0)",
- "in": "query",
- "name": "on_sale",
- "type": "boolean"
- },
- {
- "description": "Minimum current price in minor units",
- "in": "query",
- "name": "min_price_value",
- "type": "integer"
- },
- {
- "description": "Maximum current price in minor units",
- "in": "query",
- "name": "max_price_value",
- "type": "integer"
- },
- {
- "description": "Minimum average star rating, 0 through 5",
- "in": "query",
- "name": "min_star_rating",
- "type": "number"
- },
- {
- "description": "Minimum number of star ratings",
- "in": "query",
- "name": "min_star_count",
- "type": "integer"
- },
+ "application/json"
+ ],
+ "description": "Returns buyer reviews for an Etsy shop. Accepts a numeric shop id or a shop name.",
+ "operationId": "etsy-shop-reviews",
+ "parameters": [
{
- "description": "Minimum discount percent, 0 through 100",
- "in": "query",
- "name": "min_discount_pct",
- "type": "integer"
+ "description": "Numeric Etsy shop id or shop name",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "gaguatelier"
},
{
- "description": "Minimum release year",
+ "description": "0-based review offset",
"in": "query",
- "name": "min_release_year",
- "type": "integer"
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
},
{
- "description": "Maximum release year",
+ "description": "Page size (default 14)",
"in": "query",
- "name": "max_release_year",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 14
}
],
"produces": [
@@ -245628,7 +276177,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.playstationGamesFacetResponseDoc"
+ "$ref": "#/definitions/etsy.shopReviewsResponseDoc"
}
},
"400": {
@@ -245637,6 +276186,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -245648,6 +276203,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -245655,26 +276216,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet PlayStation games dataset",
+ "summary": "Get Etsy shop reviews",
"tags": [
- "Datasets"
+ "Etsy"
]
}
},
- "/datasets/playstation-games/items/{product_id}": {
+ "/euronews/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one crawled PlayStation Store record by product_id from dataset id enum value `playstation-games`.",
- "operationId": "datasets-playstation-games-item",
+ "description": "Returns public Euronews article metadata and body paragraphs from a canonical English-edition article URL.",
+ "operationId": "euronews-article",
"parameters": [
{
- "description": "PlayStation product id (e.g. UP0001-PPSA01491_00-GAME000000000000)",
- "in": "path",
- "name": "product_id",
+ "description": "Canonical Euronews article URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "https://www.euronews.com/2026/09/24/example-article-slug"
}
],
"produces": [
@@ -245684,7 +276243,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.playstationGameResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -245699,14 +276258,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -245717,206 +276270,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a PlayStation game from dataset",
+ "summary": "Get Euronews article content",
"tags": [
- "Datasets"
+ "Euronews"
]
}
},
- "/datasets/playstation-games/search": {
+ "/euronews/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches the crawled public PlayStation Store catalog stored in a search index. One row per product SKU (game, edition or add-on); concept_id / np_title_id group a title's SKUs. price_tier enum: `free`, `under_5`, `5_to_10`, `10_to_20`, `20_to_40`, `40_to_60`, `60_plus`. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `price_asc`, `price_desc`, `discount_desc`, `release_desc`, `release_asc`.",
- "operationId": "datasets-playstation-games-search",
+ "description": "Returns a Euronews author's byline metadata and recent articles from a canonical profile URL.",
+ "operationId": "euronews-author",
"parameters": [
{
- "description": "Full-text query over name and publisher, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact publisher filter, max 128 characters",
- "in": "query",
- "name": "publisher",
- "type": "string"
- },
- {
- "description": "Exact classification filter: FULL_GAME, PREMIUM_EDITION, GAME_BUNDLE, ADD_ON_PACK, VIRTUAL_CURRENCY, LEVEL, OTHER",
- "in": "query",
- "name": "classification",
- "type": "string"
- },
- {
- "description": "Exact genre filter (e.g. Action, Role Playing Games), max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Exact platform filter: PS4 or PS5",
- "in": "query",
- "name": "platform",
- "type": "string"
- },
- {
- "description": "Exact content-rating authority filter (e.g. ESRB, PEGI), max 128 characters",
- "in": "query",
- "name": "content_rating",
- "type": "string"
- },
- {
- "description": "Exact content-descriptor filter (e.g. Blood, Violence, In-Game Purchases, Users Interact), max 128 characters",
- "in": "query",
- "name": "content_descriptor",
- "type": "string"
- },
- {
- "description": "Price-tier enum: free, under_5, 5_to_10, 10_to_20, 20_to_40, 40_to_60, 60_plus",
- "enum": [
- "free",
- "under_5",
- "5_to_10",
- "10_to_20",
- "20_to_40",
- "40_to_60",
- "60_plus"
- ],
- "in": "query",
- "name": "price_tier",
- "type": "string"
- },
- {
- "description": "Exact subscription/service-branding filter (e.g. PS_PLUS, EA_PLAY, UBISOFT_PLUS), max 128 characters",
- "in": "query",
- "name": "branding",
- "type": "string"
- },
- {
- "description": "Exact store region (country code) filter, max 128 characters",
- "in": "query",
- "name": "region",
- "type": "string"
- },
- {
- "description": "Exact concept id filter (groups all SKUs of a title), max 128 characters",
- "in": "query",
- "name": "concept_id",
- "type": "string"
- },
- {
- "description": "Exact np_title_id filter, max 128 characters",
- "in": "query",
- "name": "np_title_id",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Filter by free flag",
- "in": "query",
- "name": "is_free",
- "type": "boolean"
- },
- {
- "description": "Filter: true returns add-ons/DLC/currency, false returns games and editions",
- "in": "query",
- "name": "is_addon",
- "type": "boolean"
- },
- {
- "description": "Filter for titles included with a subscription (e.g. free with PS Plus)",
- "in": "query",
- "name": "is_tied_to_subscription",
- "type": "boolean"
- },
- {
- "description": "Filter for pre-release / not-yet-purchasable titles",
- "in": "query",
- "name": "coming_soon",
- "type": "boolean"
- },
- {
- "description": "Filter by titles currently discounted (discount_pct > 0)",
- "in": "query",
- "name": "on_sale",
- "type": "boolean"
- },
- {
- "description": "Minimum current price in minor units (e.g. cents)",
- "in": "query",
- "name": "min_price_value",
- "type": "integer"
- },
- {
- "description": "Maximum current price in minor units (e.g. cents)",
- "in": "query",
- "name": "max_price_value",
- "type": "integer"
- },
- {
- "description": "Minimum average star rating, 0 through 5",
- "in": "query",
- "name": "min_star_rating",
- "type": "number"
- },
- {
- "description": "Minimum number of star ratings",
- "in": "query",
- "name": "min_star_count",
- "type": "integer"
- },
- {
- "description": "Minimum discount percent, 0 through 100",
- "in": "query",
- "name": "min_discount_pct",
- "type": "integer"
- },
- {
- "description": "Minimum release year",
- "in": "query",
- "name": "min_release_year",
- "type": "integer"
- },
- {
- "description": "Maximum release year",
- "in": "query",
- "name": "max_release_year",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, rating_desc, reviews_desc, price_asc, price_desc, discount_desc, release_desc, release_asc",
- "enum": [
- "relevance",
- "rating_desc",
- "reviews_desc",
- "price_asc",
- "price_desc",
- "discount_desc",
- "release_desc",
- "release_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Canonical Euronews author profile URL",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.euronews.com/profiles/2748"
}
],
"produces": [
@@ -245926,7 +276297,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.playstationGamesSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.euronewsAuthorResponseDoc"
}
},
"400": {
@@ -245935,14 +276306,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -245953,54 +276324,68 @@
"ApiKeyAuth": []
}
],
- "summary": "Search PlayStation games dataset",
+ "summary": "Get a Euronews author profile",
"tags": [
- "Datasets"
+ "Euronews"
]
}
},
- "/datasets/producthunt-makers/facets": {
+ "/euronews/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns distribution counts over the Product Hunt makers dataset (dataset id enum value `producthunt-makers`), honoring the same filters as search. Facet enum: `topic`, `product_count_band`.",
- "operationId": "datasets-producthunt-makers-facets",
+ "description": "Returns fresh headlines from one public Euronews English-edition section.",
+ "operationId": "euronews-headlines",
"parameters": [
{
- "description": "Facet enum: topic, product_count_band",
+ "description": "Euronews section slug",
"enum": [
- "topic",
- "product_count_band"
+ "news",
+ "news-africa",
+ "news-americas",
+ "news-asia",
+ "news-international",
+ "news-middle-east",
+ "news-oceania",
+ "business",
+ "business-business",
+ "business-economy",
+ "business-markets",
+ "culture",
+ "culture-art",
+ "culture-lifestyle",
+ "culture-news",
+ "culture-design",
+ "culture-food-and-drink",
+ "earth",
+ "earth-climate",
+ "earth-news",
+ "earth-ecotech",
+ "earth-nature",
+ "earth-water",
+ "health",
+ "health-news",
+ "health-healthcare",
+ "health-nutrition",
+ "health-wellbeing",
+ "my-europe",
+ "my-europe-eu-xl",
+ "my-europe-news",
+ "next",
+ "next-mobility",
+ "next-money",
+ "next-space",
+ "next-tech-news",
+ "next-work",
+ "travel",
+ "travel-destinations",
+ "travel-moments",
+ "travel-residences",
+ "travel-news"
],
"in": "query",
- "name": "facet",
+ "name": "section",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over maker name and headline, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact topic-slug the maker builds in, max 128 characters",
- "in": "query",
- "name": "topic",
- "type": "string"
- },
- {
- "description": "Minimum number of products made, 0 or greater",
- "in": "query",
- "name": "min_products",
- "type": "integer"
- },
- {
- "description": "Minimum total upvotes across the maker's products, 0 or greater",
- "in": "query",
- "name": "min_total_votes",
- "type": "integer"
+ "type": "string",
+ "x-example": "news"
}
],
"produces": [
@@ -246010,7 +276395,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.producthuntMakersFacetResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -246019,14 +276404,46 @@
"$ref": "#/definitions/app.Response"
}
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Euronews section headlines",
+ "tags": [
+ "Euronews"
+ ]
+ }
+ },
+ "/euronews/news": {
+ "get": {
+ "description": "Returns fresh Euronews English-edition top stories from its public RSS feed.",
+ "operationId": "euronews-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246037,26 +276454,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Product Hunt makers dataset",
+ "summary": "Get Euronews top stories",
"tags": [
- "Datasets"
+ "Euronews"
]
}
},
- "/datasets/producthunt-makers/items/{username}": {
+ "/euronews/sections": {
+ "get": {
+ "description": "Returns the public Euronews English-edition section inventory used by the headlines endpoint.",
+ "operationId": "euronews-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Euronews sections",
+ "tags": [
+ "Euronews"
+ ]
+ }
+ },
+ "/everlane/collections": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one maker by Product Hunt username from dataset id enum value `producthunt-makers`, including the products they made and their aggregate footprint. Returns 404 when the username is not in the dataset.",
- "operationId": "datasets-producthunt-makers-item",
+ "description": "Returns normalized collections from Everlane (https://www.everlane.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
+ "operationId": "everlane-collections",
"parameters": [
{
- "description": "Product Hunt maker username, e.g. rrhoover",
- "in": "path",
- "name": "username",
- "required": true,
- "type": "string"
+ "description": "1-based page, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Maximum collections, defaults to 50 and supports up to 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -246066,7 +276516,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.producthuntMakerResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
}
},
"400": {
@@ -246075,20 +276525,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246099,67 +276543,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Product Hunt maker from the dataset",
+ "summary": "List Everlane collections",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/producthunt-makers/search": {
+ "/everlane/collections/{handle}/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Product Hunt makers from the dataset id enum value `producthunt-makers` — public-profile records of the people who made products, with their footprint (products made, total upvotes, topics) for maker leaderboards. Public fields only. Sort enum: `total_votes_desc`, `product_count_desc`, `followers_desc`, `relevance`.",
- "operationId": "datasets-producthunt-makers-search",
+ "description": "Returns normalized products from one Everlane (https://www.everlane.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
+ "operationId": "everlane-collection-products",
"parameters": [
{
- "description": "Full-text query over maker name and headline, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact topic-slug the maker builds in, e.g. artificial-intelligence, max 128 characters",
- "in": "query",
- "name": "topic",
- "type": "string"
- },
- {
- "description": "Minimum number of products made, 0 or greater",
- "in": "query",
- "name": "min_products",
- "type": "integer"
- },
- {
- "description": "Minimum total upvotes across the maker's products, 0 or greater",
- "in": "query",
- "name": "min_total_votes",
- "type": "integer"
- },
- {
- "description": "Sort enum: total_votes_desc, product_count_desc, followers_desc, relevance",
- "enum": [
- "total_votes_desc",
- "product_count_desc",
- "followers_desc",
- "relevance"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "description": "Collection handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
+ "type": "string",
+ "x-example": "collection-handle"
},
{
- "description": "Page number, defaults to 1",
+ "description": "1-based page, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Maximum products, defaults to 50 and supports up to 250",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -246169,7 +276587,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.producthuntMakersSearchResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
}
},
"400": {
@@ -246178,14 +276596,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246196,92 +276620,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Product Hunt makers dataset",
+ "summary": "List Everlane collection products",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/producthunt-products/facets": {
+ "/everlane/pages": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns distribution counts over the Product Hunt products dataset (dataset id enum value `producthunt-products`), honoring the same filters as search. Facet enum: `topic`, `launch_year`, `pricing_type`, `product_state`.",
- "operationId": "datasets-producthunt-products-facets",
+ "description": "Returns normalized static pages from Everlane (https://www.everlane.com). The storefront URL is fixed server-side.",
+ "operationId": "everlane-pages",
"parameters": [
{
- "description": "Facet enum: topic, launch_year, pricing_type, product_state",
- "enum": [
- "topic",
- "launch_year",
- "pricing_type",
- "product_state"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over product name and tagline, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact topic-slug filter, e.g. artificial-intelligence, max 128 characters",
- "in": "query",
- "name": "topic",
- "type": "string"
- },
- {
- "description": "Exact maker-username filter (populated by hydration), max 128 characters",
- "in": "query",
- "name": "maker",
- "type": "string"
- },
- {
- "description": "Lower bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
- "in": "query",
- "name": "launched_after",
- "type": "string"
- },
- {
- "description": "Upper bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
- "in": "query",
- "name": "launched_before",
- "type": "string"
- },
- {
- "description": "Minimum upvotes, 0 or greater",
- "in": "query",
- "name": "min_votes",
- "type": "integer"
- },
- {
- "description": "Minimum review rating, from 0 through 5",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Exact pricing-type filter, e.g. free, paid, freemium",
- "in": "query",
- "name": "pricing_type",
- "type": "string"
- },
- {
- "description": "Website presence filter",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "has_website",
- "type": "boolean"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "true keeps only products still online, false only retired products",
+ "description": "Maximum static pages, defaults to 50 and supports up to 250",
"in": "query",
- "name": "is_online",
- "type": "boolean"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -246291,7 +276656,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.producthuntProductsFacetResponseDoc"
+ "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
}
},
"400": {
@@ -246306,8 +276671,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246318,26 +276683,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Product Hunt products dataset",
+ "summary": "List Everlane static pages",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/producthunt-products/items/{slug}": {
+ "/everlane/pages/{handle}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one product by its Product Hunt slug from dataset id enum value `producthunt-products`, including its full launch history and (once hydrated) description, website, twitter_url, pricing and makers. Returns 404 when the slug is not in the archive.",
- "operationId": "datasets-producthunt-products-item",
+ "description": "Returns normalized static page detail for one Everlane (https://www.everlane.com) page handle. The storefront URL is fixed server-side.",
+ "operationId": "everlane-page",
"parameters": [
{
- "description": "Product Hunt product slug, e.g. chatgpt",
+ "description": "Page handle",
"in": "path",
- "name": "slug",
+ "name": "handle",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "page-handle"
}
],
"produces": [
@@ -246347,7 +276713,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.producthuntProductResponseDoc"
+ "$ref": "#/definitions/shopifybrands.pageResponseDoc"
}
},
"400": {
@@ -246368,8 +276734,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246380,105 +276746,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Product Hunt product from the dataset",
+ "summary": "Get a Everlane static page",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/producthunt-products/search": {
+ "/everlane/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches individual Product Hunt launches from the dataset id enum value `producthunt-products` — the searchable launch archive. Each result is one product with its topics, upvotes, ranks and launch history; description/website/twitter_url/pricing/makers are filled in as hydration runs. Sort enum: `relevance`, `votes_desc`, `launched_desc`, `launched_asc`, `rating_desc`, `best_rank_asc`.",
- "operationId": "datasets-producthunt-products-search",
+ "description": "Returns normalized products from Everlane's (https://www.everlane.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
+ "operationId": "everlane-products",
"parameters": [
{
- "description": "Full-text query over product name and tagline, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact topic-slug filter, e.g. artificial-intelligence, max 128 characters",
- "in": "query",
- "name": "topic",
- "type": "string"
- },
- {
- "description": "Exact maker-username filter (populated by hydration), max 128 characters",
- "in": "query",
- "name": "maker",
- "type": "string"
- },
- {
- "description": "Lower bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
- "in": "query",
- "name": "launched_after",
- "type": "string"
- },
- {
- "description": "Upper bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
- "in": "query",
- "name": "launched_before",
- "type": "string"
- },
- {
- "description": "Minimum upvotes, 0 or greater",
- "in": "query",
- "name": "min_votes",
- "type": "integer"
- },
- {
- "description": "Minimum review rating, from 0 through 5 (populated by hydration)",
- "in": "query",
- "name": "min_rating",
- "type": "number"
- },
- {
- "description": "Exact pricing-type filter (populated by hydration), e.g. free, paid, freemium",
- "in": "query",
- "name": "pricing_type",
- "type": "string"
- },
- {
- "description": "Website presence filter (populated by hydration)",
- "in": "query",
- "name": "has_website",
- "type": "boolean"
- },
- {
- "description": "true keeps only products still online, false only retired products",
- "in": "query",
- "name": "is_online",
- "type": "boolean"
- },
- {
- "description": "Sort enum: relevance, votes_desc, launched_desc, launched_asc, rating_desc, best_rank_asc",
- "enum": [
- "relevance",
- "votes_desc",
- "launched_desc",
- "launched_asc",
- "rating_desc",
- "best_rank_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
+ "description": "1-based page, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Maximum products, defaults to 50 and supports up to 250",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -246488,7 +276782,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.producthuntProductsSearchResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productsResponseDoc"
}
},
"400": {
@@ -246503,8 +276797,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246515,71 +276809,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Product Hunt products dataset",
+ "summary": "List Everlane products",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/producthunt-trends/facets": {
+ "/everlane/products/{handle}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns suppressed distribution counts over the Product Hunt trends dataset (dataset id enum value `producthunt-trends`), honoring the same filters as search. Facet enum: `topic`, `launch_year`.",
- "operationId": "datasets-producthunt-trends-facets",
+ "description": "Returns normalized product detail for one Everlane (https://www.everlane.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
+ "operationId": "everlane-product",
"parameters": [
{
- "description": "Facet enum: topic, launch_year",
- "enum": [
- "topic",
- "launch_year"
- ],
- "in": "query",
- "name": "facet",
+ "description": "Product handle",
+ "in": "path",
+ "name": "handle",
"required": true,
- "type": "string"
- },
- {
- "description": "Aggregate cell dimension enum: topic_month, topic_year, topic. Defaults to topic_month",
- "enum": [
- "topic_month",
- "topic_year",
- "topic"
- ],
- "in": "query",
- "name": "group_by",
- "type": "string"
- },
- {
- "description": "Exact topic-slug filter, e.g. artificial-intelligence, max 128 characters",
- "in": "query",
- "name": "topic",
- "type": "string"
- },
- {
- "description": "Lower bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
- "in": "query",
- "name": "launched_after",
- "type": "string"
- },
- {
- "description": "Upper bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
- "in": "query",
- "name": "launched_before",
- "type": "string"
- },
- {
- "description": "Minimum product upvotes, 0 or greater",
- "in": "query",
- "name": "min_votes",
- "type": "integer"
- },
- {
- "description": "Minimum launches per bucket; raises the small-cell suppression floor",
- "in": "query",
- "name": "min_launches",
- "type": "integer"
+ "type": "string",
+ "x-example": "product-handle"
}
],
"produces": [
@@ -246589,7 +276839,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.producthuntTrendsFacetResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productResponseDoc"
}
},
"400": {
@@ -246598,14 +276848,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246616,84 +276872,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Product Hunt trends dataset",
+ "summary": "Get a Everlane product",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/producthunt-trends/search": {
+ "/everlane/products/{handle}/recommendations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns aggregate Product Hunt launch trends from the dataset id enum value `producthunt-trends`. Aggregate-only: each row is a category-over-time cell (a topic, optionally within a calendar period), reporting launch count, total and average upvotes, average rating and the top product — never an individual product record. Thin cells are suppressed. group_by enum: `topic_month`, `topic_year`, `topic`. Sort enum: `period_desc`, `period_asc`, `launch_count_desc`, `sum_votes_desc`.",
- "operationId": "datasets-producthunt-trends-search",
+ "description": "Returns normalized recommended products for one Everlane (https://www.everlane.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
+ "operationId": "everlane-product-recommendations",
"parameters": [
{
- "description": "Aggregate cell dimension enum: topic_month, topic_year, topic. Defaults to topic_month",
- "enum": [
- "topic_month",
- "topic_year",
- "topic"
- ],
- "in": "query",
- "name": "group_by",
- "type": "string"
- },
- {
- "description": "Exact topic-slug filter, e.g. artificial-intelligence, max 128 characters",
- "in": "query",
- "name": "topic",
- "type": "string"
- },
- {
- "description": "Lower bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
- "in": "query",
- "name": "launched_after",
- "type": "string"
- },
- {
- "description": "Upper bound on first-launch date, an ISO-8601 date (YYYY-MM-DD)",
- "in": "query",
- "name": "launched_before",
- "type": "string"
- },
- {
- "description": "Minimum product upvotes, 0 or greater",
- "in": "query",
- "name": "min_votes",
- "type": "integer"
+ "description": "Product handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
+ "type": "string",
+ "x-example": "product-handle"
},
{
- "description": "Minimum launches per cell; raises the small-cell suppression floor (never lowered below the built-in minimum)",
+ "description": "Maximum products, defaults to 10 and supports up to 20",
"in": "query",
- "name": "min_launches",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
},
{
- "description": "Sort enum: period_desc, period_asc, launch_count_desc, sum_votes_desc",
+ "description": "Recommendation intent. Allowed values: related, complementary",
"enum": [
- "period_desc",
- "period_asc",
- "launch_count_desc",
- "sum_votes_desc"
+ "related",
+ "complementary"
],
"in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "intent",
+ "type": "string",
+ "x-example": "related"
}
],
"produces": [
@@ -246703,7 +276920,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.producthuntTrendsSearchResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
}
},
"400": {
@@ -246712,14 +276929,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246730,59 +276953,113 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Product Hunt trends dataset",
+ "summary": "List Everlane product recommendations",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/reddit-trending/search": {
+ "/everlane/search/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches daily snapshots of each tracked subreddit's hot-feed post order, stored in a search index (one document per subreddit × snapshot × rank) so history accumulates. With no `date` the latest snapshot is returned (today's trending); pair `subreddit` with `sort=date_desc` for a subreddit's trending history over time. There is no score or comment-count field — the underlying credential-free scraper does not expose vote counts, so `rank` reflects Reddit's own hot-feed order rather than a locally computed score.",
- "operationId": "datasets-reddit-trending-search",
+ "description": "Returns products, collections, and query suggestions from Everlane's (https://www.everlane.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
+ "operationId": "everlane-search-suggest",
"parameters": [
{
- "description": "Full-text query over the post title, max 256 characters",
+ "description": "Search query",
"in": "query",
"name": "q",
- "type": "string"
+ "required": true,
+ "type": "string",
+ "x-example": "wool"
},
{
- "description": "Exact subreddit-name filter, max 128 characters",
+ "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
"in": "query",
- "name": "subreddit",
- "type": "string"
+ "name": "types",
+ "type": "string",
+ "x-example": "product,collection,query"
},
{
- "description": "Snapshot date filter yyyy-MM-dd; defaults to the latest snapshot",
+ "description": "Maximum results per type, defaults to 10 and supports up to 20",
"in": "query",
- "name": "date",
- "type": "string"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
+ }
},
- {
- "description": "Sort enum: rank, date_desc",
- "enum": [
- "rank",
- "date_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Everlane search suggestions",
+ "tags": [
+ "Everlane"
+ ]
+ }
+ },
+ "/everlane/sitemap/urls": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns capped URL entries from Everlane's (https://www.everlane.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
+ "operationId": "everlane-sitemap-urls",
+ "parameters": [
{
- "description": "Page number, defaults to 1",
+ "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
+ "enum": [
+ "all",
+ "products",
+ "collections",
+ "pages",
+ "blogs",
+ "agentic_discovery",
+ "other"
+ ],
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "type",
+ "type": "string",
+ "x-example": "products"
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Maximum URL entries, defaults to 50 and supports up to 250",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -246792,7 +277069,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.redditTrendingSearchResponseDoc"
+ "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
}
},
"400": {
@@ -246807,8 +277084,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246819,98 +277096,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the reddit-trending dataset",
+ "summary": "List Everlane sitemap URLs",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/sec-companies/facets": {
+ "/everlane/sitemaps": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms-aggregation counts for one facet of the SEC companies dataset, scoped to the same filters as search. Facet enum: `sic`, `sic_description`, `exchange`, `state_of_incorporation`, `entity_type`, `reporting_currency`, `revenue_band`, `forms_filed`. `revenue_band` buckets latest-annual revenue into: `unknown`, `under_1m`, `1m_10m`, `10m_100m`, `100m_1b`, `1b_10b`, `over_10b`.",
- "operationId": "datasets-sec-companies-facets",
- "parameters": [
- {
- "description": "Facet enum: sic, sic_description, exchange, state_of_incorporation, entity_type, reporting_currency, revenue_band, forms_filed",
- "enum": [
- "sic",
- "sic_description",
- "exchange",
- "state_of_incorporation",
- "entity_type",
- "reporting_currency",
- "revenue_band",
- "forms_filed"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over the company name, or an exact ticker match, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact ticker filter (case-insensitive), max 32 characters",
- "in": "query",
- "name": "ticker",
- "type": "string"
- },
- {
- "description": "Exact SIC industry-code filter, max 32 characters",
- "in": "query",
- "name": "sic",
- "type": "string"
- },
- {
- "description": "Exact exchange filter as reported by EDGAR, max 64 characters",
- "in": "query",
- "name": "exchange",
- "type": "string"
- },
- {
- "description": "Exact state/country-of-incorporation filter, max 32 characters",
- "in": "query",
- "name": "state_of_incorporation",
- "type": "string"
- },
- {
- "description": "Exact entity-type filter, max 64 characters",
- "in": "query",
- "name": "entity_type",
- "type": "string"
- },
- {
- "description": "Exact reporting-currency filter, ISO-4217 code, e.g. USD, JPY, EUR",
- "in": "query",
- "name": "reporting_currency",
- "type": "string"
- },
- {
- "description": "When true, keep only companies that have XBRL financial statements",
- "in": "query",
- "name": "has_financials",
- "type": "boolean"
- },
- {
- "description": "Minimum latest-annual revenue in USD (normalized at reference rates), 0 or greater",
- "in": "query",
- "name": "min_revenue",
- "type": "number"
- },
- {
- "description": "Exact form-type filter, e.g. 10-K, 8-K",
- "in": "query",
- "name": "form_filed",
- "type": "string"
- }
- ],
+ "description": "Returns child sitemap URLs from Everlane's (https://www.everlane.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
+ "operationId": "everlane-sitemaps",
"produces": [
"application/json"
],
@@ -246918,7 +277116,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.secCompaniesFacetResponseDoc"
+ "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
}
},
"400": {
@@ -246933,8 +277131,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -246945,67 +277143,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the SEC companies dataset",
+ "summary": "List Everlane sitemaps",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/sec-companies/financials/{cik}": {
+ "/everlane/store": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a company's normalized financial-statement history (income statement, balance sheet, cash flow) from the SEC companies dataset, newest fiscal year first. An unknown CIK or a company with no XBRL data returns an empty series rather than a 404 — most filers without a current ticker have no financial-statement history at all. `lines` keys are the same normalized concept names the live `/sec/financials` endpoint uses (e.g. `revenue`, `net_income`, `total_assets`); `ratios` keys include `gross_margin`, `operating_margin`, `net_margin`, `revenue_growth_yoy`, `current_ratio`, `debt_to_equity`, `free_cash_flow` where derivable. statement enum: `income`, `balance`, `cash_flow`. period enum: `annual`, `quarterly`.",
- "operationId": "datasets-sec-companies-financials",
- "parameters": [
- {
- "description": "SEC CIK, numeric or zero-padded",
- "in": "path",
- "name": "cik",
- "required": true,
- "type": "string"
- },
- {
- "description": "Statement enum: income, balance, cash_flow. Omit to return all three.",
- "enum": [
- "income",
- "balance",
- "cash_flow"
- ],
- "in": "query",
- "name": "statement",
- "type": "string"
- },
- {
- "description": "Period-type enum: annual, quarterly. Omit to return both.",
- "enum": [
- "annual",
- "quarterly"
- ],
- "in": "query",
- "name": "period",
- "type": "string"
- },
- {
- "description": "Inclusive lower bound on fiscal_year",
- "in": "query",
- "name": "from",
- "type": "integer"
- },
- {
- "description": "Inclusive upper bound on fiscal_year",
- "in": "query",
- "name": "to",
- "type": "integer"
- },
- {
- "description": "Maximum points returned (most recent fiscal years first), default 100, max 400",
- "in": "query",
- "name": "limit",
- "type": "integer"
- }
- ],
+ "description": "Returns normalized storefront metadata for Everlane (https://www.everlane.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
+ "operationId": "everlane-store",
"produces": [
"application/json"
],
@@ -247013,7 +277163,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.secCompaniesFinancialsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.storeResponseDoc"
}
},
"400": {
@@ -247028,8 +277178,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -247040,50 +277190,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a SEC company's financial-statement history",
+ "summary": "Get Everlane store metadata",
"tags": [
- "Datasets"
+ "Everlane"
]
}
},
- "/datasets/sec-companies/insider/{cik}": {
+ "/ew/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a company's insider (Form 3/4/5) transaction history from the SEC companies dataset, most recent transaction first. An unknown CIK or a company with no reported transactions returns an empty series rather than a 404.",
- "operationId": "datasets-sec-companies-insider",
+ "description": "Returns public Entertainment Weekly article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "ew-article",
"parameters": [
{
- "description": "SEC CIK, numeric or zero-padded",
- "in": "path",
- "name": "cik",
- "required": true,
- "type": "string"
- },
- {
- "description": "Inclusive start date (YYYY-MM-DD, UTC) filtering transaction date",
- "in": "query",
- "name": "from",
- "type": "string"
- },
- {
- "description": "Inclusive end date (YYYY-MM-DD, UTC) filtering transaction date",
- "in": "query",
- "name": "to",
- "type": "string"
- },
- {
- "description": "Exact transaction code filter, e.g. P (open-market purchase), S (sale)",
- "in": "query",
- "name": "code",
- "type": "string"
- },
- {
- "description": "Maximum transactions returned (most recent first), default 50, max 200",
+ "description": "Canonical Entertainment Weekly article URL",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://ew.com/jean-smart-succeeds-diane-keaton-as-craig-t-nelson-love-interest-in-family-stone-sequel-12137476"
}
],
"produces": [
@@ -247093,7 +277217,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.secCompaniesInsiderResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -247102,14 +277226,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -247120,26 +277244,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a SEC company's insider-transaction history",
+ "summary": "Get Entertainment Weekly article content",
"tags": [
- "Datasets"
+ "Entertainment Weekly"
]
}
},
- "/datasets/sec-companies/items/{cik}": {
+ "/ew/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one SEC-reporting company by CIK from dataset id `sec-companies`, including its filing-history summary, financial-statement rollups, and trailing-90-day insider-activity summary. Returns 404 when the CIK is not in the dataset.",
- "operationId": "datasets-sec-companies-item",
+ "description": "Returns one Entertainment Weekly contributor's public profile (name, job title, biography) and their recent articles from a canonical author URL.",
+ "operationId": "ew-author",
"parameters": [
{
- "description": "SEC CIK, numeric or zero-padded, e.g. 320193 or 0000320193",
- "in": "path",
- "name": "cik",
+ "description": "Canonical ew.com/author/ or ew.com/- profile URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "https://ew.com/author/dalton-ross/"
}
],
"produces": [
@@ -247149,7 +277271,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.secCompaniesItemResponseDoc"
+ "$ref": "#/definitions/publicnews.ewAuthorResponseDoc"
}
},
"400": {
@@ -247164,14 +277286,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -247182,141 +277298,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a company from the SEC companies dataset",
+ "summary": "Get an Entertainment Weekly author profile",
"tags": [
- "Datasets"
+ "Entertainment Weekly"
]
}
},
- "/datasets/sec-companies/search": {
+ "/ew/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches SEC-reporting companies stored in a search index — normalized filing history, financial-statement rollups (latest annual/quarterly revenue, net income, total assets) and trailing-90-day insider (Form 3/4/5) activity. Sort enum: `relevance`, `name_asc`, `revenue_desc`, `net_income_desc`, `filing_recent_desc`, `insider_activity_desc`. `entity_type`, `sic`, `sic_description`, `exchange`, and `state_of_incorporation` are open filters over the exact values EDGAR reports for each filer (not a fixed enum) — discover real values via the matching facet.",
- "operationId": "datasets-sec-companies-search",
+ "description": "Returns fresh headlines from one public Entertainment Weekly section.",
+ "operationId": "ew-headlines",
"parameters": [
{
- "description": "Full-text query over the company name, or an exact ticker match, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact ticker filter (case-insensitive), e.g. AAPL, max 32 characters",
- "in": "query",
- "name": "ticker",
- "type": "string"
- },
- {
- "description": "Exact CIK filter, numeric or zero-padded, e.g. 320193 or 0000320193",
- "in": "query",
- "name": "cik",
- "type": "string"
- },
- {
- "description": "Exact SIC industry-code filter, e.g. 3571, max 32 characters",
- "in": "query",
- "name": "sic",
- "type": "string"
- },
- {
- "description": "Exact SIC description filter, e.g. Electronic Computers, max 128 characters",
- "in": "query",
- "name": "sic_description",
- "type": "string"
- },
- {
- "description": "Exact exchange filter as reported by EDGAR, e.g. Nasdaq, NYSE, max 64 characters",
- "in": "query",
- "name": "exchange",
- "type": "string"
- },
- {
- "description": "Exact state/country-of-incorporation filter as reported by EDGAR, e.g. DE, CA, max 32 characters",
- "in": "query",
- "name": "state_of_incorporation",
- "type": "string"
- },
- {
- "description": "Exact entity-type filter as reported by EDGAR (e.g. operating), max 64 characters",
- "in": "query",
- "name": "entity_type",
- "type": "string"
- },
- {
- "description": "Exact reporting-currency filter, ISO-4217 code, e.g. USD, JPY, EUR",
- "in": "query",
- "name": "reporting_currency",
- "type": "string"
- },
- {
- "description": "When true, keep only companies that have XBRL financial statements",
- "in": "query",
- "name": "has_financials",
- "type": "boolean"
- },
- {
- "description": "Minimum latest-annual revenue in USD (normalized from the filer's reporting currency at reference rates), 0 or greater",
- "in": "query",
- "name": "min_revenue",
- "type": "number"
- },
- {
- "description": "Maximum latest-annual revenue in USD (normalized), 0 or greater",
- "in": "query",
- "name": "max_revenue",
- "type": "number"
- },
- {
- "description": "Minimum latest-annual net income in USD (normalized; negative allowed)",
- "in": "query",
- "name": "min_net_income",
- "type": "number"
- },
- {
- "description": "Minimum latest-annual total assets in USD (normalized), 0 or greater",
- "in": "query",
- "name": "min_total_assets",
- "type": "number"
- },
- {
- "description": "Exact form-type filter; keeps only companies that have ever filed this form, e.g. 10-K, 8-K",
- "in": "query",
- "name": "form_filed",
- "type": "string"
- },
- {
- "description": "Minimum insider (Form 3/4/5) transaction count in the trailing 90 days, 0 or greater",
- "in": "query",
- "name": "min_insider_txn_count_90d",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, name_asc, revenue_desc, net_income_desc, filing_recent_desc, insider_activity_desc",
+ "description": "Entertainment Weekly section slug",
"enum": [
- "relevance",
- "name_asc",
- "revenue_desc",
- "net_income_desc",
- "filing_recent_desc",
- "insider_activity_desc"
+ "tv",
+ "movies",
+ "music",
+ "what-to-watch",
+ "binge",
+ "celebrity",
+ "awardist",
+ "books",
+ "theater"
],
"in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "tv"
}
],
"produces": [
@@ -247326,7 +277336,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.secCompaniesSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -247335,14 +277345,40 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Entertainment Weekly section headlines",
+ "tags": [
+ "Entertainment Weekly"
+ ]
+ }
+ },
+ "/ew/news": {
+ "get": {
+ "description": "Returns fresh Entertainment Weekly stories from its homepage.",
+ "operationId": "ew-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -247353,48 +277389,54 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the SEC companies dataset",
+ "summary": "Get Entertainment Weekly top stories",
"tags": [
- "Datasets"
+ "Entertainment Weekly"
]
}
},
- "/datasets/sec-institutional-positions/facets": {
+ "/ew/sections": {
"get": {
+ "description": "Returns the complete public Entertainment Weekly primary-navigation section inventory accepted by /ew/headlines.",
+ "operationId": "ew-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Entertainment Weekly sections",
+ "tags": [
+ "Entertainment Weekly"
+ ]
+ }
+ },
+ "/expedia/activities/search": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns terms-aggregation counts for one facet of the SEC institutional positions dataset, scoped to the same filters as search. Facet enum: `manager`, `issuer`.",
- "operationId": "datasets-sec-institutional-positions-facets",
+ "description": "Returns normalized Expedia Things To Do (activities/tours) search results for a free-text destination and date range.",
+ "operationId": "expedia-activities-search",
"parameters": [
{
- "description": "Facet enum: manager, issuer",
- "enum": [
- "manager",
- "issuer"
- ],
- "in": "query",
- "name": "facet",
+ "description": "Activity search payload",
+ "in": "body",
+ "name": "option",
"required": true,
- "type": "string"
- },
- {
- "description": "Exact institutional-manager CIK filter, numeric or zero-padded",
- "in": "query",
- "name": "manager_cik",
- "type": "string"
- },
- {
- "description": "Issuer-name text filter (best-effort match), max 256 characters",
- "in": "query",
- "name": "issuer_name",
- "type": "string"
- },
- {
- "description": "Exact CUSIP filter, max 16 characters",
- "in": "query",
- "name": "cusip",
- "type": "string"
+ "schema": {
+ "$ref": "#/definitions/expedia.ActivitySearchOption"
+ }
}
],
"produces": [
@@ -247404,7 +277446,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.secInstitutionalPositionsFacetResponseDoc"
+ "$ref": "#/definitions/expedia.expediaActivitySearchResponseDoc"
}
},
"400": {
@@ -247424,6 +277466,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -247431,60 +277479,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the SEC institutional positions dataset",
+ "summary": "Search Expedia activities",
"tags": [
- "Datasets"
+ "Expedia"
]
}
},
- "/datasets/sec-institutional-positions/search": {
- "get": {
+ "/expedia/flights/search": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Searches institutional investment managers' quarterly 13F portfolio holdings stored in a search index. Filter by manager_cik for a manager's full reported portfolio (an exact, reliable filter), or by issuer_name/cusip for a best-effort view of which managers reported a position in an issuer — SEC publishes no authoritative CUSIP-to-CIK mapping, so the issuer side is never a guaranteed-resolved join. Sort enum: `value_desc`, `value_asc`, `shares_desc`.",
- "operationId": "datasets-sec-institutional-positions-search",
+ "description": "Returns normalized Expedia Flights search results (departing-leg offers) for an origin/destination IATA pair and date range.",
+ "operationId": "expedia-flights-search",
"parameters": [
{
- "description": "Exact institutional-manager CIK filter, numeric or zero-padded",
- "in": "query",
- "name": "manager_cik",
- "type": "string"
- },
- {
- "description": "Issuer-name text filter (best-effort match, not a resolved CIK join), max 256 characters",
- "in": "query",
- "name": "issuer_name",
- "type": "string"
- },
- {
- "description": "Exact CUSIP filter, max 16 characters",
- "in": "query",
- "name": "cusip",
- "type": "string"
- },
- {
- "description": "Sort enum: value_desc, value_asc, shares_desc",
- "enum": [
- "value_desc",
- "value_asc",
- "shares_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "description": "Flights search payload",
+ "in": "body",
+ "name": "option",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/expedia.FlightsSearchOption"
+ }
}
],
"produces": [
@@ -247494,7 +277510,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.secInstitutionalPositionsSearchResponseDoc"
+ "$ref": "#/definitions/expedia.expediaFlightsSearchResponseDoc"
}
},
"400": {
@@ -247514,6 +277530,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -247521,73 +277543,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the SEC institutional positions dataset",
+ "summary": "Search Expedia flights",
"tags": [
- "Datasets"
+ "Expedia"
]
}
},
- "/datasets/starbucks-stores/facets": {
- "get": {
+ "/expedia/locations/search": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the Starbucks store directory. Facet enum: `country`, `state`, `market`, `amenities`, `ownership_type_code`. Accepts the same filter parameters as search to scope the aggregation.",
- "operationId": "datasets-starbucks-stores-facets",
+ "description": "Returns normalized destination/property typeahead suggestions (cities, airports, neighborhoods, hotels) for a free-text term.",
+ "operationId": "expedia-locations-search",
"parameters": [
{
- "description": "Facet enum: country, state, market, amenities, ownership_type_code",
- "enum": [
- "country",
- "state",
- "market",
- "amenities",
- "ownership_type_code"
- ],
- "in": "query",
- "name": "facet",
+ "description": "Location search payload",
+ "in": "body",
+ "name": "option",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text search over store name, city, and address",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "ISO-3166-1 alpha-2 country filter",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "State/region code filter",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact city filter",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Crawl-provenance market filter. One of: us, ca",
- "enum": [
- "us",
- "ca"
- ],
- "in": "query",
- "name": "market",
- "type": "string"
- },
- {
- "description": "Amenity code filter, e.g. DT",
- "in": "query",
- "name": "amenity",
- "type": "string"
+ "schema": {
+ "$ref": "#/definitions/expedia.LocationSearchOption"
+ }
}
],
"produces": [
@@ -247597,7 +277574,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.starbucksStoresFacetResponseDoc"
+ "$ref": "#/definitions/expedia.expediaLocationSearchResponseDoc"
}
},
"400": {
@@ -247617,6 +277594,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -247624,26 +277607,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet stored Starbucks stores",
+ "summary": "Search Expedia destinations",
"tags": [
- "Datasets"
+ "Expedia"
]
}
},
- "/datasets/starbucks-stores/items/{store_number}": {
- "get": {
+ "/expedia/properties/detail": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns one stored Starbucks store by its store number (e.g. `101-54`) from dataset id `starbucks-stores`. `country` is the store's true country while `market` is crawl provenance. Hours (`schedule`) and `amenities` may be empty for stores outside the US, Canada, Europe, and the Gulf; an empty schedule means \"not published for this market\", not \"closed\".",
- "operationId": "datasets-starbucks-stores-item",
+ "description": "Returns a hotel's detail summary (name, star rating, address/coordinates, top amenities) for a known property id.",
+ "operationId": "expedia-properties-detail",
"parameters": [
{
- "description": "Starbucks store number, e.g. 101-54",
- "in": "path",
- "name": "store_number",
+ "description": "Property detail payload",
+ "in": "body",
+ "name": "option",
"required": true,
- "type": "string"
+ "schema": {
+ "$ref": "#/definitions/expedia.PropertyDetailOption"
+ }
}
],
"produces": [
@@ -247653,7 +277638,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.starbucksStoreResponseDoc"
+ "$ref": "#/definitions/expedia.expediaPropertyDetailResponseDoc"
}
},
"400": {
@@ -247679,6 +277664,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -247686,64 +277677,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a stored Starbucks store",
+ "summary": "Expedia Stays property detail",
"tags": [
- "Datasets"
+ "Expedia"
]
}
},
- "/datasets/starbucks-stores/nearby": {
- "get": {
+ "/expedia/properties/filters": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns stored Starbucks stores within a radius of a point, nearest first, from dataset id `starbucks-stores`. lat, lon, and radius_m are required. Unlike the live /starbucks/stores endpoint (which caps at 50 near a point), this queries the full grid-tiled directory, so it can return every store in the radius.",
- "operationId": "datasets-starbucks-stores-nearby",
+ "description": "Returns the sort and filter facets (amenities, star rating, neighborhood, nightly price range, sort options) available for a Stays search.",
+ "operationId": "expedia-properties-filters",
"parameters": [
{
- "description": "Center latitude, from -90 through 90",
- "in": "query",
- "name": "lat",
- "required": true,
- "type": "number"
- },
- {
- "description": "Center longitude, from -180 through 180",
- "in": "query",
- "name": "lon",
- "required": true,
- "type": "number"
- },
- {
- "description": "Search radius in meters, 1 through 50000",
- "in": "query",
- "name": "radius_m",
+ "description": "Property filters payload",
+ "in": "body",
+ "name": "option",
"required": true,
- "type": "integer"
- },
- {
- "description": "ISO-3166-1 alpha-2 country filter",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Amenity code filter, e.g. DT",
- "in": "query",
- "name": "amenity",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "schema": {
+ "$ref": "#/definitions/expedia.PropertyFiltersOption"
+ }
}
],
"produces": [
@@ -247753,7 +277708,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.starbucksStoresSearchResponseDoc"
+ "$ref": "#/definitions/expedia.expediaPropertyFiltersResponseDoc"
}
},
"400": {
@@ -247762,6 +277717,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -247773,6 +277734,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -247780,99 +277747,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Find nearby stored Starbucks stores",
+ "summary": "Expedia search filters",
"tags": [
- "Datasets"
+ "Expedia"
]
}
},
- "/datasets/starbucks-stores/search": {
- "get": {
+ "/expedia/properties/reviews": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Searches the worldwide Starbucks store directory (dataset id `starbucks-stores`), built by grid-tiling the store locator around its 50-result cap. Each store has its store number, name, phone, full address, coordinates, weekly hours, amenity codes, and pick-up options. Store discovery is global, but hours, amenities, and phone numbers are populated per market and are largely absent outside the US, Canada, Europe, and the Gulf; an empty schedule means \"not published for this market\", not \"closed\". `country` is the store's true country while `market` is crawl provenance (the US host geocodes worldwide). Supports full-text `q`, `country`/`state`/`city`/`market`/`amenity` filters, `lat`/`lon`/`radius_m` radius filtering, and `sort` (relevance, distance_asc).",
- "operationId": "datasets-starbucks-stores-search",
+ "description": "Returns a hotel's overall rating and highlighted/recent guest reviews (reviewer, date, rating, message) for a known property id.",
+ "operationId": "expedia-properties-reviews",
"parameters": [
{
- "description": "Full-text search over store name, city, and address, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "ISO-3166-1 alpha-2 country filter, e.g. US, GB, JP",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "State/region code filter, e.g. WA",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact city filter",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Crawl-provenance market filter. One of: us, ca",
- "enum": [
- "us",
- "ca"
- ],
- "in": "query",
- "name": "market",
- "type": "string"
- },
- {
- "description": "Amenity code filter, e.g. DT (Drive-Thru), XO (Mobile Order and Pay)",
- "in": "query",
- "name": "amenity",
- "type": "string"
- },
- {
- "description": "Latitude for radius filtering or distance sort, requires lon",
- "in": "query",
- "name": "lat",
- "type": "number"
- },
- {
- "description": "Longitude for radius filtering or distance sort, requires lat",
- "in": "query",
- "name": "lon",
- "type": "number"
- },
- {
- "description": "Radius in meters, 1 through 50000; requires lat and lon",
- "in": "query",
- "name": "radius_m",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, distance_asc",
- "enum": [
- "relevance",
- "distance_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "description": "Property reviews payload",
+ "in": "body",
+ "name": "option",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/expedia.PropertyReviewsOption"
+ }
}
],
"produces": [
@@ -247882,7 +277778,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.starbucksStoresSearchResponseDoc"
+ "$ref": "#/definitions/expedia.expediaPropertyReviewsResponseDoc"
}
},
"400": {
@@ -247891,6 +277787,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -247902,6 +277804,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -247909,48 +277817,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Starbucks store directory",
+ "summary": "Expedia Stays property guest reviews",
"tags": [
- "Datasets"
+ "Expedia"
]
}
},
- "/datasets/steam-achievements/search": {
- "get": {
+ "/expedia/properties/search": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Searches per-game global achievement unlock percentages (one document per appid × achievement). Pass `app_id` to list a game's achievements. Sort enum: `percent_desc` (most-unlocked first, default), `percent_asc` (rarest first), `rank_asc`.",
- "operationId": "datasets-steam-achievements-search",
+ "description": "Returns normalized Expedia Stays (hotel) search results for a free-text destination and date range. Promotional banners and sponsored ad slots are dropped, so every returned property has an id and name.",
+ "operationId": "expedia-properties-search",
"parameters": [
{
- "description": "Exact Steam app id filter",
- "in": "query",
- "name": "app_id",
- "type": "string"
- },
- {
- "description": "Sort enum: percent_desc, percent_asc, rank_asc",
- "enum": [
- "percent_desc",
- "percent_asc",
- "rank_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "description": "Property search payload",
+ "in": "body",
+ "name": "option",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/expedia.PropertySearchOption"
+ }
}
],
"produces": [
@@ -247960,7 +277848,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.steamAchievementsSearchResponseDoc"
+ "$ref": "#/definitions/expedia.expediaPropertySearchResponseDoc"
}
},
"400": {
@@ -247969,6 +277857,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -247980,6 +277874,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -247987,76 +277887,85 @@
"ApiKeyAuth": []
}
],
- "summary": "Search steam-achievements dataset",
+ "summary": "Search Expedia Stays properties",
"tags": [
- "Datasets"
+ "Expedia"
]
}
},
- "/datasets/steam-charts/search": {
+ "/expresstribune/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches daily snapshots of Steam's player-count and sales charts, stored in a search index (one document per chart × country × snapshot × rank) so history accumulates. Charts: `most_played` (weekly peak concurrent), `concurrent` (live concurrent players), `top_sellers` (weekly sales; country-specific). With no `date` the latest snapshot is returned (today's chart); pair `app_id` with `sort=date_desc` for an app's rank/players over time. Country is `global` for the player-count charts or an ISO code (e.g. `us`) for `top_sellers`. Sort enum: `rank`, `rank_desc`, `date_desc`.",
- "operationId": "datasets-steam-charts-search",
+ "description": "Returns public story metadata and body paragraphs from a canonical tribune.com.pk/story// URL.",
+ "operationId": "expresstribune-article",
"parameters": [
{
- "description": "Full-text query over the game name, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Chart enum: most_played, concurrent, top_sellers",
- "enum": [
- "most_played",
- "concurrent",
- "top_sellers"
- ],
- "in": "query",
- "name": "chart",
- "type": "string"
- },
- {
- "description": "Market filter: global (player-count charts) or an ISO country code (top_sellers), max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Exact Steam app id filter; pair with sort=date_desc for rank/players history",
+ "description": "Canonical Express Tribune story URL",
"in": "query",
- "name": "app_id",
- "type": "string"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://tribune.com.pk/story/2632091/somali-pirates-kill-three-pakistanis-during-rescue-operation"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
+ }
},
- {
- "description": "Snapshot date filter yyyy-MM-dd; defaults to the latest snapshot",
- "in": "query",
- "name": "date",
- "type": "string"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Sort enum: rank, rank_desc, date_desc",
- "enum": [
- "rank",
- "rank_desc",
- "date_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Page number, defaults to 1",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get The Express Tribune article content",
+ "tags": [
+ "The Express Tribune"
+ ]
+ }
+ },
+ "/expresstribune/author": {
+ "get": {
+ "description": "Returns one page of story cards from a canonical public author archive. Page is 1-based; the publisher's Next link indicates another page.",
+ "operationId": "expresstribune-author",
+ "parameters": [
+ {
+ "description": "Canonical author archive URL",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://tribune.com.pk/author/7803/web-desk-2"
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "1-based page number",
"in": "query",
- "name": "page_size",
+ "maximum": 1000,
+ "minimum": 1,
+ "name": "page",
"type": "integer"
}
],
@@ -248067,7 +277976,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.steamChartsSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.expresstribuneAuthorResponseDoc"
}
},
"400": {
@@ -248076,14 +277985,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -248094,221 +278003,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the steam-charts dataset",
+ "summary": "Get an Express Tribune author's public archive",
"tags": [
- "Datasets"
+ "The Express Tribune"
]
}
},
- "/datasets/steam-games/facets": {
+ "/expresstribune/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns terms aggregation counts for the Steam games dataset. Facet enum: `type`, `developer`, `publisher`, `genres`, `categories`, `tags`, `primary_tag`, `price_tier`, `review_tier`, `owners_bucket`, `release_year`, `run_id`, `is_free`, `coming_soon`, `platform_windows`, `platform_mac`, `platform_linux`. price_tier enum: `free`, `under5`, `5to15`, `15to30`, `30to60`, `over60`. review_tier enum: `overwhelmingly_positive`, `very_positive`, `positive`, `mostly_positive`, `mixed`, `mostly_negative`, `negative`, `very_negative`, `overwhelmingly_negative`, `insufficient`.",
- "operationId": "datasets-steam-games-facets",
+ "description": "Returns headlines from one public RSS section. Some directory feeds are historical or infrequently updated; their publisher timestamps are preserved.",
+ "operationId": "expresstribune-headlines",
"parameters": [
{
- "description": "Facet enum: type, developer, publisher, genres, categories, tags, primary_tag, price_tier, review_tier, owners_bucket, release_year, run_id, is_free, coming_soon, platform_windows, platform_mac, platform_linux",
+ "description": "The Express Tribune section slug",
"enum": [
- "type",
- "developer",
- "publisher",
- "genres",
- "categories",
- "tags",
- "primary_tag",
- "price_tier",
- "review_tier",
- "owners_bucket",
- "release_year",
- "run_id",
- "is_free",
- "coming_soon",
- "platform_windows",
- "platform_mac",
- "platform_linux"
+ "home",
+ "latest",
+ "analysis",
+ "politics",
+ "cricket",
+ "movies",
+ "health",
+ "style",
+ "pakistan",
+ "sindh",
+ "punjab",
+ "balochistan",
+ "khyber-pakhtunkhwa",
+ "jammu-kashmir",
+ "gilgit-baltistan",
+ "business",
+ "world",
+ "sports",
+ "technology",
+ "games",
+ "gadget",
+ "life-style",
+ "art-books",
+ "music",
+ "film",
+ "fashion",
+ "gossip",
+ "tv",
+ "theatre",
+ "entertainment",
+ "opinion",
+ "editorial",
+ "blogs"
],
"in": "query",
- "name": "facet",
+ "name": "section",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over name, developer and publisher, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact storefront type filter, max 128 characters",
- "in": "query",
- "name": "type",
- "type": "string"
- },
- {
- "description": "Exact developer filter, max 128 characters",
- "in": "query",
- "name": "developer",
- "type": "string"
- },
- {
- "description": "Exact publisher filter, max 128 characters",
- "in": "query",
- "name": "publisher",
- "type": "string"
- },
- {
- "description": "Exact genre filter, max 128 characters",
- "in": "query",
- "name": "genre",
- "type": "string"
- },
- {
- "description": "Exact store category filter, max 128 characters",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact community-tag filter (e.g. Roguelike, Cozy), max 128 characters",
- "in": "query",
- "name": "tag",
- "type": "string"
- },
- {
- "description": "Price-tier enum: free, under5, 5to15, 15to30, 30to60, over60",
- "enum": [
- "free",
- "under5",
- "5to15",
- "15to30",
- "30to60",
- "over60"
- ],
- "in": "query",
- "name": "price_tier",
- "type": "string"
- },
- {
- "description": "Review-tier enum: overwhelmingly_positive, very_positive, positive, mostly_positive, mixed, mostly_negative, negative, very_negative, overwhelmingly_negative, insufficient",
- "enum": [
- "overwhelmingly_positive",
- "very_positive",
- "positive",
- "mostly_positive",
- "mixed",
- "mostly_negative",
- "negative",
- "very_negative",
- "overwhelmingly_negative",
- "insufficient"
- ],
- "in": "query",
- "name": "review_tier",
- "type": "string"
- },
- {
- "description": "Exact SteamSpy owners-range bucket filter, max 128 characters",
- "in": "query",
- "name": "owners_bucket",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Filter by free-to-play flag",
- "in": "query",
- "name": "is_free",
- "type": "boolean"
- },
- {
- "description": "Filter by Windows support",
- "in": "query",
- "name": "windows",
- "type": "boolean"
- },
- {
- "description": "Filter by macOS support",
- "in": "query",
- "name": "mac",
- "type": "boolean"
- },
- {
- "description": "Filter by Linux support",
- "in": "query",
- "name": "linux",
- "type": "boolean"
- },
- {
- "description": "Filter by titles currently discounted (discount_pct > 0)",
- "in": "query",
- "name": "on_sale",
- "type": "boolean"
- },
- {
- "description": "Minimum current price in cents",
- "in": "query",
- "name": "min_price_cents",
- "type": "integer"
- },
- {
- "description": "Maximum current price in cents",
- "in": "query",
- "name": "max_price_cents",
- "type": "integer"
- },
- {
- "description": "Minimum estimated owners (SteamSpy owners midpoint)",
- "in": "query",
- "name": "min_owners",
- "type": "integer"
- },
- {
- "description": "Minimum positive review count",
- "in": "query",
- "name": "min_positive",
- "type": "integer"
- },
- {
- "description": "Minimum total review count",
- "in": "query",
- "name": "min_total_reviews",
- "type": "integer"
- },
- {
- "description": "Minimum positive-review ratio, 0 through 1",
- "in": "query",
- "name": "min_review_score",
- "type": "number"
- },
- {
- "description": "Minimum Metacritic score, 0 through 100",
- "in": "query",
- "name": "min_metacritic",
- "type": "integer"
- },
- {
- "description": "Minimum peak concurrent users yesterday",
- "in": "query",
- "name": "min_ccu",
- "type": "integer"
- },
- {
- "description": "Minimum release year",
- "in": "query",
- "name": "min_release_year",
- "type": "integer"
- },
- {
- "description": "Maximum release year",
- "in": "query",
- "name": "max_release_year",
- "type": "integer"
+ "type": "string",
+ "x-example": "home"
}
],
"produces": [
@@ -248318,7 +278065,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.steamGamesFacetResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -248327,14 +278074,40 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get The Express Tribune section headlines",
+ "tags": [
+ "The Express Tribune"
+ ]
+ }
+ },
+ "/expresstribune/news": {
+ "get": {
+ "description": "Returns current top stories from The Express Tribune's public RSS feed. Feed dates and publisher teasers are returned as published.",
+ "operationId": "expresstribune-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -248345,26 +278118,54 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the Steam games dataset",
+ "summary": "Get The Express Tribune top stories",
"tags": [
- "Datasets"
+ "The Express Tribune"
]
}
},
- "/datasets/steam-games/items/{appid}": {
+ "/expresstribune/sections": {
"get": {
+ "description": "Returns every usable feed section listed in the publisher's RSS directory. talko is omitted because its official endpoint currently returns an empty response.",
+ "operationId": "expresstribune-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get The Express Tribune sections",
+ "tags": [
+ "The Express Tribune"
+ ]
+ }
+ },
+ "/extract": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns one enriched Steam catalog record by appid from dataset id enum value `steam-games`.",
- "operationId": "datasets-steam-games-item",
+ "description": "Scrapes a public URL into clean Markdown, then returns data that strictly conforms to the supplied bounded JSON Schema.",
+ "operationId": "extract",
"parameters": [
{
- "description": "Steam app id",
- "in": "path",
- "name": "appid",
+ "description": "Extraction options",
+ "in": "body",
+ "name": "extractOption",
"required": true,
- "type": "integer"
+ "schema": {
+ "$ref": "#/definitions/extract.Option"
+ }
}
],
"produces": [
@@ -248374,29 +278175,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.steamGameResponseDoc"
+ "$ref": "#/definitions/extract.responseDoc"
}
},
"400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Invalid URL or schema",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Extraction is not configured",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "502": {
+ "description": "Fetch or model provider failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -248407,225 +278202,114 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Steam game from the dataset",
+ "summary": "Extract schema-conforming JSON from a URL",
"tags": [
- "Datasets"
+ "Web"
]
}
},
- "/datasets/steam-games/search": {
+ "/facebook/marketplace/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches enriched public Steam catalog records stored in a search index. price_tier enum: `free`, `under5`, `5to15`, `15to30`, `30to60`, `over60`. review_tier enum: `overwhelmingly_positive`, `very_positive`, `positive`, `mostly_positive`, `mixed`, `mostly_negative`, `negative`, `very_negative`, `overwhelmingly_negative`, `insufficient`. Sort enum: `relevance`, `owners_desc`, `reviews_desc`, `review_score_desc`, `ccu_desc`, `metacritic_desc`, `price_asc`, `price_desc`, `release_desc`, `release_asc`.",
- "operationId": "datasets-steam-games-search",
+ "description": "Fetches Facebook Marketplace search or browse results for a location: listing id, title, price, city/state, and a thumbnail image per result. Only the first page Facebook's own server-rendered results page returns is available — Facebook's own further pagination requires a logged-in session and is out of scope. Omit both query and category to get the location's browse feed instead of running a search. minPrice, maxPrice, sortBy, daysSinceListed, and condition only take effect alongside a query or category (Facebook itself ignores them on the plain browse feed), except for the property_rentals category, which has its own always-filtered listing page. This endpoint can take noticeably longer than other search endpoints (up to roughly a minute in the slowest case) as it retries to get past an intermittent upstream condition; priced accordingly.",
+ "operationId": "facebook-marketplace-search",
"parameters": [
{
- "description": "Full-text query over name, developer and publisher, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact storefront type filter (e.g. game, dlc, demo), max 128 characters",
- "in": "query",
- "name": "type",
- "type": "string"
- },
- {
- "description": "Exact developer filter, max 128 characters",
+ "description": "Facebook Marketplace location vanity slug",
"in": "query",
- "name": "developer",
- "type": "string"
+ "name": "location",
+ "required": true,
+ "type": "string",
+ "x-example": "austin"
},
{
- "description": "Exact publisher filter, max 128 characters",
+ "description": "Free-text search terms; omit (with category) for the location's browse feed",
"in": "query",
- "name": "publisher",
- "type": "string"
+ "name": "query",
+ "type": "string",
+ "x-example": "bike"
},
{
- "description": "Exact genre filter (e.g. Action, Indie), max 128 characters",
+ "description": "Marketplace category",
+ "enum": [
+ "vehicles",
+ "property_rentals",
+ "classifieds",
+ "apparel",
+ "electronics",
+ "entertainment",
+ "family",
+ "free",
+ "garden_outdoors",
+ "hobbies",
+ "home_goods",
+ "home_improvement",
+ "musical_instruments",
+ "office_supplies",
+ "pet_supplies",
+ "property_sale",
+ "sporting_goods",
+ "toys_games"
+ ],
"in": "query",
- "name": "genre",
- "type": "string"
+ "name": "category",
+ "type": "string",
+ "x-example": "vehicles"
},
{
- "description": "Exact store category filter (e.g. Single-player), max 128 characters",
+ "description": "Minimum price in whole currency units; requires query or category",
"in": "query",
- "name": "category",
- "type": "string"
+ "name": "min_price",
+ "type": "integer",
+ "x-example": 20
},
{
- "description": "Exact community-tag filter (e.g. Roguelike, Metroidvania, Cozy), max 128 characters",
+ "description": "Maximum price in whole currency units; requires query or category",
"in": "query",
- "name": "tag",
- "type": "string"
+ "name": "max_price",
+ "type": "integer",
+ "x-example": 500
},
{
- "description": "Price-tier enum: free, under5, 5to15, 15to30, 30to60, over60",
+ "description": "Result order; requires query or category",
"enum": [
- "free",
- "under5",
- "5to15",
- "15to30",
- "30to60",
- "over60"
+ "best_match",
+ "distance_ascend",
+ "creation_time_descend",
+ "price_ascend",
+ "price_descend"
],
"in": "query",
- "name": "price_tier",
- "type": "string"
+ "name": "sort_by",
+ "type": "string",
+ "x-example": "price_ascend"
},
{
- "description": "Review-tier enum: overwhelmingly_positive, very_positive, positive, mostly_positive, mixed, mostly_negative, negative, very_negative, overwhelmingly_negative, insufficient",
+ "description": "Restrict to listings posted within this many days; requires query or category",
"enum": [
- "overwhelmingly_positive",
- "very_positive",
- "positive",
- "mostly_positive",
- "mixed",
- "mostly_negative",
- "negative",
- "very_negative",
- "overwhelmingly_negative",
- "insufficient"
+ 1,
+ 7,
+ 30
],
"in": "query",
- "name": "review_tier",
- "type": "string"
- },
- {
- "description": "Exact SteamSpy owners-range bucket filter, max 128 characters",
- "in": "query",
- "name": "owners_bucket",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Filter by free-to-play flag",
- "in": "query",
- "name": "is_free",
- "type": "boolean"
- },
- {
- "description": "Filter by Windows support",
- "in": "query",
- "name": "windows",
- "type": "boolean"
- },
- {
- "description": "Filter by macOS support",
- "in": "query",
- "name": "mac",
- "type": "boolean"
- },
- {
- "description": "Filter by Linux support",
- "in": "query",
- "name": "linux",
- "type": "boolean"
- },
- {
- "description": "Filter by titles currently discounted (discount_pct > 0)",
- "in": "query",
- "name": "on_sale",
- "type": "boolean"
- },
- {
- "description": "Minimum current price in cents",
- "in": "query",
- "name": "min_price_cents",
- "type": "integer"
- },
- {
- "description": "Maximum current price in cents",
- "in": "query",
- "name": "max_price_cents",
- "type": "integer"
- },
- {
- "description": "Minimum estimated owners (SteamSpy owners midpoint)",
- "in": "query",
- "name": "min_owners",
- "type": "integer"
- },
- {
- "description": "Minimum positive review count",
- "in": "query",
- "name": "min_positive",
- "type": "integer"
- },
- {
- "description": "Minimum total review count",
- "in": "query",
- "name": "min_total_reviews",
- "type": "integer"
- },
- {
- "description": "Minimum positive-review ratio, 0 through 1",
- "in": "query",
- "name": "min_review_score",
- "type": "number"
- },
- {
- "description": "Minimum Metacritic score, 0 through 100",
- "in": "query",
- "name": "min_metacritic",
- "type": "integer"
- },
- {
- "description": "Minimum peak concurrent users yesterday",
- "in": "query",
- "name": "min_ccu",
- "type": "integer"
- },
- {
- "description": "Minimum release year",
- "in": "query",
- "name": "min_release_year",
- "type": "integer"
- },
- {
- "description": "Maximum release year",
- "in": "query",
- "name": "max_release_year",
- "type": "integer"
+ "name": "days_since_listed",
+ "type": "integer",
+ "x-example": 7
},
{
- "description": "Sort enum: relevance, owners_desc, reviews_desc, review_score_desc, ccu_desc, metacritic_desc, price_asc, price_desc, release_desc, release_asc",
+ "description": "Comma-separated listing conditions; requires query or category",
"enum": [
- "relevance",
- "owners_desc",
- "reviews_desc",
- "review_score_desc",
- "ccu_desc",
- "metacritic_desc",
- "price_asc",
- "price_desc",
- "release_desc",
- "release_asc"
+ "new",
+ "used_like_new",
+ "used_good",
+ "used_fair"
],
"in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "condition",
+ "type": "string",
+ "x-example": "new,used_like_new"
}
],
"produces": [
@@ -248635,23 +278319,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.steamGamesSearchResponseDoc"
+ "$ref": "#/definitions/facebook.marketplaceSearchResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Bad request — missing location, an unrecognized enum value, an invalid price range, or a filter given without query/category",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Location not recognized by Facebook Marketplace",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal Server Error",
+ "description": "Internal server error while fetching search results",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -248662,53 +278346,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Steam games dataset",
+ "summary": "Search Facebook Marketplace",
"tags": [
- "Datasets"
+ "Facebook"
]
}
},
- "/datasets/steam-news/search": {
+ "/facebook/{page}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Steam news + announcements for tracked apps (one document per appid × gid; the latest items per app are kept). Filter by `app_id` for a single game's news, or full-text `q` over the title + contents. Sort enum: `date_desc` (newest first, default), `date_asc`.",
- "operationId": "datasets-steam-news-search",
+ "description": "Fetches public data about a Facebook Page given its page ID, vanity name, or full page URL: name, follower/like counts, intro, category, business hours/price range, review count, and any public contact details (email, phone, address, website, WhatsApp number) exposed on the Page's About tab.",
+ "operationId": "facebook-page",
"parameters": [
{
- "description": "Full-text query over the news title + contents, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact Steam app id filter",
- "in": "query",
- "name": "app_id",
- "type": "string"
- },
- {
- "description": "Sort enum: date_desc, date_asc",
- "enum": [
- "date_desc",
- "date_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
+ "description": "Facebook Page reference: vanity name, handle, profile.php id, or full Facebook URL",
+ "in": "path",
"name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "required": true,
+ "type": "string",
+ "x-example": "nike"
}
],
"produces": [
@@ -248718,23 +278376,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.steamNewsSearchResponseDoc"
+ "$ref": "#/definitions/facebook.pageResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Bad request — missing or invalid page reference",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Page not found or unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal Server Error",
+ "description": "Internal server error while fetching page data",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -248745,56 +278403,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the steam-news dataset",
+ "summary": "Get Facebook page details",
"tags": [
- "Datasets"
+ "Facebook"
]
}
},
- "/datasets/steam-playercounts/search": {
+ "/fanatics/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the daily concurrent-player time series for tracked games (one document per appid × day). Pair `app_id` with `sort=date_desc` for a game's player-count history, or pass `date` for one day's snapshot. Sort enum: `date_desc` (default), `date_asc`, `players_desc`.",
- "operationId": "datasets-steam-playercounts-search",
- "parameters": [
- {
- "description": "Exact Steam app id filter",
- "in": "query",
- "name": "app_id",
- "type": "string"
- },
- {
- "description": "Snapshot date filter yyyy-MM-dd",
- "in": "query",
- "name": "date",
- "type": "string"
- },
- {
- "description": "Sort enum: date_desc, date_asc, players_desc",
- "enum": [
- "date_desc",
- "date_asc",
- "players_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
- }
- ],
+ "description": "Returns Fanatics' full top-level navigation tree: leagues (NFL, MLB, NBA, NHL, Soccer, WWE, College, ...) and, where Fanatics exposes a team-level breakdown, each league's teams (College's several hundred schools included). Each league's or team's url is directly usable as fanatics_category's url input. Public data sourced from fanatics.com's own navigation data.",
+ "operationId": "fanatics-categories",
"produces": [
"application/json"
],
@@ -248802,23 +278423,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.steamPlayerCountsSearchResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/fanatics.categoriesResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -248829,56 +278444,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Search steam-playercounts dataset",
+ "summary": "Get Fanatics' league and team navigation tree",
"tags": [
- "Datasets"
+ "Fanatics"
]
}
},
- "/datasets/steam-prices/search": {
+ "/fanatics/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the daily price time series for priced games (one document per appid × day; integer cents). Pair `app_id` with `sort=date_desc` for a game's price history, or pass `date` for one day's snapshot. Sort enum: `date_desc` (default), `date_asc`, `price_asc`, `price_desc`, `discount_desc`.",
- "operationId": "datasets-steam-prices-search",
+ "description": "Returns one page of a Fanatics league or team category's product listing (name, brand, price, availability, image, url). Use GET /fanatics/categories to discover valid category urls.",
+ "operationId": "fanatics-category",
"parameters": [
{
- "description": "Exact Steam app id filter",
- "in": "query",
- "name": "app_id",
- "type": "string"
- },
- {
- "description": "Snapshot date filter yyyy-MM-dd",
+ "description": "A fanatics.com league or team category URL, exactly as returned by a fanatics_categories result's url field.",
"in": "query",
- "name": "date",
- "type": "string"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "/nfl/indianapolis-colts/o-2483+t-03378189+z-90650-4056854214"
},
{
- "description": "Sort enum: date_desc, date_asc, price_asc, price_desc, discount_desc",
- "enum": [
- "date_desc",
- "date_asc",
- "price_asc",
- "price_desc",
- "discount_desc"
- ],
+ "description": "1-based result page. Defaults to 1.",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "page_number",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Page number, defaults to 1",
+ "description": "Results per page. One of 24, 48, 72. Defaults to 24.",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 24
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "One of TopSellers, LowestPrice, HighestPrice, NewestArrivals. Defaults to TopSellers.",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "sort",
+ "type": "string",
+ "x-example": "TopSellers"
}
],
"produces": [
@@ -248888,7 +278495,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.steamPricesSearchResponseDoc"
+ "$ref": "#/definitions/fanatics.categoryResponseDoc"
}
},
"400": {
@@ -248897,14 +278504,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -248915,66 +278522,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the steam-prices dataset",
+ "summary": "Browse a Fanatics league or team category",
"tags": [
- "Datasets"
+ "Fanatics"
]
}
},
- "/datasets/steam-reviews/search": {
+ "/fanatics/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the stored Steam review corpus (the most-helpful reviews per game; one document per appid × recommendation). Full-text `q` over the review body, filter by `app_id`, `language`, or `voted_up` (positive/negative). Sort enum: `votes_desc` (most-helpful first, default), `weighted_desc`, `date_desc`.",
- "operationId": "datasets-steam-reviews-search",
+ "description": "Returns one Fanatics product's detail (name, brand, category, price, availability, condition, images), plus per-size availability/price, a fit/value/quality review-rating breakdown, a richer media gallery, and comparable-product alternates (e.g. a jersey's Game/Limited/Elite stitch tiers) where Fanatics exposes them. Use GET /fanatics/search or GET /fanatics/category to discover product urls.",
+ "operationId": "fanatics-product",
"parameters": [
{
- "description": "Full-text query over the review body, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact Steam app id filter",
- "in": "query",
- "name": "app_id",
- "type": "string"
- },
- {
- "description": "Review language filter (e.g. english, schinese)",
- "in": "query",
- "name": "language",
- "type": "string"
- },
- {
- "description": "Recommendation filter: true (positive) or false (negative)",
- "in": "query",
- "name": "voted_up",
- "type": "string"
- },
- {
- "description": "Sort enum: votes_desc, weighted_desc, date_desc",
- "enum": [
- "votes_desc",
- "weighted_desc",
- "date_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "A fanatics.com product-detail URL, exactly as returned by a fanatics_search or fanatics_category result's url field.",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.fanatics.com/nfl/indianapolis-colts/indianapolis-colts-fanatics-slice-shorts-royal/o-2472+t-03937001+p-94133518138+z-9-2488621558"
}
],
"produces": [
@@ -248984,7 +278552,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.steamReviewsSearchResponseDoc"
+ "$ref": "#/definitions/fanatics.productResponseDoc"
}
},
"400": {
@@ -248993,8 +278561,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -249004,6 +278572,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -249011,165 +278585,97 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the steam-reviews dataset",
+ "summary": "Get a Fanatics product's detail",
"tags": [
- "Datasets"
+ "Fanatics"
]
}
},
- "/datasets/techstack/facets": {
+ "/fanatics/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns distribution counts over the website tech-stack index (dataset id enum value `techstack`), honoring the same filters as search — the technology / category market-share view. Facet enum: `technology`, `category`, `cms`, `ecommerce`, `cdn`, `web_server`, `server_language`, `analytics`, `tld`, `render_tier`, `seed_source`.",
- "operationId": "datasets-techstack-facets",
+ "description": "Returns one page of Fanatics' own keyword search results (name, brand, price, availability, image, url).",
+ "operationId": "fanatics-search",
"parameters": [
{
- "description": "Facet enum: technology, category, cms, ecommerce, cdn, web_server, server_language, analytics, tld, render_tier, seed_source",
- "enum": [
- "technology",
- "category",
- "cms",
- "ecommerce",
- "cdn",
- "web_server",
- "server_language",
- "analytics",
- "tld",
- "render_tier",
- "seed_source"
- ],
+ "description": "Free-text search keywords.",
"in": "query",
- "name": "facet",
+ "name": "query",
"required": true,
- "type": "string"
- },
- {
- "description": "Substring match on the site domain, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "collectionFormat": "csv",
- "description": "Repeatable exact technology name the site MUST use (AND)",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "technology",
- "type": "array"
- },
- {
- "collectionFormat": "csv",
- "description": "Repeatable exact technology name; the site must use at least one (OR)",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "any_of",
- "type": "array"
- },
- {
- "collectionFormat": "csv",
- "description": "Repeatable exact technology name the site must NOT use (excludes)",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "not",
- "type": "array"
- },
- {
- "description": "Exact category filter, e.g. Ecommerce, CMS, Analytics",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact CMS filter, e.g. WordPress, Shopify, Webflow",
- "in": "query",
- "name": "cms",
- "type": "string"
- },
- {
- "description": "Exact e-commerce platform filter, e.g. Shopify, WooCommerce, Magento",
- "in": "query",
- "name": "ecommerce",
- "type": "string"
- },
- {
- "description": "Exact CDN / hosting filter, e.g. Cloudflare, Fastly, Vercel",
- "in": "query",
- "name": "cdn",
- "type": "string"
- },
- {
- "description": "Exact web-server filter, e.g. nginx, Apache, IIS",
- "in": "query",
- "name": "web_server",
- "type": "string"
- },
- {
- "description": "Exact server language / framework filter, e.g. PHP, ASP.NET, Ruby on Rails",
- "in": "query",
- "name": "server_language",
- "type": "string"
- },
- {
- "description": "Exact top-level-domain filter, e.g. com, org, io",
- "in": "query",
- "name": "tld",
- "type": "string"
- },
- {
- "description": "Fetch-tier filter. Enum: http, browser",
- "enum": [
- "http",
- "browser"
- ],
- "in": "query",
- "name": "render_tier",
- "type": "string"
+ "type": "string",
+ "x-example": "colts jersey"
},
{
- "description": "Source filter for where the domain was discovered, e.g. tranco",
+ "description": "1-based result page. Defaults to 1.",
"in": "query",
- "name": "seed_source",
- "type": "string"
+ "name": "page_number",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "true keeps only sites with a detected CAPTCHA",
+ "description": "Results per page. One of 24, 48, 72. Defaults to 24.",
"in": "query",
- "name": "has_captcha",
- "type": "boolean"
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 24
},
{
- "description": "false (the common case) excludes backend CDN/DNS/cloud-vendor hostnames that rank highly but were never meant to serve a public homepage, keeping only real, human-navigable sites; true keeps only those backend hostnames",
+ "description": "One of TopSellers, LowestPrice, HighestPrice, NewestArrivals. Defaults to TopSellers.",
"in": "query",
- "name": "is_infrastructure",
- "type": "boolean"
+ "name": "sort",
+ "type": "string",
+ "x-example": "TopSellers"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/fanatics.searchResponseDoc"
+ }
},
- {
- "description": "true keeps only sites whose homepage was fetched",
- "in": "query",
- "name": "reachable",
- "type": "boolean"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Minimum number of detected technologies, 0 or greater",
- "in": "query",
- "name": "min_tech_count",
- "type": "integer"
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Scan run id; defaults to the latest run",
- "in": "query",
- "name": "run_id",
- "type": "string"
+ "ApiKeyAuth": []
}
],
+ "summary": "Search Fanatics' product catalog",
+ "tags": [
+ "Fanatics"
+ ]
+ }
+ },
+ "/fanaticscollect/auctions": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Fanatics Collect's current and recent weekly and premier auction events -- the same short list the site's own header auction switcher and countdown banner show. This is the discovery endpoint for Search's auction_urn param: copy an event's urn value to browse every lot in that auction. A small, current/recent set (observed live: around 6 events), not a full historical archive -- older auctions' urn values found on a Search result or a GetListing response remain valid for Search even once they no longer appear here. Credential-free public data from Fanatics Collect's own GraphQL API.",
+ "operationId": "fanaticscollect-auctions",
"produces": [
"application/json"
],
@@ -249177,14 +278683,55 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.techstackFacetResponseDoc"
+ "$ref": "#/definitions/fanaticscollect.auctionsResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Fanatics Collect auction events",
+ "tags": [
+ "Fanatics Collect"
+ ]
+ }
+ },
+ "/fanaticscollect/categories": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns every accepted value for GetListing's marketplace param -- WEEKLY, PREMIER, FIXED -- and for Search's marketplace, category_parent, sub_category, grading_service, status, and sort params. Discovery endpoint for those closed enums.",
+ "operationId": "fanaticscollect-categories",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/fanaticscollect.categoriesResponseDoc"
+ }
},
"429": {
"description": "Too Many Requests",
@@ -249192,11 +278739,52 @@
"$ref": "#/definitions/app.Response"
}
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Fanatics Collect search filter values",
+ "tags": [
+ "Fanatics Collect"
+ ]
+ }
+ },
+ "/fanaticscollect/instant-rips/categories": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns every category Fanatics Collect's \"Instant Rips\" mystery-pack product (fanaticscollect.com/instant-rips) currently advertises on its homepage: id, name, and price range. Instant Rips is a \"buy a randomized pack, a real graded card is revealed\" product; each category's id is a real listing id, fetchable through GetListing with type=FIXED for that entry point's own full detail. This does not cover the individual pack-tier tiles within a category or the homepage's \"Recently ripped\" live feed -- both are hydrated client-side in a form this repo cannot reliably parse. Credential-free public data, server-rendered on Fanatics Collect's own page.",
+ "operationId": "fanaticscollect-instant-rips-categories",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/fanaticscollect.instantRipsCategoriesResponseDoc"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -249204,25 +278792,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the website tech-stack dataset",
+ "summary": "Get Fanatics Collect Instant Rips categories",
"tags": [
- "Datasets"
+ "Fanatics Collect"
]
}
},
- "/datasets/techstack/items/{domain}": {
+ "/fanaticscollect/listing/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one site by its domain from dataset id enum value `techstack`, including every detected technology (name, categories, confidence, version, evidence) plus the CMS / e-commerce / CDN / web-server / server-language rollups. Also flags whether the domain looks like backend CDN/DNS/cloud-vendor infrastructure rather than a real, human-navigable site (see `is_infrastructure`). Returns 404 when the domain is not in the index.",
- "operationId": "datasets-techstack-item",
+ "description": "Returns full detail for a single Fanatics Collect listing: a weekly-auction lot, a premier-auction lot, or a fixed-price \"buy now\" item (including an Instant Rips pack). Fields include title, current bid/starting/asking price, bid count, auction window and status, images, description, completed sale history, and -- when the card is stored in Fanatics' vault -- grading/authentication metadata including a direct PSA cert-verification link. Credential-free public data from Fanatics Collect's own GraphQL API.",
+ "operationId": "fanaticscollect-listing",
"parameters": [
{
- "description": "Site domain, e.g. shopify.com (a scheme and www. are stripped)",
+ "description": "Listing UUID",
"in": "path",
- "name": "domain",
+ "name": "id",
"required": true,
+ "type": "string",
+ "x-example": "1e389d12-6f23-11ed-9d8b-0a58a9feac02"
+ },
+ {
+ "description": "Listing type. Default: WEEKLY",
+ "enum": [
+ "WEEKLY",
+ "PREMIER",
+ "FIXED"
+ ],
+ "in": "query",
+ "name": "type",
"type": "string"
}
],
@@ -249233,29 +278833,35 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.techstackItemResponseDoc"
+ "$ref": "#/definitions/fanaticscollect.listingResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid path/query parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Not Found",
+ "description": "Listing not found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"500": {
- "description": "Internal Server Error",
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Fanatics Collect upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -249266,167 +278872,208 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a site from the website tech-stack dataset",
+ "summary": "Get Fanatics Collect listing detail",
"tags": [
- "Datasets"
+ "Fanatics Collect"
]
}
},
- "/datasets/techstack/search": {
+ "/fanaticscollect/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the website tech-stack index (dataset id enum value `techstack`) — one record per site listing the web technologies it is built with (frameworks, CMS, e-commerce, analytics, CDNs, servers, and more), BuiltWith / Wappalyzer-style. The reverse-index filters are the point: repeat `technology` to require several at once (AND), `any_of` to match at least one (OR), and `not` to exclude — e.g. sites on `Shopify` and `Klaviyo` but not `Recharge`. Sort enum: `relevance`, `rank_asc`, `tech_count_desc`, `domain_asc`, `crawled_desc`. render_tier enum: `http`, `browser`.",
- "operationId": "datasets-techstack-search",
+ "description": "Searches Fanatics Collect's full marketplace -- weekly auctions, premier auctions, and the fixed-price \"Buy Now\" marketplace -- by free-text query, category, grading service, price/year/grade range, and listing status, in a caller-selected sort order. Credential-free public data from Fanatics Collect's own public search index. See GetCategories for the accepted category, grading-service, status, and sort values.",
+ "operationId": "fanaticscollect-search",
"parameters": [
{
- "description": "Substring match on the site domain, max 256 characters",
+ "description": "Free-text search across title, brand, subject, and set",
"in": "query",
"name": "q",
- "type": "string"
- },
- {
- "collectionFormat": "csv",
- "description": "Repeatable exact technology name the site MUST use (AND), e.g. technology=Shopify&technology=Klaviyo",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "technology",
- "type": "array"
- },
- {
- "collectionFormat": "csv",
- "description": "Repeatable exact technology name; the site must use at least one (OR)",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "any_of",
- "type": "array"
+ "type": "string",
+ "x-example": "aaron judge"
},
{
- "collectionFormat": "csv",
- "description": "Repeatable exact technology name the site must NOT use (excludes)",
+ "description": "Listing type. Omit to search all three.",
+ "enum": [
+ "WEEKLY",
+ "PREMIER",
+ "FIXED"
+ ],
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "not",
- "type": "array"
+ "name": "marketplace",
+ "type": "string"
},
{
- "description": "Exact category filter, e.g. Ecommerce, CMS, Analytics, Payment, CDN",
+ "description": "Top-level category",
+ "enum": [
+ "Sports Cards",
+ "Trading Card Games",
+ "Other",
+ "Video Games",
+ "Comics"
+ ],
"in": "query",
- "name": "category",
+ "name": "category_parent",
"type": "string"
},
{
- "description": "Exact CMS filter, e.g. WordPress, Shopify, Webflow",
+ "description": "A parent > child category path (or just the child name), e.g. \\",
"in": "query",
- "name": "cms",
+ "name": "sub_category",
"type": "string"
},
{
- "description": "Exact e-commerce platform filter, e.g. Shopify, WooCommerce, Magento",
+ "description": "Grading/authentication service",
+ "enum": [
+ "Ungraded",
+ "CGC",
+ "PSA",
+ "BGS",
+ "SGC",
+ "Other Approved",
+ "PSA/DNA",
+ "CSG",
+ "MBA",
+ "PSA_DNA",
+ "BVG",
+ "OTHER_APPROVED",
+ "BCCG",
+ "WATA",
+ "GAI",
+ "VGA",
+ "CBCS",
+ "UDA",
+ "CAC",
+ "KSA",
+ "PCGS"
+ ],
"in": "query",
- "name": "ecommerce",
+ "name": "grading_service",
"type": "string"
},
{
- "description": "Exact CDN / hosting filter, e.g. Cloudflare, Fastly, Vercel",
+ "description": "Exact seller/shop name (case-insensitive). Not a fixed enum -- match a name from a prior Search result's certified_seller field.",
"in": "query",
- "name": "cdn",
- "type": "string"
+ "name": "certified_seller",
+ "type": "string",
+ "x-example": "Fanatics Collect"
},
{
- "description": "Exact web-server filter, e.g. nginx, Apache, IIS",
+ "description": "Exact seller id (UUID) -- browse everything one seller has listed. Not a fixed enum; match a prior Search result's seller_id field.",
"in": "query",
- "name": "web_server",
- "type": "string"
+ "name": "seller_id",
+ "type": "string",
+ "x-example": "4216b44a-9696-4263-96c3-5f58eeb9a316"
},
{
- "description": "Exact server language / framework filter, e.g. PHP, ASP.NET, Ruby on Rails",
+ "description": "Exact brand/subject facet value (case-insensitive), e.g. a player, character, or set name. Not a fixed enum; match a prior Search result's brand field.",
"in": "query",
- "name": "server_language",
- "type": "string"
+ "name": "brand",
+ "type": "string",
+ "x-example": "Michael Jordan"
},
{
- "description": "Exact top-level-domain filter, e.g. com, org, io",
+ "description": "Browse every lot in one specific weekly or premier auction event. Not a fixed enum; copy the exact value from a prior Search result's auction_urn field. Only WEEKLY/PREMIER listings carry one.",
"in": "query",
- "name": "tld",
- "type": "string"
+ "name": "auction_urn",
+ "type": "string",
+ "x-example": "WEEKLY:fb70389e-1c67-11f1-90df-0ab83224f98f"
},
{
- "description": "Fetch-tier filter. Enum: http, browser",
+ "description": "Listing status. Default LIVE.",
"enum": [
- "http",
- "browser"
+ "LIVE",
+ "SOLD",
+ "ALL"
],
"in": "query",
- "name": "render_tier",
+ "name": "status",
"type": "string"
},
{
- "description": "Source filter for where the domain was discovered, e.g. tranco",
+ "description": "Filter for listings the seller accepts offers on",
"in": "query",
- "name": "seed_source",
- "type": "string"
+ "name": "allow_offers",
+ "type": "boolean"
},
{
- "description": "true keeps only sites with a detected CAPTCHA",
+ "description": "Filter for listings with at least one active offer pending",
"in": "query",
- "name": "has_captcha",
+ "name": "has_offers",
"type": "boolean"
},
{
- "description": "false (the common case) excludes backend CDN/DNS/cloud-vendor hostnames that rank highly but were never meant to serve a public homepage, keeping only real, human-navigable sites; true keeps only those backend hostnames",
+ "description": "Filter for listings Fanatics Collect itself flags as a great price vs. guide value",
"in": "query",
- "name": "is_infrastructure",
+ "name": "great_price",
"type": "boolean"
},
{
- "description": "true keeps only sites whose homepage was fetched, false only sites that could not be fetched",
+ "description": "Minimum current price/bid, inclusive",
"in": "query",
- "name": "reachable",
- "type": "boolean"
+ "name": "min_price",
+ "type": "number"
},
{
- "description": "Minimum number of detected technologies, 0 or greater",
+ "description": "Maximum current price/bid, inclusive",
"in": "query",
- "name": "min_tech_count",
+ "name": "max_price",
+ "type": "number"
+ },
+ {
+ "description": "Minimum card/item year, inclusive",
+ "in": "query",
+ "name": "min_year",
"type": "integer"
},
{
- "description": "Scan run id; defaults to the latest run",
+ "description": "Maximum card/item year, inclusive",
"in": "query",
- "name": "run_id",
- "type": "string"
+ "name": "max_year",
+ "type": "integer"
},
{
- "description": "Sort enum: relevance, rank_asc, tech_count_desc, domain_asc, crawled_desc",
+ "description": "Minimum numeric grade, inclusive",
+ "in": "query",
+ "name": "min_grade",
+ "type": "number"
+ },
+ {
+ "description": "Maximum numeric grade, inclusive",
+ "in": "query",
+ "name": "max_grade",
+ "type": "number"
+ },
+ {
+ "description": "Result order. Default best_value.",
"enum": [
- "relevance",
- "rank_asc",
- "tech_count_desc",
- "domain_asc",
- "crawled_desc"
+ "recommended",
+ "recently_added",
+ "best_deals",
+ "lot_number",
+ "lowest_price",
+ "highest_price",
+ "best_value",
+ "earliest_year",
+ "latest_year",
+ "earliest_sale_date",
+ "latest_sale_date"
],
"in": "query",
"name": "sort",
"type": "string"
},
{
- "description": "Page number, defaults to 1",
+ "description": "1-based page number, default 1",
"in": "query",
"name": "page",
"type": "integer"
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Results per page, default 24, max 100",
"in": "query",
- "name": "page_size",
+ "name": "per_page",
"type": "integer"
}
],
@@ -249437,7 +279084,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.techstackSearchResponseDoc"
+ "$ref": "#/definitions/fanaticscollect.searchResponseDoc"
}
},
"400": {
@@ -249446,14 +279093,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -249464,76 +279111,131 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the website tech-stack dataset",
+ "summary": "Search Fanatics Collect listings",
"tags": [
- "Datasets"
+ "Fanatics Collect"
]
}
},
- "/datasets/trustmrr/facets": {
+ "/fanaticscollect/sold-items": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms-aggregation counts for one facet of the TrustMRR dataset, scoped to the same filters as search. Facet enum: `category`, `country`, `payment_provider`, `target_audience`, `business_type`, `tech`, `channels`, `listing_tier`, `status`, `on_sale`, `is_sponsored`, `tags`.",
- "operationId": "datasets-trustmrr-facets",
+ "description": "Searches Fanatics Collect's sales-history archive -- every completed sale across every marketplace, not just what the live search index currently surfaces. A separate product from Search, reached from the \"View all sold items\" link on every marketplace search page. Credential-free public data from Fanatics Collect's own public sales-history API. See GetCategories for the accepted category, grading-service, eye-appeal-grade, and sort values.",
+ "operationId": "fanaticscollect-sold-items",
"parameters": [
{
- "description": "Facet enum: category, country, payment_provider, target_audience, business_type, tech, channels, listing_tier, status, on_sale, is_sponsored, tags",
+ "description": "Free-text search across item title",
+ "in": "query",
+ "name": "title",
+ "type": "string",
+ "x-example": "aaron judge"
+ },
+ {
+ "description": "Item category",
"enum": [
- "category",
- "country",
- "payment_provider",
- "target_audience",
- "business_type",
- "tech",
- "channels",
- "listing_tier",
- "status",
- "on_sale",
- "is_sponsored",
- "tags"
+ "Trading Cards",
+ "Baseball",
+ "Basketball",
+ "Football",
+ "Hockey",
+ "Golf",
+ "Boxing & MMA",
+ "Soccer",
+ "Tennis",
+ "Racing",
+ "Misc Sports",
+ "Non-Sport",
+ "Yu-Gi-Oh!",
+ "Magic The Gathering",
+ "Pokémon",
+ "Collectible Card Games",
+ "Miscellaneous",
+ "Memorabilia",
+ "Photos",
+ "Comics",
+ "Tickets",
+ "Coins",
+ "Video Games"
],
"in": "query",
- "name": "facet",
- "required": true,
+ "name": "category",
"type": "string"
},
{
- "description": "Full-text query, max 256 characters",
+ "description": "Grading/authentication service, including ungraded for raw items",
+ "enum": [
+ "PSA",
+ "SGC",
+ "BGS",
+ "BVG",
+ "BCCG",
+ "CGC",
+ "CSG",
+ "ungraded"
+ ],
"in": "query",
- "name": "q",
+ "name": "grading_service",
"type": "string"
},
{
- "description": "Exact category filter, max 128 characters",
+ "description": "Eye-appeal grade",
+ "enum": [
+ "Eye Appeal - A",
+ "Eye Appeal - E",
+ "Eye Appeal - S"
+ ],
"in": "query",
- "name": "category",
+ "name": "eye_appeal_grade",
"type": "string"
},
{
- "description": "Exact ISO country-code filter, max 128 characters",
+ "description": "Minimum card/item year, inclusive",
"in": "query",
- "name": "country",
- "type": "string"
+ "name": "min_year",
+ "type": "integer"
},
{
- "description": "Payment-provider filter, max 128 characters",
+ "description": "Maximum card/item year, inclusive",
"in": "query",
- "name": "payment_provider",
- "type": "string"
+ "name": "max_year",
+ "type": "integer"
},
{
- "description": "Filter for startups currently listed for sale",
+ "description": "Minimum sold price, inclusive",
"in": "query",
- "name": "on_sale",
- "type": "boolean"
+ "name": "min_price",
+ "type": "number"
},
{
- "description": "Minimum verified MRR in USD",
+ "description": "Maximum sold price, inclusive",
"in": "query",
- "name": "min_mrr",
+ "name": "max_price",
"type": "number"
+ },
+ {
+ "description": "Result order. Default sold_date_desc.",
+ "enum": [
+ "sold_date_desc",
+ "highest_price",
+ "lowest_price"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "1-based page number, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Results per page, default 20, max 100",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -249543,7 +279245,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.trustmrrFacetResponseDoc"
+ "$ref": "#/definitions/fanaticscollect.soldItemsResponseDoc"
}
},
"400": {
@@ -249552,14 +279254,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -249570,44 +279272,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the TrustMRR dataset",
+ "summary": "Search Fanatics Collect sold items",
"tags": [
- "Datasets"
+ "Fanatics Collect"
]
}
},
- "/datasets/trustmrr/history/{slug}": {
+ "/fanaticscollect/trending-searches": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a startup's daily time-series of payment-provider-verified metrics — MRR, all-time revenue, last-30-days revenue, 30-day and 12-month traffic, 30-day growth, for-sale flag, asking price, valuation multiple, deal score and offer count — one point per day in chronological order (oldest first). The series accrues one point per calendar day, so a recently discovered startup returns a short or empty series rather than a 404.",
- "operationId": "datasets-trustmrr-history",
+ "description": "Returns Fanatics Collect's own currently trending search terms -- the same list shown in the site's own header search box before the visitor types anything. Credential-free public data from Fanatics Collect's own GraphQL API.",
+ "operationId": "fanaticscollect-trending-searches",
"parameters": [
{
- "description": "Startup slug, max 128 characters",
- "in": "path",
- "name": "slug",
- "required": true,
- "type": "string"
- },
- {
- "description": "Inclusive start date, YYYY-MM-DD (UTC)",
- "in": "query",
- "name": "from",
- "type": "string"
- },
- {
- "description": "Inclusive end date, YYYY-MM-DD (UTC)",
- "in": "query",
- "name": "to",
- "type": "string"
- },
- {
- "description": "Maximum points returned (the most recent within the range), default 365, max 1000",
+ "description": "Number of terms to return, 1-50, default 8",
"in": "query",
"name": "limit",
- "type": "integer"
+ "type": "integer",
+ "x-example": 8
}
],
"produces": [
@@ -249617,7 +279301,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.trustmrrHistoryResponseDoc"
+ "$ref": "#/definitions/fanaticscollect.trendingSearchesResponseDoc"
}
},
"400": {
@@ -249626,14 +279310,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -249644,26 +279328,52 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a TrustMRR startup's daily history",
+ "summary": "Get Fanatics Collect trending search terms",
"tags": [
- "Datasets"
+ "Fanatics Collect"
]
}
},
- "/datasets/trustmrr/items/{slug}": {
+ "/fanaticslive/browse": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one startup record by slug from the TrustMRR dataset (dataset id `trustmrr`), including verified revenue/MRR, traffic, growth, category, tech stack, marketing channels and acquisition-marketplace fields.",
- "operationId": "datasets-trustmrr-item",
+ "description": "Returns the live and upcoming shows currently listed under a Fanatics Live league: name, status, cover image, viewers, and the hosting channel/shop. Public data sourced from Fanatics Live's own GraphQL API.",
+ "operationId": "fanaticslive-browse",
"parameters": [
{
- "description": "Startup slug, max 128 characters",
- "in": "path",
- "name": "slug",
+ "description": "Fanatics Live league type code. See GET /fanaticslive/leagues for the full list.",
+ "enum": [
+ "NFL",
+ "NCAA_FB",
+ "NBA",
+ "MLB",
+ "SOCCER",
+ "NHL",
+ "POKEMON",
+ "STAR_WARS",
+ "MLS",
+ "UFC",
+ "WWE",
+ "F1",
+ "NASCAR",
+ "DISNEY",
+ "GARBAGE_PAIL_KIDS",
+ "MAGIC_THE_GATHERING",
+ "WNBA",
+ "NCAA_BK",
+ "GOLF",
+ "VEE_FRIENDS",
+ "DUDE_PERFECT",
+ "OTHER",
+ "ORIGINALS"
+ ],
+ "in": "query",
+ "name": "league",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "POKEMON"
}
],
"produces": [
@@ -249673,7 +279383,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.trustmrrItemResponseDoc"
+ "$ref": "#/definitions/fanaticslive.browseResponseDoc"
}
},
"400": {
@@ -249682,20 +279392,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -249706,192 +279410,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a TrustMRR startup from the dataset",
+ "summary": "Browse Fanatics Live shows by league",
"tags": [
- "Datasets"
+ "Fanatics Live"
]
}
},
- "/datasets/trustmrr/search": {
+ "/fanaticslive/channel/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches public startups with payment-provider-verified revenue and MRR, stored in a search index. Filter by category, country, payment provider, target audience, tech, marketing channel, listing tier and for-sale status, and by revenue/MRR/traffic/growth/multiple/asking-price ranges. Sort enum: `relevance`, `mrr_desc`, `revenue_desc`, `revenue_30d_desc`, `traffic_desc`, `growth_desc`, `deal_score_desc`, `price_asc`, `price_desc`, `multiple_asc`, `founded_desc`. status enum: `active`, `removed`.",
- "operationId": "datasets-trustmrr-search",
+ "description": "Returns a Fanatics Live channel's own detail page: its parent shop, and a first page of its live/upcoming and past/replay shows. A shop can run several channels (e.g. a league-specific sub-feed) -- see /fanaticslive/shop/{slug} for a shop's full channel list and /fanaticslive/shop/{slug}/shows for cursor-paginated access to a full show history. Public data sourced from Fanatics Live's own GraphQL API.",
+ "operationId": "fanaticslive-channel",
"parameters": [
{
- "description": "Full-text query over name, description, seller message and business summary, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact startup slug filter, max 128 characters",
- "in": "query",
- "name": "slug",
- "type": "string"
- },
- {
- "description": "Exact category filter (e.g. SaaS, Artificial Intelligence, Mobile Apps), max 128 characters",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Exact ISO country-code filter (e.g. US), max 128 characters",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Payment-provider filter (e.g. stripe, revenuecat, superwall, creem), max 128 characters",
- "in": "query",
- "name": "payment_provider",
- "type": "string"
- },
- {
- "description": "Target-audience filter (e.g. B2B, B2C), max 128 characters",
- "in": "query",
- "name": "target_audience",
- "type": "string"
- },
- {
- "description": "Business-type filter (e.g. B2B, B2C), max 128 characters",
- "in": "query",
- "name": "business_type",
- "type": "string"
- },
- {
- "description": "Detected tech-stack slug filter (e.g. nextjs, reactnative), max 128 characters",
- "in": "query",
- "name": "tech",
- "type": "string"
- },
- {
- "description": "Detected marketing-channel slug filter (e.g. meta-ads, seo), max 128 characters",
- "in": "query",
- "name": "channel",
- "type": "string"
- },
- {
- "description": "For-sale listing-tier filter (e.g. pro), max 128 characters",
- "in": "query",
- "name": "listing_tier",
- "type": "string"
- },
- {
- "description": "Lifecycle enum: active, removed",
- "enum": [
- "active",
- "removed"
- ],
- "in": "query",
- "name": "status",
- "type": "string"
- },
- {
- "description": "Filter for startups currently listed for sale",
- "in": "query",
- "name": "on_sale",
- "type": "boolean"
- },
- {
- "description": "Filter for sponsored (paid-placement) listings",
- "in": "query",
- "name": "is_sponsored",
- "type": "boolean"
- },
- {
- "description": "Minimum verified MRR in USD",
- "in": "query",
- "name": "min_mrr",
- "type": "number"
- },
- {
- "description": "Maximum verified MRR in USD",
- "in": "query",
- "name": "max_mrr",
- "type": "number"
- },
- {
- "description": "Minimum verified all-time revenue in USD",
- "in": "query",
- "name": "min_revenue",
- "type": "number"
- },
- {
- "description": "Minimum verified last-30-days revenue in USD",
- "in": "query",
- "name": "min_revenue_30d",
- "type": "number"
- },
- {
- "description": "Minimum last-30-days traffic (visits)",
- "in": "query",
- "name": "min_traffic",
- "type": "number"
- },
- {
- "description": "Minimum 30-day revenue growth percentage",
- "in": "query",
- "name": "min_growth",
- "type": "number"
- },
- {
- "description": "Maximum asking-price-to-revenue multiple",
- "in": "query",
- "name": "max_multiple",
- "type": "number"
- },
- {
- "description": "Minimum asking price in USD",
- "in": "query",
- "name": "min_asking_price",
- "type": "number"
- },
- {
- "description": "Maximum asking price in USD",
- "in": "query",
- "name": "max_asking_price",
- "type": "number"
- },
- {
- "description": "Minimum Ahrefs Domain Rating",
- "in": "query",
- "name": "min_ahrefs_dr",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, mrr_desc, revenue_desc, revenue_30d_desc, traffic_desc, growth_desc, deal_score_desc, price_asc, price_desc, multiple_asc, founded_desc",
- "enum": [
- "relevance",
- "mrr_desc",
- "revenue_desc",
- "revenue_30d_desc",
- "traffic_desc",
- "growth_desc",
- "deal_score_desc",
- "price_asc",
- "price_desc",
- "multiple_asc",
- "founded_desc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "description": "Fanatics Live channel id (a UUID), e.g. from a shop or show result's channel.id field",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "adc4b55f-5e10-4ed0-8680-11875cfe1c94"
}
],
"produces": [
@@ -249901,7 +279440,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.trustmrrSearchResponseDoc"
+ "$ref": "#/definitions/fanaticslive.channelResponseDoc"
}
},
"400": {
@@ -249910,8 +279449,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -249921,6 +279460,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -249928,163 +279473,156 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the TrustMRR dataset",
+ "summary": "Get a Fanatics Live channel's detail page",
"tags": [
- "Datasets"
+ "Fanatics Live"
]
}
},
- "/datasets/vehicle-listings/facets": {
+ "/fanaticslive/leagues": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the vehicle listings dataset. Facet enum: `source`, `make`, `model`, `trim`, `body_style`, `transmission`, `drive_type`, `fuel_type`, `seller_type`, `state`, `run_id`.",
- "operationId": "datasets-vehicle-listings-facets",
- "parameters": [
- {
- "description": "Facet enum: source, make, model, trim, body_style, transmission, drive_type, fuel_type, seller_type, state, run_id",
- "enum": [
- "source",
- "make",
- "model",
- "trim",
- "body_style",
- "transmission",
- "drive_type",
- "fuel_type",
- "seller_type",
- "state",
- "run_id"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over make, model and trim, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact source marketplace filter: carmax, autotrader, carsdotcom",
- "enum": [
- "carmax",
- "autotrader",
- "carsdotcom"
- ],
- "in": "query",
- "name": "source",
- "type": "string"
- },
- {
- "description": "Exact make filter, max 128 characters",
- "in": "query",
- "name": "make",
- "type": "string"
- },
- {
- "description": "Exact model filter, max 128 characters",
- "in": "query",
- "name": "model",
- "type": "string"
- },
- {
- "description": "Exact trim filter, max 128 characters",
- "in": "query",
- "name": "trim",
- "type": "string"
- },
- {
- "description": "Exact body style filter, max 128 characters",
- "in": "query",
- "name": "body_style",
- "type": "string"
- },
- {
- "description": "Exact transmission filter, max 128 characters",
- "in": "query",
- "name": "transmission",
- "type": "string"
- },
- {
- "description": "Exact drivetrain filter, max 128 characters",
- "in": "query",
- "name": "drive_type",
- "type": "string"
- },
- {
- "description": "Exact fuel type filter, max 128 characters",
- "in": "query",
- "name": "fuel_type",
- "type": "string"
+ "description": "Returns Fanatics Live's full league/category list (e.g. \"Pokemon\", \"NFL\", \"MTG\"). Each entry's type is usable directly with /fanaticslive/browse's league filter. Public data sourced from Fanatics Live's own GraphQL API.",
+ "operationId": "fanaticslive-leagues",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/fanaticslive.leaguesResponseDoc"
+ }
},
- {
- "description": "Exact seller type filter: retailer, dealer, private",
- "enum": [
- "retailer",
- "dealer",
- "private"
- ],
- "in": "query",
- "name": "seller_type",
- "type": "string"
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Exact US state abbreviation filter, max 8 characters",
- "in": "query",
- "name": "state",
- "type": "string"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Fanatics Live's league taxonomy",
+ "tags": [
+ "Fanatics Live"
+ ]
+ }
+ },
+ "/fanaticslive/shop/{slug}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a Fanatics Live shop's public profile page: description, social links, follower count, and its channels and staffers. Public data sourced from Fanatics Live's own GraphQL API.",
+ "operationId": "fanaticslive-shop",
+ "parameters": [
{
- "description": "Exact VIN filter",
- "in": "query",
- "name": "vin",
- "type": "string"
+ "description": "Fanatics Live shop slug, e.g. from a shops-list result's slug field",
+ "in": "path",
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "we-the-hobby"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/fanaticslive.shopResponseDoc"
+ }
},
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Filter for listings currently marked down from a previous price",
- "in": "query",
- "name": "is_price_reduced",
- "type": "boolean"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Minimum model year",
- "in": "query",
- "name": "min_year",
- "type": "integer"
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Maximum model year",
- "in": "query",
- "name": "max_year",
- "type": "integer"
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Fanatics Live shop's public profile",
+ "tags": [
+ "Fanatics Live"
+ ]
+ }
+ },
+ "/fanaticslive/shop/{slug}/shows": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a Fanatics Live shop's own live/upcoming or past/replay show list -- distinct from /fanaticslive/browse, which lists shows across all shops filtered by league. status=replay is the only credential-free way to observe a COMPLETE-status show. Public data sourced from Fanatics Live's own GraphQL API.",
+ "operationId": "fanaticslive-shop-shows",
+ "parameters": [
+ {
+ "description": "Fanatics Live shop slug, e.g. from a shops-list result's slug field",
+ "in": "path",
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "going-twice"
},
{
- "description": "Minimum price in US dollars",
+ "description": "Which show list to return",
+ "enum": [
+ "live",
+ "replay"
+ ],
"in": "query",
- "name": "min_price",
- "type": "number"
+ "name": "status",
+ "required": true,
+ "type": "string",
+ "x-example": "live"
},
{
- "description": "Maximum price in US dollars",
+ "description": "Pagination cursor from a previous response's next_cursor",
"in": "query",
- "name": "max_price",
- "type": "number"
+ "name": "after",
+ "type": "string"
},
{
- "description": "Maximum odometer mileage",
+ "description": "Max shows to return (default 24)",
"in": "query",
- "name": "max_mileage",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 24
}
],
"produces": [
@@ -250094,7 +279632,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.vehicleListingsFacetResponseDoc"
+ "$ref": "#/definitions/fanaticslive.shopShowsResponseDoc"
}
},
"400": {
@@ -250103,17 +279641,64 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Fanatics Live shop's own live or replay show list",
+ "tags": [
+ "Fanatics Live"
+ ]
+ }
+ },
+ "/fanaticslive/shops": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Fanatics Live's full public shop directory: every shop's id, name, slug, logo, and follower count. Each entry's slug is usable directly with /fanaticslive/shop/{slug}. Public data sourced from Fanatics Live's own GraphQL API.",
+ "operationId": "fanaticslive-shops",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/fanaticslive.shopsResponseDoc"
+ }
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -250121,26 +279706,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet vehicle listings dataset",
+ "summary": "Get Fanatics Live's shop directory",
"tags": [
- "Datasets"
+ "Fanatics Live"
]
}
},
- "/datasets/vehicle-listings/items/{id}": {
+ "/fanaticslive/show/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one crawled vehicle listing by id from dataset id enum value `vehicle-listings`. id is `:`, e.g. `carmax:28187774`.",
- "operationId": "datasets-vehicle-listings-item",
+ "description": "Returns a Fanatics Live live show's detail page: status, viewers, hosting channel/shop, its currently active break/lot, and its full break/lot list. Public data sourced from Fanatics Live's own GraphQL API.",
+ "operationId": "fanaticslive-show",
"parameters": [
{
- "description": "Vehicle listing id, formatted : (e.g. carmax:28187774)",
+ "description": "Fanatics Live show id, e.g. from a browse result's id field",
"in": "path",
"name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "1b1aeec0-346b-4c8f-941a-bcb8af558a5a"
}
],
"produces": [
@@ -250150,7 +279736,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.vehicleListingResponseDoc"
+ "$ref": "#/definitions/fanaticslive.showResponseDoc"
}
},
"400": {
@@ -250165,14 +279751,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -250183,26 +279769,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a vehicle listing from dataset",
+ "summary": "Get a Fanatics Live show's detail page",
"tags": [
- "Datasets"
+ "Fanatics Live"
]
}
},
- "/datasets/vehicle-listings/price-history/{id}": {
+ "/fanaticslive/show/{id}/instant-rips": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the recorded price-change events for one listing, oldest first. An event is recorded only when a crawl first observes the listing or observes a changed price -- not one entry per crawl pass -- so a listing whose price has never changed since it was first crawled returns a single entry.",
- "operationId": "datasets-vehicle-listings-price-history",
+ "description": "Returns a Fanatics Live show's current break's digital-instant-rip state: spot claim/rip progress and the currently revealing item, when a rip is actively in progress. current_break is omitted when the show has no active break at request time. Public data sourced from Fanatics Live's own GraphQL API.",
+ "operationId": "fanaticslive-instant-rips",
"parameters": [
{
- "description": "Vehicle listing id, formatted : (e.g. carmax:28187774)",
+ "description": "Fanatics Live show id, the same id GET /fanaticslive/show/{id} takes",
"in": "path",
"name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "186f8cac-d031-436a-b46d-9d9f0b839df2"
}
],
"produces": [
@@ -250212,7 +279799,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.vehicleListingPriceHistoryResponseDoc"
+ "$ref": "#/definitions/fanaticslive.instantRipsResponseDoc"
}
},
"400": {
@@ -250221,8 +279808,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -250232,6 +279819,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -250239,174 +279832,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a vehicle listing's price history",
+ "summary": "Get a Fanatics Live show's current instant-rip state",
"tags": [
- "Datasets"
+ "Fanatics Live"
]
}
},
- "/datasets/vehicle-listings/search": {
+ "/farfetch/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the crawled used-vehicle listings index. source enum: `carmax`, `autotrader`, `carsdotcom`. CarMax's own national inventory is fully enumerable (re-crawled on a standing schedule); Autotrader/Cars.com coverage is a best-effort zip-code sweep, not exhaustive, and their rows approximate city/state from the searched area rather than the seller's exact location. seller_type enum: `retailer`, `dealer`, `private` (not populated for every row -- see the dataset markdown). Sort enum: `relevance`, `recently_updated`, `newly_listed`, `price_asc`, `price_desc`, `mileage_asc`, `mileage_desc`, `year_desc`, `year_asc`.",
- "operationId": "datasets-vehicle-listings-search",
- "parameters": [
- {
- "description": "Full-text query over make, model and trim, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact source marketplace filter: carmax, autotrader, carsdotcom",
- "enum": [
- "carmax",
- "autotrader",
- "carsdotcom"
- ],
- "in": "query",
- "name": "source",
- "type": "string"
- },
- {
- "description": "Exact make filter (e.g. Honda, Toyota), max 128 characters",
- "in": "query",
- "name": "make",
- "type": "string"
- },
- {
- "description": "Exact model filter (e.g. Civic), max 128 characters",
- "in": "query",
- "name": "model",
- "type": "string"
- },
- {
- "description": "Exact trim filter, max 128 characters",
- "in": "query",
- "name": "trim",
- "type": "string"
- },
- {
- "description": "Exact body style filter (e.g. Sedan, SUV), max 128 characters",
- "in": "query",
- "name": "body_style",
- "type": "string"
- },
- {
- "description": "Exact transmission filter, max 128 characters",
- "in": "query",
- "name": "transmission",
- "type": "string"
- },
- {
- "description": "Exact drivetrain filter, max 128 characters",
- "in": "query",
- "name": "drive_type",
- "type": "string"
- },
- {
- "description": "Exact fuel type filter (e.g. Gas, Hybrid, Electric), max 128 characters",
- "in": "query",
- "name": "fuel_type",
- "type": "string"
- },
- {
- "description": "Exact seller type filter: retailer, dealer, private",
- "enum": [
- "retailer",
- "dealer",
- "private"
- ],
- "in": "query",
- "name": "seller_type",
- "type": "string"
- },
- {
- "description": "Exact US state abbreviation filter (e.g. CA), max 8 characters",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Exact VIN filter. Best-effort: not guaranteed on every listing",
- "in": "query",
- "name": "vin",
- "type": "string"
- },
- {
- "description": "Exact crawl run-id filter, max 128 characters",
- "in": "query",
- "name": "run_id",
- "type": "string"
- },
- {
- "description": "Filter for listings currently marked down from a previous price",
- "in": "query",
- "name": "is_price_reduced",
- "type": "boolean"
- },
- {
- "description": "Minimum model year",
- "in": "query",
- "name": "min_year",
- "type": "integer"
- },
- {
- "description": "Maximum model year",
- "in": "query",
- "name": "max_year",
- "type": "integer"
- },
- {
- "description": "Minimum price in US dollars",
- "in": "query",
- "name": "min_price",
- "type": "number"
- },
- {
- "description": "Maximum price in US dollars",
- "in": "query",
- "name": "max_price",
- "type": "number"
- },
- {
- "description": "Maximum odometer mileage",
- "in": "query",
- "name": "max_mileage",
- "type": "integer"
- },
- {
- "description": "Sort enum: relevance, recently_updated, newly_listed, price_asc, price_desc, mileage_asc, mileage_desc, year_desc, year_asc",
- "enum": [
- "relevance",
- "recently_updated",
- "newly_listed",
- "price_asc",
- "price_desc",
- "mileage_asc",
- "mileage_desc",
- "year_desc",
- "year_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
- }
- ],
+ "description": "Returns every department's top-level category directory (name, slug, URL). Each slug is usable directly as the category filter on GET /farfetch/search. Public data sourced live from Farfetch's own listing pages.",
+ "operationId": "farfetch-categories",
"produces": [
"application/json"
],
@@ -250414,23 +279852,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.vehicleListingsSearchResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/farfetch.categoriesResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -250441,131 +279873,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search vehicle listings dataset",
+ "summary": "Farfetch category directory",
"tags": [
- "Datasets"
+ "Farfetch"
]
}
},
- "/datasets/x-users/facets": {
+ "/farfetch/designers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the X users dataset. Facet enum: `is_blue_verified`, `has_bio`, `has_external_url`, `source_tier`.",
- "operationId": "datasets-x-users-facets",
+ "description": "Returns a department's full designer directory (name, slug, URL). Each slug is usable directly as the designer filter on GET /farfetch/search. Public data sourced from Farfetch's own designer-directory pages.",
+ "operationId": "farfetch-designers",
"parameters": [
{
- "description": "Facet enum: is_blue_verified, has_bio, has_external_url, source_tier",
- "enum": [
- "is_blue_verified",
- "has_bio",
- "has_external_url",
- "source_tier"
- ],
+ "description": "Department: women, men, kids",
"in": "query",
- "name": "facet",
+ "name": "gender",
"required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over username, name, bio and location, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact username filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "username",
- "type": "string"
- },
- {
- "description": "Exact filter for which seed tier discovered this account",
- "in": "query",
- "name": "source_tier",
- "type": "string"
- },
- {
- "description": "Filter by the X blue-check verification flag",
- "in": "query",
- "name": "is_blue_verified",
- "type": "boolean"
- },
- {
- "description": "Filter by a non-empty profile bio",
- "in": "query",
- "name": "has_bio",
- "type": "boolean"
- },
- {
- "description": "Filter by a linked external URL",
- "in": "query",
- "name": "has_external_url",
- "type": "boolean"
- },
- {
- "description": "Minimum follower count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
- },
- {
- "description": "Maximum follower count",
- "in": "query",
- "name": "max_followers",
- "type": "integer"
- },
- {
- "description": "Minimum follower-to-following ratio",
- "in": "query",
- "name": "min_ratio",
- "type": "number"
- },
- {
- "description": "Maximum follower-to-following ratio",
- "in": "query",
- "name": "max_ratio",
- "type": "number"
- },
- {
- "description": "Accounts created on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "created_after",
- "type": "string"
- },
- {
- "description": "Accounts created on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "created_before",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "crawled_after",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "crawled_before",
- "type": "string"
- },
- {
- "description": "Sort enum: relevance, followers_desc, followers_asc, crawled_at_desc, crawled_at_asc, created_at_desc, created_at_asc",
- "enum": [
- "relevance",
- "followers_desc",
- "followers_asc",
- "crawled_at_desc",
- "crawled_at_asc",
- "created_at_desc",
- "created_at_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "type": "string",
+ "x-example": "women"
}
],
"produces": [
@@ -250575,7 +279903,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.xUsersFacetResponseDoc"
+ "$ref": "#/definitions/farfetch.designersResponseDoc"
}
},
"400": {
@@ -250584,14 +279912,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -250602,26 +279930,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the X users dataset",
+ "summary": "Farfetch designer directory",
"tags": [
- "Datasets"
+ "Farfetch"
]
}
},
- "/datasets/x-users/items/{username}": {
+ "/farfetch/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one X user record by username from dataset id enum value `x-users`.",
- "operationId": "datasets-x-users-item",
+ "description": "Returns a Farfetch product's full detail: name, brand, color, description, images, category breadcrumb, and every size variant with its own price and availability. Public data sourced from Farfetch's own product pages.",
+ "operationId": "farfetch-product",
"parameters": [
{
- "description": "X username, with or without a leading @, max 128 characters",
- "in": "path",
- "name": "username",
+ "description": "Department: women, men, kids",
+ "in": "query",
+ "name": "gender",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "women"
+ },
+ {
+ "description": "Product URL slug from a search result's id field",
+ "in": "query",
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "gucci-slide-sandals-with-double-g-item-37690086"
}
],
"produces": [
@@ -250631,7 +279968,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.xUserResponseDoc"
+ "$ref": "#/definitions/farfetch.productResponseDoc"
}
},
"400": {
@@ -250646,14 +279983,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -250664,130 +280001,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an X user from the dataset",
+ "summary": "Farfetch product detail",
"tags": [
- "Datasets"
+ "Farfetch"
]
}
},
- "/datasets/x-users/search": {
+ "/farfetch/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches public X (Twitter) user profiles stored in a search index. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `crawled_at_desc`, `crawled_at_asc`, `created_at_desc`, `created_at_asc`.",
- "operationId": "datasets-x-users-search",
+ "description": "Browses Farfetch's luxury multi-brand marketplace by department plus a designer and/or category filter (at least one is required), returning normalized listing summaries (name, brand, price, image, availability) and the upstream page count. Public data sourced from Farfetch's own listing pages.",
+ "operationId": "farfetch-search",
"parameters": [
{
- "description": "Full-text query over username, name, bio and location, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact username filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "username",
- "type": "string"
- },
- {
- "description": "Exact filter for which seed tier discovered this account, e.g. github-users, wikidata, tiktok-creators, journalists",
- "in": "query",
- "name": "source_tier",
- "type": "string"
- },
- {
- "description": "Filter by the X blue-check verification flag",
- "in": "query",
- "name": "is_blue_verified",
- "type": "boolean"
- },
- {
- "description": "Filter by a non-empty profile bio",
- "in": "query",
- "name": "has_bio",
- "type": "boolean"
- },
- {
- "description": "Filter by a linked external URL",
- "in": "query",
- "name": "has_external_url",
- "type": "boolean"
- },
- {
- "description": "Minimum follower count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
- },
- {
- "description": "Maximum follower count",
- "in": "query",
- "name": "max_followers",
- "type": "integer"
- },
- {
- "description": "Minimum follower-to-following ratio (low values surface follow-spam / bot-like accounts)",
- "in": "query",
- "name": "min_ratio",
- "type": "number"
- },
- {
- "description": "Maximum follower-to-following ratio",
- "in": "query",
- "name": "max_ratio",
- "type": "number"
- },
- {
- "description": "Accounts created on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "created_after",
- "type": "string"
- },
- {
- "description": "Accounts created on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "created_before",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
+ "description": "Department: women, men, kids",
"in": "query",
- "name": "crawled_after",
- "type": "string"
+ "name": "gender",
+ "required": true,
+ "type": "string",
+ "x-example": "women"
},
{
- "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "description": "Designer slug from GET /farfetch/designers; designer or category is required",
"in": "query",
- "name": "crawled_before",
- "type": "string"
+ "name": "designer",
+ "type": "string",
+ "x-example": "gucci"
},
{
- "description": "Sort enum: relevance, followers_desc, followers_asc, crawled_at_desc, crawled_at_asc, created_at_desc, created_at_asc",
- "enum": [
- "relevance",
- "followers_desc",
- "followers_asc",
- "crawled_at_desc",
- "crawled_at_asc",
- "created_at_desc",
- "created_at_asc"
- ],
+ "description": "Category slug from GET /farfetch/categories; designer or category is required",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "category",
+ "type": "string",
+ "x-example": "shoes-1"
},
{
- "description": "Page number, defaults to 1",
+ "description": "1-based page number; defaults to 1",
"in": "query",
"name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
- "in": "query",
- "name": "page_size",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -250797,7 +280052,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.xUsersSearchResponseDoc"
+ "$ref": "#/definitions/farfetch.searchResponseDoc"
}
},
"400": {
@@ -250806,14 +280061,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -250824,159 +280079,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the X users dataset",
+ "summary": "Search Farfetch listings",
"tags": [
- "Datasets"
+ "Farfetch"
]
}
},
- "/datasets/youtube-creators/facets": {
+ "/fashionnova/collections": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns terms aggregation counts for the YouTube creators dataset. Facet enum: `region`, `discovery_source`.",
- "operationId": "datasets-youtube-creators-facets",
+ "description": "Returns normalized collections from Fashion Nova (https://www.fashionnova.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
+ "operationId": "fashionnova-collections",
"parameters": [
{
- "description": "Facet enum: region, discovery_source",
- "enum": [
- "region",
- "discovery_source"
- ],
- "in": "query",
- "name": "facet",
- "required": true,
- "type": "string"
- },
- {
- "description": "Full-text query over channel_name and bio, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact channel id filter, max 128 characters",
- "in": "query",
- "name": "channel_id",
- "type": "string"
- },
- {
- "description": "Exact channel region/country filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "region",
- "type": "string"
- },
- {
- "description": "Exact filter for how the channel was discovered, max 128 characters",
- "in": "query",
- "name": "discovery_source",
- "type": "string"
- },
- {
- "description": "Filter by a non-empty About bio",
- "in": "query",
- "name": "has_bio",
- "type": "boolean"
- },
- {
- "description": "Filter by at least one linked external URL",
- "in": "query",
- "name": "has_links",
- "type": "boolean"
- },
- {
- "description": "Filter by whether the channel exposes a public subscriber count",
- "in": "query",
- "name": "followers_count_available",
- "type": "boolean"
- },
- {
- "description": "Filter by whether the channel has a known uploaded-video count",
- "in": "query",
- "name": "videos_count_available",
- "type": "boolean"
- },
- {
- "description": "Filter by whether the channel has a known total view count",
- "in": "query",
- "name": "views_count_available",
- "type": "boolean"
- },
- {
- "description": "Minimum subscriber count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
- },
- {
- "description": "Maximum subscriber count",
- "in": "query",
- "name": "max_followers",
- "type": "integer"
- },
- {
- "description": "Minimum uploaded-video count",
- "in": "query",
- "name": "min_videos",
- "type": "integer"
- },
- {
- "description": "Maximum uploaded-video count",
- "in": "query",
- "name": "max_videos",
- "type": "integer"
- },
- {
- "description": "Minimum total view count",
- "in": "query",
- "name": "min_views",
- "type": "integer"
- },
- {
- "description": "Maximum total view count",
- "in": "query",
- "name": "max_views",
- "type": "integer"
- },
- {
- "description": "Channels created on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "joined_after",
- "type": "string"
- },
- {
- "description": "Channels created on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "joined_before",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "hydrated_after",
- "type": "string"
- },
- {
- "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "hydrated_before",
- "type": "string"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Sort enum: relevance, followers_desc, followers_asc, views_desc, videos_desc, hydrated_at_desc, hydrated_at_asc",
- "enum": [
- "relevance",
- "followers_desc",
- "followers_asc",
- "views_desc",
- "videos_desc",
- "hydrated_at_desc",
- "hydrated_at_asc"
- ],
+ "description": "Maximum collections, defaults to 50 and supports up to 250",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -250986,7 +280115,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.youtubeCreatorsFacetResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
}
},
"400": {
@@ -251001,8 +280130,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -251013,26 +280142,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Facet the YouTube creators dataset",
+ "summary": "List Fashion Nova collections",
"tags": [
- "Datasets"
+ "Fashion Nova"
]
}
},
- "/datasets/youtube-creators/items/{channel_id}": {
+ "/fashionnova/collections/{handle}/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one YouTube channel record by channel id from dataset id enum value `youtube-creators`.",
- "operationId": "datasets-youtube-creators-item",
+ "description": "Returns normalized products from one Fashion Nova (https://www.fashionnova.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
+ "operationId": "fashionnova-collection-products",
"parameters": [
{
- "description": "YouTube channel id, e.g. UCxxxxxxxxxxxxxxxxxxxxxxxx",
+ "description": "Collection handle",
"in": "path",
- "name": "channel_id",
+ "name": "handle",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "collection-handle"
+ },
+ {
+ "description": "1-based page, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Maximum products, defaults to 50 and supports up to 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -251042,7 +280186,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.youtubeCreatorResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
}
},
"400": {
@@ -251063,8 +280207,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -251075,160 +280219,159 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a YouTube creator from the dataset",
+ "summary": "List Fashion Nova collection products",
"tags": [
- "Datasets"
+ "Fashion Nova"
]
}
},
- "/datasets/youtube-creators/search": {
+ "/fashionnova/pages": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches public YouTube channel profiles stored in a search index — subscriber, video and view counts, region, bio and links, discovered via Common Crawl and Wikidata and hydrated from each channel's public About page. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `views_desc`, `videos_desc`, `hydrated_at_desc`, `hydrated_at_asc`. Some channels hide their subscriber, video, or view count; the `_available` flags on each item distinguish a hidden count (stored as `0`, `*_available: false`) from a genuine `0`.",
- "operationId": "datasets-youtube-creators-search",
+ "description": "Returns normalized static pages from Fashion Nova (https://www.fashionnova.com). The storefront URL is fixed server-side.",
+ "operationId": "fashionnova-pages",
"parameters": [
{
- "description": "Full-text query over channel_name and bio, max 256 characters",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Exact channel id filter (e.g. UCxxxxxxxxxxxxxxxxxxxxxxxx), max 128 characters",
- "in": "query",
- "name": "channel_id",
- "type": "string"
- },
- {
- "description": "Exact channel region/country filter (case-insensitive), max 128 characters",
- "in": "query",
- "name": "region",
- "type": "string"
- },
- {
- "description": "Exact filter for how the channel was discovered (e.g. commoncrawl, wikidata), max 128 characters",
- "in": "query",
- "name": "discovery_source",
- "type": "string"
- },
- {
- "description": "Filter by a non-empty About bio",
- "in": "query",
- "name": "has_bio",
- "type": "boolean"
- },
- {
- "description": "Filter by at least one linked external URL",
- "in": "query",
- "name": "has_links",
- "type": "boolean"
- },
- {
- "description": "Filter by whether the channel exposes a public subscriber count",
- "in": "query",
- "name": "followers_count_available",
- "type": "boolean"
- },
- {
- "description": "Filter by whether the channel has a known uploaded-video count",
- "in": "query",
- "name": "videos_count_available",
- "type": "boolean"
- },
- {
- "description": "Filter by whether the channel has a known total view count",
- "in": "query",
- "name": "views_count_available",
- "type": "boolean"
- },
- {
- "description": "Minimum subscriber count",
- "in": "query",
- "name": "min_followers",
- "type": "integer"
- },
- {
- "description": "Maximum subscriber count",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "max_followers",
- "type": "integer"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Minimum uploaded-video count",
+ "description": "Maximum static pages, defaults to 50 and supports up to 250",
"in": "query",
- "name": "min_videos",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
+ }
},
- {
- "description": "Maximum uploaded-video count",
- "in": "query",
- "name": "max_videos",
- "type": "integer"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Minimum total view count",
- "in": "query",
- "name": "min_views",
- "type": "integer"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Maximum total view count",
- "in": "query",
- "name": "max_views",
- "type": "integer"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Fashion Nova static pages",
+ "tags": [
+ "Fashion Nova"
+ ]
+ }
+ },
+ "/fashionnova/pages/{handle}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized static page detail for one Fashion Nova (https://www.fashionnova.com) page handle. The storefront URL is fixed server-side.",
+ "operationId": "fashionnova-page",
+ "parameters": [
{
- "description": "Channels created on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "joined_after",
- "type": "string"
+ "description": "Page handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
+ "type": "string",
+ "x-example": "page-handle"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/shopifybrands.pageResponseDoc"
+ }
},
- {
- "description": "Channels created on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "joined_before",
- "type": "string"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Records last refreshed on or after this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "hydrated_after",
- "type": "string"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Records last refreshed on or before this date (RFC3339 or YYYY-MM-DD)",
- "in": "query",
- "name": "hydrated_before",
- "type": "string"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Sort enum: relevance, followers_desc, followers_asc, views_desc, videos_desc, hydrated_at_desc, hydrated_at_asc",
- "enum": [
- "relevance",
- "followers_desc",
- "followers_asc",
- "views_desc",
- "videos_desc",
- "hydrated_at_desc",
- "hydrated_at_asc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Fashion Nova static page",
+ "tags": [
+ "Fashion Nova"
+ ]
+ }
+ },
+ "/fashionnova/products": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized products from Fashion Nova's (https://www.fashionnova.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
+ "operationId": "fashionnova-products",
+ "parameters": [
{
- "description": "Page number, defaults to 1",
+ "description": "1-based page, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000",
+ "description": "Maximum products, defaults to 50 and supports up to 250",
"in": "query",
- "name": "page_size",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -251238,7 +280381,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/datasets.youtubeCreatorsSearchResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productsResponseDoc"
}
},
"400": {
@@ -251253,8 +280396,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -251265,24 +280408,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the YouTube creators dataset",
+ "summary": "List Fashion Nova products",
"tags": [
- "Datasets"
+ "Fashion Nova"
]
}
},
- "/dawn/article": {
+ "/fashionnova/products/{handle}": {
"get": {
- "description": "Returns public Dawn article metadata and body paragraphs from a canonical article URL.",
- "operationId": "dawn-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized product detail for one Fashion Nova (https://www.fashionnova.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
+ "operationId": "fashionnova-product",
"parameters": [
{
- "description": "Canonical Dawn article URL",
- "in": "query",
- "name": "url",
+ "description": "Product handle",
+ "in": "path",
+ "name": "handle",
"required": true,
"type": "string",
- "x-example": "https://www.dawn.com/news/2032361/pm-shehbaz-stresses-islamabad-mou-implementation-in-meeting-with-pezeshkian"
+ "x-example": "product-handle"
}
],
"produces": [
@@ -251292,7 +280438,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productResponseDoc"
}
},
"400": {
@@ -251307,6 +280453,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -251319,24 +280471,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Dawn article content",
+ "summary": "Get a Fashion Nova product",
"tags": [
- "Dawn"
+ "Fashion Nova"
]
}
},
- "/dawn/author": {
+ "/fashionnova/products/{handle}/recommendations": {
"get": {
- "description": "Returns one Dawn byline's public profile (name and biography, when Dawn publishes one) and their recent articles from a canonical author URL.",
- "operationId": "dawn-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized recommended products for one Fashion Nova (https://www.fashionnova.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
+ "operationId": "fashionnova-product-recommendations",
"parameters": [
{
- "description": "Canonical www.dawn.com/authors// URL",
- "in": "query",
- "name": "url",
+ "description": "Product handle",
+ "in": "path",
+ "name": "handle",
"required": true,
"type": "string",
- "x-example": "https://www.dawn.com/authors/675/khurram-husain"
+ "x-example": "product-handle"
+ },
+ {
+ "description": "Maximum products, defaults to 10 and supports up to 20",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Recommendation intent. Allowed values: related, complementary",
+ "enum": [
+ "related",
+ "complementary"
+ ],
+ "in": "query",
+ "name": "intent",
+ "type": "string",
+ "x-example": "related"
}
],
"produces": [
@@ -251346,7 +280519,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.dawnAuthorResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
}
},
"400": {
@@ -251361,6 +280534,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -251373,42 +280552,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Dawn author profile",
+ "summary": "List Fashion Nova product recommendations",
"tags": [
- "Dawn"
+ "Fashion Nova"
]
}
},
- "/dawn/headlines": {
+ "/fashionnova/search/suggest": {
"get": {
- "description": "Returns fresh headlines from one public Dawn section.",
- "operationId": "dawn-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns products, collections, and query suggestions from Fashion Nova's (https://www.fashionnova.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
+ "operationId": "fashionnova-search-suggest",
"parameters": [
{
- "description": "Dawn section slug",
- "enum": [
- "pakistan",
- "pakistan-balochistan",
- "pakistan-ict",
- "pakistan-kp-fata",
- "pakistan-punjab",
- "pakistan-sindh",
- "world",
- "world-south-asia",
- "business",
- "business-finance",
- "sport",
- "sport-cricket",
- "opinion",
- "tech",
- "newspaper",
- "magazines",
- "prism"
- ],
+ "description": "Search query",
"in": "query",
- "name": "section",
+ "name": "q",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "wool"
+ },
+ {
+ "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
+ "in": "query",
+ "name": "types",
+ "type": "string",
+ "x-example": "product,collection,query"
+ },
+ {
+ "description": "Maximum results per type, defaults to 10 and supports up to 20",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -251418,7 +280596,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
}
},
"400": {
@@ -251427,6 +280605,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -251439,16 +280623,44 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Dawn section headlines",
+ "summary": "Get Fashion Nova search suggestions",
"tags": [
- "Dawn"
+ "Fashion Nova"
]
}
},
- "/dawn/news": {
+ "/fashionnova/sitemap/urls": {
"get": {
- "description": "Returns fresh Dawn (Pakistan) stories from the public RSS feed.",
- "operationId": "dawn-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns capped URL entries from Fashion Nova's (https://www.fashionnova.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
+ "operationId": "fashionnova-sitemap-urls",
+ "parameters": [
+ {
+ "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
+ "enum": [
+ "all",
+ "products",
+ "collections",
+ "pages",
+ "blogs",
+ "agentic_discovery",
+ "other"
+ ],
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "products"
+ },
+ {
+ "description": "Maximum URL entries, defaults to 50 and supports up to 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
+ }
+ ],
"produces": [
"application/json"
],
@@ -251456,7 +280668,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -251471,16 +280695,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Dawn top stories",
+ "summary": "List Fashion Nova sitemap URLs",
"tags": [
- "Dawn"
+ "Fashion Nova"
]
}
},
- "/dawn/sections": {
+ "/fashionnova/sitemaps": {
"get": {
- "description": "Returns the complete public Dawn section inventory (Pakistan provinces, World, Business, Sport, Opinion, Technology, Newspaper, Magazines, and Prism) accepted by /dawn/headlines.",
- "operationId": "dawn-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns child sitemap URLs from Fashion Nova's (https://www.fashionnova.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
+ "operationId": "fashionnova-sitemaps",
"produces": [
"application/json"
],
@@ -251488,7 +280715,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -251497,26 +280742,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Dawn sections",
+ "summary": "List Fashion Nova sitemaps",
"tags": [
- "Dawn"
+ "Fashion Nova"
]
}
},
- "/deadline/article": {
+ "/fashionnova/store": {
"get": {
- "description": "Returns public Deadline article metadata (title, author(s), published/updated dates, section, lead image) and body paragraphs from a canonical article URL.",
- "operationId": "deadline-article",
- "parameters": [
- {
- "description": "Canonical Deadline article URL",
- "in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://deadline.com/2026/09/example-story-1237111140/"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns normalized storefront metadata for Fashion Nova (https://www.fashionnova.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
+ "operationId": "fashionnova-store",
"produces": [
"application/json"
],
@@ -251524,7 +280762,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/shopifybrands.storeResponseDoc"
}
},
"400": {
@@ -251533,8 +280771,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -251551,31 +280789,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Deadline article content",
+ "summary": "Get Fashion Nova store metadata",
"tags": [
- "Deadline"
+ "Fashion Nova"
]
}
},
- "/deadline/author": {
+ "/fashionphile/collections": {
"get": {
- "description": "Returns one Deadline staff writer or contributor's public profile: name, job title, headshot, biography, social/contact links, and one page of their recent articles.",
- "operationId": "deadline-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized collections from Fashionphile (https://www.fashionphile.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
+ "operationId": "fashionphile-collections",
"parameters": [
{
- "description": "Canonical deadline.com/author/ URL",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://deadline.com/author/andreas-wiseman/"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "1-based page of recent articles to return; defaults to 1",
+ "description": "Maximum collections, defaults to 50 and supports up to 250",
"in": "query",
- "name": "page",
+ "name": "limit",
"type": "integer",
- "x-example": 1
+ "x-example": 50
}
],
"produces": [
@@ -251585,7 +280825,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.deadlineAuthorResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
}
},
"400": {
@@ -251594,8 +280834,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -251612,73 +280852,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Deadline author profile",
+ "summary": "List Fashionphile collections",
"tags": [
- "Deadline"
+ "Fashionphile"
]
}
},
- "/deadline/headlines": {
+ "/fashionphile/collections/{handle}/products": {
"get": {
- "description": "Returns fresh headlines from one public Deadline section or vertical feed.",
- "operationId": "deadline-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized products from one Fashionphile (https://www.fashionphile.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
+ "operationId": "fashionphile-collection-products",
"parameters": [
{
- "description": "Deadline section slug",
- "enum": [
- "acquisitions",
- "agencies",
- "album",
- "below-the-line",
- "books",
- "cancellations-renewals",
- "casting",
- "commentary",
- "culture",
- "documentary",
- "executives",
- "festivals",
- "late-night-tv",
- "legal",
- "news",
- "obituaries",
- "podcast",
- "politics",
- "predictions",
- "primetime-pilot-panic",
- "ratings",
- "recaps",
- "red-carpet-premieres",
- "reviews",
- "sports",
- "touring",
- "trailers",
- "video-games",
- "awards",
- "awards-news",
- "box-office",
- "business",
- "cover-stories",
- "crew-call",
- "dialogue",
- "feature",
- "film",
- "flash-mob",
- "hammond",
- "hero-nation",
- "international",
- "look-back-look-ahead",
- "music",
- "resident-advisor",
- "rough-cuts",
- "theater",
- "tv",
- "video"
- ],
- "in": "query",
- "name": "section",
+ "description": "Collection handle",
+ "in": "path",
+ "name": "handle",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "collection-handle"
+ },
+ {
+ "description": "1-based page, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Maximum products, defaults to 50 and supports up to 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -251688,7 +280896,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
}
},
"400": {
@@ -251697,6 +280905,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -251709,16 +280929,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Deadline section headlines",
+ "summary": "List Fashionphile collection products",
"tags": [
- "Deadline"
+ "Fashionphile"
]
}
},
- "/deadline/news": {
+ "/fashionphile/pages": {
"get": {
- "description": "Returns fresh Deadline Hollywood Entertainment top stories from its public RSS feed.",
- "operationId": "deadline-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized static pages from Fashionphile (https://www.fashionphile.com). The storefront URL is fixed server-side.",
+ "operationId": "fashionphile-pages",
+ "parameters": [
+ {
+ "description": "1-based page, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Maximum static pages, defaults to 50 and supports up to 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
+ }
+ ],
"produces": [
"application/json"
],
@@ -251726,7 +280965,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -251747,16 +280992,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Deadline top stories",
+ "summary": "List Fashionphile static pages",
"tags": [
- "Deadline"
+ "Fashionphile"
]
}
},
- "/deadline/sections": {
+ "/fashionphile/pages/{handle}": {
"get": {
- "description": "Returns the complete public section inventory accepted by /api/v1/deadline/headlines (both Deadline's editorial categories and its verticals).",
- "operationId": "deadline-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized static page detail for one Fashionphile (https://www.fashionphile.com) page handle. The storefront URL is fixed server-side.",
+ "operationId": "fashionphile-page",
+ "parameters": [
+ {
+ "description": "Page handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
+ "type": "string",
+ "x-example": "page-handle"
+ }
+ ],
"produces": [
"application/json"
],
@@ -251764,7 +281022,31 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.pageResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -251773,51 +281055,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Deadline sections",
+ "summary": "Get a Fashionphile static page",
"tags": [
- "Deadline"
+ "Fashionphile"
]
}
},
- "/deliveroo/fulfillment-times": {
+ "/fashionphile/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the exact same \"Choose a day\" / \"Choose a time\" scheduled-ordering data the real site's own order-ahead picker shows for a location, for both delivery and pickup: an ASAP option plus every day currently open for a scheduled order, each with its real time slots and UNIX timestamps.",
- "operationId": "deliveroo-fulfillment-times",
+ "description": "Returns normalized products from Fashionphile's (https://www.fashionphile.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
+ "operationId": "fashionphile-products",
"parameters": [
{
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 51.4975
- },
- {
- "description": "Search center longitude",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -0.1357
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Deliveroo national market to search (default uk)",
- "enum": [
- "uk",
- "ie",
- "fr",
- "it",
- "be",
- "ae",
- "kw"
- ],
+ "description": "Maximum products, defaults to 50 and supports up to 250",
"in": "query",
- "name": "market",
- "type": "string",
- "x-example": "uk"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -251827,7 +281091,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/deliveroo.fulfillmentTimesResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productsResponseDoc"
}
},
"400": {
@@ -251836,6 +281100,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -251848,43 +281118,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Deliveroo's live delivery and pickup scheduling windows for a location",
+ "summary": "List Fashionphile products",
"tags": [
- "Deliveroo"
+ "Fashionphile"
]
}
},
- "/deliveroo/restaurant": {
+ "/fashionphile/products/{handle}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Deliveroo partner's detail by uname -- restaurant, grocery, or shopping store alike, distinguished by branch_type: name, address, currency, branch/fulfillment type, rating, review count, a hero image, and whether it currently accepts orders.",
- "operationId": "deliveroo-restaurant",
+ "description": "Returns normalized product detail for one Fashionphile (https://www.fashionphile.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
+ "operationId": "fashionphile-product",
"parameters": [
{
- "description": "Restaurant slug, from a search response's uname field",
- "in": "query",
- "name": "uname",
+ "description": "Product handle",
+ "in": "path",
+ "name": "handle",
"required": true,
"type": "string",
- "x-example": "nandos-wilton-road"
- },
- {
- "description": "Deliveroo national market the uname was found in (default uk)",
- "enum": [
- "uk",
- "ie",
- "fr",
- "it",
- "be",
- "ae",
- "kw"
- ],
- "in": "query",
- "name": "market",
- "type": "string",
- "x-example": "uk"
+ "x-example": "product-handle"
}
],
"produces": [
@@ -251894,7 +281148,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/deliveroo.restaurantResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productResponseDoc"
}
},
"400": {
@@ -251909,6 +281163,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -251921,43 +281181,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Deliveroo restaurant, grocery, or shopping partner's detail",
+ "summary": "Get a Fashionphile product",
"tags": [
- "Deliveroo"
+ "Fashionphile"
]
}
},
- "/deliveroo/restaurant/menu": {
+ "/fashionphile/products/{handle}/recommendations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one partner's full menu or catalog grouped into categories -- restaurant menus, grocery aisles, and shopping-store catalogs all use this same endpoint (see /deliveroo/search's collection parameter). Every item carries a name, description, product-meta text when the upstream provides it (calorie counts on restaurant items, per-unit pricing like \"380g · £15.79/kg\" on grocery/shopping items), price, availability, and its resolved customization options (e.g. \"Choose your meal\", \"Add ingredients?\") with each option's own price and required/multi-select bounds.",
- "operationId": "deliveroo-restaurant-menu",
+ "description": "Returns normalized recommended products for one Fashionphile (https://www.fashionphile.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
+ "operationId": "fashionphile-product-recommendations",
"parameters": [
{
- "description": "Restaurant slug, from a search response's uname field",
- "in": "query",
- "name": "uname",
+ "description": "Product handle",
+ "in": "path",
+ "name": "handle",
"required": true,
"type": "string",
- "x-example": "nandos-wilton-road"
+ "x-example": "product-handle"
},
{
- "description": "Deliveroo national market the uname was found in (default uk)",
+ "description": "Maximum products, defaults to 10 and supports up to 20",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Recommendation intent. Allowed values: related, complementary",
"enum": [
- "uk",
- "ie",
- "fr",
- "it",
- "be",
- "ae",
- "kw"
+ "related",
+ "complementary"
],
"in": "query",
- "name": "market",
+ "name": "intent",
"type": "string",
- "x-example": "uk"
+ "x-example": "related"
}
],
"produces": [
@@ -251967,7 +281229,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/deliveroo.menuResponseDoc"
+ "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
}
},
"400": {
@@ -251982,6 +281244,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -251994,168 +281262,88 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Deliveroo restaurant, grocery, or shopping partner's priced catalog",
+ "summary": "List Fashionphile product recommendations",
"tags": [
- "Deliveroo"
+ "Fashionphile"
]
}
},
- "/deliveroo/search": {
+ "/fashionphile/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the restaurants (or, with collection set, grocery/shopping stores) Deliveroo's own catalog serves for a latitude/longitude in the given market -- the location's entire feed, not a curated subset (confirmed live: up to 2,700+ results for a single coordinate). Each result carries its uname (the value the restaurant and menu endpoints take), name, image, branch_type, and, when available, rating, delivery time, and distance. Optional collection, cuisine, dietary, dish, min_rating, max_delivery_minutes, max_delivery_fee_pounds, has_offer, deliveroos_choice, and sort parameters narrow and order the same feed -- call /deliveroo/search/filters for the current, complete, location-scoped list of every valid cuisine/dietary/dish value with live result counts. A location with no coverage returns an empty list rather than an error.",
- "operationId": "deliveroo-search",
+ "description": "Returns normalized, ranked products from Fashionphile's (https://www.fashionphile.com) own full-text and faceted product search, including condition grade, discount percentage, and other filter attributes not available from the classic catalog JSON endpoints in this family. The storefront URL is fixed server-side. Omitting `q` browses the full catalog subject to any condition/vendor/availability filters and the chosen sort. By default only in-stock listings are searched, matching the storefront; `availability=sold` searches the sold archive instead. `total_items` is the exact number of products matching the query and all filters.",
+ "operationId": "fashionphile-search",
"parameters": [
{
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 51.4975
- },
- {
- "description": "Search center longitude",
+ "description": "Search query text",
"in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -0.1357
+ "name": "q",
+ "type": "string",
+ "x-example": "chanel"
},
{
- "description": "Deliveroo national market to search (default uk)",
+ "description": "Filter by condition grade. Allowed values: New, Excellent, Giftable, Shows Wear, Worn, Flawed, Fair",
"enum": [
- "uk",
- "ie",
- "fr",
- "it",
- "be",
- "ae",
- "kw"
+ "New",
+ "Excellent",
+ "Giftable",
+ "Shows Wear",
+ "Worn",
+ "Flawed",
+ "Fair"
],
"in": "query",
- "name": "market",
+ "name": "condition",
"type": "string",
- "x-example": "uk"
- },
- {
- "description": "Restaurants to return, clamped to 100 (default 20)",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "x-example": "Excellent"
},
{
- "description": "Optional, passed straight through to the upstream. Selects the Deliveroo partner vertical: omit for restaurants/takeaways (default), grocery for supermarkets and convenience stores, shopping for non-food retail -- both confirmed live; other values may exist and are not rejected. Every result uses the same uname contract for /deliveroo/restaurant and /deliveroo/restaurant/menu.",
+ "description": "Which listings to search. Allowed values: available (in-stock only, default), sold (sold archive only), all",
+ "enum": [
+ "available",
+ "sold",
+ "all"
+ ],
"in": "query",
- "name": "collection",
+ "name": "availability",
"type": "string",
- "x-example": "grocery"
- },
- {
- "collectionFormat": "multi",
- "description": "Optional, repeatable Deliveroo cuisine filter, e.g. cuisine=american&cuisine=asian. Passed straight through to the upstream; call /deliveroo/search/filters for the current, complete, location-scoped list of valid values. An unrecognized value is silently ignored by the upstream, not rejected.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "cuisine",
- "type": "array",
- "x-example": "american"
- },
- {
- "collectionFormat": "multi",
- "description": "Optional, repeatable Deliveroo dietary filter passed straight through to the upstream, e.g. dietary=vegan. Call /deliveroo/search/filters for the current, complete list of valid values. An unrecognized value is silently ignored by the upstream, not rejected.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "dietary",
- "type": "array",
- "x-example": "vegan"
- },
- {
- "collectionFormat": "multi",
- "description": "Optional, repeatable Deliveroo dish-level filter passed straight through to the upstream, e.g. dish=pizza&dish=sushi. Call /deliveroo/search/filters for the current, complete, location-scoped list of valid values. An unrecognized value is silently ignored by the upstream, not rejected.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "dish",
- "type": "array",
- "x-example": "pizza"
+ "x-example": "available"
},
{
- "description": "When true, only returns results Deliveroo itself marks top-rated (its own 4.5+ threshold). Equivalent to min_rating=4.5; ignored if min_rating is also set.",
+ "description": "Filter by exact designer/vendor name, e.g. Chanel",
"in": "query",
- "name": "top_rated",
- "type": "boolean",
- "x-example": true
+ "name": "vendor",
+ "type": "string",
+ "x-example": "Chanel"
},
{
- "description": "Minimum star rating filter",
+ "description": "Sort order. Allowed values: relevance, newest, price_asc, price_desc",
"enum": [
- 3.5,
- 4,
- 4.5
+ "relevance",
+ "newest",
+ "price_asc",
+ "price_desc"
],
"in": "query",
- "name": "min_rating",
- "type": "number",
- "x-example": 4
+ "name": "sort",
+ "type": "string",
+ "x-example": "relevance"
},
{
- "description": "Maximum estimated delivery time in minutes",
- "enum": [
- 20,
- 30,
- 45
- ],
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "max_delivery_minutes",
+ "name": "page",
"type": "integer",
- "x-example": 30
+ "x-example": 1
},
{
- "description": "Maximum delivery fee in GBP",
- "enum": [
- 1,
- 2,
- 3
- ],
+ "description": "Maximum products, defaults to 20 and supports up to 50",
"in": "query",
- "name": "max_delivery_fee_pounds",
+ "name": "limit",
"type": "integer",
- "x-example": 2
- },
- {
- "description": "When true, only returns results currently running an offer/promotion",
- "in": "query",
- "name": "has_offer",
- "type": "boolean",
- "x-example": true
- },
- {
- "description": "Result ordering",
- "enum": [
- "recommended",
- "distance",
- "time",
- "rating"
- ],
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "distance"
- },
- {
- "description": "When true, only returns results in Deliveroo's own Deliveroo's Choice curated collection. Combines with collection (e.g. collection=grocery&deliveroos_choice=true narrows to Deliveroo's Choice within the grocery vertical) rather than conflicting with it.",
- "in": "query",
- "name": "deliveroos_choice",
- "type": "boolean",
- "x-example": true
+ "x-example": 20
}
],
"produces": [
@@ -252165,7 +281353,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/deliveroo.searchResponseDoc"
+ "$ref": "#/definitions/shopifybrands.searchResponseDoc"
}
},
"400": {
@@ -252174,6 +281362,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -252186,51 +281380,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Deliveroo restaurants, groceries, or shopping stores near a location",
+ "summary": "Search Fashionphile products",
"tags": [
- "Deliveroo"
+ "Fashionphile"
]
}
},
- "/deliveroo/search/filters": {
+ "/fashionphile/search/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the exact same sort and filter catalog -- every cuisine, dietary tag, dish, delivery-time tier, delivery-fee tier, star-rating tier, and offer flag, each with a live result count for this location -- that the real search page's own filter dropdowns are populated from. Every option's query_param/query_value pair is the literal query string /deliveroo/search accepts for that filter.",
- "operationId": "deliveroo-search-filters",
+ "description": "Returns products, collections, and query suggestions from Fashionphile's (https://www.fashionphile.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
+ "operationId": "fashionphile-search-suggest",
"parameters": [
{
- "description": "Search center latitude",
+ "description": "Search query",
"in": "query",
- "name": "latitude",
+ "name": "q",
"required": true,
- "type": "number",
- "x-example": 51.4975
+ "type": "string",
+ "x-example": "wool"
},
{
- "description": "Search center longitude",
+ "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
"in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -0.1357
+ "name": "types",
+ "type": "string",
+ "x-example": "product,collection,query"
},
{
- "description": "Deliveroo national market to search (default uk)",
- "enum": [
- "uk",
- "ie",
- "fr",
- "it",
- "be",
- "ae",
- "kw"
- ],
+ "description": "Maximum results per type, defaults to 10 and supports up to 20",
"in": "query",
- "name": "market",
- "type": "string",
- "x-example": "uk"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -252240,7 +281424,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/deliveroo.filtersResponseDoc"
+ "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
}
},
"400": {
@@ -252249,43 +281433,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Deliveroo's live search filter and sort catalog for a location",
- "tags": [
- "Deliveroo"
- ]
- }
- },
- "/depop/brands": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Depop's full brand directory (id, name, slug), not just brands with active listings for a given search -- resolves the search endpoint's otherwise-opaque brand_ids filter to human-readable names. Public data sourced from Depop's own brand-directory API.",
- "operationId": "depop-brands",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/depop.brandsResponseDoc"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -252302,62 +281451,42 @@
"ApiKeyAuth": []
}
],
- "summary": "Depop's full brand directory",
- "tags": [
- "Depop"
- ]
- }
- },
- "/depop/categories": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Depop's full department, category, and subcategory taxonomy -- every value usable with /depop/search's and /depop/shop/{username}'s category/subcategory filters. Tries a live refresh from Depop's own category-filter API first and falls back to a static snapshot on any failure, so this never errors.",
- "operationId": "depop-categories",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/depop.categoriesResponseDoc"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Depop's category taxonomy",
+ "summary": "Get Fashionphile search suggestions",
"tags": [
- "Depop"
+ "Fashionphile"
]
}
},
- "/depop/item/{slug}": {
+ "/fashionphile/sitemap/urls": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Depop item-detail page: description, all photos, price, condition, brand, size, seller info, and a \"similar items\" carousel when the page has one. Public data sourced from Depop's own item pages.",
- "operationId": "depop-item",
+ "description": "Returns capped URL entries from Fashionphile's (https://www.fashionphile.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
+ "operationId": "fashionphile-sitemap-urls",
"parameters": [
{
- "description": "Depop item URL slug, e.g. from a search result's id field",
- "in": "path",
- "name": "slug",
- "required": true,
+ "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
+ "enum": [
+ "all",
+ "products",
+ "collections",
+ "pages",
+ "blogs",
+ "agentic_discovery",
+ "other"
+ ],
+ "in": "query",
+ "name": "type",
"type": "string",
- "x-example": "ag_boutique-vintage-mid-rise-bootcut-levi-2476"
+ "x-example": "products"
+ },
+ {
+ "description": "Maximum URL entries, defaults to 50 and supports up to 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -252367,7 +281496,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/depop.ItemDetailResponse"
+ "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
}
},
"400": {
@@ -252376,14 +281505,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -252400,42 +281523,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Depop item detail",
+ "summary": "List Fashionphile sitemap URLs",
"tags": [
- "Depop"
+ "Fashionphile"
]
}
},
- "/depop/item/{slug}/similar": {
+ "/fashionphile/sitemaps": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns items similar to a given Depop listing, via Depop's dedicated similar-items API -- richer and paginated (up to 150 per page) compared to the small, non-paginated \"similar items\" carousel already included in item detail. Public data sourced from Depop's own similar-items API.",
- "operationId": "depop-item-similar",
- "parameters": [
- {
- "description": "Depop item URL slug, e.g. from a search result's id field",
- "in": "path",
- "name": "slug",
- "required": true,
- "type": "string",
- "x-example": "ag_boutique-vintage-mid-rise-bootcut-levi-2476"
- },
- {
- "description": "Max results per page, 1-150",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 24
- },
- {
- "description": "Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.",
- "in": "query",
- "name": "after",
- "type": "string"
- }
- ],
+ "description": "Returns child sitemap URLs from Fashionphile's (https://www.fashionphile.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
+ "operationId": "fashionphile-sitemaps",
"produces": [
"application/json"
],
@@ -252443,7 +281543,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/depop.similarItemsResponseDoc"
+ "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
}
},
"400": {
@@ -252452,14 +281552,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -252476,117 +281570,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Depop items similar to a listing",
+ "summary": "List Fashionphile sitemaps",
"tags": [
- "Depop"
+ "Fashionphile"
]
}
},
- "/depop/search": {
+ "/fashionphile/store": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Depop's resale-fashion marketplace by free-text keyword, with optional price, condition, colour, category, subcategory, gender, kids-department, brand, discount, and sort filters, returning normalized listing summaries (title, price, brand, condition, like count, photos, sizes), a pagination cursor, and the total matching count. Public data sourced from Depop's own search API.",
- "operationId": "depop-search",
- "parameters": [
- {
- "description": "Free-text keyword search",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "nike jacket"
- },
- {
- "description": "Minimum listing price in USD",
- "in": "query",
- "name": "price_min",
- "type": "number",
- "x-example": 15
- },
- {
- "description": "Maximum listing price in USD",
- "in": "query",
- "name": "price_max",
- "type": "number",
- "x-example": 50
- },
- {
- "description": "Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair",
- "in": "query",
- "name": "condition",
- "type": "string",
- "x-example": "used_excellent,used_good"
- },
- {
- "description": "Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi",
- "in": "query",
- "name": "colours",
- "type": "string",
- "x-example": "black,white"
- },
- {
- "description": "Restrict results to discounted listings",
- "in": "query",
- "name": "on_sale",
- "type": "boolean"
- },
- {
- "description": "Sort order: relevance, price_low_to_high, price_high_to_low",
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "price_low_to_high"
- },
- {
- "description": "Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "tops"
- },
- {
- "description": "Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.",
- "in": "query",
- "name": "subcategory",
- "type": "string",
- "x-example": "tshirts,hoodies"
- },
- {
- "description": "Department filter: female, male",
- "in": "query",
- "name": "gender",
- "type": "string",
- "x-example": "female"
- },
- {
- "description": "Kids-department filter: true restricts results to kids items only, false excludes them, omitted returns both.",
- "in": "query",
- "name": "is_kids",
- "type": "boolean"
- },
- {
- "description": "Comma-separated Depop internal numeric brand ids. Not documented by Depop -- find a brand's id by browsing its depop.com/brands// page.",
- "in": "query",
- "name": "brand_ids",
- "type": "string",
- "x-example": "219"
- },
- {
- "description": "Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\",
- "in": "query",
- "name": "sizes",
- "type": "string",
- "x-example": "4.17"
- },
- {
- "description": "Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.",
- "in": "query",
- "name": "after",
- "type": "string"
- }
- ],
+ "description": "Returns normalized storefront metadata for Fashionphile (https://www.fashionphile.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
+ "operationId": "fashionphile-store",
"produces": [
"application/json"
],
@@ -252594,7 +281590,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/depop.searchResponseDoc"
+ "$ref": "#/definitions/shopifybrands.storeResponseDoc"
}
},
"400": {
@@ -252603,8 +281599,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -252621,27 +281617,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Depop listings",
+ "summary": "Get Fashionphile store metadata",
"tags": [
- "Depop"
+ "Fashionphile"
]
}
},
- "/depop/search-sellers": {
+ "/fastcompany/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Finds Depop users/sellers by name or username. A matched result's username can be passed directly to GET /depop/shop/{username} for that seller's full shop. Public data sourced from Depop's own user-search API.",
- "operationId": "depop-search-sellers",
+ "description": "Returns public Fast Company article metadata and body paragraphs from a canonical article URL. The service uses the configured production browser fleet when ordinary HTTP transport encounters Fast Company's bot-verification challenge; it does not bypass authentication or access controls.",
+ "operationId": "fastcompany-article",
"parameters": [
{
- "description": "Seller name or username to search for",
+ "description": "Canonical Fast Company article URL",
"in": "query",
- "name": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "vintage nike"
+ "x-example": "https://www.fastcompany.com/91611506/example-headline"
}
],
"produces": [
@@ -252651,7 +281644,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/depop.searchSellersResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -252660,8 +281653,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -252678,27 +281671,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Depop sellers by name",
+ "summary": "Get Fast Company article content",
"tags": [
- "Depop"
+ "Fast Company"
]
}
},
- "/depop/search/facets": {
+ "/fastcompany/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns result-count breakdowns per department/category/subcategory for a search query, via Depop's dedicated aggregates API -- a distinct upstream call from search itself, not embedded in its response. Public data sourced from Depop's own search-aggregates API.",
- "operationId": "depop-search-facets",
+ "description": "Returns a Fast Company contributor's name, biography, and recent articles from a canonical contributor URL. Recent articles and the contributor's name come from their own public RSS feed; the biography comes from the contributor's profile page and is omitted if that page's bot-verification challenge cannot be cleared. The service uses the configured production browser fleet when ordinary HTTP transport encounters that challenge; it does not bypass authentication or access controls.",
+ "operationId": "fastcompany-author",
"parameters": [
{
- "description": "Free-text keyword search",
+ "description": "Canonical Fast Company contributor URL",
"in": "query",
- "name": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "bandage dress"
+ "x-example": "https://www.fastcompany.com/user/example-writer"
}
],
"produces": [
@@ -252708,7 +281698,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/depop.searchFacetsResponseDoc"
+ "$ref": "#/definitions/publicnews.fastCompanyAuthorResponseDoc"
}
},
"400": {
@@ -252717,8 +281707,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -252735,96 +281725,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Depop search result-count breakdowns",
+ "summary": "Get a Fast Company contributor profile",
"tags": [
- "Depop"
+ "Fast Company"
]
}
},
- "/depop/shop/{username}": {
+ "/fastcompany/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a Depop seller's public shop: profile (rating, sold count, followers, bio) plus current listings, with optional price, condition, colour, category, subcategory, gender, discount, and sort filters. Public data sourced from Depop's own shop pages.",
- "operationId": "depop-shop",
+ "description": "Returns fresh headlines from one Fast Company section or topic's public RSS feed. section accepts any slug returned by GET /fastcompany/sections (78 values, e.g. \"technology\" or \"artificial-intelligence\").",
+ "operationId": "fastcompany-headlines",
"parameters": [
{
- "description": "Depop seller username, e.g. from a shop page URL segment",
- "in": "path",
- "name": "username",
- "required": true,
- "type": "string",
- "x-example": "villafanashop"
- },
- {
- "description": "Minimum listing price in USD",
- "in": "query",
- "name": "price_min",
- "type": "number",
- "x-example": 15
- },
- {
- "description": "Maximum listing price in USD",
- "in": "query",
- "name": "price_max",
- "type": "number",
- "x-example": 50
- },
- {
- "description": "Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair",
- "in": "query",
- "name": "condition",
- "type": "string",
- "x-example": "used_excellent,used_good"
- },
- {
- "description": "Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi",
- "in": "query",
- "name": "colours",
- "type": "string",
- "x-example": "black,white"
- },
- {
- "description": "Restrict results to discounted listings",
- "in": "query",
- "name": "on_sale",
- "type": "boolean"
- },
- {
- "description": "Sort order: relevance, price_low_to_high, price_high_to_low, recently_listed",
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "price_low_to_high"
- },
- {
- "description": "Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "tops"
- },
- {
- "description": "Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.",
- "in": "query",
- "name": "subcategory",
- "type": "string",
- "x-example": "tshirts"
- },
- {
- "description": "Department filter: female, male",
- "in": "query",
- "name": "gender",
- "type": "string",
- "x-example": "male"
- },
- {
- "description": "Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\",
+ "description": "Fast Company section slug, from GET /fastcompany/sections",
"in": "query",
- "name": "sizes",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "54.4"
+ "x-example": "technology"
}
],
"produces": [
@@ -252834,7 +281752,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/depop.shopResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -252843,18 +281761,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -252867,19 +281773,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Depop seller's shop",
+ "summary": "Get Fast Company section headlines",
"tags": [
- "Depop"
+ "Fast Company"
]
}
},
- "/depop/sizes": {
+ "/fastcompany/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Depop's full, multi-region size taxonomy -- every composite id usable with /depop/search's and /depop/shop/{username}'s sizes filter. Public data sourced from Depop's own size-filter API.",
- "operationId": "depop-sizes",
+ "description": "Returns fresh Fast Company stories from its public RSS feed.",
+ "operationId": "fastcompany-news",
"produces": [
"application/json"
],
@@ -252887,11 +281790,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/depop.sizesResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -252908,27 +281811,52 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Depop's size taxonomy",
+ "summary": "Get Fast Company top stories",
"tags": [
- "Depop"
+ "Fast Company"
]
}
},
- "/depop/suggest": {
+ "/fastcompany/sections": {
+ "get": {
+ "description": "Returns the Fast Company section/topic inventory: the site's six primary verticals (Tech, Work Life, News, Design, Leadership, Impact) plus every topic tag accepted by GET /fastcompany/headlines (78 values total, too many to enumerate inline -- see that endpoint for the full, current, live-verified list), each linking to its public RSS feed.",
+ "operationId": "fastcompany-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Fast Company sections",
+ "tags": [
+ "Fast Company"
+ ]
+ }
+ },
+ "/fiveguys/directory": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Depop's own search-box autocomplete suggestions for a partial query, including the category a suggestion maps to when relevant. Public data sourced from Depop's own search-suggestions API.",
- "operationId": "depop-suggest",
+ "description": "Returns one level of Five Guys' US restaurant directory: the 50 states at the root, one state's cities when path is a state (e.g. `il`), and that city's restaurants when path is a city (e.g. `il/chicago`). Each child carries the path to pass back as this endpoint's `path`, and a `location_count` of how many restaurants sit under it. At the deepest level children are restaurants themselves (`is_location` true) -- pass their path to GET /fiveguys/store for the full profile. Use this to enumerate or browse locations; use GET /fiveguys/search or /fiveguys/nearby to find them by query or coordinate instead.",
+ "operationId": "fiveguys-directory",
"parameters": [
{
- "description": "Partial search query to autocomplete",
+ "description": "Optional. Directory path from a previous response's children[].path, e.g. \\",
"in": "query",
- "name": "query",
- "required": true,
+ "name": "path",
"type": "string",
- "x-example": "red corte"
+ "x-example": "il"
}
],
"produces": [
@@ -252938,7 +281866,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/depop.suggestResponseDoc"
+ "$ref": "#/definitions/fiveguys.directoryResponseDoc"
}
},
"400": {
@@ -252947,8 +281875,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -252965,28 +281899,57 @@
"ApiKeyAuth": []
}
],
- "summary": "Depop search-box autocomplete",
+ "summary": "Browse the Five Guys restaurant directory by state and city",
"tags": [
- "Depop"
+ "FiveGuys"
]
}
},
- "/diagnostics/antibot-check": {
- "post": {
+ "/fiveguys/faq": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Probes a URL across escalating transports (direct HTTP → browser-impersonation → headless/stealth browsers) and returns an empirical scraping-difficulty assessment for that exact URL: a 0–10 `difficulty_score` and `difficulty_band` (`easy`, `medium`, `hard`, `very_hard`, `blocked`, `unknown`), whether it is `scrapeable`, the detected anti-bot `protections` (Cloudflare, DataDome, Akamai, PerimeterX, Kasada, Imperva, AWS WAF and more — each with a `kind` and `confidence`), the lightest transport that worked, and a `recommended_profile`. Difficulty is per-URL, not per-site — a homepage may be open while deep pages are bot-managed. Intended for authorized public-data scraping planning.",
- "operationId": "antibot-check",
+ "description": "Returns one page of Five Guys' published customer FAQ corpus -- 142 entries across 17 categories (Menu, Nutritional and Allergens, Ordering, Gift Card, Careers, Franchise, App, Company, The Crew, and others), filterable by category id and free text, in English (default) or Spanish via `lang`. Get valid category values from GET /fiveguys/faq-categories using the same `lang` -- category ids are language-specific.",
+ "operationId": "fiveguys-faq",
"parameters": [
{
- "description": "Target URL (and optional fast flag)",
- "in": "body",
- "name": "request",
- "required": true,
- "schema": {
- "$ref": "#/definitions/diagnostics.AntibotCheckRequest"
- }
+ "description": "Optional. Free-text filter over question and answer text.",
+ "in": "query",
+ "name": "search",
+ "type": "string",
+ "x-example": "gluten"
+ },
+ {
+ "description": "Optional. Comma-separated faq_category term ids, from GET /fiveguys/faq-categories.",
+ "in": "query",
+ "name": "category",
+ "type": "string",
+ "x-example": "21"
+ },
+ {
+ "description": "Optional. 1-based page number, default 1.",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Optional. Entries per page, 1-100, default 20.",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "description": "Optional. Content language: en (default) or es.",
+ "enum": [
+ "en",
+ "es"
+ ],
+ "in": "query",
+ "name": "lang",
+ "type": "string"
}
],
"produces": [
@@ -252996,23 +281959,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/diagnostics.antibotCheckResponseDoc"
+ "$ref": "#/definitions/fiveguys.faqResponseDoc"
}
},
"400": {
- "description": "Invalid or missing URL",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Probe failed (transport/browser error or blocked target)",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253023,27 +281986,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Anti-bot check — website scraping difficulty",
+ "summary": "List Five Guys' published customer FAQ",
"tags": [
- "Web"
+ "FiveGuys"
]
}
},
- "/discogs/artist/{id}": {
+ "/fiveguys/faq-categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Discogs artist profile: real name, bio, links, name variations, aliases, and group memberships. Credential-free official Discogs database data.",
- "operationId": "discogs-artist",
+ "description": "Returns every published Five Guys FAQ category with its id, name, slug, and entry count -- use an id here as GET /fiveguys/faq's category filter. Available in English (default) and Spanish via `lang`; ids differ between languages, so pass the same `lang` to both endpoints.",
+ "operationId": "fiveguys-faq-categories",
"parameters": [
{
- "description": "Discogs artist id",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "1289"
+ "description": "Optional. Content language: en (default) or es. Category ids differ per language -- feed ids from a given language back into GET /fiveguys/faq with the same lang.",
+ "enum": [
+ "en",
+ "es"
+ ],
+ "in": "query",
+ "name": "lang",
+ "type": "string"
}
],
"produces": [
@@ -253053,23 +282018,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/discogs.artistResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/fiveguys.faqCategoriesResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253086,39 +282039,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Discogs artist profile",
+ "summary": "List Five Guys FAQ categories",
"tags": [
- "Discogs"
+ "FiveGuys"
]
}
},
- "/discogs/artist/{id}/releases": {
+ "/fiveguys/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns an artist's paginated release/master credits (role, format, label, year, want/collection counts). Credential-free official Discogs database data.",
- "operationId": "discogs-artist-releases",
+ "description": "Returns Five Guys' public menu content: every category (Burgers, Fries, Shakes, Hot Dogs, Sandwiches, Drinks, Toppings) -- each with its own short description and cover image, plus its items' name, description, calories, and image -- or one category's items when category is given. Five Guys publishes no per-item price on this surface -- pricing is store-scoped and lives only behind its ordering flow, which this endpoint does not cover. Available in English (default) and Spanish via `lang`. Calories are shown exactly as published: a single value for most items, or a range (e.g. fries' \"530-1100\") for build-your-own items whose calories vary by size and toppings. Some items (drink categories, a few build-your-own items) publish no calorie figure at all; their calories field is omitted rather than estimated.",
+ "operationId": "fiveguys-menu",
"parameters": [
{
- "description": "Discogs artist id",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "1289"
- },
- {
- "description": "1-based page number, default 1",
+ "description": "Optional. One category slug to return only that category's items. Omit to return the full menu across every category. With lang=en (the default) one of: burgers, fries, shakes, dogs, sandwiches, drinks, toppings. With lang=es the slugs differ -- read them from a lang=es response's categories[].slug.",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "category",
+ "type": "string"
},
{
- "description": "Results per page, default 50, max 100",
+ "description": "Optional. Content language: en (default) or es.",
+ "enum": [
+ "en",
+ "es"
+ ],
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "lang",
+ "type": "string"
}
],
"produces": [
@@ -253128,7 +282077,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/discogs.artistReleasesResponseDoc"
+ "$ref": "#/definitions/fiveguys.menuResponseDoc"
}
},
"400": {
@@ -253143,8 +282092,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253161,27 +282110,56 @@
"ApiKeyAuth": []
}
],
- "summary": "List a Discogs artist's releases",
+ "summary": "List Five Guys menu categories and items",
"tags": [
- "Discogs"
+ "FiveGuys"
]
}
},
- "/discogs/label/{id}": {
+ "/fiveguys/nearby": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Discogs label profile: profile text, contact info, parent label, and sub-labels. Credential-free official Discogs database data.",
- "operationId": "discogs-label",
+ "description": "Returns Five Guys restaurants within a radius of a latitude/longitude. Each result carries a full profile: a short area/plaza label distinguishing it from other locations, address, phone, weekly in-store hours plus a separate delivery-hours schedule when published, price tier, restaurant-amenity labels (e.g. Takeout, Dine In, Curbside), pickup/delivery service labels, order/delivery/menu URLs, a Google Place id, and distance in miles/kilometers from the given coordinate. `total_results` reports how many restaurants fall inside the radius overall, usually more than one page; use `offset` to page. A coordinate with no Five Guys nearby returns an empty list rather than an error.",
+ "operationId": "fiveguys-nearby",
"parameters": [
{
- "description": "Discogs label id",
- "in": "path",
- "name": "id",
+ "description": "Search center latitude",
+ "in": "query",
+ "name": "latitude",
"required": true,
- "type": "string",
- "x-example": "895"
+ "type": "number",
+ "x-example": 41.881953
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -87.632362
+ },
+ {
+ "description": "Search radius in miles, 1-100 (default 25)",
+ "in": "query",
+ "name": "radius",
+ "type": "integer",
+ "x-example": 25
+ },
+ {
+ "description": "Maximum restaurants to return, 1-50 (default 10)",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Result offset for paging through total_results (default 0)",
+ "in": "query",
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -253191,7 +282169,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/discogs.labelResponseDoc"
+ "$ref": "#/definitions/fiveguys.nearbyResponseDoc"
}
},
"400": {
@@ -253200,14 +282178,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253224,41 +282196,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Discogs label profile",
+ "summary": "Find Five Guys restaurants near a coordinate",
"tags": [
- "Discogs"
+ "FiveGuys"
]
}
},
- "/discogs/label/{id}/releases": {
+ "/fiveguys/nutrition": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a label's paginated release catalog (title, artist, format, catalog number, year). Credential-free official Discogs database data.",
- "operationId": "discogs-label-releases",
- "parameters": [
- {
- "description": "Discogs label id",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "895"
- },
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page, default 50, max 100",
- "in": "query",
- "name": "per_page",
- "type": "integer"
- }
- ],
+ "description": "Resolves the live location of Five Guys' current dated nutrition & allergen guide PDF (calories, full macro nutrition and allergen data per item) directly from fiveguys.com -- the guide's own file path changes when Five Guys republishes it (observed monthly), so this endpoint always discovers the current link rather than returning a fixed one. Returns the PDF's direct download URL plus best-effort size and last-modified metadata read from the PDF's own response headers. This endpoint returns metadata and a link to the guide, not its table parsed into structured fields -- pair it with GET /fiveguys/menu for structured per-item calories.",
+ "operationId": "fiveguys-nutrition",
"produces": [
"application/json"
],
@@ -253266,23 +282216,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/discogs.labelReleasesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/fiveguys.nutritionResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253299,27 +282237,63 @@
"ApiKeyAuth": []
}
],
- "summary": "List a Discogs label's releases",
+ "summary": "Get the current Five Guys nutrition & allergen PDF guide's location",
"tags": [
- "Discogs"
+ "FiveGuys"
]
}
},
- "/discogs/master/{id}": {
+ "/fiveguys/ordering-locations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Discogs master release: the version-agnostic grouping of a release across pressings/reissues (artists, tracklist, genres/styles, videos, images, marketplace stats). Credential-free official Discogs database data.",
- "operationId": "discogs-master",
+ "description": "Returns Five Guys restaurants near a latitude/longitude as Five Guys' own ordering platform publishes them, with commerce detail no other endpoint in this family carries: per-store delivery fee, delivery and pickup order minimums, whether the store is currently accepting orders at all, the handoff modes an order placed now could actually use (delivery, pickup, curbside, dine-in, drive-thru, dispatch), group-order/coupon/loyalty support, how many days ahead an order may be scheduled, and the store's own order URL. Set `include_hours` to also return each store's dated business and delivery calendars -- concrete dated windows rather than the recurring weekly schedule the locator endpoints publish, so they reflect holiday and special hours a weekly schedule cannot express. This is a different upstream from GET /fiveguys/nearby, which returns the marketing/locator record: the two describe the same restaurants but do not share ids, and this one carries a per-store name (\"Five Guys Austin Arbor\") where the locator publishes the generic brand name. Use each result's `id` with GET /fiveguys/ordering-menu for that store's priced menu. A coordinate with no Five Guys nearby returns an empty list rather than an error.",
+ "operationId": "fiveguys-ordering-locations",
"parameters": [
{
- "description": "Discogs master release id",
- "in": "path",
- "name": "id",
+ "description": "Search center latitude",
+ "in": "query",
+ "name": "latitude",
"required": true,
- "type": "string",
- "x-example": "26647"
+ "type": "number",
+ "x-example": 30.267153
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -97.743061
+ },
+ {
+ "description": "Search radius in miles, 1-50 (default 20)",
+ "in": "query",
+ "name": "radius",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "description": "Maximum restaurants to return, 1-50 (default 10)",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Include each store's dated business and delivery calendars",
+ "in": "query",
+ "name": "include_hours",
+ "type": "boolean",
+ "x-example": true
+ },
+ {
+ "description": "Days of calendar to return from today, 1-30 (default 7). Only meaningful with include_hours.",
+ "in": "query",
+ "name": "days",
+ "type": "integer",
+ "x-example": 7
}
],
"produces": [
@@ -253329,7 +282303,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/discogs.masterResponseDoc"
+ "$ref": "#/definitions/fiveguys.orderingLocationsResponseDoc"
}
},
"400": {
@@ -253338,14 +282312,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253362,27 +282330,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Discogs master release",
+ "summary": "Find Five Guys restaurants near a coordinate with ordering details",
"tags": [
- "Discogs"
+ "FiveGuys"
]
}
},
- "/discogs/release/{id}": {
+ "/fiveguys/ordering-menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Discogs release: artists, labels, formats, tracklist, credits, identifiers, videos, images, and community want/have/rating. Credential-free official Discogs database data (api.discogs.com).",
- "operationId": "discogs-release",
+ "description": "Returns one restaurant's full menu exactly as Five Guys' own ordering platform sells it, including real per-item prices -- the one field no other endpoint in this family can surface (GET /fiveguys/menu is fiveguys.com's own marketing content and carries no price at all). Categories and items are returned with name, description, price, calories (a single value or a real range, e.g. a fountain drink sized at checkout), an image, and whether the platform currently has the item available. id is the ordering platform's own restaurant id from GET /fiveguys/ordering-locations' locations[].id -- it is not a Yext entity id and does not correspond to any id from GET /fiveguys/search, /fiveguys/nearby, /fiveguys/directory, or /fiveguys/store.",
+ "operationId": "fiveguys-ordering-menu",
"parameters": [
{
- "description": "Discogs release id",
- "in": "path",
+ "description": "The ordering platform's restaurant id, from GET /fiveguys/ordering-locations' locations[].id",
+ "in": "query",
"name": "id",
"required": true,
"type": "string",
- "x-example": "249504"
+ "x-example": "23841"
}
],
"produces": [
@@ -253392,7 +282360,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/discogs.releaseResponseDoc"
+ "$ref": "#/definitions/fiveguys.orderingMenuResponseDoc"
}
},
"400": {
@@ -253407,8 +282375,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253425,51 +282393,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Discogs release",
+ "summary": "Get one Five Guys store's priced menu from the ordering platform",
"tags": [
- "Discogs"
+ "FiveGuys"
]
}
},
- "/discogs/search": {
+ "/fiveguys/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Discogs releases, masters, artists, and labels. Credential-free official Discogs database data.",
- "operationId": "discogs-search",
+ "description": "Returns Five Guys restaurants matching a free-text location query -- a city, a zip/postal code, a street address, or a landmark -- the same way restaurants.fiveguys.com's own locator search box works. Yext's own query understanding geocodes the text server-side, so no separate geocoding call is needed. Each result carries a full profile: a short area/plaza label distinguishing it from other locations, address, phone, weekly in-store hours plus a separate delivery-hours schedule when published, price tier, restaurant-amenity labels (e.g. Takeout, Dine In, Curbside), pickup/delivery service labels, order/delivery/menu URLs, a Google Place id, and distance in miles/kilometers from the resolved query location. `total_results` reports how many restaurants matched overall, usually more than one page; use `offset` to page. A query that resolves to nowhere Five Guys operates returns an empty list rather than an error.",
+ "operationId": "fiveguys-search",
"parameters": [
{
- "description": "Search query",
+ "description": "Free-text location: a city, a zip/postal code, a street address, or a landmark",
"in": "query",
- "name": "q",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "Daft Punk Discovery"
- },
- {
- "description": "Result type filter",
- "enum": [
- "release",
- "master",
- "artist",
- "label"
- ],
- "in": "query",
- "name": "type",
- "type": "string"
+ "x-example": "Chicago, IL"
},
{
- "description": "1-based page number, default 1",
+ "description": "Maximum restaurants to return, 1-50 (default 10)",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
},
{
- "description": "Results per page, default 50, max 100",
+ "description": "Result offset for paging through total_results (default 0)",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -253479,7 +282437,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/discogs.searchResponseDoc"
+ "$ref": "#/definitions/fiveguys.searchResponseDoc"
}
},
"400": {
@@ -253488,8 +282446,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253506,27 +282464,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Discogs database",
+ "summary": "Search Five Guys restaurants by free-text location",
"tags": [
- "Discogs"
+ "FiveGuys"
]
}
},
- "/dominos/coupons": {
+ "/fiveguys/store": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Domino's US store's available coupons and deals: standalone coupons (code, name, description, price, valid service methods, and any alternate promo/marketing codes that resolve to the same coupon), plus tiered volume-discount coupon groups (e.g. \"order 7+ pizzas, get 15% off\"). Reads the same structured menu response as GET /dominos/menu, so it costs no additional upstream request. A store can genuinely have zero active coupons -- an empty list is not an error. Store ids come from GET /dominos/store-locator. An unknown store id returns 404.",
- "operationId": "dominos-coupons",
+ "description": "Returns one Five Guys restaurant's full published profile by its locator slug -- address, phone, weekly in-store hours, separate delivery hours, coordinate, Google Place id, restaurant-amenity labels, and order/delivery/menu URLs. Get a path from GET /fiveguys/search or /fiveguys/nearby's `locations[].path`, or from GET /fiveguys/directory's `children[].path` where `is_location` is true. It also returns three detail-only extras that search and nearby results do not carry: `description` (this restaurant's own blurb, templated but genuinely per-location), `photos` (its published gallery images, omitted for the many locations that publish none), and `breadcrumbs` (the directory trail above it, each entry's `path` feeding straight back into GET /fiveguys/directory). Two fields available on search and nearby results are not published on this surface and are omitted here: `price_range` and `pickup_and_delivery_services`. A `profile` block, populated best-effort from a second Yext key, adds further per-restaurant detail no other field in this family carries: `google_attributes` (structured amenity flags, richer than `services`), `review_page_url`/`review_invite_url`, `featured_message`/`featured_message_url`, `google_cid`/`facebook_store_id`, `routable_latitude`/`routable_longitude` (a driving destination, distinct from the display coordinate), `payment_options`, `meals_served`, `services`, `permanently_closed`, `directory_listing_url`, `franchisee_group` (the operator of this specific restaurant -- a corporate code or a franchisee's own company name), `facebook_vanity_url` (this location's own Facebook handle), and `faq` (this restaurant's own generated question set, distinct from the national corpus GET /fiveguys/faq serves). Passing a state or city path returns 404 -- use GET /fiveguys/directory for those.",
+ "operationId": "fiveguys-store",
"parameters": [
{
- "description": "Domino's store id, from /dominos/store-locator",
+ "description": "The restaurant's locator slug, e.g. \\",
"in": "query",
- "name": "store_id",
- "required": true,
+ "name": "path",
"type": "string",
- "x-example": "4336"
+ "x-example": "703-s-seely-ave"
+ },
+ {
+ "description": "The restaurant's entity id, e.g. \\",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "4060"
}
],
"produces": [
@@ -253536,7 +282500,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/dominos.couponsResponseDoc"
+ "$ref": "#/definitions/fiveguys.storeResponseDoc"
}
},
"400": {
@@ -253569,27 +282533,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Domino's store's available coupons and deals",
+ "summary": "Get one Five Guys restaurant by its locator path",
"tags": [
- "Dominos"
+ "FiveGuys"
]
}
},
- "/dominos/customization": {
+ "/fiverr/gig/{username}/{slug}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Domino's US store's full build-your-own customization catalog, grouped by product category (Domino's own internal names, e.g. \"BuildYourOwnDomino\" for pizza, \"GSalad\" for garden salads): every selectable size, crust/flavor style, topping, and side, each with its own code, name, description, dietary/placement flags (e.g. Meat, Vege, Sauce, WholeOnly), and any other attributes Domino's attaches (e.g. ExclusiveGroup for mutually-exclusive options). Also returns cooking instructions (bake level, cut style, seasoning), grouped. Reads the same structured menu response as GET /dominos/menu, so it costs no additional upstream request. Store ids come from GET /dominos/store-locator. An unknown store id returns 404.",
- "operationId": "dominos-customization",
+ "description": "Returns a normalized Fiverr gig detail page: title, description, category, pricing packages (basic/standard/premium tiers with price and delivery time), rating, review count, orders in queue, tags, gallery images, and a seller summary (level, rating, response time, languages). Public data sourced from Fiverr's own server-rendered gig pages via a real browser-rendering backend. Seller level uses the same values on the search, seller and gig endpoints: level_one_seller, level_two_seller, top_rated_seller, or new_seller.",
+ "operationId": "fiverr-gig",
"parameters": [
{
- "description": "Domino's store id, from /dominos/store-locator",
- "in": "query",
- "name": "store_id",
+ "description": "Fiverr seller username, e.g. from a search result's seller_username field",
+ "in": "path",
+ "name": "username",
"required": true,
"type": "string",
- "x-example": "4336"
+ "x-example": "inshape_studio"
+ },
+ {
+ "description": "Fiverr gig URL slug, the trailing path segment after the username in a gig URL",
+ "in": "path",
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "do-modern-minimalist-logo-design-for-your-business"
}
],
"produces": [
@@ -253599,7 +282571,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/dominos.customizationResponseDoc"
+ "$ref": "#/definitions/fiverr.gigResponseDoc"
}
},
"400": {
@@ -253614,8 +282586,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253632,27 +282604,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Domino's store's full build-your-own customization catalog",
+ "summary": "Get Fiverr gig detail",
"tags": [
- "Dominos"
+ "Fiverr"
]
}
},
- "/dominos/menu": {
+ "/fiverr/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Domino's US store's full menu, normalized into a flat list of categories (each with a stable code/name path, e.g. \"Pizza > Specialty Pizzas\") and their items. Each item carries its code, name, description, and product type, plus every purchasable variant (size/style) with its own code, name, and price. Store ids come from GET /dominos/store-locator. An unknown store id returns 404.",
- "operationId": "dominos-menu",
+ "description": "Searches Fiverr's public gig listings by free-text keyword, returning normalized gig summaries (title, seller username, seller level, rating, review count, starting price, category, thumbnail image). Public data sourced from Fiverr's own server-rendered search pages via a real browser-rendering backend. Seller level uses the same values on the search, seller and gig endpoints: level_one_seller, level_two_seller, top_rated_seller, or new_seller.",
+ "operationId": "fiverr-search",
"parameters": [
{
- "description": "Domino's store id, from /dominos/store-locator",
+ "description": "Free-text gig search keyword",
"in": "query",
- "name": "store_id",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "4336"
+ "x-example": "logo design"
+ },
+ {
+ "description": "1-based result page. Defaults to 1.",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 2
}
],
"produces": [
@@ -253662,7 +282641,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/dominos.menuResponseDoc"
+ "$ref": "#/definitions/fiverr.searchResponseDoc"
}
},
"400": {
@@ -253671,14 +282650,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253695,60 +282668,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Domino's store's full structured menu",
+ "summary": "Search Fiverr gigs",
"tags": [
- "Dominos"
+ "Fiverr"
]
}
},
- "/dominos/nutrition": {
+ "/fiverr/seller/{username}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns calorie information (Domino's own \"Cal-O-Meter\" data) for one product at one store. For a named/fixed menu item (a specialty pizza, bread, wing, pasta, sandwich, salad, drink, or dessert -- any item code from GET /dominos/menu), give only store_id and product_code; the item's default configuration is used. For a build-your-own pizza, also give size, base, and any topping codes -- calories are computed for that exact configuration, matching Domino's own live calculator. size and base must be given together; toppings requires both. Reads live, not from a cache -- each call creates and discards one anonymous cart server-side, so it is slower than this family's other endpoints. An unknown product code, or an invalid size/base/topping combination, returns an error.",
- "operationId": "dominos-nutrition",
+ "description": "Returns a normalized Fiverr seller profile: display name, one-liner title, description, country, seller level, verification status, hourly rate, spoken languages, join date, and the seller's gig ids. Public data sourced from Fiverr's own server-rendered seller profile pages via a real browser-rendering backend. Seller level uses the same values on the search, seller and gig endpoints: level_one_seller, level_two_seller, top_rated_seller, or new_seller.",
+ "operationId": "fiverr-seller",
"parameters": [
{
- "description": "Domino's store id, from /dominos/store-locator",
- "in": "query",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "4336"
- },
- {
- "description": "A product code from /dominos/menu's items[].code -- a named/fixed item, or a build-your-own base (e.g. S_PIZZA)",
- "in": "query",
- "name": "product_code",
+ "description": "Fiverr seller username, e.g. from a search result's seller_username field",
+ "in": "path",
+ "name": "username",
"required": true,
"type": "string",
- "x-example": "S_PIZZA"
- },
- {
- "description": "Build-your-own size code, from /dominos/menu's variants. Required together with base.",
- "in": "query",
- "name": "size",
- "type": "string",
- "x-example": "14"
- },
- {
- "description": "Build-your-own crust code. Required together with size.",
- "in": "query",
- "name": "base",
- "type": "string",
- "x-example": "HANDTOSS"
- },
- {
- "collectionFormat": "csv",
- "description": "Repeatable. Topping codes to add to a build-your-own pizza. Only used together with size+base.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "toppings",
- "type": "array",
- "x-example": "P"
+ "x-example": "inshape_studio"
}
],
"produces": [
@@ -253758,7 +282698,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/dominos.nutritionResponseDoc"
+ "$ref": "#/definitions/fiverr.sellerResponseDoc"
}
},
"400": {
@@ -253773,8 +282713,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -253791,27 +282731,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get calorie information for one Domino's product configuration",
+ "summary": "Get Fiverr seller profile",
"tags": [
- "Dominos"
+ "Fiverr"
]
}
},
- "/dominos/store": {
+ "/flashscore/calendar": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Domino's US store's full profile -- richer than /dominos/store-locator's per-store summary. Includes the store's complete weekly hours (general hours and each service method's own hours, Monday-first, with every open/close window per day), Domino's own free-text hours summary per service method, per-service-method estimated wait windows, open/online status, per-service-method order availability (delivery, carryout, drive-up carryout, dine-in), contactless option status, and delivery/carryout order minimums. Store ids come from GET /dominos/store-locator. An unknown store id returns 404.",
- "operationId": "dominos-store",
+ "description": "Returns public tournament calendar entries, dates, winners when available, and competition paths for the current season.",
+ "operationId": "flashscore-calendar",
"parameters": [
{
- "description": "Domino's store id, from /dominos/store-locator",
+ "description": "Calendar category from flashscore-calendar-categories",
+ "enum": [
+ "tennis-atp",
+ "tennis-wta",
+ "golf-pga",
+ "golf-dp-world",
+ "badminton-bwf",
+ "motorsport-f1"
+ ],
"in": "query",
- "name": "store_id",
+ "name": "category",
"required": true,
"type": "string",
- "x-example": "4336"
+ "x-example": "tennis-atp"
}
],
"produces": [
@@ -253821,7 +282769,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/dominos.storeDetailResponseDoc"
+ "$ref": "#/definitions/flashscore.calendarResponseDoc"
}
},
"400": {
@@ -253836,12 +282784,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -253854,76 +282796,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Domino's store's full profile record",
+ "summary": "Flashscore season calendar",
"tags": [
- "Dominos"
+ "Flashscore"
]
}
},
- "/dominos/store-locator": {
+ "/flashscore/calendar-categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Domino's US stores that can serve a location: store id, address with coordinates, phone, open/online status, per-service-method availability (delivery, carryout, drive-up carryout), contactless option status, Domino's own hours summary per service method, and estimated wait windows. At least one of postal_code, or both city and state, is required; address is an optional street line that improves precision when combined with city/state. The response's query field echoes how Domino's own address resolver actually interpreted the input, including its granularity (e.g. resolved to a specific street range vs. only a city/region).",
- "operationId": "dominos-store-locator",
- "parameters": [
- {
- "description": "Optional street address line",
- "in": "query",
- "name": "address",
- "type": "string",
- "x-example": "1600 Pennsylvania Ave NW"
- },
- {
- "description": "City name (required together with state if postal_code is not given)",
- "in": "query",
- "name": "city",
- "type": "string",
- "x-example": "Washington"
- },
- {
- "description": "Two-letter US state code (required together with city if postal_code is not given)",
- "in": "query",
- "name": "state",
- "type": "string",
- "x-example": "DC"
- },
- {
- "description": "US ZIP code (can be used alone instead of city/state)",
- "in": "query",
- "name": "postal_code",
- "type": "string",
- "x-example": "20500"
- },
- {
- "description": "One of: Delivery, Carryout. Default Delivery",
- "in": "query",
- "name": "service_method",
- "type": "string",
- "x-example": "Delivery"
- }
- ],
+ "description": "Lists the current ATP, WTA, golf, badminton, and Formula 1 calendar pages.",
+ "operationId": "flashscore-calendar-categories",
"produces": [
"application/json"
],
"responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/dominos.storeLocatorResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "200": {
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/flashscore.calendarCategoriesResponseDoc"
}
},
"503": {
@@ -253938,35 +282831,73 @@
"ApiKeyAuth": []
}
],
- "summary": "Find Domino's stores near an address, city/state, or ZIP code",
+ "summary": "Flashscore season calendar categories",
"tags": [
- "Dominos"
+ "Flashscore"
]
}
},
- "/doordash/explore": {
+ "/flashscore/competitions": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns DoorDash's location-based \"nearby stores\" browse feed from the Android mobile guest experience. Unlike search or autocomplete, no search query is required. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-explore",
+ "description": "Discovers competitions present in a selected sport's score feed, including the provider competition id, label, region, canonical path, and event count. This is the active feed-date inventory, not an archive of inactive or historical seasons.",
+ "operationId": "flashscore-competitions",
"parameters": [
{
- "description": "Consumer latitude",
+ "description": "Sport key",
+ "enum": [
+ "football",
+ "tennis",
+ "basketball",
+ "hockey",
+ "golf",
+ "formula-1",
+ "baseball",
+ "snooker",
+ "american-football",
+ "aussie-rules",
+ "badminton",
+ "bandy",
+ "beach-soccer",
+ "beach-volleyball",
+ "boxing",
+ "cricket",
+ "cycling",
+ "darts",
+ "esports",
+ "field-hockey",
+ "floorball",
+ "futsal",
+ "handball",
+ "horse-racing",
+ "kabaddi",
+ "mma",
+ "motorsport",
+ "netball",
+ "pesapallo",
+ "rugby-league",
+ "rugby-union",
+ "table-tennis",
+ "volleyball",
+ "water-polo",
+ "winter-sports"
+ ],
"in": "query",
- "name": "latitude",
+ "name": "sport",
"required": true,
- "type": "number",
- "x-example": 37.7825
+ "type": "string",
+ "x-example": "football"
},
{
- "description": "Consumer longitude",
+ "description": "Days from today; -7 to 7; defaults to 0",
"in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -122.461
+ "maximum": 7,
+ "minimum": -7,
+ "name": "day_offset",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -253976,7 +282907,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.exploreResponseDoc"
+ "$ref": "#/definitions/flashscore.competitionsResponseDoc"
}
},
"400": {
@@ -253985,12 +282916,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -254003,49 +282928,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DoorDash nearby stores explore feed",
+ "summary": "Flashscore competitions by sport and date",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/feed": {
+ "/flashscore/match-h2h": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns nearby stores for a location from the Android mobile guest experience: store ID, name, cover image and tags, plus rating, price range, delivery fee and ETA when the upstream feed surface reports them. Those metric fields are omitted rather than estimated when it does not, so treat their absence as \"not reported\". No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-feed",
+ "description": "Returns Flashscore's public head-to-head and recent-results feed for a match id copied from a Flashscore match URL. The raw upstream feed is preserved as text because its format is not JSON.",
+ "operationId": "flashscore-match-h2h",
"parameters": [
{
- "description": "Consumer latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
- },
- {
- "description": "Consumer longitude",
+ "description": "Eight-character Flashscore match id",
"in": "query",
- "name": "longitude",
+ "name": "id",
"required": true,
- "type": "number",
- "x-example": -122.461
- },
- {
- "description": "Number of stores to skip",
- "in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
- },
- {
- "description": "Max stores to return",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "type": "string",
+ "x-example": "xtmHKGT0"
}
],
"produces": [
@@ -254055,7 +282958,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.feedResponseDoc"
+ "$ref": "#/definitions/flashscore.responseDoc"
}
},
"400": {
@@ -254064,8 +282967,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -254082,75 +282985,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DoorDash store discovery feed",
+ "summary": "Flashscore match head-to-head and recent results",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/search": {
+ "/flashscore/match-highlights": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the Android mobile guest catalog for pickup restaurants near a location and supports optional result filters. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-search",
+ "description": "Returns public highlight identifiers, metadata, and video links as the provider's raw delimited text. Video content is not fetched or included. Matches without available highlights return not found.",
+ "operationId": "flashscore-match-highlights",
"parameters": [
{
- "description": "Restaurant, cuisine, or dish query",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "pizza"
- },
- {
- "description": "Consumer latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
- },
- {
- "description": "Consumer longitude",
+ "description": "Eight-character Flashscore match id",
"in": "query",
- "name": "longitude",
+ "name": "id",
"required": true,
- "type": "number",
- "x-example": -122.461
- },
- {
- "description": "Exact cuisine or store tag, case-insensitive",
- "in": "query",
- "name": "tag",
"type": "string",
- "x-example": "Pizza"
- },
- {
- "description": "Keep only DashPass-eligible stores",
- "in": "query",
- "name": "dashPassOnly",
- "type": "boolean"
- },
- {
- "description": "Keep only stores currently available ASAP",
- "in": "query",
- "name": "asapOnly",
- "type": "boolean"
- },
- {
- "description": "Keep only pickup-enabled stores",
- "in": "query",
- "name": "pickupOnly",
- "type": "boolean"
- },
- {
- "description": "Maximum displayed distance in miles, from 0 to 100",
- "in": "query",
- "name": "maxDistanceMiles",
- "type": "number",
- "x-example": 5
+ "x-example": "j52jHsN8"
}
],
"produces": [
@@ -254160,7 +283015,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.searchResponseDoc"
+ "$ref": "#/definitions/flashscore.responseDoc"
}
},
"400": {
@@ -254169,8 +283024,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -254187,43 +283042,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search DoorDash pickup restaurants",
+ "summary": "Flashscore match highlights",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/search/autocomplete": {
+ "/flashscore/match-info": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns pickup restaurant matches from the Android mobile guest search experience near a location. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-search-autocomplete",
+ "description": "Returns the public match information feed, including available venue, city, capacity, and broadcast listings, as the provider's raw delimited text.",
+ "operationId": "flashscore-match-info",
"parameters": [
{
- "description": "Partial restaurant, cuisine, or dish query",
+ "description": "Eight-character Flashscore match id",
"in": "query",
- "name": "query",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "piz"
- },
- {
- "description": "Consumer latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
- },
- {
- "description": "Consumer longitude",
- "in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -122.461
+ "x-example": "xtmHKGT0"
}
],
"produces": [
@@ -254233,7 +283072,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.searchResponseDoc"
+ "$ref": "#/definitions/flashscore.responseDoc"
}
},
"400": {
@@ -254242,8 +283081,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -254260,35 +283099,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DoorDash pickup search suggestions",
+ "summary": "Flashscore match venue and broadcast information",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/search/filters": {
+ "/flashscore/match-lineups": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the cuisines and filter values supported by the Android mobile guest search experience for a location. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-search-filters",
+ "description": "Returns the public starting-lineup and formation feed as the provider's raw delimited text. Matches without published lineups return not found.",
+ "operationId": "flashscore-match-lineups",
"parameters": [
{
- "description": "Consumer latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
- },
- {
- "description": "Consumer longitude",
+ "description": "Eight-character Flashscore match id",
"in": "query",
- "name": "longitude",
+ "name": "id",
"required": true,
- "type": "number",
- "x-example": -122.461
+ "type": "string",
+ "x-example": "j52jHsN8"
}
],
"produces": [
@@ -254298,7 +283129,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.searchFiltersResponseDoc"
+ "$ref": "#/definitions/flashscore.responseDoc"
}
},
"400": {
@@ -254307,8 +283138,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -254325,78 +283156,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DoorDash search filter options",
+ "summary": "Flashscore match lineups and formations",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/search/items": {
+ "/flashscore/match-news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches menu items across nearby merchants from the Android mobile guest experience. Nearby candidate stores are selected first, then their menus are read and every item whose name or description matches the query is returned with its parent store. At most five proximity-ranked stores are inspected per request, and a store whose menu cannot be read is skipped, so results are best-effort across that candidate set. An empty result array means no candidate store menu matched, not that no nearby merchant sells the item. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-search-items",
+ "description": "Returns article references from the public news layout associated with a match. Article content is not included; use the article id with flashscore-news-article for public metadata.",
+ "operationId": "flashscore-match-news",
"parameters": [
{
- "description": "Dish or item search text",
+ "description": "Eight-character Flashscore match id",
"in": "query",
- "name": "query",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "pizza"
- },
- {
- "description": "Cuisine or store tag used to narrow candidate stores",
- "in": "query",
- "name": "tag",
- "type": "string",
- "x-example": "Pizza"
- },
- {
- "description": "Keep only DashPass-eligible stores",
- "in": "query",
- "name": "dashPassOnly",
- "type": "boolean",
- "x-example": false
- },
- {
- "description": "Keep only stores currently available ASAP",
- "in": "query",
- "name": "asapOnly",
- "type": "boolean",
- "x-example": false
- },
- {
- "description": "Keep only pickup-enabled stores",
- "in": "query",
- "name": "pickupOnly",
- "type": "boolean",
- "x-example": false
- },
- {
- "description": "Maximum displayed distance in miles",
- "in": "query",
- "name": "maxDistanceMiles",
- "type": "number",
- "x-example": 5
- },
- {
- "description": "Consumer latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
- },
- {
- "description": "Consumer longitude",
- "in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -122.461
+ "x-example": "xtmHKGT0"
}
],
"produces": [
@@ -254406,7 +283186,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.searchItemsResponseDoc"
+ "$ref": "#/definitions/flashscore.matchNewsResponseDoc"
}
},
"400": {
@@ -254415,12 +283195,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -254433,43 +283207,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Search DoorDash dishes and items",
+ "summary": "Flashscore match news references",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/store/{store_id}": {
+ "/flashscore/match-standings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns location-aware DoorDash store metadata through the Android mobile guest flow. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-store",
+ "description": "Returns the match-linked table feed. Select overall, home/away, form, over/under, half-time/full-time, live table, or top scorers; the raw provider format is preserved. Defaults to overall.",
+ "operationId": "flashscore-match-standings",
"parameters": [
{
- "description": "Numeric DoorDash store ID",
- "in": "path",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "26282644"
- },
- {
- "description": "Delivery latitude",
+ "description": "Eight-character Flashscore match id",
"in": "query",
- "name": "latitude",
+ "name": "id",
"required": true,
- "type": "number",
- "x-example": 37.7825
+ "type": "string",
+ "x-example": "xtmHKGT0"
},
{
- "description": "Delivery longitude",
+ "description": "Standings/table view; defaults to overall",
+ "enum": [
+ "overall",
+ "home",
+ "away",
+ "form_overall",
+ "overunder_overall",
+ "form_home",
+ "form_away",
+ "top_scorers",
+ "htft_overall",
+ "htft_home",
+ "htft_away",
+ "live_overall",
+ "overunder_home",
+ "overunder_away"
+ ],
"in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -122.461
+ "name": "view",
+ "type": "string",
+ "x-example": "overall"
}
],
"produces": [
@@ -254479,7 +283260,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.storeResponseDoc"
+ "$ref": "#/definitions/flashscore.responseDoc"
}
},
"400": {
@@ -254494,12 +283275,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -254512,43 +283287,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a DoorDash store",
+ "summary": "Flashscore match league standings",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/store/{store_id}/fulfillment": {
+ "/flashscore/match-stats": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns store fulfillment methods, delivery fee info, and scheduling details from the Android mobile guest experience. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-store-fulfillment",
+ "description": "Returns Flashscore's public delimited statistics feed for a match id copied from a Flashscore match URL. The raw upstream feed is preserved as text because its format is not JSON.",
+ "operationId": "flashscore-match-stats",
"parameters": [
{
- "description": "Numeric DoorDash store ID",
- "in": "path",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "26282644"
- },
- {
- "description": "Delivery latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
- },
- {
- "description": "Delivery longitude",
+ "description": "Eight-character Flashscore match id",
"in": "query",
- "name": "longitude",
+ "name": "id",
"required": true,
- "type": "number",
- "x-example": -122.461
+ "type": "string",
+ "x-example": "xtmHKGT0"
}
],
"produces": [
@@ -254558,7 +283317,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.storeFulfillmentResponseDoc"
+ "$ref": "#/definitions/flashscore.responseDoc"
}
},
"400": {
@@ -254573,12 +283332,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -254591,43 +283344,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DoorDash store fulfillment details",
+ "summary": "Flashscore match statistics",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/store/{store_id}/info": {
+ "/flashscore/navigation": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a lightweight store info card (map coordinates, address, phone number) from the Android mobile guest experience. This is a distinct upstream contract from the full store endpoint and reliably includes address and coordinates. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-store-info",
+ "description": "Returns the first-party category hierarchy and competition links for a public Flashscore sport or category page. Start with / or a sport path from flashscore-sports, then follow returned paths to enumerate region, country, category, and competition pages. Country/category lists reflect the current upstream navigation.",
+ "operationId": "flashscore-navigation",
"parameters": [
{
- "description": "Numeric DoorDash store ID",
- "in": "path",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "26282644"
- },
- {
- "description": "Delivery latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
- },
- {
- "description": "Delivery longitude",
+ "description": "Relative Flashscore navigation path; defaults to /. Use a path returned by flashscore-sports or flashscore-navigation.",
"in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -122.461
+ "name": "path",
+ "type": "string",
+ "x-example": "/basketball/usa/"
}
],
"produces": [
@@ -254637,7 +283373,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.storeInfoResponseDoc"
+ "$ref": "#/definitions/flashscore.navigationResponseDoc"
}
},
"400": {
@@ -254652,12 +283388,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -254670,51 +283400,77 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DoorDash store contact info",
+ "summary": "Flashscore sport, category, country, and competition navigation",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/store/{store_id}/item/{item_id}": {
+ "/flashscore/news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns details for a specific menu item from the Android mobile guest experience. The item is matched by name, case-insensitively, against the store menu: DoorDash's anonymous menu surface exposes no stable per-item identifier, so use a name returned by the store menu or item search. A name that is not on the menu returns 404; no substitute item is returned. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-store-item",
+ "description": "Returns article previews from a public Flashscore News section. Use flashscore-news-categories to discover valid category keys. Page numbers follow the site's Show more pagination; article body text is not included.",
+ "operationId": "flashscore-news",
"parameters": [
{
- "description": "Numeric DoorDash store ID",
- "in": "path",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "26282644"
- },
- {
- "description": "Menu item name, matched case-insensitively",
- "in": "path",
- "name": "item_id",
- "required": true,
- "type": "string",
- "x-example": "Fluffy Pancakes"
- },
- {
- "description": "Delivery latitude",
+ "description": "News section key; defaults to all",
+ "enum": [
+ "all",
+ "football",
+ "uefa-nations-league",
+ "tennis",
+ "features",
+ "premier-league",
+ "nfl",
+ "mlb",
+ "nba",
+ "nhl",
+ "formula-1",
+ "champions-league",
+ "europa-league",
+ "conference-league",
+ "darts",
+ "snooker",
+ "golf",
+ "road-cycling",
+ "laliga",
+ "bundesliga",
+ "serie-a",
+ "ligue-1",
+ "badminton",
+ "handball",
+ "hockey",
+ "basketball",
+ "cricket",
+ "rugby-union",
+ "athletics",
+ "baseball",
+ "fifa",
+ "rugby-league",
+ "motorsport",
+ "aussie-rules",
+ "flashscore-ratings",
+ "american-sports",
+ "african-football",
+ "combat-sports",
+ "winter-sports",
+ "transfer-news"
+ ],
"in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
+ "name": "category",
+ "type": "string",
+ "x-example": "football"
},
{
- "description": "Delivery longitude",
+ "description": "1-based page, 1 to 100; defaults to 1",
"in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -122.461
+ "maximum": 100,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -254724,7 +283480,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.storeItemResponseDoc"
+ "$ref": "#/definitions/flashscore.newsListResponseDoc"
}
},
"400": {
@@ -254739,12 +283495,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -254757,43 +283507,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DoorDash menu item details",
+ "summary": "Flashscore News listings by section",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/store/{store_id}/menu": {
+ "/flashscore/news-article": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the location-aware DoorDash mobile menu, grouped into sections with item names, descriptions, and displayed prices. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-store-menu",
+ "description": "Returns public article metadata and image credits for an article id from a Flashscore match news listing. Article body text is not included.",
+ "operationId": "flashscore-news-article",
"parameters": [
{
- "description": "Numeric DoorDash store ID",
- "in": "path",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "26282644"
- },
- {
- "description": "Delivery latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
- },
- {
- "description": "Delivery longitude",
+ "description": "Eight-character Flashscore article id",
"in": "query",
- "name": "longitude",
+ "name": "id",
"required": true,
- "type": "number",
- "x-example": -122.461
+ "type": "string",
+ "x-example": "GYDHQ2yR"
}
],
"produces": [
@@ -254803,7 +283537,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.menuResponseDoc"
+ "$ref": "#/definitions/flashscore.newsArticleResponseDoc"
}
},
"400": {
@@ -254818,12 +283552,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -254836,45 +283564,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a DoorDash store menu",
+ "summary": "Flashscore news article metadata",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/doordash/store/{store_id}/reviews": {
+ "/flashscore/news-categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns store ratings and customer reviews from the Android mobile guest experience for a location. No DoorDash account or caller-supplied token is required.",
- "operationId": "doordash-store-reviews",
- "parameters": [
- {
- "description": "Numeric DoorDash store ID",
- "in": "path",
- "name": "store_id",
- "required": true,
- "type": "string",
- "x-example": "26282644"
- },
- {
- "description": "Delivery latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 37.7825
- },
+ "description": "Returns the exact currently usable public News section keys, names, and source paths from the live navigation inventory. Olympic Games is excluded because its linked page currently returns 404.",
+ "operationId": "flashscore-news-categories",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/flashscore.newsCategoriesResponseDoc"
+ }
+ }
+ },
+ "security": [
{
- "description": "Delivery longitude",
- "in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -122.461
+ "ApiKeyAuth": []
}
],
+ "summary": "Flashscore News categories",
+ "tags": [
+ "Flashscore"
+ ]
+ }
+ },
+ "/flashscore/ranking-categories": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists the live-verified public ranking categories, including tennis live rankings.",
+ "operationId": "flashscore-ranking-categories",
"produces": [
"application/json"
],
@@ -254882,25 +283613,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/doordash.storeReviewsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/flashscore.rankingCategoriesResponseDoc"
}
},
"503": {
@@ -254915,27 +283628,64 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DoorDash store reviews",
+ "summary": "Flashscore ranking categories",
"tags": [
- "DoorDash"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/event": {
+ "/flashscore/rankings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one event's metadata (league id, sport id, teams, status, start time) from DraftKings' credential-free public JSON. `event_id` is a numeric DraftKings event identifier (find it from an event's DraftKings Sportsbook page, or from the `id` field of an event returned by /draftkings/sportsbook/odds). The returned `league_id` is accepted by /draftkings/sportsbook/odds and /draftkings/sportsbook/futures. This endpoint does not include betting markets/odds.",
- "operationId": "draftkings-event",
+ "description": "Returns the first-party ranking feed pages for a supported ranking category. When page one is full, page two is included to cover the remaining rows.",
+ "operationId": "flashscore-rankings",
"parameters": [
{
- "description": "Numeric DraftKings event id",
+ "description": "Ranking category from flashscore-ranking-categories",
+ "enum": [
+ "fifa",
+ "tennis-atp",
+ "tennis-wta",
+ "tennis-atp-race",
+ "tennis-wta-race",
+ "tennis-atp-doubles",
+ "tennis-wta-doubles",
+ "tennis-atp-doubles-race",
+ "tennis-wta-doubles-race",
+ "badminton-bwf-singles-men",
+ "badminton-bwf-singles-women",
+ "badminton-bwf-doubles-men",
+ "badminton-bwf-doubles-women",
+ "badminton-bwf-mixed-doubles",
+ "golf-owgr",
+ "golf-wwgr",
+ "golf-pga-fedexcup",
+ "golf-pga-money",
+ "golf-dp-world-tour",
+ "golf-lpga",
+ "golf-asian-tour",
+ "golf-japan-tour",
+ "golf-sunshine-tour",
+ "golf-korn-ferry",
+ "golf-champions-tour",
+ "darts-world-ranking",
+ "snooker-world-ranking",
+ "tennis-atp-live",
+ "tennis-wta-live",
+ "tennis-atp-race-live",
+ "tennis-wta-race-live",
+ "tennis-atp-doubles-live",
+ "tennis-wta-doubles-live",
+ "tennis-atp-doubles-race-live",
+ "tennis-wta-doubles-race-live"
+ ],
"in": "query",
- "name": "event_id",
+ "name": "category",
"required": true,
"type": "string",
- "x-example": "34240140"
+ "x-example": "tennis-atp"
}
],
"produces": [
@@ -254945,7 +283695,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.eventResponseDoc"
+ "$ref": "#/definitions/flashscore.rankingResponseDoc"
}
},
"400": {
@@ -254960,12 +283710,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -254978,24 +283722,73 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook event",
+ "summary": "Flashscore rankings",
"tags": [
- "DraftKings Sportsbook"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/event-context": {
+ "/flashscore/scores": {
"get": {
- "description": "Returns public sport, league, and event navigation identifiers for a numeric DraftKings event id. Use it to associate an event with DraftKings Sportsbook's public sport and league navigation.",
- "operationId": "draftkings-event-context",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the public score feed for one sport and date-picker day offset. The upstream field-delimited text is preserved because field semantics vary by sport. Use flashscore-sports to discover sport keys, flashscore-navigation for the current category/country/competition directory, and flashscore-competitions for competitions on the selected date.",
+ "operationId": "flashscore-scores",
"parameters": [
{
- "description": "Numeric DraftKings event id",
+ "description": "Sport key",
+ "enum": [
+ "football",
+ "tennis",
+ "basketball",
+ "hockey",
+ "golf",
+ "formula-1",
+ "baseball",
+ "snooker",
+ "american-football",
+ "aussie-rules",
+ "badminton",
+ "bandy",
+ "beach-soccer",
+ "beach-volleyball",
+ "boxing",
+ "cricket",
+ "cycling",
+ "darts",
+ "esports",
+ "field-hockey",
+ "floorball",
+ "futsal",
+ "handball",
+ "horse-racing",
+ "kabaddi",
+ "mma",
+ "motorsport",
+ "netball",
+ "pesapallo",
+ "rugby-league",
+ "rugby-union",
+ "table-tennis",
+ "volleyball",
+ "water-polo",
+ "winter-sports"
+ ],
"in": "query",
- "name": "event_id",
+ "name": "sport",
"required": true,
"type": "string",
- "x-example": "34522271"
+ "x-example": "football"
+ },
+ {
+ "description": "Days from today; -7 to 7; defaults to 0",
+ "in": "query",
+ "maximum": 7,
+ "minimum": -7,
+ "name": "day_offset",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -255005,7 +283798,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.eventContextResponseDoc"
+ "$ref": "#/definitions/flashscore.responseDoc"
}
},
"400": {
@@ -255014,18 +283807,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -255038,35 +283819,29 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook event context",
+ "summary": "Flashscore scores and fixtures by sport",
"tags": [
- "DraftKings Sportsbook"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/event-markets": {
+ "/flashscore/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one event's betting markets and selections for a specific market category, from DraftKings' credential-free public JSON. `event_id` is a numeric DraftKings event identifier (find it from the `id` field of an event returned by /draftkings/sportsbook/odds). `subcategory_id` selects the market category (e.g. game lines, a player-prop category, an alternate-line category) -- find one from the `subcategory_id` field on a market returned by /draftkings/sportsbook/odds, or from a DraftKings Sportsbook event page's own network traffic. An empty `markets` list is a valid response when the category has no markets currently posted for this event.",
- "operationId": "draftkings-event-markets",
+ "description": "Searches the same public entity index used by Flashscore's search box. Results can include teams, players, and tournament templates across supported sports.",
+ "operationId": "flashscore-search",
"parameters": [
{
- "description": "Numeric DraftKings event id",
- "in": "query",
- "name": "event_id",
- "required": true,
- "type": "string",
- "x-example": "34497667"
- },
- {
- "description": "Numeric DraftKings market subcategory id",
+ "description": "Search phrase (2 to 80 characters)",
"in": "query",
- "name": "subcategory_id",
+ "maxLength": 80,
+ "minLength": 2,
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "6354"
+ "x-example": "Champions League"
}
],
"produces": [
@@ -255076,7 +283851,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.eventMarketsResponseDoc"
+ "$ref": "#/definitions/flashscore.searchResponseDoc"
}
},
"400": {
@@ -255085,18 +283860,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -255109,19 +283872,19 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook event markets",
+ "summary": "Flashscore search",
"tags": [
- "DraftKings Sportsbook"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/featured-leagues": {
+ "/flashscore/sports": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public DraftKings Sportsbook leagues currently marked as featured in its sport navigation. Each item includes its numeric `id`, capability `tags`, live-offer status, and upstream featured ordering. Use the `id` as `league_id` with /draftkings/sportsbook/odds and /draftkings/sportsbook/futures.",
- "operationId": "draftkings-featured-leagues",
+ "description": "Returns every sport category visible in Flashscore's score navigation, with sport id, caller key, page path, and current event/competition counts. Counts are a live snapshot and may be zero when the sport has no fixtures in the current feed window.",
+ "operationId": "flashscore-sports",
"produces": [
"application/json"
],
@@ -255129,13 +283892,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.featuredLeaguesResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/flashscore.sportsResponseDoc"
}
},
"503": {
@@ -255150,37 +283907,19 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook featured leagues",
+ "summary": "Flashscore sports and live category counts",
"tags": [
- "DraftKings Sportsbook"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/futures": {
+ "/flashscore/top-search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns league-level futures markets and selections for a specific DraftKings market category, from DraftKings' credential-free public JSON. `league_id` is a numeric DraftKings league identifier and `subcategory_id` is a numeric futures category identifier. An empty `events` list is a valid response when the category has no markets currently posted for that league.",
- "operationId": "draftkings-futures",
- "parameters": [
- {
- "description": "Numeric DraftKings league id",
- "in": "query",
- "name": "league_id",
- "required": true,
- "type": "string",
- "x-example": "84240"
- },
- {
- "description": "Numeric DraftKings futures market subcategory id",
- "in": "query",
- "name": "subcategory_id",
- "required": true,
- "type": "string",
- "x-example": "17279"
- }
- ],
+ "description": "Returns the ten-or-fewer public team, player, and tournament results shown in Flashscore's search overlay. This is a changing curated list, not a complete entity directory.",
+ "operationId": "flashscore-top-search",
"produces": [
"application/json"
],
@@ -255188,25 +283927,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.futuresResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/flashscore.topSearchResponseDoc"
}
},
"503": {
@@ -255221,27 +283942,36 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook futures",
+ "summary": "Flashscore top search entities",
"tags": [
- "DraftKings Sportsbook"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/league-events": {
+ "/flashscore/tournament-events": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a DraftKings Sportsbook league's current public event directory, including event IDs, teams or other participants, start times, status, and public availability tags. Supply a numeric `league_id` from /draftkings/sportsbook/leagues, /draftkings/sportsbook/quick-links, /draftkings/sportsbook/featured-leagues, or /draftkings/sportsbook/event. This endpoint does not include betting markets or odds.",
- "operationId": "draftkings-league-events",
+ "description": "Returns a page of the public results or fixtures feed for any supported sport and competition path. Page 1 is embedded in the public tournament page; later pages follow its Show more feed sequence. Sum event_count from successive pages until total_events is reached.",
+ "operationId": "flashscore-tournament-events",
"parameters": [
{
- "description": "Numeric DraftKings league id",
+ "description": "Relative Flashscore competition season results or fixtures path",
"in": "query",
- "name": "league_id",
+ "name": "path",
"required": true,
"type": "string",
- "x-example": "84240"
+ "x-example": "/football/england/premier-league-2026-2027/fixtures/"
+ },
+ {
+ "description": "1-based page; defaults to 1",
+ "in": "query",
+ "maximum": 100,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -255251,7 +283981,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.leagueEventsResponseDoc"
+ "$ref": "#/definitions/flashscore.tournamentEventsResponseDoc"
}
},
"400": {
@@ -255266,53 +283996,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "DraftKings Sportsbook league event directory",
- "tags": [
- "DraftKings Sportsbook"
- ]
- }
- },
- "/draftkings/sportsbook/leagues": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns DraftKings Sportsbook's current public sport and league directory. Each league `id` is accepted as `league_id` by /draftkings/sportsbook/odds and /draftkings/sportsbook/futures.",
- "operationId": "draftkings-leagues",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/draftkings.leaguesResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -255325,19 +284008,29 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook sports and leagues",
+ "summary": "Flashscore tournament season results or fixtures",
"tags": [
- "DraftKings Sportsbook"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/live": {
+ "/flashscore/tournament-seasons": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the live events currently shown by DraftKings Sportsbook, including score state, period, primary markets, and market categories that can be used with /draftkings/sportsbook/event-markets. An empty `events` list is valid when DraftKings has no live events at request time.",
- "operationId": "draftkings-live",
+ "description": "Lists the seasons and winners from a public competition archive page. Discover archive paths through flashscore-navigation or flashscore-competitions. Each returned results_path and fixtures_path can be passed to flashscore-tournament-events to retrieve season event feeds.",
+ "operationId": "flashscore-tournament-seasons",
+ "parameters": [
+ {
+ "description": "Relative Flashscore competition archive path ending in /archive/",
+ "in": "query",
+ "name": "path",
+ "required": true,
+ "type": "string",
+ "x-example": "/football/europe/champions-league/archive/"
+ }
+ ],
"produces": [
"application/json"
],
@@ -255345,11 +284038,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.liveResponseDoc"
+ "$ref": "#/definitions/flashscore.tournamentSeasonsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -255366,27 +284065,49 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook live events",
+ "summary": "Flashscore tournament archive seasons",
"tags": [
- "DraftKings Sportsbook"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/odds": {
+ "/flashscore/tournament-standings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the primary betting markets (moneyline, spread, total) for every upcoming event in a DraftKings Sportsbook league, from DraftKings' credential-free public JSON. `league_id` is a numeric DraftKings league identifier (find it from a league's DraftKings Sportsbook page). An empty `events` list is a valid response when nothing is currently scheduled.",
- "operationId": "draftkings-odds",
+ "description": "Returns a competition-level table feed independent of a match id. Discover the stage-specific view values with flashscore-tournament-standings-views. Data remains in Flashscore's raw delimited format.",
+ "operationId": "flashscore-tournament-standings",
"parameters": [
{
- "description": "Numeric DraftKings league id",
+ "description": "Relative Flashscore competition path from flashscore-navigation or flashscore-competitions; omit /standings/",
"in": "query",
- "name": "league_id",
+ "name": "path",
"required": true,
"type": "string",
- "x-example": "84240"
+ "x-example": "/football/england/premier-league/"
+ },
+ {
+ "description": "View returned by flashscore-tournament-standings-views; defaults to overall",
+ "enum": [
+ "overall",
+ "home",
+ "away",
+ "form_overall",
+ "form_home",
+ "form_away",
+ "overunder_overall",
+ "overunder_home",
+ "overunder_away",
+ "htft_overall",
+ "htft_home",
+ "htft_away",
+ "top_scorers"
+ ],
+ "in": "query",
+ "name": "view",
+ "type": "string",
+ "x-example": "overall"
}
],
"produces": [
@@ -255396,7 +284117,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.oddsResponseDoc"
+ "$ref": "#/definitions/flashscore.tournamentStandingsResponseDoc"
}
},
"400": {
@@ -255411,12 +284132,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -255429,19 +284144,29 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook odds",
+ "summary": "Flashscore competition standings table",
"tags": [
- "DraftKings Sportsbook"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/quick-links": {
+ "/flashscore/tournament-standings-views": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the ordered league shortcuts currently prioritized on DraftKings Sportsbook's public home page. Each item includes a numeric `league_id` accepted by /draftkings/sportsbook/odds and /draftkings/sportsbook/futures.",
- "operationId": "draftkings-quick-links",
+ "description": "Returns the table views currently exposed on a public Flashscore competition standings page. The view set varies by competition and stage; use a returned value with flashscore-tournament-standings.",
+ "operationId": "flashscore-tournament-standings-views",
+ "parameters": [
+ {
+ "description": "Relative Flashscore competition path from flashscore-navigation or flashscore-competitions; omit /standings/",
+ "in": "query",
+ "name": "path",
+ "required": true,
+ "type": "string",
+ "x-example": "/football/england/premier-league/"
+ }
+ ],
"produces": [
"application/json"
],
@@ -255449,11 +284174,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.quickLinksResponseDoc"
+ "$ref": "#/definitions/flashscore.tournamentStandingsViewsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -255470,49 +284201,60 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook quick links",
+ "summary": "Flashscore competition standings view discovery",
"tags": [
- "DraftKings Sportsbook"
+ "Flashscore"
]
}
},
- "/draftkings/sportsbook/team": {
+ "/foodpanda/restaurant": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns stable team metadata embedded in a public DraftKings Sportsbook team page. Supply `team_id`, `sport`, and `slug` from an item returned by /draftkings/sportsbook/teams. Allowed `sport` values: `football`, `hockey`, `basketball`, `baseball`.",
- "operationId": "draftkings-team",
+ "description": "Returns one foodpanda restaurant's detail by code: name, address, coordinates, budget tier, rating and review count, cuisines, minimum order amount, minimum delivery fee, delivery/pickup availability, timezone, and a hero image. Supplying latitude and longitude only affects the (optional) computed fields the upstream itself returns for that coordinate; it does not filter or reject the lookup.",
+ "operationId": "foodpanda-restaurant",
"parameters": [
{
- "description": "Numeric DraftKings team id",
+ "description": "Delivery Hero market the restaurant belongs to. Defaults to sg.",
+ "enum": [
+ "sg",
+ "pk",
+ "bd",
+ "hk",
+ "my",
+ "ph",
+ "la",
+ "kh",
+ "tw",
+ "mm"
+ ],
"in": "query",
- "name": "team_id",
- "required": true,
+ "name": "market",
"type": "string",
- "x-example": "18454"
+ "x-example": "sg"
},
{
- "description": "Sport: football, hockey, basketball, baseball",
- "enum": [
- "football",
- "hockey",
- "basketball",
- "baseball"
- ],
+ "description": "Restaurant code, from /foodpanda/search's code field",
"in": "query",
- "name": "sport",
+ "name": "code",
"required": true,
"type": "string",
- "x-example": "football"
+ "x-example": "dxpr"
},
{
- "description": "Lowercase DraftKings team slug",
+ "description": "Caller latitude, optional",
"in": "query",
- "name": "slug",
- "required": true,
- "type": "string",
- "x-example": "arizona-cardinals"
+ "name": "latitude",
+ "type": "number",
+ "x-example": 1.3521
+ },
+ {
+ "description": "Caller longitude, optional",
+ "in": "query",
+ "name": "longitude",
+ "type": "number",
+ "x-example": 103.8198
}
],
"produces": [
@@ -255522,7 +284264,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.teamResponseDoc"
+ "$ref": "#/definitions/foodpanda.restaurantResponseDoc"
}
},
"400": {
@@ -255537,12 +284279,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -255555,35 +284291,46 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook team",
+ "summary": "Get one foodpanda restaurant's detail",
"tags": [
- "DraftKings Sportsbook"
+ "Foodpanda"
]
}
},
- "/draftkings/sportsbook/teams": {
+ "/foodpanda/restaurant/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the teams listed on DraftKings Sportsbook's public Teams page for one league. Allowed `league` values: `nfl`, `nhl`, `nba`, `cbb`, `mlb`, `cfb`.",
- "operationId": "draftkings-teams",
+ "description": "Returns one restaurant's full menu grouped into categories, plus opening hours, price range, cuisines served, and aggregate rating. Every item carries a title, description, image, sold-out flag, and price -- original_price plus discounted_price when the item is currently discounted.",
+ "operationId": "foodpanda-restaurant-menu",
"parameters": [
{
- "description": "League: nfl, nhl, nba, cbb, mlb, cfb",
+ "description": "Delivery Hero market the restaurant belongs to. Defaults to sg.",
"enum": [
- "nfl",
- "nhl",
- "nba",
- "cbb",
- "mlb",
- "cfb"
+ "sg",
+ "pk",
+ "bd",
+ "hk",
+ "my",
+ "ph",
+ "la",
+ "kh",
+ "tw",
+ "mm"
],
"in": "query",
- "name": "league",
+ "name": "market",
+ "type": "string",
+ "x-example": "sg"
+ },
+ {
+ "description": "Restaurant code, from /foodpanda/search's code field",
+ "in": "query",
+ "name": "code",
"required": true,
"type": "string",
- "x-example": "nfl"
+ "x-example": "dxpr"
}
],
"produces": [
@@ -255593,7 +284340,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/draftkings.teamsResponseDoc"
+ "$ref": "#/definitions/foodpanda.menuResponseDoc"
}
},
"400": {
@@ -255602,8 +284349,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -255620,41 +284367,46 @@
"ApiKeyAuth": []
}
],
- "summary": "DraftKings Sportsbook league teams",
+ "summary": "Get one foodpanda restaurant's menu with prices",
"tags": [
- "DraftKings Sportsbook"
+ "Foodpanda"
]
}
},
- "/duckduckgo/image": {
+ "/foodpanda/restaurant/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized DuckDuckGo image results for a query string: title, source page URL, image URL, thumbnail, dimensions, and hostname, plus page-based pagination. Results are fetched from DuckDuckGo's own image JSON API.",
- "operationId": "duckduckgo-image",
+ "description": "Returns a sample of real customer reviews for one restaurant -- author name, publish date, review text, and a 1-5 rating. This is the curated sample the restaurant's own storefront page embeds for search-engine rich results, not the full review corpus a logged-in customer would see in the app; the number returned scales with the restaurant's popularity rather than being a fixed cap, and can be empty for a restaurant with few or no reviews.",
+ "operationId": "foodpanda-restaurant-reviews",
"parameters": [
{
- "description": "Search query",
+ "description": "Delivery Hero market the restaurant belongs to. Defaults to sg.",
+ "enum": [
+ "sg",
+ "pk",
+ "bd",
+ "hk",
+ "my",
+ "ph",
+ "la",
+ "kh",
+ "tw",
+ "mm"
+ ],
"in": "query",
- "name": "q",
- "required": true,
+ "name": "market",
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "1-based page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "sg"
},
{
- "description": "DuckDuckGo region/locale code, e.g. us-en, uk-en, wt-wt (worldwide, the default)",
+ "description": "Restaurant code, from /foodpanda/search's code field",
"in": "query",
- "name": "region",
+ "name": "code",
+ "required": true,
"type": "string",
- "x-example": "us-en"
+ "x-example": "dxpr"
}
],
"produces": [
@@ -255664,7 +284416,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/duckduckgo.imageResponseDoc"
+ "$ref": "#/definitions/foodpanda.reviewsResponseDoc"
}
},
"400": {
@@ -255679,18 +284431,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -255703,41 +284443,75 @@
"ApiKeyAuth": []
}
],
- "summary": "Search DuckDuckGo image results",
+ "summary": "Get a sample of one foodpanda restaurant's customer reviews",
"tags": [
- "DuckDuckGo Search"
+ "Foodpanda"
]
}
},
- "/duckduckgo/news": {
+ "/foodpanda/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized DuckDuckGo news results for a query string: title, destination URL, source, excerpt, thumbnail, and relative/published time, plus page-based pagination. Results are fetched from DuckDuckGo's own news JSON API.",
- "operationId": "duckduckgo-news",
+ "description": "Returns restaurants delivering to a latitude/longitude in a foodpanda market, optionally filtered by a numeric cuisine id (call foodpanda_search_cuisines for the live, location-scoped set of valid ids). Each restaurant carries its code (the value the restaurant and menu endpoints take), name, address, coordinates, budget tier, rating, cuisines, minimum order amount and delivery fee, delivery/pickup availability, and a hero image. A location with no coverage returns an empty list rather than an error.",
+ "operationId": "foodpanda-search",
"parameters": [
{
- "description": "Search query",
+ "description": "Delivery Hero market. Defaults to sg.",
+ "enum": [
+ "sg",
+ "pk",
+ "bd",
+ "hk",
+ "my",
+ "ph",
+ "la",
+ "kh",
+ "tw",
+ "mm"
+ ],
"in": "query",
- "name": "q",
- "required": true,
+ "name": "market",
"type": "string",
- "x-example": "openai"
+ "x-example": "sg"
},
{
- "description": "1-based page number, defaults to 1",
+ "description": "Search center latitude",
"in": "query",
- "name": "page",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 1.3521
+ },
+ {
+ "description": "Search center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": 103.8198
+ },
+ {
+ "description": "Numeric cuisine id to filter by. Cuisine ids are location- and market-scoped, not a fixed global enum -- call foodpanda_search_cuisines with the same market/latitude/longitude to get the valid id set for this location",
+ "in": "query",
+ "name": "cuisine_id",
"type": "integer",
- "x-example": 1
+ "x-example": 44
},
{
- "description": "DuckDuckGo region/locale code, e.g. us-en, uk-en, wt-wt (worldwide, the default)",
+ "description": "Restaurants to return, clamped to 50 (default 20)",
"in": "query",
- "name": "region",
- "type": "string",
- "x-example": "us-en"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "description": "Result offset for pagination (default 0)",
+ "in": "query",
+ "name": "offset",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -255747,7 +284521,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/duckduckgo.newsResponseDoc"
+ "$ref": "#/definitions/foodpanda.searchResponseDoc"
}
},
"400": {
@@ -255756,24 +284530,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -255786,64 +284542,54 @@
"ApiKeyAuth": []
}
],
- "summary": "Search DuckDuckGo news results",
+ "summary": "Search foodpanda restaurants near a location",
"tags": [
- "DuckDuckGo Search"
+ "Foodpanda"
]
}
},
- "/duckduckgo/search": {
+ "/foodpanda/search/cuisines": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized DuckDuckGo web search results for a query string: title, destination URL, description, and hostname, plus page-based pagination. DuckDuckGo wraps every result link in its own click-tracking redirect; this endpoint always returns the decoded destination URL, never the raw redirect link. Results are fetched from DuckDuckGo's own server-rendered search page.",
- "operationId": "duckduckgo-search",
+ "description": "Returns foodpanda's own live cuisine catalog for a latitude/longitude in a foodpanda market -- the exact facet list (with real, live restaurant counts) the site's own search page cuisine filter sidebar is populated from. Every entry's id is a valid value for /foodpanda/search's cuisine_id parameter. Cuisine ids are location- and market-scoped, not a fixed global enum: the same coordinate in a different neighborhood, or a different market, can return a different id/count set entirely, so call this endpoint with the same market/latitude/longitude you intend to search rather than reusing ids captured elsewhere.",
+ "operationId": "foodpanda-search-cuisines",
"parameters": [
{
- "description": "Search query",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "openai"
- },
- {
- "description": "1-based page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "DuckDuckGo region/locale code, e.g. us-en, uk-en, wt-wt (worldwide, the default)",
+ "description": "Delivery Hero market. Defaults to sg.",
+ "enum": [
+ "sg",
+ "pk",
+ "bd",
+ "hk",
+ "my",
+ "ph",
+ "la",
+ "kh",
+ "tw",
+ "mm"
+ ],
"in": "query",
- "name": "region",
+ "name": "market",
"type": "string",
- "x-example": "us-en"
+ "x-example": "sg"
},
{
- "description": "Restrict results to a recency window",
- "enum": [
- "d",
- "w",
- "m",
- "y"
- ],
+ "description": "Search center latitude",
"in": "query",
- "name": "time_range",
- "type": "string"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 1.3521
},
{
- "description": "Safe search level, defaults to DuckDuckGo's own moderate setting when omitted",
- "enum": [
- "strict",
- "moderate",
- "off"
- ],
+ "description": "Search center longitude",
"in": "query",
- "name": "safe_search",
- "type": "string"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": 103.8198
}
],
"produces": [
@@ -255853,7 +284599,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/duckduckgo.searchResponseDoc"
+ "$ref": "#/definitions/foodpanda.cuisinesResponseDoc"
}
},
"400": {
@@ -255862,24 +284608,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -255892,34 +284620,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search DuckDuckGo web results",
+ "summary": "Get foodpanda's live cuisine filter catalog for a location",
"tags": [
- "DuckDuckGo Search"
+ "Foodpanda"
]
}
},
- "/duckduckgo/shopping": {
+ "/forbes/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized DuckDuckGo shopping results for a query string: title, brand, merchant, description, price, rating, and review count, plus total page count. DuckDuckGo's shopping vertical is ad-funded, syndicated product listings, not organic content; every product link is wrapped in an ad-click-tracking redirect with no clean destination to unwrap, so no destination URL is returned. DuckDuckGo's own pagination token for this vertical is an opaque per-response blob rather than a plain page offset, so only the first page is supported.",
- "operationId": "duckduckgo-shopping",
+ "description": "Returns public Forbes article metadata and body content from Forbes's same-host content JSON endpoint. The response preserves rich body HTML, normalized paragraphs, headings, and public embed metadata. Accepts dated /sites//... and /councils//... URLs; it does not bypass login, subscription, or bot challenges.",
+ "operationId": "forbes-article",
"parameters": [
{
- "description": "Search query",
+ "description": "Canonical HTTPS Forbes article URL",
"in": "query",
- "name": "q",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "running shoes"
- },
- {
- "description": "DuckDuckGo market code, e.g. us-en, uk-en",
- "in": "query",
- "name": "region",
- "type": "string",
- "x-example": "us-en"
+ "x-example": "https://www.forbes.com/sites/example/2026/09/21/example-story/"
}
],
"produces": [
@@ -255929,7 +284647,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/duckduckgo.shoppingResponseDoc"
+ "$ref": "#/definitions/forbes.articleResponseDoc"
}
},
"400": {
@@ -255968,41 +284686,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Search DuckDuckGo shopping results",
+ "summary": "Forbes article content",
"tags": [
- "DuckDuckGo Search"
+ "Forbes"
]
}
},
- "/duckduckgo/video": {
+ "/forbes/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized DuckDuckGo video results for a query string: title, destination URL, description, duration, thumbnail, publisher/uploader, published time, and view count, plus page-based pagination. Results are fetched from DuckDuckGo's own video JSON API.",
- "operationId": "duckduckgo-video",
+ "description": "Returns one Forbes contributor or staff author's public byline page: name, display type, bio, headshot, and their most recent bylined articles. This is the journalist byline page at forbes.com/sites//, distinct from forbes-person, which is a billionaire net-worth profile from Forbes's rich-list data.",
+ "operationId": "forbes-author",
"parameters": [
{
- "description": "Search query",
+ "description": "Forbes contributor slug, e.g. alisondurkee",
"in": "query",
- "name": "q",
- "required": true,
+ "name": "slug",
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "1-based page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "alisondurkee"
},
{
- "description": "DuckDuckGo region/locale code, e.g. us-en, uk-en, wt-wt (worldwide, the default)",
+ "description": "Canonical forbes.com/sites// URL, as an alternative to slug",
"in": "query",
- "name": "region",
+ "name": "url",
"type": "string",
- "x-example": "us-en"
+ "x-example": "https://www.forbes.com/sites/alisondurkee/"
}
],
"produces": [
@@ -256012,7 +284719,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/duckduckgo.videoResponseDoc"
+ "$ref": "#/definitions/forbes.authorResponseDoc"
}
},
"400": {
@@ -256051,26 +284758,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Search DuckDuckGo video results",
+ "summary": "Forbes contributor/staff author profile",
"tags": [
- "DuckDuckGo Search"
+ "Forbes"
]
}
},
- "/dunkin/directory": {
+ "/forbes/billionaires": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one level of Dunkin's store directory tree. Omit path for the root, which lists every US state Dunkin operates in; pass a state's path (e.g. \"ny\") to list its cities, or a state/city path (e.g. \"ny/new-york\") to list its stores. Each child carries its name, path, URL and how many stores sit under that branch. A child with is_store true is a store rather than another directory level -- pass its path (a store id) to GET /dunkin/store. This is a directory browse, not a proximity search: use GET /dunkin/nearby for a radius lookup.",
- "operationId": "dunkin-directory",
+ "description": "Returns a paginated Forbes billionaires list from the public Forbes JSON feed. The default field set includes ranking, worth, person identity, citizenship, category, industry, organization, image, and biography fields.",
+ "operationId": "forbes-billionaires",
"parameters": [
{
- "description": "Directory path from a previous response's children[].path: a state code (e.g. \\",
+ "default": 2026,
+ "description": "Forbes list year",
"in": "query",
- "name": "path",
- "type": "string",
- "x-example": "ny"
+ "name": "year",
+ "type": "integer"
+ },
+ {
+ "default": 50,
+ "description": "Page size (1-100)",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "default": 0,
+ "description": "Zero-based offset",
+ "in": "query",
+ "name": "start",
+ "type": "integer"
}
],
"produces": [
@@ -256080,7 +284798,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/dunkin.directoryResponseDoc"
+ "$ref": "#/definitions/forbes.billionairesResponseDoc"
}
},
"400": {
@@ -256101,6 +284819,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -256113,19 +284837,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse the Dunkin store directory",
+ "summary": "Forbes billionaires list",
"tags": [
- "Dunkin"
+ "Forbes"
]
}
},
- "/dunkin/menu": {
+ "/forbes/categories": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Dunkin's national menu: item names, descriptions and photos grouped into categories (Iced Drinks, Hot Drinks, Frozen Drinks, Sandwiches & Wraps, Savory Bites, Donuts & Bakery, Snacks and Sides). Dunkin publishes one shared menu across every US store, so this takes no store parameter. Does not carry prices or nutrition -- pricing varies by market/franchisee and isn't part of this content.",
- "operationId": "dunkin-menu",
+ "description": "Lists the current public Forbes navigation taxonomy, including business, money, innovation, leadership, lifestyle, Forbes Vetted, Advisor, Health, and their public subsections. Article promos, account surfaces, games, video-only links, and external hosts are excluded.",
+ "operationId": "forbes-categories",
"produces": [
"application/json"
],
@@ -256133,7 +284854,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/dunkin.menuResponseDoc"
+ "$ref": "#/definitions/forbes.categoriesResponseDoc"
}
},
"429": {
@@ -256142,6 +284863,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -256154,56 +284881,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Dunkin's national menu",
+ "summary": "Forbes public editorial sections",
"tags": [
- "Dunkin"
+ "Forbes"
]
}
},
- "/dunkin/nearby": {
+ "/forbes/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Dunkin restaurants within a radius of a latitude/longitude, ordered nearest first, each with its distance in miles and kilometres, full address, phone, coordinates, the published week of hours, whether it's permanently closed, amenities, payment methods, pickup/delivery service types, which third-party delivery platforms are active, its Google Place id, timezone, and website/menu/order URLs. This is the proximity search the directory browse cannot do -- GET /dunkin/directory walks a state to city to store tree, which requires knowing the administrative path in advance. Each result carries the store id as `path`, which GET /dunkin/store also takes, so the two chain directly. `total_in_radius` reports how many stores fall inside the radius overall, which is usually far more than one page; use `offset` to walk it. A coordinate with no Dunkin nearby returns an empty list rather than an error.",
- "operationId": "dunkin-nearby",
+ "description": "Returns current Forbes article-card metadata from a public Forbes navigation path. Use /forbes/categories to discover paths.",
+ "operationId": "forbes-headlines",
"parameters": [
{
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 40.7128
- },
- {
- "description": "Search center longitude",
+ "description": "Forbes navigation path from /forbes/categories",
"in": "query",
- "name": "longitude",
+ "name": "section",
"required": true,
- "type": "number",
- "x-example": -74.006
- },
- {
- "description": "Search radius in miles, 1-100 (default 25)",
- "in": "query",
- "name": "radius",
- "type": "integer",
- "x-example": 25
- },
- {
- "description": "Maximum stores to return, 1-50 (default 10)",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Result offset for paging through total_in_radius (default 0)",
- "in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
+ "type": "string",
+ "x-example": "/business/"
}
],
"produces": [
@@ -256213,7 +284908,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/dunkin.nearbyResponseDoc"
+ "$ref": "#/definitions/forbes.headlinesResponseDoc"
}
},
"400": {
@@ -256234,6 +284929,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -256246,27 +284947,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Find Dunkin stores near a coordinate, nearest first",
+ "summary": "Forbes section headlines",
"tags": [
- "Dunkin"
+ "Forbes"
]
}
},
- "/dunkin/store": {
+ "/forbes/person": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Dunkin store: name, full postal address, phone, coordinates, opening hours for every day of the week, whether it's permanently closed, amenities (curbside pickup, drive-thru, wifi, kosher, turbo oven, K-Cup pods), Dunkin's own free-text feature labels, accepted payment methods, pickup/delivery service types, which third-party delivery platforms are active, the Google Place id, and the store's website/menu/order URLs. path is a store id -- from a /dunkin/directory child with is_store true, a /dunkin/nearby result's path, or the trailing digits of a dunkindonuts.com store URL. An unknown id returns a 404.",
- "operationId": "dunkin-store",
+ "description": "Returns public Forbes JSON profile data plus the profile page's biography, real-time net-worth display, wealth history, personal facts, editor update, and list-appearance metadata.",
+ "operationId": "forbes-person",
"parameters": [
{
- "description": "A Dunkin store id, from a /dunkin/directory child with is_store true, a /dunkin/nearby result's path, or the trailing digits of a dunkindonuts.com store URL",
+ "description": "Forbes person URI",
"in": "query",
- "name": "path",
+ "name": "uri",
"required": true,
"type": "string",
- "x-example": "307107"
+ "x-example": "vladimir-lisin"
}
],
"produces": [
@@ -256276,7 +284974,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/dunkin.storeResponseDoc"
+ "$ref": "#/definitions/forbes.personResponseDoc"
}
},
"400": {
@@ -256297,6 +284995,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -256309,24 +285013,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Dunkin store's detail",
+ "summary": "Forbes person profile",
"tags": [
- "Dunkin"
+ "Forbes"
]
}
},
- "/dw/article": {
+ "/foreignaffairs/article": {
"get": {
- "description": "Returns public Deutsche Welle article metadata and body paragraphs from a canonical article URL.",
- "operationId": "dw-article",
+ "description": "Returns public article metadata and ordered body paragraphs from a canonical Foreign Affairs article URL. Incomplete, truncated, challenge, or contaminated upstream HTML is rejected as an upstream error.",
+ "operationId": "foreignaffairs-article",
"parameters": [
{
- "description": "Canonical DW article URL",
+ "description": "Canonical Foreign Affairs article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.dw.com/en/south-africa-11-killed-in-attack-on-house-party/a-79382743"
+ "x-example": "https://www.foreignaffairs.com/united-states/americas-attrition-trap"
}
],
"produces": [
@@ -256336,7 +285040,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/foreignaffairs.articleResponseDoc"
}
},
"400": {
@@ -256351,6 +285055,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -256363,24 +285073,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DW article content",
+ "summary": "Extract a Foreign Affairs article",
"tags": [
- "DW"
+ "ForeignAffairs"
]
}
},
- "/dw/author": {
+ "/foreignaffairs/author": {
"get": {
- "description": "Returns one Deutsche Welle correspondent's public profile (name, expertise, biography) and their recent articles from a canonical person-profile URL. Many DW breaking-news items are bylined to the \"Deutsche Welle\" editorial organization rather than a named person; those articles have no person-profile URL to look up.",
- "operationId": "dw-author",
+ "description": "Returns one Foreign Affairs contributor's public profile: name, bio, and the recent articles listed on their contributor page. Foreign Affairs does not paginate this page; it shows a fixed recent-article list.",
+ "operationId": "foreignaffairs-author",
"parameters": [
{
- "description": "Canonical www.dw.com/en//person- URL",
+ "description": "Author slug, e.g. robert-kagan",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "robert-kagan"
+ },
+ {
+ "description": "Canonical foreignaffairs.com/authors/ URL; alternative to slug",
"in": "query",
"name": "url",
- "required": true,
"type": "string",
- "x-example": "https://www.dw.com/en/cathrin-schaer/person-55594156"
+ "x-example": "https://www.foreignaffairs.com/authors/robert-kagan"
}
],
"produces": [
@@ -256390,7 +285106,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.dwAuthorResponseDoc"
+ "$ref": "#/definitions/foreignaffairs.authorResponseDoc"
}
},
"400": {
@@ -256405,69 +285121,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get a DW author profile",
- "tags": [
- "DW"
- ]
- }
- },
- "/dw/headlines": {
- "get": {
- "description": "Returns fresh headlines from one public Deutsche Welle section.",
- "operationId": "dw-headlines",
- "parameters": [
- {
- "description": "DW section slug",
- "enum": [
- "africa",
- "asia",
- "europe",
- "latin-america",
- "middle-east",
- "north-america",
- "germany",
- "climate",
- "equality",
- "health",
- "human-rights",
- "migration",
- "technology",
- "business",
- "science",
- "environment",
- "culture",
- "sports"
- ],
- "in": "query",
- "name": "section",
- "required": true,
- "type": "string"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -256484,16 +285139,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DW section headlines",
+ "summary": "Get a Foreign Affairs author profile",
"tags": [
- "DW"
+ "ForeignAffairs"
]
}
},
- "/dw/news": {
+ "/foreignaffairs/headlines": {
"get": {
- "description": "Returns fresh Deutsche Welle stories from the public RSS feed.",
- "operationId": "dw-news",
+ "description": "Returns fresh Foreign Affairs headlines from the site's public, site-wide RSS feed. Article pages and account state are not required.",
+ "operationId": "foreignaffairs-headlines",
"produces": [
"application/json"
],
@@ -256501,39 +285156,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/foreignaffairs.headlinesResponseDoc"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get DW top stories",
- "tags": [
- "DW"
- ]
- }
- },
- "/dw/sections": {
- "get": {
- "description": "Returns the complete public Deutsche Welle English-edition section inventory (regions, topics, and categories) accepted by /dw/headlines.",
- "operationId": "dw-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -256542,26 +285177,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get DW sections",
+ "summary": "Get Foreign Affairs site-wide headlines",
"tags": [
- "DW"
+ "ForeignAffairs"
]
}
},
- "/ebay/item/{item_id}": {
+ "/foreignaffairs/topic": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized details for a public eBay item listing.",
- "operationId": "ebay-item",
+ "description": "Returns the newest items from one Foreign Affairs topic RSS feed. Discover accepted values with foreignaffairs-topics; unknown topic values are rejected before upstream I/O.",
+ "operationId": "foreignaffairs-topic",
"parameters": [
{
- "description": "eBay item ID",
- "in": "path",
- "name": "item_id",
+ "description": "Foreign Affairs topic slug from foreignaffairs-topics",
+ "in": "query",
+ "name": "topic",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "economics"
}
],
"produces": [
@@ -256571,7 +285204,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.itemResponseDoc"
+ "$ref": "#/definitions/foreignaffairs.topicResponseDoc"
}
},
"400": {
@@ -256580,24 +285213,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -256610,58 +285231,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get eBay item details",
+ "summary": "Get a Foreign Affairs topic feed",
"tags": [
- "eBay"
+ "ForeignAffairs"
]
}
},
- "/ebay/live/streams": {
+ "/foreignaffairs/topics": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns currently live and upcoming eBay Live streams for a category channel.",
- "operationId": "ebay-live-streams",
- "parameters": [
- {
- "description": "eBay Live category channel, defaults to explore",
- "enum": [
- "explore",
- "IPqZx79LNuwFcSVt",
- "oHjQFTlZ5cYgWkjB",
- "l68DJtBAVZge4x4n",
- "2Nk3OYiOJHfXqpWG",
- "5quuEnjO3axyz46U",
- "nGpMTpm13Q86Eaoo",
- "sYRxeaskGmNC6xaB",
- "iYaYo88zN2vtQorh",
- "GYAbsFw6onSNloAb",
- "WJ9zLwYjK8njaBtN",
- "rALkRyk8gXHzIBR6",
- "DNta0sJ8Y6NXZsC9",
- "GU4UfBzZSF4jiteS",
- "IO7Oih07PtNJSWhU",
- "cF4xtF8z9riubmLh",
- "bywKDIdtxhi4hUSO"
- ],
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Pagination cursor from a previous response's next_request_number, defaults to 0",
- "in": "query",
- "name": "request_number",
- "type": "integer"
- },
- {
- "description": "Pagination session id from a previous response's session_id",
- "in": "query",
- "name": "session_id",
- "type": "string"
- }
- ],
+ "description": "Returns the complete research-backed directory of topic values accepted by foreignaffairs-topic, including each topic's public RSS feed URL.",
+ "operationId": "foreignaffairs-topics",
"produces": [
"application/json"
],
@@ -256669,31 +285248,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.liveStreamsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/foreignaffairs.topicsResponseDoc"
}
}
},
@@ -256702,26 +285257,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List eBay Live streams",
+ "summary": "List Foreign Affairs topic feeds",
"tags": [
- "eBay"
+ "ForeignAffairs"
]
}
},
- "/ebay/live/streams/batch": {
+ "/foreignpolicy/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized summaries for multiple eBay Live streams/events in one call, up to 9 ids per request.",
- "operationId": "ebay-live-streams-batch",
+ "description": "Returns a public Foreign Policy article's metadata and full body paragraphs from a canonical article URL. is_gated reports the site's own content-tier marker; the full body is always returned regardless, since Foreign Policy serves it in full to anonymous requests either way.",
+ "operationId": "foreignpolicy-article",
"parameters": [
{
- "description": "One or more eBay Live stream/event ids, up to 9. Comma-separated or repeated query values are both accepted.",
+ "description": "Canonical foreignpolicy.com article URL",
"in": "query",
- "name": "ids",
+ "name": "url",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "https://foreignpolicy.com/2026/04/15/china-ports-maritime-power/"
}
],
"produces": [
@@ -256731,7 +285284,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.liveStreamsBatchResponseDoc"
+ "$ref": "#/definitions/foreignpolicy.articleResponseDoc"
}
},
"400": {
@@ -256740,14 +285293,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -256764,26 +285317,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get multiple eBay Live streams",
+ "summary": "Get Foreign Policy article content",
"tags": [
- "eBay"
+ "ForeignPolicy"
]
}
},
- "/ebay/live/streams/{id}": {
+ "/foreignpolicy/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized detail for a single eBay Live stream/event, including each host's feedback summary for the last 365 days.",
- "operationId": "ebay-live-stream",
+ "description": "Returns one Foreign Policy contributor's public profile: name, bio, and their recent articles. Further articles load behind a client-side control this endpoint does not follow, so this is the author page's initial recent-article list, not the contributor's full history.",
+ "operationId": "foreignpolicy-author",
"parameters": [
{
- "description": "eBay Live stream/event id",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string"
+ "description": "Author slug, e.g. anne-applebaum",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "anne-applebaum"
+ },
+ {
+ "description": "Canonical foreignpolicy.com/author// URL; alternative to slug",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://foreignpolicy.com/author/anne-applebaum/"
}
],
"produces": [
@@ -256793,7 +285350,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.liveStreamResponseDoc"
+ "$ref": "#/definitions/foreignpolicy.authorResponseDoc"
}
},
"400": {
@@ -256814,46 +285371,28 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
}
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get an eBay Live stream",
- "tags": [
- "eBay"
- ]
- }
- },
- "/ebay/live/streams/{id}/items": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the currently featured/auction items for an eBay Live stream, including live bidding state.",
- "operationId": "ebay-live-stream-items",
- "parameters": [
- {
- "description": "eBay Live stream/event id",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string"
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
}
],
+ "summary": "Get a Foreign Policy author profile",
+ "tags": [
+ "ForeignPolicy"
+ ]
+ }
+ },
+ "/foreignpolicy/headlines": {
+ "get": {
+ "description": "Returns fresh headlines from Foreign Policy's public, site-wide RSS feed. There is no section parameter: use foreignpolicy-topic to scope to one category or tag.",
+ "operationId": "foreignpolicy-headlines",
"produces": [
"application/json"
],
@@ -256861,13 +285400,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.liveStreamItemsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/foreignpolicy.headlinesResponseDoc"
}
},
"429": {
@@ -256876,12 +285409,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -256894,30 +285421,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List an eBay Live stream's featured items",
+ "summary": "Get Foreign Policy site-wide headlines",
"tags": [
- "eBay"
+ "ForeignPolicy"
]
}
},
- "/ebay/search": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized eBay search results.",
- "operationId": "ebay-search",
- "parameters": [
- {
- "description": "eBay search payload",
- "in": "body",
- "name": "option",
- "required": true,
- "schema": {
- "$ref": "#/definitions/ebay.SearchOption"
- }
- }
- ],
+ "/foreignpolicy/live": {
+ "get": {
+ "description": "Returns Foreign Policy's public FP Live conversation directory. The upstream renders the complete all-conversations list and applies year filtering in the browser.",
+ "operationId": "foreignpolicy-live",
"produces": [
"application/json"
],
@@ -256925,13 +285438,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.searchResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/foreignpolicy.liveResponseDoc"
}
},
"429": {
@@ -256940,12 +285447,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -256958,26 +285459,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search eBay listings",
+ "summary": "List Foreign Policy Live conversations",
"tags": [
- "eBay"
+ "ForeignPolicy"
]
}
},
- "/ebay/seller/{seller}": {
+ "/foreignpolicy/live-detail": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized details for a public eBay seller profile.",
- "operationId": "ebay-seller",
+ "description": "Returns one public FP Live conversation by the slug returned by foreignpolicy-live, including its description and any embedded video highlight metadata.",
+ "operationId": "foreignpolicy-live-detail",
"parameters": [
{
- "description": "eBay seller username",
- "in": "path",
- "name": "seller",
+ "description": "Foreign Policy FP Live conversation slug",
+ "in": "query",
+ "name": "live",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "ama-ask-me-anything-ukraine"
}
],
"produces": [
@@ -256987,7 +285486,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.sellerResponseDoc"
+ "$ref": "#/definitions/foreignpolicy.liveDetailResponseDoc"
}
},
"400": {
@@ -257008,12 +285507,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -257026,26 +285519,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get eBay seller profile",
+ "summary": "Get a Foreign Policy Live conversation",
"tags": [
- "eBay"
+ "ForeignPolicy"
]
}
},
- "/ebay/seller/{seller}/about": {
+ "/foreignpolicy/project": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized seller about information from the public eBay store about tab, including seller stats, top-rated status, optional location/member-since fields, and cleaned store categories.",
- "operationId": "ebay-seller-about",
+ "description": "Returns a public Foreign Policy curated project hub and its current article cards. Use foreignpolicy-projects to discover live project slugs.",
+ "operationId": "foreignpolicy-project",
"parameters": [
{
- "description": "eBay seller username",
- "in": "path",
- "name": "seller",
+ "description": "Foreign Policy project slug",
+ "in": "query",
+ "name": "project",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "asia"
}
],
"produces": [
@@ -257055,7 +285546,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.sellerAboutResponseDoc"
+ "$ref": "#/definitions/foreignpolicy.projectResponseDoc"
}
},
"400": {
@@ -257076,12 +285567,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -257094,45 +285579,25 @@
"ApiKeyAuth": []
}
],
- "summary": "Get eBay seller about details",
+ "summary": "Get a Foreign Policy project hub",
"tags": [
- "eBay"
+ "ForeignPolicy"
]
}
},
- "/ebay/seller/{seller}/feedback": {
+ "/foreignpolicy/projects": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized seller feedback summary, detailed ratings, and recent review cards from the public eBay seller feedback tab.",
- "operationId": "ebay-seller-feedback",
+ "description": "Returns one page of Foreign Policy's live public project directory. Follow next_page until it is zero to enumerate the current project slug space, then pass a slug to foreignpolicy-project.",
+ "operationId": "foreignpolicy-projects",
"parameters": [
- {
- "description": "eBay seller username",
- "in": "path",
- "name": "seller",
- "required": true,
- "type": "string"
- },
{
"default": 1,
- "description": "Feedback page number",
+ "description": "1-based project-directory page, defaults to 1",
"in": "query",
+ "maximum": 100,
+ "minimum": 1,
"name": "page",
"type": "integer"
- },
- {
- "default": 48,
- "description": "Reviews per page",
- "enum": [
- 24,
- 48,
- 72
- ],
- "in": "query",
- "name": "per_page",
- "type": "integer"
}
],
"produces": [
@@ -257142,7 +285607,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.sellerFeedbackResponseDoc"
+ "$ref": "#/definitions/foreignpolicy.projectsResponseDoc"
}
},
"400": {
@@ -257151,24 +285616,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -257181,31 +285634,42 @@
"ApiKeyAuth": []
}
],
- "summary": "Get eBay seller feedback",
+ "summary": "List Foreign Policy project hubs",
"tags": [
- "eBay"
+ "ForeignPolicy"
]
}
},
- "/ebay/seller/{seller}/shop": {
+ "/foreignpolicy/topic": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized listings from the public eBay seller shop tab, with pagination backed by the store odtRefresh response.",
- "operationId": "ebay-seller-shop",
+ "description": "Returns one page of a public Foreign Policy category or tag archive (newest first). type selects the archive namespace and defaults to category; topic is the slug within it; page is 1-based.",
+ "operationId": "foreignpolicy-topic",
"parameters": [
{
- "description": "eBay seller username",
- "in": "path",
- "name": "seller",
- "required": true,
+ "default": "category",
+ "description": "Archive namespace, defaults to category",
+ "enum": [
+ "category",
+ "tag"
+ ],
+ "in": "query",
+ "name": "type",
"type": "string"
},
+ {
+ "description": "Foreign Policy category or tag slug",
+ "in": "query",
+ "name": "topic",
+ "required": true,
+ "type": "string",
+ "x-example": "world-brief"
+ },
{
"default": 1,
- "description": "Shop page number",
+ "description": "1-based archive page, defaults to 1",
"in": "query",
+ "maximum": 100,
+ "minimum": 1,
"name": "page",
"type": "integer"
}
@@ -257217,7 +285681,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ebay.sellerShopResponseDoc"
+ "$ref": "#/definitions/foreignpolicy.topicResponseDoc"
}
},
"400": {
@@ -257238,12 +285702,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -257256,24 +285714,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get eBay seller shop listings",
+ "summary": "Get Foreign Policy category or tag archive",
"tags": [
- "eBay"
+ "ForeignPolicy"
]
}
},
- "/economictimes/article": {
+ "/fortune/article": {
"get": {
- "description": "Returns public Economic Times article metadata (title, author(s), published/updated dates, section, lead image) and body paragraphs from a canonical article URL. An ETPrime subscription-gated story returns a permission error instead of a truncated or fabricated body.",
- "operationId": "economictimes-article",
+ "description": "Returns public Fortune article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "fortune-article",
"parameters": [
{
- "description": "Canonical Economic Times article URL",
+ "description": "Canonical Fortune article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://economictimes.indiatimes.com/markets/aif-pms/example-story/articleshow/134466306.cms"
+ "x-example": "https://fortune.com/2026/09/21/example/"
}
],
"produces": [
@@ -257292,12 +285750,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "403": {
- "description": "Forbidden",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"404": {
"description": "Not Found",
"schema": {
@@ -257316,24 +285768,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Economic Times article content",
+ "summary": "Get Fortune article content",
"tags": [
- "Economic Times"
+ "Fortune"
]
}
},
- "/economictimes/author": {
+ "/fortune/author": {
"get": {
- "description": "Returns one Economic Times reporter's public profile: name, job title, biography, headshot, and their recent articles.",
- "operationId": "economictimes-author",
+ "description": "Returns one Fortune author's public profile: name, bio, email, social accounts, and one page of their recent articles (30 fortune.com/2026-format article dates use \"Month D, YYYY\"; converted to YYYY-MM-DD here).",
+ "operationId": "fortune-author",
"parameters": [
{
- "description": "Canonical Economic Times author URL",
+ "description": "Author slug, e.g. sheryl-estrada",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "sheryl-estrada"
+ },
+ {
+ "description": "Canonical fortune.com/author// URL, optionally with a /page// suffix; alternative to slug",
"in": "query",
"name": "url",
- "required": true,
"type": "string",
- "x-example": "https://economictimes.indiatimes.com/etreporter/author-kshitij-anand-479257392.cms"
+ "x-example": "https://fortune.com/author/sheryl-estrada/page/2/"
+ },
+ {
+ "default": 1,
+ "description": "1-based page number; overrides any page number in url",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -257343,7 +285808,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.economicTimesAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.fortuneAuthorResponseDoc"
}
},
"400": {
@@ -257370,183 +285835,86 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Economic Times author profile",
+ "summary": "Get a Fortune author profile",
"tags": [
- "Economic Times"
+ "Fortune"
]
}
},
- "/economictimes/headlines": {
+ "/fortune/companies": {
"get": {
- "description": "Returns fresh headlines from one public Economic Times section feed.",
- "operationId": "economictimes-headlines",
+ "description": "Returns companies from Fortune's public company directory (9,000+ companies as of 2026-09-23) with search, filtering, and pagination.",
+ "operationId": "fortune-companies",
"parameters": [
{
- "description": "Economic Times section slug",
- "enum": [
- "top-stories",
- "ai",
- "ai-ai-insights",
- "astrology-chalisa-bhajan",
- "astrology-horoscope",
- "astrology-love-horoscope",
- "astrology-numerology-predictions",
- "astrology-others",
- "astrology-panchang",
- "astrology-planets-transits",
- "astrology-tarot-readings",
- "astrology-us",
- "industry",
- "industry-auto",
- "industry-banking-finance",
- "industry-cons-products",
- "industry-csr",
- "industry-energy",
- "industry-healthcare-biotech",
- "industry-indl-goods-svs",
- "industry-media-entertainment",
- "industry-miscellaneous",
- "industry-renewables",
- "industry-services",
- "industry-telecom",
- "industry-transportation",
- "jobs",
- "jobs-c-suite",
- "jobs-exams-results",
- "jobs-fresher",
- "jobs-government-jobs",
- "jobs-hr-policies-trends",
- "jobs-mid-career",
- "magazines",
- "magazines-et-magazine",
- "magazines-luxury",
- "magazines-panache",
- "market-data",
- "market-data-etlearn",
- "markets",
- "markets-aif-pms",
- "markets-bonds",
- "markets-commodities",
- "markets-cryptocurrency",
- "markets-digital-real-estate",
- "markets-expert-view",
- "markets-forex",
- "markets-investment-ideas",
- "markets-ipos-fpos",
- "markets-market-moguls",
- "markets-mind-over-money",
- "markets-options",
- "markets-stocks",
- "markets-stocks-podcast",
- "markets-us-stocks",
- "markets-web-stories",
- "mf",
- "mf-analysis",
- "mf-elss",
- "mf-learn",
- "mf-mf-news",
- "mf-web-stories",
- "news",
- "news-top-trending-products",
- "news-bengaluru-news",
- "news-company",
- "news-defence",
- "news-economy",
- "news-elections",
- "news-environment",
- "news-et-evoke",
- "news-et-explains",
- "news-india",
- "news-international",
- "news-latest-news",
- "news-morning-brief-podcast",
- "news-mumbai-news",
- "news-new-updates",
- "news-newsblogs",
- "news-politics-and-nation",
- "news-pune-news",
- "news-science",
- "news-sports",
- "news-videos",
- "nri",
- "nri-country-pages",
- "nri-invest",
- "nri-latest-updates",
- "nri-migrate",
- "nri-study",
- "nri-test-guide",
- "nri-visit",
- "nri-web-stories",
- "nri-work",
- "opinion",
- "opinion-bliss-of-everyday-life",
- "opinion-et-commentary",
- "opinion-et-editorial",
- "opinion-et-view",
- "opinion-just-in-jest",
- "opinion-speaking-tree",
- "podcasts",
- "prime",
- "prime-collections",
- "prime-consumer",
- "prime-corporate-governance",
- "prime-economy-and-policy",
- "prime-energy",
- "prime-environment",
- "prime-fintech-and-bfsi",
- "prime-infrastructure",
- "prime-media-and-communications",
- "prime-money-and-markets",
- "prime-pharma-and-healthcare",
- "prime-prime-decoder",
- "prime-prime-vantage",
- "prime-primeshots",
- "prime-technology-and-startups",
- "prime-transportation",
- "small-biz",
- "small-biz-entrepreneurship",
- "small-biz-gst",
- "small-biz-hr-leadership",
- "small-biz-legal",
- "small-biz-marketing-branding",
- "small-biz-money",
- "small-biz-policy-trends",
- "small-biz-resources",
- "small-biz-security-tech",
- "small-biz-sme-sector",
- "small-biz-sme-summits",
- "small-biz-sustainability",
- "small-biz-trade",
- "tech",
- "tech-artificial-intelligence",
- "tech-catalysts",
- "tech-funding",
- "tech-information-tech",
- "tech-newsletters",
- "tech-startups",
- "tech-tech-and-gadgets",
- "tech-tech-bytes",
- "tech-technology",
- "wealth",
- "wealth-borrow",
- "wealth-earn",
- "wealth-et-wealth",
- "wealth-insure",
- "wealth-invest",
- "wealth-legal-will",
- "wealth-mutual-funds",
- "wealth-p2p",
- "wealth-personal-finance-news",
- "wealth-plan",
- "wealth-real-estate",
- "wealth-save",
- "wealth-spend",
- "wealth-tax"
- ],
+ "description": "Case-insensitive company-name search",
"in": "query",
- "name": "section",
- "required": true,
- "type": "string"
+ "name": "search",
+ "type": "string",
+ "x-example": "alphabet"
+ },
+ {
+ "description": "Country/territory slug or title; call fortune-company-filters for the complete accepted set",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "china"
+ },
+ {
+ "description": "Exact industry title; call fortune-company-filters for the complete accepted set",
+ "in": "query",
+ "name": "industry",
+ "type": "string",
+ "x-example": "Computer Software"
+ },
+ {
+ "description": "Fortune ranking slug to filter companies that appear on it; call fortune-company-filters for the accepted set",
+ "in": "query",
+ "name": "ranking",
+ "type": "string",
+ "x-example": "fortune500"
+ },
+ {
+ "description": "Ranking year the ranking filter is evaluated against; defaults to the current year",
+ "in": "query",
+ "name": "year",
+ "type": "string",
+ "x-example": "2026"
+ },
+ {
+ "description": "Minimum revenue in $M",
+ "in": "query",
+ "name": "min_revenue",
+ "type": "integer",
+ "x-example": 1000
+ },
+ {
+ "description": "Maximum revenue in $M",
+ "in": "query",
+ "name": "max_revenue",
+ "type": "integer",
+ "x-example": 500000
+ },
+ {
+ "description": "Minimum employee count",
+ "in": "query",
+ "name": "min_employees",
+ "type": "integer",
+ "x-example": 1000
+ },
+ {
+ "description": "Maximum employee count",
+ "in": "query",
+ "name": "max_employees",
+ "type": "integer",
+ "x-example": 500000
+ },
+ {
+ "default": 1,
+ "description": "1-based page number; 30 companies per page",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -257556,7 +285924,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/publicnews.fortuneCompaniesResponseDoc"
}
},
"400": {
@@ -257577,16 +285945,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Economic Times section headlines",
+ "summary": "Search the Fortune company directory",
"tags": [
- "Economic Times"
+ "Fortune"
]
}
},
- "/economictimes/news": {
+ "/fortune/companies/filters": {
"get": {
- "description": "Returns fresh Economic Times top-stories headline metadata from its public RSS feed.",
- "operationId": "economictimes-news",
+ "description": "Returns the complete country, industry, and ranking filter inventory (exact values) and revenue/employee ranges accepted by fortune/companies.",
+ "operationId": "fortune-company-filters",
"produces": [
"application/json"
],
@@ -257594,13 +285962,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.fortuneCompanyFiltersResponseDoc"
}
},
"503": {
@@ -257615,16 +285977,32 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Economic Times top stories",
+ "summary": "Discover Fortune company directory filters",
"tags": [
- "Economic Times"
+ "Fortune"
]
}
},
- "/economictimes/sections": {
+ "/fortune/company": {
"get": {
- "description": "Returns the complete public section inventory accepted by /api/v1/economictimes/headlines: business/markets verticals, industry, tech, wealth, mutual funds, small business, NRI, careers, opinion, astrology, and ETPrime (subscription-gated) sections.",
- "operationId": "economictimes-sections",
+ "description": "Returns one company's public Fortune profile: fact sheet (headquarters, CEO, ticker, revenues, employees, ...), the Fortune rankings it appears on, workplace data tables, earnings report links, and social accounts, recovered from the company's own fortune.com page.",
+ "operationId": "fortune-company",
+ "parameters": [
+ {
+ "description": "Company slug, e.g. alphabet",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "alphabet"
+ },
+ {
+ "description": "Canonical fortune.com/company// URL; alternative to slug",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://fortune.com/company/alphabet/"
+ }
+ ],
"produces": [
"application/json"
],
@@ -257632,7 +286010,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/publicnews.fortuneCompanyResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -257641,28 +286037,62 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Economic Times sections",
+ "summary": "Get a Fortune company profile",
"tags": [
- "Economic Times"
+ "Fortune"
]
}
},
- "/email/verify": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Classifies up to 50 caller-supplied email addresses and returns each one's `status` (`verified` — the mailbox accepts mail; `risky` — catch-all, role or disposable; `invalid` — bad syntax or no MX; `unverified` — could not be determined) and `type` (`generic`, `role`, `personal`). Crawls nothing: pass the addresses you already hold. This is the same classifier the Contact API applies to addresses it discovers, so statuses are directly comparable. When `smtp_enabled` is false, mailbox probing was unavailable for the call and nothing can be reported `verified` — an honest `unverified` rather than a guess.",
- "operationId": "email-verify",
+ "/fortune/headlines": {
+ "get": {
+ "description": "Returns fresh headlines from one public Fortune section.",
+ "operationId": "fortune-headlines",
"parameters": [
{
- "description": "Addresses to verify",
- "in": "body",
- "name": "option",
+ "description": "Fortune section slug",
+ "enum": [
+ "latest",
+ "fortune-500",
+ "finance",
+ "tech",
+ "leadership",
+ "lifestyle",
+ "economy",
+ "newsletters",
+ "success",
+ "magazine",
+ "real-estate",
+ "investing",
+ "asia",
+ "politics",
+ "artificial-intelligence",
+ "workplace-culture",
+ "personal-finance",
+ "middle-east",
+ "big-tech",
+ "travel-and-leisure",
+ "c-suite",
+ "crypto",
+ "health",
+ "commentary",
+ "retail",
+ "mpw",
+ "features",
+ "conferences",
+ "europe",
+ "environment",
+ "arts-and-entertainment",
+ "cybersecurity",
+ "global",
+ "innovation",
+ "news",
+ "north-america"
+ ],
+ "in": "query",
+ "name": "section",
"required": true,
- "schema": {
- "$ref": "#/definitions/contact.VerifyRequest"
- }
+ "type": "string",
+ "x-example": "latest"
}
],
"produces": [
@@ -257672,23 +286102,49 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/contact.verifyResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
- "description": "Invalid input, or no usable address in the batch",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Fortune section headlines",
+ "tags": [
+ "Fortune"
+ ]
+ }
+ },
+ "/fortune/news": {
+ "get": {
+ "description": "Returns fresh Fortune stories from the public RSS feed.",
+ "operationId": "fortune-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
- "500": {
- "description": "Internal server error during verification",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -257699,24 +286155,108 @@
"ApiKeyAuth": []
}
],
- "summary": "Email verification — deliverability status for a batch of addresses",
+ "summary": "Get Fortune top stories",
"tags": [
- "Web"
+ "Fortune"
]
}
},
- "/engadget/article": {
+ "/fortune/ranking": {
"get": {
- "description": "Returns public Engadget article metadata and body paragraphs from a canonical article URL. Engadget articles are free to read, so the full body is returned.",
- "operationId": "engadget-article",
+ "description": "Returns rows from a selected Fortune ranking list and year -- the Fortune 500 franchise (including Fortune China 500) or one of Fortune's award/culture rankings. Search, filters, sorting, and pagination are applied against Fortune's public ranking data and validated against that list/year's filter inventory.",
+ "operationId": "fortune-ranking",
"parameters": [
{
- "description": "Canonical Engadget article URL",
+ "default": "fortune500",
+ "description": "Accepted values: fortune500, global500, fortune500-europe, southeast-asia-500, fortune-china-500, 100-fastest-growing-companies, 40-under-40, ai-innovators, aiq, americas-most-innovative-companies, asia-future, best-companies, best-companies-europe, best-companies-southeast-asia, best-large-workplaces-in-technology, best-large-workplaces-parents, best-medium-workplaces, best-medium-workplaces-in-technology, best-places-families, best-places-retire-affordably, best-small-workplaces, best-small-workplaces-aging-services-senior-housing-care, best-small-workplaces-bay-area, best-small-workplaces-biotechnology-pharmaceuticals, best-small-workplaces-chicago-area, best-small-workplaces-construction, best-small-workplaces-consulting-professional-services, best-small-workplaces-financial-services-insurance, best-small-workplaces-for-women, best-small-workplaces-health-care, best-small-workplaces-in-technology, best-small-workplaces-manufacturing-production, best-small-workplaces-millennials, best-small-workplaces-new-york, best-small-workplaces-parents, best-small-workplaces-real-estate, best-small-workplaces-retail, best-small-workplaces-technology, best-small-workplaces-texas, best-workplaces-advertising-marketing, best-workplaces-aging-services-at-home-care, best-workplaces-aging-services-senior-housing-care, best-workplaces-baby-boomers, best-workplaces-bay-area, best-workplaces-biotechnology-pharmaceuticals, best-workplaces-camaraderie, best-workplaces-chicago-area, best-workplaces-construction, best-workplaces-consulting-professional-services, best-workplaces-finance-insurance, best-workplaces-financial-services-insurance, best-workplaces-flexibility, best-workplaces-for-african-americans, best-workplaces-for-asian-americans, best-workplaces-for-diversity, best-workplaces-for-hispanics-and-latinos, best-workplaces-for-retirement, best-workplaces-for-women, best-workplaces-gen-x, best-workplaces-giving-back, best-workplaces-health-care, best-workplaces-manufacturing-production, best-workplaces-millennials, best-workplaces-new-york, best-workplaces-parents, best-workplaces-real-estate, best-workplaces-recent-college-graduates, best-workplaces-retail, best-workplaces-technology, best-workplaces-texas, businessperson-of-the-year, candidates-working-women-times-up, change-the-world, creator-25, crypto, cyber, europes-most-innovative-companies, fintech-innovators-asia, food-drink-women-innovators, fortunate50, future-50, global-best-companies, heroes-of-the-fortune-500, impact20, inner-city-100, international-20, lgbtq-leaders, mejores-companias-latinos-hispanos, modern-board-25, most-fantastical-comic-book-businesses, most-important-private-companies, most-powerful-people, most-powerful-rising-executives, most-powerful-women, most-powerful-women-asia, most-powerful-women-europe-middle-east-africa, most-powerful-women-international, nfty-50, the-ledger-40-under-40, unicorns, women-tech-leaders-europe, worlds-best-workplaces, worlds-greatest-leaders, worlds-most-admired-companies. Defaults to fortune500.",
"in": "query",
- "name": "url",
- "required": true,
+ "name": "list",
+ "type": "string"
+ },
+ {
+ "description": "For fortune-china-500, accepted values are 2026, 2025, 2024, 2023; otherwise call fortune-ranking-years for this list's accepted years",
+ "in": "query",
+ "name": "year",
"type": "string",
- "x-example": "https://www.engadget.com/2267229/meta-put-muse-in-a-tamagotchi-like-charm-device/"
+ "x-example": "2026"
+ },
+ {
+ "description": "Case-insensitive company-name search; Fortune China 500 searches every displayed row column",
+ "in": "query",
+ "name": "search",
+ "type": "string",
+ "x-example": "amazon"
+ },
+ {
+ "collectionFormat": "multi",
+ "description": "Repeatable dynamic filter in field:value form; use company for fortune-china-500 or discover list-specific fields and values with fortune-ranking-filters",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "filter",
+ "type": "array",
+ "x-example": "profitable:yes"
+ },
+ {
+ "description": "Convenience alias for the live sector filter",
+ "in": "query",
+ "name": "sector",
+ "type": "string",
+ "x-example": "Technology"
+ },
+ {
+ "description": "Convenience alias for the live industry filter",
+ "in": "query",
+ "name": "industry",
+ "type": "string",
+ "x-example": "Internet Services and Retailing"
+ },
+ {
+ "description": "Convenience alias for the live state filter",
+ "in": "query",
+ "name": "state",
+ "type": "string",
+ "x-example": "Washington"
+ },
+ {
+ "description": "Convenience alias; accepts true/false or yes/no",
+ "in": "query",
+ "name": "profitable",
+ "type": "string",
+ "x-example": "true"
+ },
+ {
+ "description": "For fortune-china-500: Company, Rank, Rank of last year, Revenues ($M), Profits ($M); otherwise discover sortable fields with fortune-ranking-filters",
+ "in": "query",
+ "name": "sort_by",
+ "type": "string",
+ "x-example": "revenues"
+ },
+ {
+ "default": "asc",
+ "description": "Sort direction",
+ "enum": [
+ "asc",
+ "desc"
+ ],
+ "in": "query",
+ "name": "sort_order",
+ "type": "string"
+ },
+ {
+ "default": 0,
+ "description": "Zero-based result offset",
+ "in": "query",
+ "name": "offset",
+ "type": "integer"
+ },
+ {
+ "default": 100,
+ "description": "Number of rows to return; 0 uses the default 100, maximum 1000",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -257726,7 +286266,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/publicnews.fortuneRankingResponseDoc"
}
},
"400": {
@@ -257735,12 +286275,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -257753,30 +286287,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Engadget article content",
+ "summary": "Search a Fortune ranking",
"tags": [
- "Engadget"
+ "Fortune"
]
}
},
- "/engadget/author": {
+ "/fortune/ranking/filters": {
"get": {
- "description": "Returns one Engadget author's public profile: name, biography, expertise, social links, and the latest stories listed on their page (a single fixed batch; the page has no further pagination).",
- "operationId": "engadget-author",
+ "description": "Returns the complete list/year-specific filter fields, exact options, and sortable columns from Fortune's public ranking source.",
+ "operationId": "fortune-ranking-filters",
"parameters": [
{
- "description": "Author slug, e.g. mariella-moon",
+ "default": "fortune500",
+ "description": "Accepted values: fortune500, global500, fortune500-europe, southeast-asia-500, fortune-china-500, 100-fastest-growing-companies, 40-under-40, ai-innovators, aiq, americas-most-innovative-companies, asia-future, best-companies, best-companies-europe, best-companies-southeast-asia, best-large-workplaces-in-technology, best-large-workplaces-parents, best-medium-workplaces, best-medium-workplaces-in-technology, best-places-families, best-places-retire-affordably, best-small-workplaces, best-small-workplaces-aging-services-senior-housing-care, best-small-workplaces-bay-area, best-small-workplaces-biotechnology-pharmaceuticals, best-small-workplaces-chicago-area, best-small-workplaces-construction, best-small-workplaces-consulting-professional-services, best-small-workplaces-financial-services-insurance, best-small-workplaces-for-women, best-small-workplaces-health-care, best-small-workplaces-in-technology, best-small-workplaces-manufacturing-production, best-small-workplaces-millennials, best-small-workplaces-new-york, best-small-workplaces-parents, best-small-workplaces-real-estate, best-small-workplaces-retail, best-small-workplaces-technology, best-small-workplaces-texas, best-workplaces-advertising-marketing, best-workplaces-aging-services-at-home-care, best-workplaces-aging-services-senior-housing-care, best-workplaces-baby-boomers, best-workplaces-bay-area, best-workplaces-biotechnology-pharmaceuticals, best-workplaces-camaraderie, best-workplaces-chicago-area, best-workplaces-construction, best-workplaces-consulting-professional-services, best-workplaces-finance-insurance, best-workplaces-financial-services-insurance, best-workplaces-flexibility, best-workplaces-for-african-americans, best-workplaces-for-asian-americans, best-workplaces-for-diversity, best-workplaces-for-hispanics-and-latinos, best-workplaces-for-retirement, best-workplaces-for-women, best-workplaces-gen-x, best-workplaces-giving-back, best-workplaces-health-care, best-workplaces-manufacturing-production, best-workplaces-millennials, best-workplaces-new-york, best-workplaces-parents, best-workplaces-real-estate, best-workplaces-recent-college-graduates, best-workplaces-retail, best-workplaces-technology, best-workplaces-texas, businessperson-of-the-year, candidates-working-women-times-up, change-the-world, creator-25, crypto, cyber, europes-most-innovative-companies, fintech-innovators-asia, food-drink-women-innovators, fortunate50, future-50, global-best-companies, heroes-of-the-fortune-500, impact20, inner-city-100, international-20, lgbtq-leaders, mejores-companias-latinos-hispanos, modern-board-25, most-fantastical-comic-book-businesses, most-important-private-companies, most-powerful-people, most-powerful-rising-executives, most-powerful-women, most-powerful-women-asia, most-powerful-women-europe-middle-east-africa, most-powerful-women-international, nfty-50, the-ledger-40-under-40, unicorns, women-tech-leaders-europe, worlds-best-workplaces, worlds-greatest-leaders, worlds-most-admired-companies. Defaults to fortune500.",
"in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "mariella-moon"
+ "name": "list",
+ "type": "string"
},
{
- "description": "Canonical engadget.com/author/ URL; alternative to slug",
+ "description": "For fortune-china-500, accepted values are 2026, 2025, 2024, 2023; omit for current year or call fortune-ranking-years",
"in": "query",
- "name": "url",
+ "name": "year",
"type": "string",
- "x-example": "https://www.engadget.com/author/mariella-moon/"
+ "x-example": "2026"
}
],
"produces": [
@@ -257786,7 +286320,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.engadgetAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.fortuneRankingFiltersResponseDoc"
}
},
"400": {
@@ -257795,12 +286329,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -257813,72 +286341,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Engadget author profile",
+ "summary": "Discover Fortune ranking filters",
"tags": [
- "Engadget"
+ "Fortune"
]
}
},
- "/engadget/headlines": {
+ "/fortune/ranking/lists": {
"get": {
- "description": "Returns fresh Engadget headlines from one public category feed.",
- "operationId": "engadget-headlines",
+ "description": "Returns every public ranking accepted by the other fortune/ranking endpoints -- the Fortune 500 franchise's regional/global variants (including Fortune China 500) plus Fortune's award and culture rankings. Fortune China 500 is parsed from its public server-rendered English list page.",
+ "operationId": "fortune-ranking-lists",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.fortuneRankingListsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Fortune ranking lists",
+ "tags": [
+ "Fortune"
+ ]
+ }
+ },
+ "/fortune/ranking/years": {
+ "get": {
+ "description": "Returns every year accepted by Fortune's public ranking source for a selected list, including the 2023-2026 Fortune China 500 editions.",
+ "operationId": "fortune-ranking-years",
"parameters": [
{
- "description": "Engadget category slug",
- "enum": [
- "ai",
- "amazon",
- "apple",
- "apps",
- "best-tech",
- "big-tech",
- "computer-accessories",
- "computing",
- "cybersecurity",
- "entertainment",
- "features",
- "gaming",
- "gaming-reviews",
- "google",
- "headphones-buying-guides",
- "headphones-reviews",
- "home-product-reviews",
- "laptop-buying-guides",
- "laptop-pc-reviews",
- "laptops",
- "meta",
- "microsoft",
- "mobile",
- "news",
- "nintendo",
- "pc",
- "photography-reviews",
- "playstation",
- "reviews",
- "robotics",
- "samsung",
- "science",
- "smart-home-buying-guides",
- "smart-home-reviews",
- "smartphone-reviews",
- "smartphones",
- "social-media",
- "space",
- "streaming",
- "tablet-reviews",
- "tablets",
- "tomorrow",
- "transportation-evs",
- "tv-movies",
- "vpn",
- "wearable-reviews",
- "wearables",
- "xbox"
- ],
+ "default": "fortune500",
+ "description": "Accepted values: fortune500, global500, fortune500-europe, southeast-asia-500, fortune-china-500, 100-fastest-growing-companies, 40-under-40, ai-innovators, aiq, americas-most-innovative-companies, asia-future, best-companies, best-companies-europe, best-companies-southeast-asia, best-large-workplaces-in-technology, best-large-workplaces-parents, best-medium-workplaces, best-medium-workplaces-in-technology, best-places-families, best-places-retire-affordably, best-small-workplaces, best-small-workplaces-aging-services-senior-housing-care, best-small-workplaces-bay-area, best-small-workplaces-biotechnology-pharmaceuticals, best-small-workplaces-chicago-area, best-small-workplaces-construction, best-small-workplaces-consulting-professional-services, best-small-workplaces-financial-services-insurance, best-small-workplaces-for-women, best-small-workplaces-health-care, best-small-workplaces-in-technology, best-small-workplaces-manufacturing-production, best-small-workplaces-millennials, best-small-workplaces-new-york, best-small-workplaces-parents, best-small-workplaces-real-estate, best-small-workplaces-retail, best-small-workplaces-technology, best-small-workplaces-texas, best-workplaces-advertising-marketing, best-workplaces-aging-services-at-home-care, best-workplaces-aging-services-senior-housing-care, best-workplaces-baby-boomers, best-workplaces-bay-area, best-workplaces-biotechnology-pharmaceuticals, best-workplaces-camaraderie, best-workplaces-chicago-area, best-workplaces-construction, best-workplaces-consulting-professional-services, best-workplaces-finance-insurance, best-workplaces-financial-services-insurance, best-workplaces-flexibility, best-workplaces-for-african-americans, best-workplaces-for-asian-americans, best-workplaces-for-diversity, best-workplaces-for-hispanics-and-latinos, best-workplaces-for-retirement, best-workplaces-for-women, best-workplaces-gen-x, best-workplaces-giving-back, best-workplaces-health-care, best-workplaces-manufacturing-production, best-workplaces-millennials, best-workplaces-new-york, best-workplaces-parents, best-workplaces-real-estate, best-workplaces-recent-college-graduates, best-workplaces-retail, best-workplaces-technology, best-workplaces-texas, businessperson-of-the-year, candidates-working-women-times-up, change-the-world, creator-25, crypto, cyber, europes-most-innovative-companies, fintech-innovators-asia, food-drink-women-innovators, fortunate50, future-50, global-best-companies, heroes-of-the-fortune-500, impact20, inner-city-100, international-20, lgbtq-leaders, mejores-companias-latinos-hispanos, modern-board-25, most-fantastical-comic-book-businesses, most-important-private-companies, most-powerful-people, most-powerful-rising-executives, most-powerful-women, most-powerful-women-asia, most-powerful-women-europe-middle-east-africa, most-powerful-women-international, nfty-50, the-ledger-40-under-40, unicorns, women-tech-leaders-europe, worlds-best-workplaces, worlds-greatest-leaders, worlds-most-admired-companies. Defaults to fortune500.",
"in": "query",
- "name": "section",
- "required": true,
+ "name": "list",
"type": "string"
}
],
@@ -257889,7 +286393,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/publicnews.fortuneRankingYearsResponseDoc"
}
},
"400": {
@@ -257910,16 +286414,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Engadget section headlines",
+ "summary": "List Fortune ranking years",
"tags": [
- "Engadget"
+ "Fortune"
]
}
},
- "/engadget/news": {
+ "/fortune/sections": {
"get": {
- "description": "Returns fresh Engadget technology news from the public homepage feed. Engadget articles are free to read.",
- "operationId": "engadget-news",
+ "description": "Returns the public Fortune editorial section inventory.",
+ "operationId": "fortune-sections",
"produces": [
"application/json"
],
@@ -257927,13 +286431,36 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
- },
- "429": {
- "description": "Too Many Requests",
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Fortune sections",
+ "tags": [
+ "Fortune"
+ ]
+ }
+ },
+ "/fotmob/audio-matches": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns FotMob's current match-to-audio-language availability index. Match ids are open-ended and can be passed to /fotmob/match. The list is independent of a selected match date and may include matches outside the current fixtures feed.",
+ "operationId": "fotmob-audio-matches",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"503": {
@@ -257948,16 +286475,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Engadget top stories",
+ "summary": "FotMob matches with audio commentary",
"tags": [
- "Engadget"
+ "FotMob"
]
}
},
- "/engadget/sections": {
+ "/fotmob/fifa-ranking-periods": {
"get": {
- "description": "Returns the public Engadget category taxonomy (48 categories) accepted by the headlines endpoint.",
- "operationId": "engadget-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns every ranking period currently offered by FotMob for the selected gender. Use a returned periodId with /fotmob/fifa-rankings.",
+ "operationId": "fotmob-fifa-ranking-periods",
+ "parameters": [
+ {
+ "description": "Ranking gender",
+ "enum": [
+ "men",
+ "women"
+ ],
+ "in": "query",
+ "name": "gender",
+ "required": true,
+ "type": "string",
+ "x-example": "men"
+ }
+ ],
"produces": [
"application/json"
],
@@ -257965,7 +286509,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/fotmob.fifaRankingPeriodsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -257974,24 +286530,39 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Engadget sections",
+ "summary": "FotMob FIFA ranking period directory",
"tags": [
- "Engadget"
+ "FotMob"
]
}
},
- "/eonline/article": {
+ "/fotmob/fifa-rankings": {
"get": {
- "description": "Returns public E! News article metadata, byline and body paragraphs from a canonical article URL.",
- "operationId": "eonline-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns ranked national-team points and rank changes for one period. Discover valid periodId values for the selected gender from /fotmob/fifa-ranking-periods.",
+ "operationId": "fotmob-fifa-rankings",
"parameters": [
{
- "description": "Canonical E! News article URL",
+ "description": "Ranking gender",
+ "enum": [
+ "men",
+ "women"
+ ],
+ "in": "query",
+ "name": "gender",
+ "required": true,
+ "type": "string",
+ "x-example": "men"
+ },
+ {
+ "description": "Period id returned for this gender by /fotmob/fifa-ranking-periods",
"in": "query",
- "name": "url",
+ "name": "period_id",
"required": true,
"type": "string",
- "x-example": "https://www.eonline.com/news/1436400/inside-taylor-swift-dakota-johnsons-friendship"
+ "x-example": "20260720"
}
],
"produces": [
@@ -258001,7 +286572,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/fotmob.fifaRankingsResponseDoc"
}
},
"400": {
@@ -258028,24 +286599,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get E! News article content",
+ "summary": "FotMob FIFA national-team rankings",
"tags": [
- "E! News"
+ "FotMob"
]
}
},
- "/eonline/author": {
+ "/fotmob/latest-news": {
"get": {
- "description": "Returns an E! News writer's name and the articles listed on their author page, from a canonical author URL.",
- "operationId": "eonline-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the global English latest-news feed. Items are article previews; the upstream response contains up to 20 items per offset. Use start_index increments of 20 to page without overlap.",
+ "operationId": "fotmob-latest-news",
"parameters": [
{
- "description": "Canonical E! News author URL",
+ "description": "Zero-based news offset; defaults to 0",
"in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.eonline.com/authors/natalie-finn"
+ "maximum": 10000,
+ "minimum": 0,
+ "name": "start_index",
+ "type": "integer"
}
],
"produces": [
@@ -258055,7 +286629,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.eonlineAuthorResponseDoc"
+ "$ref": "#/definitions/fotmob.newsListResponseDoc"
}
},
"400": {
@@ -258082,37 +286656,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an E! News author page",
+ "summary": "FotMob latest football news",
"tags": [
- "E! News"
+ "FotMob"
]
}
},
- "/eonline/headlines": {
+ "/fotmob/league": {
"get": {
- "description": "Returns fresh headlines from one E! News section feed.",
- "operationId": "eonline-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns FotMob's public league page payload, including available tabs, overview, table, fixtures, statistics, transfers, and seasons where supplied by the league. Discover valid season values with /fotmob/seasons. shotmap=true includes the optional, larger overview shot-map payload.",
+ "operationId": "fotmob-league",
"parameters": [
{
- "description": "E! News section slug",
- "enum": [
- "top_stories",
- "tv",
- "movies",
- "music",
- "celebrities",
- "couples",
- "royals",
- "red_carpet",
- "influencer",
- "style",
- "fashion",
- "shop"
- ],
+ "description": "Numeric FotMob league id from /fotmob/leagues",
"in": "query",
- "name": "section",
+ "name": "league_id",
"required": true,
- "type": "string"
+ "type": "integer",
+ "x-example": 47
+ },
+ {
+ "description": "Optional season value from /fotmob/seasons for this league",
+ "in": "query",
+ "name": "season",
+ "type": "string",
+ "x-example": "2025/2026"
+ },
+ {
+ "default": false,
+ "description": "Include the optional overview shot map; increases response size",
+ "in": "query",
+ "name": "shotmap",
+ "type": "boolean"
}
],
"produces": [
@@ -258122,7 +286700,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -258131,6 +286709,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -258143,16 +286727,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get E! News section headlines",
+ "summary": "FotMob league details and sections",
"tags": [
- "E! News"
+ "FotMob"
]
}
},
- "/eonline/news": {
+ "/fotmob/leagues": {
"get": {
- "description": "Returns fresh E! News (US edition) top stories from its public RSS feed.",
- "operationId": "eonline-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns FotMob's full public league directory grouped into popular, international, and country collections. Use league ids with other FotMob endpoints.",
+ "operationId": "fotmob-leagues",
"produces": [
"application/json"
],
@@ -258160,13 +286747,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"503": {
@@ -258181,93 +286762,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get E! News top stories",
- "tags": [
- "E! News"
- ]
- }
- },
- "/eonline/sections": {
- "get": {
- "description": "Returns the E! News section inventory used by the headlines endpoint.",
- "operationId": "eonline-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get E! News sections",
+ "summary": "FotMob competition directory",
"tags": [
- "E! News"
+ "FotMob"
]
}
},
- "/espn/athlete": {
+ "/fotmob/lineup-builder-players": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one athlete's bio/overview (name, position, jersey, physicals, current team) from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
- "operationId": "espn-athlete",
+ "description": "Returns public metadata for 1 to 11 selected lineup players. Player ids are open-ended and can be discovered through /fotmob/search or /fotmob/lineup-builder-team. Unknown ids without complete public metadata return 404.",
+ "operationId": "fotmob-lineup-builder-players",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "basketball",
- "baseball",
- "hockey",
- "soccer"
- ],
- "in": "query",
- "name": "sport",
- "required": true,
- "type": "string",
- "x-example": "football"
- },
- {
- "description": "League key (must be valid for the sport)",
- "enum": [
- "nfl",
- "college-football",
- "nba",
- "wnba",
- "mens-college-basketball",
- "womens-college-basketball",
- "mlb",
- "nhl",
- "eng.1",
- "esp.1",
- "ita.1",
- "ger.1",
- "fra.1",
- "usa.1",
- "uefa.champions"
- ],
- "in": "query",
- "name": "league",
- "required": true,
- "type": "string",
- "x-example": "nfl"
- },
- {
- "description": "Numeric ESPN athlete (player) id",
+ "description": "Comma-separated list of 1 to 11 numeric FotMob player ids",
"in": "query",
- "name": "athlete",
+ "name": "player_ids",
"required": true,
"type": "string",
- "x-example": "3139477"
+ "x-example": "961995,562727"
}
],
"produces": [
@@ -258277,7 +286792,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/espn.athleteResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -258292,12 +286807,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -258310,67 +286819,27 @@
"ApiKeyAuth": []
}
],
- "summary": "ESPN athlete",
+ "summary": "FotMob lineup builder player metadata",
"tags": [
- "ESPN"
+ "FotMob"
]
}
},
- "/espn/game-summary": {
+ "/fotmob/lineup-builder-team": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one game's matchup, betting odds, and boxscore stat totals from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport. Get an `event` id from the scoreboard endpoint.",
- "operationId": "espn-game-summary",
+ "description": "Returns the public lineup builder's prefilled formation, starting lineup, and squad for a team id. Discover open-ended team ids with /fotmob/search. Some teams legitimately have no squad list.",
+ "operationId": "fotmob-lineup-builder-team",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "basketball",
- "baseball",
- "hockey",
- "soccer"
- ],
- "in": "query",
- "name": "sport",
- "required": true,
- "type": "string",
- "x-example": "baseball"
- },
- {
- "description": "League key (must be valid for the sport)",
- "enum": [
- "nfl",
- "college-football",
- "nba",
- "wnba",
- "mens-college-basketball",
- "womens-college-basketball",
- "mlb",
- "nhl",
- "eng.1",
- "esp.1",
- "ita.1",
- "ger.1",
- "fra.1",
- "usa.1",
- "uefa.champions"
- ],
- "in": "query",
- "name": "league",
- "required": true,
- "type": "string",
- "x-example": "mlb"
- },
- {
- "description": "Numeric ESPN event (game) id",
+ "description": "Numeric FotMob team id discoverable through /fotmob/search",
"in": "query",
- "name": "event",
+ "name": "team_id",
"required": true,
"type": "string",
- "x-example": "401816033"
+ "x-example": "9825"
}
],
"produces": [
@@ -258380,7 +286849,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/espn.gameSummaryResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -258395,12 +286864,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -258413,59 +286876,27 @@
"ApiKeyAuth": []
}
],
- "summary": "ESPN game summary",
+ "summary": "FotMob lineup builder team data",
"tags": [
- "ESPN"
+ "FotMob"
]
}
},
- "/espn/news": {
+ "/fotmob/match": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns recent news articles (headline, description, link) for a league from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
- "operationId": "espn-news",
+ "description": "Returns FotMob's public match-details payload, including available facts, events, statistics, lineups, shot map, momentum, table and head-to-head sections. The data field preserves the upstream JSON shape; individual sections may be absent for a match.",
+ "operationId": "fotmob-match",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "basketball",
- "baseball",
- "hockey",
- "soccer"
- ],
- "in": "query",
- "name": "sport",
- "required": true,
- "type": "string",
- "x-example": "basketball"
- },
- {
- "description": "League key (must be valid for the sport)",
- "enum": [
- "nfl",
- "college-football",
- "nba",
- "wnba",
- "mens-college-basketball",
- "womens-college-basketball",
- "mlb",
- "nhl",
- "eng.1",
- "esp.1",
- "ita.1",
- "ger.1",
- "fra.1",
- "usa.1",
- "uefa.champions"
- ],
+ "description": "Numeric FotMob match id",
"in": "query",
- "name": "league",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "nba"
+ "x-example": "5181825"
}
],
"produces": [
@@ -258475,7 +286906,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/espn.newsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -258490,12 +286921,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -258508,44 +286933,27 @@
"ApiKeyAuth": []
}
],
- "summary": "ESPN league news",
+ "summary": "FotMob match details",
"tags": [
- "ESPN"
+ "FotMob"
]
}
},
- "/espn/rankings": {
+ "/fotmob/match-media": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns poll rankings (e.g. AP Top 25) for a college league from ESPN's credential-free public JSON. Rankings are only published for college leagues: the `sport` enum accepts `football` and `basketball`, and the `league` enum accepts `college-football`, `mens-college-basketball`, and `womens-college-basketball`.",
- "operationId": "espn-rankings",
+ "description": "Returns the public highlight-video and media metadata for one match. The request uses FotMob's English United States variant; unavailable media is represented by null source fields.",
+ "operationId": "fotmob-match-media",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "basketball"
- ],
- "in": "query",
- "name": "sport",
- "required": true,
- "type": "string",
- "x-example": "football"
- },
- {
- "description": "College league key",
- "enum": [
- "college-football",
- "mens-college-basketball",
- "womens-college-basketball"
- ],
+ "description": "Numeric FotMob match id, discoverable from /fotmob/matches or /fotmob/search",
"in": "query",
- "name": "league",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "college-football"
+ "x-example": "5795457"
}
],
"produces": [
@@ -258555,7 +286963,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/espn.rankingsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -258570,12 +286978,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -258588,86 +286990,34 @@
"ApiKeyAuth": []
}
],
- "summary": "ESPN poll rankings",
+ "summary": "FotMob match videos and media metadata",
"tags": [
- "ESPN"
+ "FotMob"
]
}
},
- "/espn/scoreboard": {
+ "/fotmob/matches": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns games (scores, schedule, status, and odds when available) for a sport and league from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport. The `seasontype` enum accepts `1` (preseason), `2` (regular season), `3` (postseason), and `4` (offseason).",
- "operationId": "espn-scoreboard",
+ "description": "Returns FotMob's public match payload for a calendar date and IANA timezone. The data field preserves the upstream JSON shape.",
+ "operationId": "fotmob-matches",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "basketball",
- "baseball",
- "hockey",
- "soccer"
- ],
- "in": "query",
- "name": "sport",
- "required": true,
- "type": "string",
- "x-example": "football"
- },
- {
- "description": "League key (must be valid for the sport)",
- "enum": [
- "nfl",
- "college-football",
- "nba",
- "wnba",
- "mens-college-basketball",
- "womens-college-basketball",
- "mlb",
- "nhl",
- "eng.1",
- "esp.1",
- "ita.1",
- "ger.1",
- "fra.1",
- "usa.1",
- "uefa.champions"
- ],
+ "description": "Date in YYYYMMDD format",
"in": "query",
- "name": "league",
+ "name": "date",
"required": true,
"type": "string",
- "x-example": "nfl"
+ "x-example": "20260925"
},
{
- "description": "Date or range as YYYYMMDD, YYYYMMDD-YYYYMMDD, or YYYY; defaults to the current scoreboard",
+ "description": "IANA timezone; defaults to UTC",
"in": "query",
- "name": "dates",
+ "name": "timezone",
"type": "string",
- "x-example": "20260910"
- },
- {
- "description": "Week number (football leagues)",
- "in": "query",
- "name": "week",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Season type",
- "enum": [
- 1,
- 2,
- 3,
- 4
- ],
- "in": "query",
- "name": "seasontype",
- "type": "integer",
- "x-example": 2
+ "x-example": "Asia/Shanghai"
}
],
"produces": [
@@ -258677,7 +287027,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/espn.scoreboardResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -258686,18 +287036,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -258710,78 +287048,35 @@
"ApiKeyAuth": []
}
],
- "summary": "ESPN scoreboard",
+ "summary": "FotMob matches for a date",
"tags": [
- "ESPN"
+ "FotMob"
]
}
},
- "/espn/standings": {
+ "/fotmob/news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns league standings grouped by conference/division from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport. The `seasontype` enum accepts `1` (preseason), `2` (regular season), and `3` (postseason).",
- "operationId": "espn-standings",
+ "description": "Returns a page of FotMob news items for one league. League ids are discoverable from /fotmob/leagues; start_index is a zero-based offset.",
+ "operationId": "fotmob-news",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "basketball",
- "baseball",
- "hockey",
- "soccer"
- ],
- "in": "query",
- "name": "sport",
- "required": true,
- "type": "string",
- "x-example": "football"
- },
- {
- "description": "League key (must be valid for the sport)",
- "enum": [
- "nfl",
- "college-football",
- "nba",
- "wnba",
- "mens-college-basketball",
- "womens-college-basketball",
- "mlb",
- "nhl",
- "eng.1",
- "esp.1",
- "ita.1",
- "ger.1",
- "fra.1",
- "usa.1",
- "uefa.champions"
- ],
+ "description": "Numeric FotMob league id",
"in": "query",
- "name": "league",
+ "name": "league_id",
"required": true,
"type": "string",
- "x-example": "nfl"
- },
- {
- "description": "Four-digit season year; defaults to the current season",
- "in": "query",
- "name": "season",
- "type": "integer",
- "x-example": 2024
+ "x-example": "47"
},
{
- "description": "Season type",
- "enum": [
- 1,
- 2,
- 3
- ],
+ "description": "Zero-based news offset; defaults to 0",
"in": "query",
- "name": "seasontype",
- "type": "integer",
- "x-example": 2
+ "maximum": 10000,
+ "minimum": 0,
+ "name": "start_index",
+ "type": "integer"
}
],
"produces": [
@@ -258791,7 +287086,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/espn.standingsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -258806,12 +287101,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -258824,67 +287113,27 @@
"ApiKeyAuth": []
}
],
- "summary": "ESPN standings",
+ "summary": "FotMob league news",
"tags": [
- "ESPN"
+ "FotMob"
]
}
},
- "/espn/team": {
+ "/fotmob/news-article": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one team's detail (identity, colors, record, standing summary) from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
- "operationId": "espn-team",
+ "description": "Returns the full article body for a FotMob-authored top-news story. Pass the complete id-and-slug value from the public /topnews/ URL. News previews from external publishers remain external and are not fetched.",
+ "operationId": "fotmob-news-article",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "basketball",
- "baseball",
- "hockey",
- "soccer"
- ],
- "in": "query",
- "name": "sport",
- "required": true,
- "type": "string",
- "x-example": "football"
- },
- {
- "description": "League key (must be valid for the sport)",
- "enum": [
- "nfl",
- "college-football",
- "nba",
- "wnba",
- "mens-college-basketball",
- "womens-college-basketball",
- "mlb",
- "nhl",
- "eng.1",
- "esp.1",
- "ita.1",
- "ger.1",
- "fra.1",
- "usa.1",
- "uefa.champions"
- ],
- "in": "query",
- "name": "league",
- "required": true,
- "type": "string",
- "x-example": "nfl"
- },
- {
- "description": "Team id (numeric) or abbreviation",
+ "description": "Complete FotMob top-news article id and slug from the public article URL",
"in": "query",
- "name": "team",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "KC"
+ "x-example": "29776-fotmob-totw-premier-league-matchday-5s-best-xi"
}
],
"produces": [
@@ -258894,7 +287143,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/espn.teamResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -258909,12 +287158,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -258927,67 +287170,34 @@
"ApiKeyAuth": []
}
],
- "summary": "ESPN team detail",
+ "summary": "FotMob full top-news article",
"tags": [
- "ESPN"
+ "FotMob"
]
}
},
- "/espn/team-roster": {
+ "/fotmob/player": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a team's roster (players with position, jersey, age, and experience) plus head coach from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
- "operationId": "espn-team-roster",
+ "description": "Returns a public FotMob player profile, including current team, injuries, recent matches, career history, trophies, market values, and the player-specific season identifiers needed for deeper statistics. Discover player ids through /fotmob/search. Market values are included by default.",
+ "operationId": "fotmob-player",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "basketball",
- "baseball",
- "hockey",
- "soccer"
- ],
- "in": "query",
- "name": "sport",
- "required": true,
- "type": "string",
- "x-example": "football"
- },
- {
- "description": "League key (must be valid for the sport)",
- "enum": [
- "nfl",
- "college-football",
- "nba",
- "wnba",
- "mens-college-basketball",
- "womens-college-basketball",
- "mlb",
- "nhl",
- "eng.1",
- "esp.1",
- "ita.1",
- "ger.1",
- "fra.1",
- "usa.1",
- "uefa.champions"
- ],
+ "description": "Numeric FotMob player id from fotmob/search",
"in": "query",
- "name": "league",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "nfl"
+ "x-example": "961995"
},
{
- "description": "Team id (numeric) or abbreviation",
+ "default": true,
+ "description": "Include market-value history; defaults to true",
"in": "query",
- "name": "team",
- "required": true,
- "type": "string",
- "x-example": "KC"
+ "name": "include_market_values",
+ "type": "boolean"
}
],
"produces": [
@@ -258997,7 +287207,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/espn.rosterResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259012,12 +287222,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -259030,59 +287234,35 @@
"ApiKeyAuth": []
}
],
- "summary": "ESPN team roster",
+ "summary": "FotMob player profile",
"tags": [
- "ESPN"
+ "FotMob"
]
}
},
- "/espn/teams": {
+ "/fotmob/player-match-stats": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the full team list for a sport and league from ESPN's credential-free public JSON. The `sport` enum accepts `football`, `basketball`, `baseball`, `hockey`, and `soccer`. The `league` enum accepts `nfl`, `college-football`, `nba`, `wnba`, `mens-college-basketball`, `womens-college-basketball`, `mlb`, `nhl`, `eng.1`, `esp.1`, `ita.1`, `ger.1`, `fra.1`, `usa.1`, and `uefa.champions`; it must be valid for the chosen sport.",
- "operationId": "espn-teams",
+ "description": "Returns the public per-match stat rows for one player, including the available stat key, value, and translated label. Discover player ids through fotmob/search and match ids through fotmob/match or fotmob/player-matches.",
+ "operationId": "fotmob-player-match-stats",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "basketball",
- "baseball",
- "hockey",
- "soccer"
- ],
+ "description": "Numeric FotMob player id",
"in": "query",
- "name": "sport",
+ "name": "player_id",
"required": true,
"type": "string",
- "x-example": "basketball"
+ "x-example": "961995"
},
{
- "description": "League key (must be valid for the sport)",
- "enum": [
- "nfl",
- "college-football",
- "nba",
- "wnba",
- "mens-college-basketball",
- "womens-college-basketball",
- "mlb",
- "nhl",
- "eng.1",
- "esp.1",
- "ita.1",
- "ger.1",
- "fra.1",
- "usa.1",
- "uefa.champions"
- ],
+ "description": "Numeric FotMob match id",
"in": "query",
- "name": "league",
+ "name": "match_id",
"required": true,
"type": "string",
- "x-example": "nba"
+ "x-example": "5795457"
}
],
"produces": [
@@ -259092,7 +287272,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/espn.teamsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259107,12 +287287,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -259125,27 +287299,50 @@
"ApiKeyAuth": []
}
],
- "summary": "ESPN team list",
+ "summary": "FotMob player match stats",
"tags": [
- "ESPN"
+ "FotMob"
]
}
},
- "/etsy/listing/{id}": {
+ "/fotmob/player-matches": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Etsy listing detail: title, price, images, materials, tags, and shop.",
- "operationId": "etsy-listing",
+ "description": "Returns one page of player match history. The player's matchFilters and permitted league/team pairs are discovered from /fotmob/player. For another page, copy the numeric before timestamp from the upstream previous URL.",
+ "operationId": "fotmob-player-matches",
"parameters": [
{
- "description": "Numeric Etsy listing id",
- "in": "path",
- "name": "id",
+ "description": "Numeric FotMob player id from fotmob/search",
+ "in": "query",
+ "name": "player_id",
"required": true,
"type": "string",
- "x-example": "1044347578"
+ "x-example": "961995"
+ },
+ {
+ "default": "all",
+ "description": "all, or a numeric league id from fotmob/player matchFilters",
+ "in": "query",
+ "name": "league_id",
+ "type": "string",
+ "x-example": "47"
+ },
+ {
+ "default": "all",
+ "description": "all, or a numeric team id paired with league_id in fotmob/player matchFilters",
+ "in": "query",
+ "name": "team_id",
+ "type": "string",
+ "x-example": "9825"
+ },
+ {
+ "description": "Numeric before timestamp from the upstream previous URL; omit for the newest page",
+ "in": "query",
+ "name": "before",
+ "type": "string",
+ "x-example": "1767902400"
}
],
"produces": [
@@ -259155,7 +287352,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/etsy.listingResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259170,18 +287367,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -259194,48 +287379,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Etsy listing detail",
+ "summary": "FotMob player match history",
"tags": [
- "Etsy"
+ "FotMob"
]
}
},
- "/etsy/listing/{id}/reviews": {
+ "/fotmob/player-stats": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns buyer reviews for an Etsy listing.",
- "operationId": "etsy-listing-reviews",
+ "description": "Returns deep statistics, shot map, heatmap, and goalkeeper shot map for one player-specific season entry. Discover valid season_id values and hasDeepStats from /fotmob/player statSeasons; entry ids vary by player and season.",
+ "operationId": "fotmob-player-stats",
"parameters": [
{
- "description": "Numeric Etsy listing id",
- "in": "path",
- "name": "id",
+ "description": "Numeric FotMob player id from fotmob/search",
+ "in": "query",
+ "name": "player_id",
"required": true,
"type": "string",
- "x-example": "1044347578"
- },
- {
- "description": "0-based review offset",
- "in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
+ "x-example": "961995"
},
{
- "description": "Review sort order",
- "enum": [
- "newest",
- "oldest",
- "highest_rating",
- "lowest_rating",
- "most_relevant"
- ],
+ "description": "Player-specific entryId from fotmob/player statSeasons",
"in": "query",
- "name": "sort",
+ "name": "season_id",
+ "required": true,
"type": "string",
- "x-example": "newest"
+ "x-example": "0-1"
}
],
"produces": [
@@ -259245,7 +287417,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/etsy.listingReviewsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259260,18 +287432,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -259284,41 +287444,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Etsy listing reviews",
+ "summary": "FotMob player season statistics",
"tags": [
- "Etsy"
+ "FotMob"
]
}
},
- "/etsy/search": {
+ "/fotmob/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Etsy product search results across shops for a keyword query.",
- "operationId": "etsy-search",
+ "description": "Returns public search suggestions for FotMob leagues, teams, players, and matches. term must contain 1 to 50 characters. Suggestions preserve the upstream JSON shape.",
+ "operationId": "fotmob-search",
"parameters": [
{
- "description": "Search keywords",
+ "description": "Search phrase, 1 to 50 characters",
"in": "query",
- "name": "q",
+ "maxLength": 50,
+ "minLength": 1,
+ "name": "term",
"required": true,
"type": "string",
- "x-example": "handmade mug"
- },
- {
- "description": "0-based result offset",
- "in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
- },
- {
- "description": "Page size (default 36, max 100)",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 36
+ "x-example": "Arsenal"
}
],
"produces": [
@@ -259328,7 +287476,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/etsy.searchResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259337,18 +287485,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -259361,34 +287497,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Etsy listings",
+ "summary": "Search FotMob entities",
"tags": [
- "Etsy"
+ "FotMob"
]
}
},
- "/etsy/shop/search": {
+ "/fotmob/seasons": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Etsy shops matching a keyword.",
- "operationId": "etsy-shop-search",
+ "description": "Returns the complete list of season values accepted by the FotMob league endpoint for one competition.",
+ "operationId": "fotmob-seasons",
"parameters": [
{
- "description": "Shop search keyword",
+ "description": "Numeric FotMob league id from /fotmob/leagues",
"in": "query",
- "name": "q",
+ "name": "league_id",
"required": true,
- "type": "string",
- "x-example": "ceramic"
- },
- {
- "description": "Max shops to return (default 10)",
- "in": "query",
- "name": "limit",
"type": "integer",
- "x-example": 10
+ "x-example": 47
}
],
"produces": [
@@ -259398,7 +287527,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/etsy.shopSearchResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259407,14 +287536,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -259431,27 +287554,77 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Etsy shops",
+ "summary": "FotMob league season discovery",
"tags": [
- "Etsy"
+ "FotMob"
]
}
},
- "/etsy/shop/{id}": {
+ "/fotmob/stats": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns an Etsy shop profile: seller, headline, rating, and sold count. Accepts a numeric shop id or a shop name.",
- "operationId": "etsy-shop",
+ "description": "Returns ranked player or team statistics for a stat id discovered from /fotmob/stats-categories. The accepted stat ids vary by league, season, and type. team_id optionally restricts player statistics to one team. position filters player results client-side.",
+ "operationId": "fotmob-stats",
"parameters": [
{
- "description": "Numeric Etsy shop id or shop name",
- "in": "path",
- "name": "id",
+ "description": "Numeric FotMob league id",
+ "in": "query",
+ "name": "league_id",
"required": true,
"type": "string",
- "x-example": "gaguatelier"
+ "x-example": "47"
+ },
+ {
+ "description": "Numeric season id from /fotmob/stats-categories; defaults to the newest season",
+ "in": "query",
+ "name": "season_id",
+ "type": "string",
+ "x-example": "36781"
+ },
+ {
+ "description": "Stats subject",
+ "enum": [
+ "players",
+ "teams"
+ ],
+ "in": "query",
+ "name": "type",
+ "required": true,
+ "type": "string",
+ "x-example": "players"
+ },
+ {
+ "description": "Stat id returned by /fotmob/stats-categories for this league, season, and type",
+ "in": "query",
+ "name": "stat",
+ "required": true,
+ "type": "string",
+ "x-example": "goals"
+ },
+ {
+ "description": "Optional numeric team id to filter player stats",
+ "in": "query",
+ "name": "team_id",
+ "type": "string",
+ "x-example": "8456"
+ },
+ {
+ "description": "Optional client-side player position filter",
+ "enum": [
+ "all",
+ "striker",
+ "winger",
+ "attackingMidfielder",
+ "midfielder",
+ "fullback",
+ "centerBack"
+ ],
+ "in": "query",
+ "name": "position",
+ "type": "string",
+ "x-example": "striker"
}
],
"produces": [
@@ -259461,7 +287634,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/etsy.shopResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259476,18 +287649,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -259500,48 +287661,46 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Etsy shop profile",
+ "summary": "FotMob league player or team statistics",
"tags": [
- "Etsy"
+ "FotMob"
]
}
},
- "/etsy/shop/{id}/listings": {
+ "/fotmob/stats-categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a shop's listing catalog, optionally filtered by keyword. Accepts a numeric shop id or a shop name.",
- "operationId": "etsy-shop-listings",
+ "description": "Returns FotMob's current stat catalog and available seasons for a league. With season_id omitted, the response exposes the season list and initial top-stat choices; pass a returned season id to retrieve that season's full player or team stat catalog.",
+ "operationId": "fotmob-stats-categories",
"parameters": [
{
- "description": "Numeric Etsy shop id or shop name",
- "in": "path",
- "name": "id",
+ "description": "Numeric FotMob league id",
+ "in": "query",
+ "name": "league_id",
"required": true,
"type": "string",
- "x-example": "gaguatelier"
+ "x-example": "47"
},
{
- "description": "Keyword filter within the shop's own catalog",
+ "description": "Numeric season id; omit to discover seasons",
"in": "query",
- "name": "q",
+ "name": "season_id",
"type": "string",
- "x-example": "mug"
- },
- {
- "description": "0-based listing offset",
- "in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
+ "x-example": "36781"
},
{
- "description": "Page size (default 24)",
+ "description": "Stats subject",
+ "enum": [
+ "players",
+ "teams"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 24
+ "name": "type",
+ "required": true,
+ "type": "string",
+ "x-example": "players"
}
],
"produces": [
@@ -259551,7 +287710,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/etsy.shopListingsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259566,14 +287725,53 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "FotMob league stat categories and seasons",
+ "tags": [
+ "FotMob"
+ ]
+ }
+ },
+ "/fotmob/table": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the league standings and the upstream table views, including all, home, away, form, and expected-goals tables. League ids are discoverable from /fotmob/leagues.",
+ "operationId": "fotmob-table",
+ "parameters": [
+ {
+ "description": "Numeric FotMob league id",
+ "in": "query",
+ "name": "league_id",
+ "required": true,
+ "type": "string",
+ "x-example": "47"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/fotmob.responseDoc"
+ }
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -259590,41 +287788,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Etsy shop's listings",
+ "summary": "FotMob league table",
"tags": [
- "Etsy"
+ "FotMob"
]
}
},
- "/etsy/shop/{id}/reviews": {
+ "/fotmob/team": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns buyer reviews for an Etsy shop. Accepts a numeric shop id or a shop name.",
- "operationId": "etsy-shop-reviews",
+ "description": "Returns public team data and the sections currently available for that team, such as overview, table, fixtures, squad, stats, transfers, and history. Team ids can be found with /fotmob/search. The upstream section set varies by team. For older fixtures, pass fixtures.previousFixturesUrl to /fotmob/team-fixtures.",
+ "operationId": "fotmob-team",
"parameters": [
{
- "description": "Numeric Etsy shop id or shop name",
- "in": "path",
+ "description": "Numeric FotMob team id",
+ "in": "query",
"name": "id",
"required": true,
"type": "string",
- "x-example": "gaguatelier"
- },
- {
- "description": "0-based review offset",
- "in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
- },
- {
- "description": "Page size (default 14)",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 14
+ "x-example": "9825"
}
],
"produces": [
@@ -259634,7 +287818,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/etsy.shopReviewsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259649,18 +287833,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -259673,24 +287845,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Etsy shop reviews",
+ "summary": "FotMob team details",
"tags": [
- "Etsy"
+ "FotMob"
]
}
},
- "/euronews/article": {
+ "/fotmob/team-fixtures": {
"get": {
- "description": "Returns public Euronews article metadata and body paragraphs from a canonical English-edition article URL.",
- "operationId": "euronews-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one page of older team matches. Start with the fixtures.previousFixturesUrl cursor from /fotmob/team, then pass each response's previous value as cursor until it is empty or null. Team ids are open-ended numeric ids discoverable through /fotmob/search.",
+ "operationId": "fotmob-team-fixtures",
"parameters": [
{
- "description": "Canonical Euronews article URL",
+ "description": "Numeric FotMob team id",
"in": "query",
- "name": "url",
+ "name": "team_id",
"required": true,
"type": "string",
- "x-example": "https://www.euronews.com/2026/09/24/example-article-slug"
+ "x-example": "9825"
+ },
+ {
+ "description": "Opaque cursor copied from fixtures.previousFixturesUrl in /fotmob/team or previous in the preceding response",
+ "in": "query",
+ "name": "cursor",
+ "required": true,
+ "type": "string",
+ "x-example": "https://pub.fotmob.com/prod/db/api/team/9825/fixture-by-date?beforeTimestamp=1785607200"
}
],
"produces": [
@@ -259700,7 +287883,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259727,24 +287910,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Euronews article content",
+ "summary": "FotMob paginated team fixtures",
"tags": [
- "Euronews"
+ "FotMob"
]
}
},
- "/euronews/author": {
+ "/fotmob/team-news": {
"get": {
- "description": "Returns a Euronews author's byline metadata and recent articles from a canonical profile URL.",
- "operationId": "euronews-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the paginated article feed shown on a public FotMob team news page. Team ids can be found with /fotmob/search or /fotmob/team.",
+ "operationId": "fotmob-team-news",
"parameters": [
{
- "description": "Canonical Euronews author profile URL",
+ "description": "Numeric FotMob team id",
"in": "query",
- "name": "url",
+ "name": "team_id",
"required": true,
- "type": "string",
- "x-example": "https://www.euronews.com/profiles/2748"
+ "type": "integer",
+ "x-example": 8456
+ },
+ {
+ "description": "Zero-based news offset from 0 through 10000",
+ "in": "query",
+ "maximum": 10000,
+ "minimum": 0,
+ "name": "start_index",
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -259754,7 +287949,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.euronewsAuthorResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259781,67 +287976,122 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Euronews author profile",
+ "summary": "FotMob team news",
"tags": [
- "Euronews"
+ "FotMob"
]
}
},
- "/euronews/headlines": {
+ "/fotmob/transfers": {
"get": {
- "description": "Returns fresh headlines from one public Euronews English-edition section.",
- "operationId": "euronews-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns confirmed transfers, rumours, or popular transfers with the public transfer-center filters. Fee values are in EUR. Use fotmob/leagues and fotmob/search to discover league and team ids. The upstream returns 50 rows per page and caps its hit count at 10,000.",
+ "operationId": "fotmob-transfers",
"parameters": [
{
- "description": "Euronews section slug",
+ "default": "all",
+ "description": "Feed mode",
"enum": [
- "news",
- "news-africa",
- "news-americas",
- "news-asia",
- "news-international",
- "news-middle-east",
- "news-oceania",
- "business",
- "business-business",
- "business-economy",
- "business-markets",
- "culture",
- "culture-art",
- "culture-lifestyle",
- "culture-news",
- "culture-design",
- "culture-food-and-drink",
- "earth",
- "earth-climate",
- "earth-news",
- "earth-ecotech",
- "earth-nature",
- "earth-water",
- "health",
- "health-news",
- "health-healthcare",
- "health-nutrition",
- "health-wellbeing",
- "my-europe",
- "my-europe-eu-xl",
- "my-europe-news",
- "next",
- "next-mobility",
- "next-money",
- "next-space",
- "next-tech-news",
- "next-work",
- "travel",
- "travel-destinations",
- "travel-moments",
- "travel-residences",
- "travel-news"
+ "all",
+ "rumours",
+ "popular"
],
"in": "query",
- "name": "section",
- "required": true,
+ "name": "mode",
+ "type": "string"
+ },
+ {
+ "default": 1,
+ "description": "One-based result page; 50 rows per page",
+ "in": "query",
+ "maximum": 200,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "default": "6months",
+ "description": "Time window",
+ "enum": [
+ "6months",
+ "1year",
+ "2years",
+ "3years"
+ ],
+ "in": "query",
+ "name": "last",
+ "type": "string"
+ },
+ {
+ "default": "all",
+ "description": "Transfer direction; applied when league_ids or team_ids is supplied",
+ "enum": [
+ "all",
+ "in",
+ "out"
+ ],
+ "in": "query",
+ "name": "direction",
+ "type": "string"
+ },
+ {
+ "description": "Minimum transfer fee in EUR",
+ "in": "query",
+ "minimum": 0,
+ "name": "min_fee",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum transfer fee in EUR",
+ "in": "query",
+ "minimum": 0,
+ "name": "max_fee",
+ "type": "integer"
+ },
+ {
+ "description": "Comma-separated numeric FotMob league ids, up to 50; discover with /fotmob/leagues",
+ "in": "query",
+ "name": "league_ids",
+ "type": "string",
+ "x-example": "47"
+ },
+ {
+ "description": "Comma-separated numeric FotMob team ids, up to 50; discover with /fotmob/search",
+ "in": "query",
+ "name": "team_ids",
+ "type": "string",
+ "x-example": "8456"
+ },
+ {
+ "default": "lastModified",
+ "description": "Sort column",
+ "enum": [
+ "lastModified",
+ "fee",
+ "date",
+ "name",
+ "fromClubName",
+ "toClubName"
+ ],
+ "in": "query",
+ "name": "order_by",
"type": "string"
+ },
+ {
+ "default": false,
+ "description": "Exclude contract-extension records",
+ "in": "query",
+ "name": "exclude_extensions",
+ "type": "boolean"
+ },
+ {
+ "default": false,
+ "description": "Return only likely rumours; mode must be rumours",
+ "in": "query",
+ "name": "likely_only",
+ "type": "boolean"
}
],
"produces": [
@@ -259851,7 +288101,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259860,6 +288110,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -259872,16 +288128,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Euronews section headlines",
+ "summary": "FotMob transfer center",
"tags": [
- "Euronews"
+ "FotMob"
]
}
},
- "/euronews/news": {
+ "/fotmob/trending-news": {
"get": {
- "description": "Returns fresh Euronews English-edition top stories from its public RSS feed.",
- "operationId": "euronews-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the five-story Trending shelf shown on FotMob's public News page. Items are curated previews and may overlap the global latest-news feed; the upstream list is dynamic. No locale or country parameter is exposed because the complete accepted value space is not pinned.",
+ "operationId": "fotmob-trending-news",
"produces": [
"application/json"
],
@@ -259889,11 +288148,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/fotmob.newsListResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -259910,16 +288169,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Euronews top stories",
+ "summary": "FotMob trending football news",
"tags": [
- "Euronews"
+ "FotMob"
]
}
},
- "/euronews/sections": {
+ "/fotmob/trending-searches": {
"get": {
- "description": "Returns the public Euronews English-edition section inventory used by the headlines endpoint.",
- "operationId": "euronews-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns FotMob's current grouped trending suggestions for all entities, players, teams, and leagues. The feed is dynamic and may vary by the upstream's inferred region; no region or category parameter is exposed.",
+ "operationId": "fotmob-trending-searches",
"produces": [
"application/json"
],
@@ -259927,7 +288189,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -259936,33 +288204,117 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Euronews sections",
+ "summary": "FotMob trending search suggestions",
"tags": [
- "Euronews"
+ "FotMob"
]
}
},
- "/everlane/collections": {
+ "/fotmob/tv-guide": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized collections from Everlane (https://www.everlane.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
- "operationId": "everlane-collections",
+ "description": "Returns the public seven-day football broadcast schedule for a country, with local schedule times. Discover all accepted country codes from /fotmob/tv-guide-countries. Timezone defaults to UTC.",
+ "operationId": "fotmob-tv-guide",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Market code from /fotmob/tv-guide-countries",
+ "enum": [
+ "us",
+ "se",
+ "gb",
+ "de",
+ "no",
+ "es",
+ "mx",
+ "ar",
+ "bo",
+ "cl",
+ "co",
+ "cr",
+ "ec",
+ "gt",
+ "hn",
+ "ni",
+ "pa",
+ "py",
+ "pe",
+ "uy",
+ "ve",
+ "da",
+ "ca",
+ "au",
+ "at",
+ "be",
+ "bg",
+ "hr",
+ "cy",
+ "cz",
+ "ee",
+ "fi",
+ "fr",
+ "gr",
+ "hu",
+ "is",
+ "ie",
+ "il",
+ "it",
+ "nl",
+ "pl",
+ "pt",
+ "ro",
+ "ru",
+ "ch",
+ "tr",
+ "za",
+ "br",
+ "in",
+ "me",
+ "id",
+ "th",
+ "mm",
+ "al",
+ "az",
+ "bl",
+ "ba",
+ "ks",
+ "la",
+ "li",
+ "mk",
+ "rs",
+ "sk",
+ "ua",
+ "essv",
+ "nz",
+ "bd",
+ "cn",
+ "gh",
+ "hk",
+ "jp",
+ "kr",
+ "ma",
+ "mt",
+ "my",
+ "ng",
+ "ph",
+ "pk",
+ "sg",
+ "si",
+ "tz"
+ ],
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "country",
+ "required": true,
+ "type": "string",
+ "x-example": "us"
},
{
- "description": "Maximum collections, defaults to 50 and supports up to 250",
+ "description": "IANA timezone for local times",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "timezone",
+ "type": "string",
+ "x-example": "America/New_York"
}
],
"produces": [
@@ -259972,7 +288324,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -259981,8 +288333,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -259999,41 +288351,110 @@
"ApiKeyAuth": []
}
],
- "summary": "List Everlane collections",
+ "summary": "FotMob football TV guide",
"tags": [
- "Everlane"
+ "FotMob"
]
}
},
- "/everlane/collections/{handle}/products": {
+ "/fotmob/tv-guide-channels": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from one Everlane (https://www.everlane.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
- "operationId": "everlane-collection-products",
+ "description": "Discovers channels attached to matches in the selected country's current seven-day public TV guide window. Use the country directory to discover the complete country code set.",
+ "operationId": "fotmob-tv-guide-channels",
"parameters": [
{
- "description": "Collection handle",
- "in": "path",
- "name": "handle",
+ "description": "Market code from /fotmob/tv-guide-countries",
+ "enum": [
+ "us",
+ "se",
+ "gb",
+ "de",
+ "no",
+ "es",
+ "mx",
+ "ar",
+ "bo",
+ "cl",
+ "co",
+ "cr",
+ "ec",
+ "gt",
+ "hn",
+ "ni",
+ "pa",
+ "py",
+ "pe",
+ "uy",
+ "ve",
+ "da",
+ "ca",
+ "au",
+ "at",
+ "be",
+ "bg",
+ "hr",
+ "cy",
+ "cz",
+ "ee",
+ "fi",
+ "fr",
+ "gr",
+ "hu",
+ "is",
+ "ie",
+ "il",
+ "it",
+ "nl",
+ "pl",
+ "pt",
+ "ro",
+ "ru",
+ "ch",
+ "tr",
+ "za",
+ "br",
+ "in",
+ "me",
+ "id",
+ "th",
+ "mm",
+ "al",
+ "az",
+ "bl",
+ "ba",
+ "ks",
+ "la",
+ "li",
+ "mk",
+ "rs",
+ "sk",
+ "ua",
+ "essv",
+ "nz",
+ "bd",
+ "cn",
+ "gh",
+ "hk",
+ "jp",
+ "kr",
+ "ma",
+ "mt",
+ "my",
+ "ng",
+ "ph",
+ "pk",
+ "sg",
+ "si",
+ "tz"
+ ],
+ "in": "query",
+ "name": "country",
"required": true,
"type": "string",
- "x-example": "collection-handle"
- },
- {
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum products, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "x-example": "us"
}
],
"produces": [
@@ -260043,7 +288464,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"400": {
@@ -260058,12 +288479,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -260076,35 +288491,19 @@
"ApiKeyAuth": []
}
],
- "summary": "List Everlane collection products",
+ "summary": "FotMob TV guide channels",
"tags": [
- "Everlane"
+ "FotMob"
]
}
},
- "/everlane/pages": {
+ "/fotmob/tv-guide-countries": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static pages from Everlane (https://www.everlane.com). The storefront URL is fixed server-side.",
- "operationId": "everlane-pages",
- "parameters": [
- {
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum static pages, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
- }
- ],
+ "description": "Lists all country codes exposed by FotMob's public football TV guide country selector.",
+ "operationId": "fotmob-tv-guide-countries",
"produces": [
"application/json"
],
@@ -260112,19 +288511,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/fotmob.responseDoc"
}
},
"503": {
@@ -260139,27 +288526,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Everlane static pages",
+ "summary": "FotMob TV guide country directory",
"tags": [
- "Everlane"
+ "FotMob"
]
}
},
- "/everlane/pages/{handle}": {
+ "/foxnews/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized static page detail for one Everlane (https://www.everlane.com) page handle. The storefront URL is fixed server-side.",
- "operationId": "everlane-page",
+ "description": "Returns public Fox News article metadata and body paragraphs from a canonical article URL. This does not bypass login, subscription, or other access controls.",
+ "operationId": "foxnews-article",
"parameters": [
{
- "description": "Page handle",
- "in": "path",
- "name": "handle",
+ "description": "Canonical Fox News article URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "page-handle"
+ "x-example": "https://www.foxnews.com/us/example-story"
}
],
"produces": [
@@ -260169,7 +288553,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pageResponseDoc"
+ "$ref": "#/definitions/foxnews.articleResponseDoc"
}
},
"400": {
@@ -260202,33 +288586,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Everlane static page",
+ "summary": "Get Fox News article content",
"tags": [
- "Everlane"
+ "Fox News"
]
}
},
- "/everlane/products": {
+ "/foxnews/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized products from Everlane's (https://www.everlane.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
- "operationId": "everlane-products",
+ "description": "Returns one Fox News author/personality's public bio page: name, biography, and their most recent articles. Provide either the author's name slug or the full https://www.foxnews.com/person// page URL.",
+ "operationId": "foxnews-author",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Fox News author name slug, e.g. brooke-taylor",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "slug",
+ "type": "string",
+ "x-example": "brooke-taylor"
},
{
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Canonical https://www.foxnews.com/person// author page URL, as an alternative to slug",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.foxnews.com/person/t/brooke-taylor"
}
],
"produces": [
@@ -260238,7 +288619,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productsResponseDoc"
+ "$ref": "#/definitions/foxnews.authorResponseDoc"
}
},
"400": {
@@ -260247,6 +288628,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -260265,27 +288652,38 @@
"ApiKeyAuth": []
}
],
- "summary": "List Everlane products",
+ "summary": "Get Fox News author profile",
"tags": [
- "Everlane"
+ "Fox News"
]
}
},
- "/everlane/products/{handle}": {
+ "/foxnews/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized product detail for one Everlane (https://www.everlane.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
- "operationId": "everlane-product",
+ "description": "Returns fresh headlines from one public Fox News article RSS section. Use foxnews-sections for the current value space.",
+ "operationId": "foxnews-headlines",
"parameters": [
{
- "description": "Product handle",
- "in": "path",
- "name": "handle",
+ "description": "Fox News RSS section slug: us, world, politics, science, health, sports, travel, tech, opinion, entertainment, media, or lifestyle",
+ "enum": [
+ "us",
+ "world",
+ "politics",
+ "science",
+ "health",
+ "sports",
+ "travel",
+ "tech",
+ "opinion",
+ "entertainment",
+ "media",
+ "lifestyle"
+ ],
+ "in": "query",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "product-handle"
+ "x-example": "us"
}
],
"produces": [
@@ -260295,7 +288693,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productResponseDoc"
+ "$ref": "#/definitions/foxnews.headlinesResponseDoc"
}
},
"400": {
@@ -260328,47 +288726,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Everlane product",
+ "summary": "Get Fox News section headlines",
"tags": [
- "Everlane"
+ "Fox News"
]
}
},
- "/everlane/products/{handle}/recommendations": {
+ "/foxnews/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized recommended products for one Everlane (https://www.everlane.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
- "operationId": "everlane-product-recommendations",
- "parameters": [
- {
- "description": "Product handle",
- "in": "path",
- "name": "handle",
- "required": true,
- "type": "string",
- "x-example": "product-handle"
- },
- {
- "description": "Maximum products, defaults to 10 and supports up to 20",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Recommendation intent. Allowed values: related, complementary",
- "enum": [
- "related",
- "complementary"
- ],
- "in": "query",
- "name": "intent",
- "type": "string",
- "x-example": "related"
- }
- ],
+ "description": "Returns fresh Fox News top stories from the public site-wide RSS feed. The feed is a public headline/body source and does not require credentials.",
+ "operationId": "foxnews-news",
"produces": [
"application/json"
],
@@ -260376,19 +288743,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/foxnews.newsResponseDoc"
}
},
"429": {
@@ -260409,41 +288764,46 @@
"ApiKeyAuth": []
}
],
- "summary": "List Everlane product recommendations",
+ "summary": "Get Fox News top stories",
"tags": [
- "Everlane"
+ "Fox News"
]
}
},
- "/everlane/search/suggest": {
+ "/foxnews/search": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns products, collections, and query suggestions from Everlane's (https://www.everlane.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
- "operationId": "everlane-search-suggest",
+ "description": "Searches Fox News' public credential-free Moxie search surface. Results may include article, video, or slideshow records; use type to restrict the result kind.",
+ "operationId": "foxnews-search",
"parameters": [
{
"description": "Search query",
"in": "query",
+ "maxLength": 200,
+ "minLength": 1,
"name": "q",
"required": true,
"type": "string",
- "x-example": "wool"
+ "x-example": "election"
},
{
- "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
+ "default": 1,
+ "description": "1-based result offset",
"in": "query",
- "name": "types",
- "type": "string",
- "x-example": "product,collection,query"
+ "maximum": 10000,
+ "minimum": 1,
+ "name": "start",
+ "type": "integer"
},
{
- "description": "Maximum results per type, defaults to 10 and supports up to 20",
+ "description": "Result type",
+ "enum": [
+ "article",
+ "video",
+ "slideshow"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
+ "name": "type",
+ "type": "string"
}
],
"produces": [
@@ -260453,7 +288813,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
+ "$ref": "#/definitions/foxnews.searchResponseDoc"
}
},
"400": {
@@ -260480,42 +288840,56 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Everlane search suggestions",
+ "summary": "Search Fox News public content",
"tags": [
- "Everlane"
+ "Fox News"
]
}
},
- "/everlane/sitemap/urls": {
+ "/foxnews/sections": {
"get": {
- "consumes": [
+ "description": "Returns the exact live-verified Fox News article RSS section slugs accepted by foxnews-headlines. The video-only RSS feed is intentionally excluded.",
+ "operationId": "foxnews-sections",
+ "produces": [
"application/json"
],
- "description": "Returns capped URL entries from Everlane's (https://www.everlane.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
- "operationId": "everlane-sitemap-urls",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/foxnews.sectionsResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Fox News RSS sections",
+ "tags": [
+ "Fox News"
+ ]
+ }
+ },
+ "/foxsports/article": {
+ "get": {
+ "description": "Returns public FOX Sports article metadata and body paragraphs from a canonical foxsports.com/stories// URL. Public body content stops at the article body container.",
+ "operationId": "foxsports-article",
"parameters": [
{
- "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
- "enum": [
- "all",
- "products",
- "collections",
- "pages",
- "blogs",
- "agentic_discovery",
- "other"
- ],
+ "description": "Canonical FOX Sports story URL",
"in": "query",
- "name": "type",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "products"
- },
- {
- "description": "Maximum URL entries, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "x-example": "https://www.foxsports.com/stories/nfl/how-to-watch-eagles-vs-bears-tv-channel-live-stream-time-2026-week-3"
}
],
"produces": [
@@ -260525,7 +288899,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -260534,6 +288908,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -260552,19 +288932,51 @@
"ApiKeyAuth": []
}
],
- "summary": "List Everlane sitemap URLs",
+ "summary": "Get FOX Sports article content",
"tags": [
- "Everlane"
+ "FOX Sports"
]
}
},
- "/everlane/sitemaps": {
+ "/foxsports/headlines": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns current headlines from one public FOX Sports editorial RSS feed.",
+ "operationId": "foxsports-headlines",
+ "parameters": [
+ {
+ "description": "FOX Sports section slug",
+ "enum": [
+ "top",
+ "mlb",
+ "nfl",
+ "college-football",
+ "ufl",
+ "nba",
+ "nhl",
+ "college-basketball",
+ "nascar",
+ "ufc",
+ "motor-sports",
+ "golf",
+ "soccer",
+ "fifa-world-cup",
+ "fifa-womens-world-cup",
+ "olympics",
+ "tennis",
+ "horseracing",
+ "westminster-kennel-club-dog-show",
+ "wnba",
+ "womens-college-basketball",
+ "world-baseball-classic",
+ "wwe"
+ ],
+ "in": "query",
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "top"
+ }
],
- "description": "Returns child sitemap URLs from Everlane's (https://www.everlane.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
- "operationId": "everlane-sitemaps",
"produces": [
"application/json"
],
@@ -260572,7 +288984,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -260599,19 +289011,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List Everlane sitemaps",
+ "summary": "Get FOX Sports section headlines",
"tags": [
- "Everlane"
+ "FOX Sports"
]
}
},
- "/everlane/store": {
+ "/foxsports/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized storefront metadata for Everlane (https://www.everlane.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
- "operationId": "everlane-store",
+ "description": "Returns current FOX Sports top stories from the official public All Headlines RSS feed.",
+ "operationId": "foxsports-news",
"produces": [
"application/json"
],
@@ -260619,13 +289028,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.storeResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -260646,24 +289049,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Everlane store metadata",
+ "summary": "Get FOX Sports top stories",
"tags": [
- "Everlane"
+ "FOX Sports"
]
}
},
- "/ew/article": {
+ "/foxsports/sections": {
"get": {
- "description": "Returns public Entertainment Weekly article metadata and body paragraphs from a canonical article URL.",
- "operationId": "ew-article",
+ "description": "Returns the live-verified public editorial RSS feed inventory used by foxsports-headlines.",
+ "operationId": "foxsports-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get FOX Sports news sections",
+ "tags": [
+ "FOX Sports"
+ ]
+ }
+ },
+ "/france24/article": {
+ "get": {
+ "description": "Returns public France 24 English-edition article metadata and body paragraphs from a canonical article URL. Live-blog pages are supported and return their chronological update entries as body paragraphs.",
+ "operationId": "france24-article",
"parameters": [
{
- "description": "Canonical Entertainment Weekly article URL",
+ "description": "Canonical France 24 article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://ew.com/jean-smart-succeeds-diane-keaton-as-craig-t-nelson-love-interest-in-family-stone-sequel-12137476"
+ "x-example": "https://www.france24.com/en/europe/20260924-eu-sanctions-russian-pundit-xenia-fedorova-after-expulsion-from-france"
}
],
"produces": [
@@ -260700,24 +289129,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Entertainment Weekly article content",
+ "summary": "Get France 24 article content",
"tags": [
- "Entertainment Weekly"
+ "France 24"
]
}
},
- "/ew/author": {
+ "/france24/author": {
"get": {
- "description": "Returns one Entertainment Weekly contributor's public profile (name, job title, biography) and their recent articles from a canonical author URL.",
- "operationId": "ew-author",
+ "description": "Returns one France 24 byline's public profile (name, job title, biography) and their recent articles from a canonical author-profile URL. This includes the shared \"FRANCE 24\" newsroom byline used on many stories, which has no individual biography.",
+ "operationId": "france24-author",
"parameters": [
{
- "description": "Canonical ew.com/author/ or ew.com/- profile URL",
+ "description": "Canonical www.france24.com/en/author// URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://ew.com/author/dalton-ross/"
+ "x-example": "https://www.france24.com/en/author/france-24/"
}
],
"produces": [
@@ -260727,7 +289156,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.ewAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.france24AuthorResponseDoc"
}
},
"400": {
@@ -260754,34 +289183,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an Entertainment Weekly author profile",
+ "summary": "Get a France 24 author profile",
"tags": [
- "Entertainment Weekly"
+ "France 24"
]
}
},
- "/ew/headlines": {
+ "/france24/headlines": {
"get": {
- "description": "Returns fresh headlines from one public Entertainment Weekly section.",
- "operationId": "ew-headlines",
+ "description": "Returns fresh headlines from one public France 24 English-edition section.",
+ "operationId": "france24-headlines",
"parameters": [
{
- "description": "Entertainment Weekly section slug",
+ "description": "France 24 section slug",
"enum": [
- "tv",
- "movies",
- "music",
- "what-to-watch",
- "binge",
- "celebrity",
- "awardist",
- "books",
- "theater"
+ "africa",
+ "americas",
+ "asia-pacific",
+ "europe",
+ "france",
+ "middle-east",
+ "business-tech",
+ "culture",
+ "environment",
+ "sport",
+ "live-news",
+ "tv-shows"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "africa"
}
],
"produces": [
@@ -260812,16 +289245,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Entertainment Weekly section headlines",
+ "summary": "Get France 24 section headlines",
"tags": [
- "Entertainment Weekly"
+ "France 24"
]
}
},
- "/ew/news": {
+ "/france24/news": {
"get": {
- "description": "Returns fresh Entertainment Weekly stories from its homepage.",
- "operationId": "ew-news",
+ "description": "Returns fresh France 24 English-edition stories from the public RSS feed.",
+ "operationId": "france24-news",
"produces": [
"application/json"
],
@@ -260844,16 +289277,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Entertainment Weekly top stories",
+ "summary": "Get France 24 top stories",
"tags": [
- "Entertainment Weekly"
+ "France 24"
]
}
},
- "/ew/sections": {
+ "/france24/sections": {
"get": {
- "description": "Returns the complete public Entertainment Weekly primary-navigation section inventory accepted by /ew/headlines.",
- "operationId": "ew-sections",
+ "description": "Returns the complete public France 24 English-edition section inventory (regions, topics, and other public hubs) accepted by /france24/headlines.",
+ "operationId": "france24-sections",
"produces": [
"application/json"
],
@@ -260870,30 +289303,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Entertainment Weekly sections",
+ "summary": "Get France 24 sections",
"tags": [
- "Entertainment Weekly"
+ "France 24"
]
}
},
- "/expedia/activities/search": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Expedia Things To Do (activities/tours) search results for a free-text destination and date range.",
- "operationId": "expedia-activities-search",
- "parameters": [
- {
- "description": "Activity search payload",
- "in": "body",
- "name": "option",
- "required": true,
- "schema": {
- "$ref": "#/definitions/expedia.ActivitySearchOption"
- }
- }
- ],
+ "/freemalaysiatoday/news": {
+ "get": {
+ "description": "Returns Free Malaysia Today's current public top-stories RSS feed: each story's title, canonical URL, summary, author, publication time, and lead image.",
+ "operationId": "freemalaysiatoday-news",
"produces": [
"application/json"
],
@@ -260901,23 +289320,49 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/expedia.expediaActivitySearchResponseDoc"
+ "$ref": "#/definitions/freemalaysiatoday.newsResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get the latest Free Malaysia Today stories",
+ "tags": [
+ "Free Malaysia Today"
+ ]
+ }
+ },
+ "/freemalaysiatoday/sections": {
+ "get": {
+ "description": "Lists every live-verified primary editorial navigation section, with its slug, display name, and landing-page URL. This is the live-verified primary editorial navigation taxonomy; media, promotional, and duplicate commercial destinations are excluded.",
+ "operationId": "freemalaysiatoday-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/freemalaysiatoday.sectionsResponseDoc"
+ }
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -260934,28 +289379,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Expedia activities",
+ "summary": "List Free Malaysia Today sections",
"tags": [
- "Expedia"
+ "Free Malaysia Today"
]
}
},
- "/expedia/flights/search": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Expedia Flights search results (departing-leg offers) for an origin/destination IATA pair and date range.",
- "operationId": "expedia-flights-search",
+ "/ft/article": {
+ "get": {
+ "description": "Returns one public Financial Times article's metadata and body paragraphs from a canonical article URL. Subscriber-only articles that the FT serves as a subscription page are not available.",
+ "operationId": "ft-article",
"parameters": [
{
- "description": "Flights search payload",
- "in": "body",
- "name": "option",
+ "description": "Canonical FT article URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "schema": {
- "$ref": "#/definitions/expedia.FlightsSearchOption"
- }
+ "type": "string",
+ "x-example": "https://www.ft.com/content/018aa34c-2498-4120-906b-5baf36e98c77"
}
],
"produces": [
@@ -260965,7 +289406,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/expedia.expediaFlightsSearchResponseDoc"
+ "$ref": "#/definitions/ft.articleResponseDoc"
}
},
"400": {
@@ -260974,14 +289415,20 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "403": {
+ "description": "Forbidden",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -260998,28 +289445,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Expedia flights",
+ "summary": "Get a Financial Times article's content",
"tags": [
- "Expedia"
+ "FT"
]
}
},
- "/expedia/locations/search": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized destination/property typeahead suggestions (cities, airports, neighborhoods, hotels) for a free-text term.",
- "operationId": "expedia-locations-search",
+ "/ft/author": {
+ "get": {
+ "description": "Returns one Financial Times contributor's public byline profile (name, job title, email, social accounts) plus one page of their recent articles. FT author pages carry no bio paragraph, only this byline metadata.",
+ "operationId": "ft-author",
"parameters": [
{
- "description": "Location search payload",
- "in": "body",
- "name": "option",
- "required": true,
- "schema": {
- "$ref": "#/definitions/expedia.LocationSearchOption"
- }
+ "description": "Author URL slug, e.g. martin-wolf",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "martin-wolf"
+ },
+ {
+ "description": "Canonical www.ft.com/ author URL; alternative to slug",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.ft.com/martin-wolf"
+ },
+ {
+ "default": 1,
+ "description": "1-based page number of the author's article list",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -261029,7 +289485,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/expedia.expediaLocationSearchResponseDoc"
+ "$ref": "#/definitions/ft.authorResponseDoc"
}
},
"400": {
@@ -261038,14 +289494,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261062,30 +289518,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Expedia destinations",
+ "summary": "Get an FT author profile",
"tags": [
- "Expedia"
+ "FT"
]
}
},
- "/expedia/properties/detail": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a hotel's detail summary (name, star rating, address/coordinates, top amenities) for a known property id.",
- "operationId": "expedia-properties-detail",
- "parameters": [
- {
- "description": "Property detail payload",
- "in": "body",
- "name": "option",
- "required": true,
- "schema": {
- "$ref": "#/definitions/expedia.PropertyDetailOption"
- }
- }
- ],
+ "/ft/categories": {
+ "get": {
+ "description": "Lists every Financial Times section accepted by /ft/headlines, grouped by top-level section, with each section's slug, display name, and landing-page URL.",
+ "operationId": "ft-categories",
"produces": [
"application/json"
],
@@ -261093,7 +289535,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/expedia.expediaPropertyDetailResponseDoc"
+ "$ref": "#/definitions/ft.categoriesResponseDoc"
}
},
"400": {
@@ -261102,24 +289544,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -261132,28 +289562,32 @@
"ApiKeyAuth": []
}
],
- "summary": "Expedia Stays property detail",
+ "summary": "List Financial Times sections",
"tags": [
- "Expedia"
+ "FT"
]
}
},
- "/expedia/properties/filters": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the sort and filter facets (amenities, star rating, neighborhood, nightly price range, sort options) available for a Stays search.",
- "operationId": "expedia-properties-filters",
+ "/ft/headlines": {
+ "get": {
+ "description": "Returns one page of a Financial Times section front: each story's title, canonical URL, summary, section tag, publication time, and lead image. Section must be a slug returned by /ft/categories.",
+ "operationId": "ft-headlines",
"parameters": [
{
- "description": "Property filters payload",
- "in": "body",
- "name": "option",
+ "description": "Section slug from /ft/categories",
+ "in": "query",
+ "name": "section",
"required": true,
- "schema": {
- "$ref": "#/definitions/expedia.PropertyFiltersOption"
- }
+ "type": "string",
+ "x-example": "world"
+ },
+ {
+ "description": "Results page",
+ "in": "query",
+ "maximum": 20,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -261163,7 +289597,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/expedia.expediaPropertyFiltersResponseDoc"
+ "$ref": "#/definitions/ft.headlinesResponseDoc"
}
},
"400": {
@@ -261184,8 +289618,46 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get the latest stories in a Financial Times section",
+ "tags": [
+ "FT"
+ ]
+ }
+ },
+ "/ft/news": {
+ "get": {
+ "description": "Returns the Financial Times' current news feed: the newest stories across all sections, each with its title, canonical URL, and publication time.",
+ "operationId": "ft-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ft.newsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261202,28 +289674,54 @@
"ApiKeyAuth": []
}
],
- "summary": "Expedia search filters",
+ "summary": "Get the latest Financial Times stories",
"tags": [
- "Expedia"
+ "FT"
]
}
},
- "/expedia/properties/reviews": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a hotel's overall rating and highlighted/recent guest reviews (reviewer, date, rating, message) for a known property id.",
- "operationId": "expedia-properties-reviews",
+ "/ft/search": {
+ "get": {
+ "description": "Returns one page of Financial Times search results: each story's title, canonical URL, summary, section tag, publication time, and lead image. Results can be ordered by relevance or date and filtered by publication window.",
+ "operationId": "ft-search",
"parameters": [
{
- "description": "Property reviews payload",
- "in": "body",
- "name": "option",
+ "description": "Search keywords",
+ "in": "query",
+ "name": "q",
"required": true,
- "schema": {
- "$ref": "#/definitions/expedia.PropertyReviewsOption"
- }
+ "type": "string",
+ "x-example": "climate"
+ },
+ {
+ "description": "Results page",
+ "in": "query",
+ "maximum": 100,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Result ordering",
+ "enum": [
+ "relevance",
+ "date"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Publication-window filter",
+ "enum": [
+ "now-24h",
+ "now-7d",
+ "now-30d",
+ "now-1y"
+ ],
+ "in": "query",
+ "name": "date_range",
+ "type": "string"
}
],
"produces": [
@@ -261233,7 +289731,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/expedia.expediaPropertyReviewsResponseDoc"
+ "$ref": "#/definitions/ft.searchResponseDoc"
}
},
"400": {
@@ -261254,12 +289752,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -261272,28 +289764,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Expedia Stays property guest reviews",
+ "summary": "Search Financial Times articles",
"tags": [
- "Expedia"
+ "FT"
]
}
},
- "/expedia/properties/search": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Expedia Stays (hotel) search results for a free-text destination and date range. Promotional banners and sponsored ad slots are dropped, so every returned property has an id and name.",
- "operationId": "expedia-properties-search",
+ "/gamerant/article": {
+ "get": {
+ "description": "Returns public Game Rant article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "gamerant-article",
"parameters": [
{
- "description": "Property search payload",
- "in": "body",
- "name": "option",
+ "description": "Canonical Game Rant article URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "schema": {
- "$ref": "#/definitions/expedia.PropertySearchOption"
- }
+ "type": "string",
+ "x-example": "https://gamerant.com/xbox-console-update-patch-notes-september-2026/"
}
],
"produces": [
@@ -261303,7 +289791,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/expedia.expediaPropertySearchResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -261324,12 +289812,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -261342,28 +289824,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Expedia Stays properties",
+ "summary": "Get Game Rant article content",
"tags": [
- "Expedia"
+ "Game Rant"
]
}
},
- "/extract": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Scrapes a public URL into clean Markdown, then returns data that strictly conforms to the supplied bounded JSON Schema.",
- "operationId": "extract",
+ "/gamerant/author": {
+ "get": {
+ "description": "Returns a Game Rant author's byline metadata, biography, social links, and recent articles from a canonical author URL.",
+ "operationId": "gamerant-author",
"parameters": [
{
- "description": "Extraction options",
- "in": "body",
- "name": "extractOption",
+ "description": "Canonical Game Rant author URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "schema": {
- "$ref": "#/definitions/extract.Option"
- }
+ "type": "string",
+ "x-example": "https://gamerant.com/author/dominik-bosnjak/"
}
],
"produces": [
@@ -261373,23 +289851,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/extract.responseDoc"
+ "$ref": "#/definitions/publicnews.gamerantAuthorResponseDoc"
}
},
"400": {
- "description": "Invalid URL or schema",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Extraction is not configured",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "502": {
- "description": "Fetch or model provider failed",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261400,114 +289878,204 @@
"ApiKeyAuth": []
}
],
- "summary": "Extract schema-conforming JSON from a URL",
+ "summary": "Get a Game Rant author profile",
"tags": [
- "Web"
+ "Game Rant"
]
}
},
- "/facebook/marketplace/search": {
+ "/gamerant/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Fetches Facebook Marketplace search or browse results for a location: listing id, title, price, city/state, and a thumbnail image per result. Only the first page Facebook's own server-rendered results page returns is available — Facebook's own further pagination requires a logged-in session and is out of scope. Omit both query and category to get the location's browse feed instead of running a search. minPrice, maxPrice, sortBy, daysSinceListed, and condition only take effect alongside a query or category (Facebook itself ignores them on the plain browse feed), except for the property_rentals category, which has its own always-filtered listing page. This endpoint can take noticeably longer than other search endpoints (up to roughly a minute in the slowest case) as it retries to get past an intermittent upstream condition; priced accordingly.",
- "operationId": "facebook-marketplace-search",
+ "description": "Returns fresh headlines from one public Game Rant RSS section. Items from video sections have type video and are not readable through the article endpoint.",
+ "operationId": "gamerant-headlines",
"parameters": [
{
- "description": "Facebook Marketplace location vanity slug",
- "in": "query",
- "name": "location",
- "required": true,
- "type": "string",
- "x-example": "austin"
- },
- {
- "description": "Free-text search terms; omit (with category) for the location's browse feed",
- "in": "query",
- "name": "query",
- "type": "string",
- "x-example": "bike"
- },
- {
- "description": "Marketplace category",
- "enum": [
- "vehicles",
- "property_rentals",
- "classifieds",
- "apparel",
- "electronics",
- "entertainment",
- "family",
- "free",
- "garden_outdoors",
- "hobbies",
- "home_goods",
- "home_improvement",
- "musical_instruments",
- "office_supplies",
- "pet_supplies",
- "property_sale",
- "sporting_goods",
- "toys_games"
- ],
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "vehicles"
- },
- {
- "description": "Minimum price in whole currency units; requires query or category",
- "in": "query",
- "name": "min_price",
- "type": "integer",
- "x-example": 20
- },
- {
- "description": "Maximum price in whole currency units; requires query or category",
- "in": "query",
- "name": "max_price",
- "type": "integer",
- "x-example": 500
- },
- {
- "description": "Result order; requires query or category",
- "enum": [
- "best_match",
- "distance_ascend",
- "creation_time_descend",
- "price_ascend",
- "price_descend"
- ],
- "in": "query",
- "name": "sort_by",
- "type": "string",
- "x-example": "price_ascend"
- },
- {
- "description": "Restrict to listings posted within this many days; requires query or category",
- "enum": [
- 1,
- 7,
- 30
- ],
- "in": "query",
- "name": "days_since_listed",
- "type": "integer",
- "x-example": 7
- },
- {
- "description": "Comma-separated listing conditions; requires query or category",
+ "description": "Game Rant RSS section slug",
"enum": [
- "new",
- "used_like_new",
- "used_good",
- "used_fair"
+ "games",
+ "gaming",
+ "pc-news",
+ "steam-news",
+ "core-news",
+ "xbox-series-xs-news",
+ "xbox-news",
+ "xbox-one-news",
+ "platforms",
+ "lists",
+ "strategy-guide",
+ "anime",
+ "anime-news",
+ "nintendo-news",
+ "legend-of-zelda-news",
+ "originals",
+ "features",
+ "gaming-features",
+ "exclusives",
+ "ps5-news",
+ "bethesda-news",
+ "playstation-news",
+ "pokemon-news",
+ "animal-crossing-news",
+ "activision-news",
+ "call-of-duty-news",
+ "grand-theft-auto-news",
+ "epic-games-store-news",
+ "nintendo-switch-news",
+ "fortnite-news",
+ "one-piece-news",
+ "anime-editorial",
+ "diablo-news",
+ "pokemon-go-news",
+ "mobile-news",
+ "ios-news",
+ "android-news",
+ "tabletop",
+ "dc-news",
+ "mortal-kombat-news",
+ "latest-videos",
+ "game-rant-series",
+ "gamerant-gaming-videos-original",
+ "videos",
+ "disney-news",
+ "movies-tv",
+ "movies-tv-news",
+ "movies-tv-lists",
+ "movies-tv-features",
+ "giveaways-contests",
+ "stardew-valley-articles",
+ "grand-theft-auto-5-news",
+ "cd-projekt-red-news",
+ "halo-news",
+ "persona-news",
+ "death-stranding-news",
+ "dragon-ball-z-news",
+ "genshin-impact-guides",
+ "lord-of-the-rings-news",
+ "world-of-warcraft-news",
+ "streaming",
+ "the-witcher-franchise-news",
+ "final-fantasy-news",
+ "resident-evil-news",
+ "final-fantasy-7-news",
+ "ps4-news",
+ "call-of-duty-warzone-news",
+ "the-elder-scrolls-news",
+ "destiny-news",
+ "fallout-news",
+ "red-dead-redemption-news",
+ "game-reviews",
+ "final-fantasy-14-news",
+ "the-last-of-us-news",
+ "nintendo-3ds-news",
+ "fallout-76-news",
+ "marvel-news",
+ "featured",
+ "editorial",
+ "ps3-news",
+ "xbox-360-news",
+ "video-interviews",
+ "assassins-creed-news",
+ "pause-for-thought",
+ "star-wars-news",
+ "pokemon-scarlet-violet-news",
+ "theme-parks",
+ "bloodborne-news",
+ "review-roundup",
+ "apex-legends-news",
+ "dungeons-and-dragons-news",
+ "kingdom-hearts-franchise-news",
+ "dragon-age-news",
+ "overwatch-news",
+ "overwatch-2-news",
+ "pokemon-legends-z-a-news",
+ "pokemon-videos",
+ "minecraft-news",
+ "game-previews",
+ "elden-ring-news",
+ "amazon-news",
+ "doom-news",
+ "no-mans-sky-news",
+ "metroid-franchise-news",
+ "league-of-legends-news",
+ "borderlands-news",
+ "super-smash-bros-news",
+ "valheim-news",
+ "spider-man-news",
+ "wii-news",
+ "pokemon-go-guides",
+ "the-witcher-3-news",
+ "red-dead-redemption-2-news",
+ "battlefield-franchise-news",
+ "gta-online-news",
+ "cod-modern-warfare-news",
+ "video-lists",
+ "playstation-videos",
+ "xbox-videos",
+ "dark-souls-news",
+ "video-originals",
+ "genshin-impact-news",
+ "elden-ring-videos",
+ "mass-effect-news",
+ "rainbow-six-siege-news",
+ "rainbow-six-franchise-news",
+ "god-of-war-news",
+ "persona-5-news",
+ "the-last-of-us-2-news",
+ "explainer",
+ "stardew-valley-guides",
+ "halo-infinite-news",
+ "hardware-reviews",
+ "movie-review",
+ "dead-by-daylight-news",
+ "far-cry-franchise-news",
+ "zelda-breath-of-the-wild-news",
+ "pokemon-go-reading",
+ "365-days-later",
+ "dead-space-news",
+ "acnh-news",
+ "game-rant-advance",
+ "nintendo-switch-reviews",
+ "pokemon-scarlet-and-violet-features",
+ "red-dead-online-news",
+ "game-deals",
+ "steam-videos",
+ "psn-news",
+ "complete-guides-walkthroughs",
+ "horizon-forbidden-west-news",
+ "tv-review",
+ "game-trailers",
+ "assassins-creed-videos",
+ "wii-u-news",
+ "pc-videos",
+ "pubg-news",
+ "buyers-guides",
+ "cyberpunk-videos",
+ "baldurs-gate-3-videos",
+ "pokemon-legends-z-a-guides",
+ "rantable",
+ "pokemon-scarlet-and-violet-guides",
+ "fallout-videos",
+ "fallout-4-videos",
+ "game-rant-mailbag",
+ "video-news",
+ "star-wars-outlaws-videos",
+ "hype-train-videos",
+ "borderlands-3-news",
+ "bite-size-lore",
+ "open-world-videos",
+ "gamers-said",
+ "red-dead-redemption-2-videos",
+ "stardew-valley-videos",
+ "have-you-heard-of",
+ "creators-on-game-rant",
+ "movies-tv-trailers",
+ "indie-videos"
],
"in": "query",
- "name": "condition",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "new,used_like_new"
+ "x-example": "games"
}
],
"produces": [
@@ -261517,23 +290085,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/facebook.marketplaceSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
- "description": "Bad request — missing location, an unrecognized enum value, an invalid price range, or a filter given without query/category",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Location not recognized by Facebook Marketplace",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error while fetching search results",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261544,29 +290112,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Facebook Marketplace",
+ "summary": "Get Game Rant section headlines",
"tags": [
- "Facebook"
+ "Game Rant"
]
}
},
- "/facebook/{page}": {
+ "/gamerant/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Fetches public data about a Facebook Page given its page ID, vanity name, or full page URL: name, follower/like counts, intro, category, business hours/price range, review count, and any public contact details (email, phone, address, website, WhatsApp number) exposed on the Page's About tab.",
- "operationId": "facebook-page",
- "parameters": [
- {
- "description": "Facebook Page reference: vanity name, handle, profile.php id, or full Facebook URL",
- "in": "path",
- "name": "page",
- "required": true,
- "type": "string",
- "x-example": "nike"
- }
- ],
+ "description": "Returns fresh Game Rant top stories from its public RSS feed.",
+ "operationId": "gamerant-news",
"produces": [
"application/json"
],
@@ -261574,23 +290129,49 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/facebook.pageResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "400": {
- "description": "Bad request — missing or invalid page reference",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Page not found or unavailable",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Game Rant top stories",
+ "tags": [
+ "Game Rant"
+ ]
+ }
+ },
+ "/gamerant/sections": {
+ "get": {
+ "description": "Returns the public Game Rant RSS section inventory used by the headlines endpoint.",
+ "operationId": "gamerant-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
},
- "500": {
- "description": "Internal server error while fetching page data",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261601,19 +290182,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Facebook page details",
+ "summary": "Get Game Rant RSS sections",
"tags": [
- "Facebook"
+ "Game Rant"
]
}
},
- "/fanatics/categories": {
+ "/gamesradar/article": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns public GamesRadar+ article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "gamesradar-article",
+ "parameters": [
+ {
+ "description": "Canonical GamesRadar+ article URL",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.gamesradar.com/games/silent-hill/silent-hill-townfall-review/"
+ }
],
- "description": "Returns Fanatics' full top-level navigation tree: leagues (NFL, MLB, NBA, NHL, Soccer, WWE, College, ...) and, where Fanatics exposes a team-level breakdown, each league's teams (College's several hundred schools included). Each league's or team's url is directly usable as fanatics_category's url input. Public data sourced from fanatics.com's own navigation data.",
- "operationId": "fanatics-categories",
"produces": [
"application/json"
],
@@ -261621,11 +290209,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanatics.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261642,48 +290236,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fanatics' league and team navigation tree",
+ "summary": "Get GamesRadar+ article content",
"tags": [
- "Fanatics"
+ "GamesRadar+"
]
}
},
- "/fanatics/category": {
+ "/gamesradar/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of a Fanatics league or team category's product listing (name, brand, price, availability, image, url). Use GET /fanatics/categories to discover valid category urls.",
- "operationId": "fanatics-category",
+ "description": "Returns one GamesRadar+ author's public profile: name, job title, biography, social links, and one page of their recent articles.",
+ "operationId": "gamesradar-author",
"parameters": [
{
- "description": "A fanatics.com league or team category URL, exactly as returned by a fanatics_categories result's url field.",
+ "description": "Author slug, e.g. rosalie-newcombe",
"in": "query",
- "name": "url",
- "required": true,
+ "name": "slug",
"type": "string",
- "x-example": "/nfl/indianapolis-colts/o-2483+t-03378189+z-90650-4056854214"
- },
- {
- "description": "1-based result page. Defaults to 1.",
- "in": "query",
- "name": "page_number",
- "type": "integer",
- "x-example": 1
+ "x-example": "rosalie-newcombe"
},
{
- "description": "Results per page. One of 24, 48, 72. Defaults to 24.",
+ "description": "Canonical gamesradar.com/author/ URL, optionally with a /page/ segment; alternative to slug",
"in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 24
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.gamesradar.com/author/rosalie-newcombe/"
},
{
- "description": "One of TopSellers, LowestPrice, HighestPrice, NewestArrivals. Defaults to TopSellers.",
+ "default": 1,
+ "description": "1-based page number; overrides any page number in url",
"in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "TopSellers"
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -261693,7 +290276,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanatics.categoryResponseDoc"
+ "$ref": "#/definitions/publicnews.gamesradarAuthorResponseDoc"
}
},
"400": {
@@ -261702,8 +290285,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261720,27 +290303,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a Fanatics league or team category",
+ "summary": "Get a GamesRadar+ author profile",
"tags": [
- "Fanatics"
+ "GamesRadar+"
]
}
},
- "/fanatics/product": {
+ "/gamesradar/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Fanatics product's detail (name, brand, category, price, availability, condition, images), plus per-size availability/price, a fit/value/quality review-rating breakdown, a richer media gallery, and comparable-product alternates (e.g. a jersey's Game/Limited/Elite stitch tiers) where Fanatics exposes them. Use GET /fanatics/search or GET /fanatics/category to discover product urls.",
- "operationId": "fanatics-product",
+ "description": "Returns fresh GamesRadar+ headlines from one public section hub page.",
+ "operationId": "gamesradar-headlines",
"parameters": [
{
- "description": "A fanatics.com product-detail URL, exactly as returned by a fanatics_search or fanatics_category result's url field.",
+ "description": "GamesRadar+ section slug",
+ "enum": [
+ "games",
+ "platforms",
+ "entertainment",
+ "comics",
+ "hardware",
+ "toys-collectibles",
+ "tabletop-gaming",
+ "buying-guides",
+ "lego",
+ "dungeons-and-dragons",
+ "videos",
+ "games-news",
+ "games-features",
+ "games-reviews",
+ "games-guides",
+ "hardware-news",
+ "hardware-reviews",
+ "hardware-features",
+ "entertainment-tv",
+ "entertainment-movies",
+ "entertainment-streaming"
+ ],
"in": "query",
- "name": "url",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "https://www.fanatics.com/nfl/indianapolis-colts/indianapolis-colts-fanatics-slice-shorts-royal/o-2472+t-03937001+p-94133518138+z-9-2488621558"
+ "x-example": "games"
}
],
"produces": [
@@ -261750,7 +290353,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanatics.productResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -261759,14 +290362,40 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get GamesRadar+ section headlines",
+ "tags": [
+ "GamesRadar+"
+ ]
+ }
+ },
+ "/gamesradar/news": {
+ "get": {
+ "description": "Returns fresh GamesRadar+ top stories from the public RSS feed.",
+ "operationId": "gamesradar-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261783,48 +290412,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fanatics product's detail",
+ "summary": "Get GamesRadar+ top stories",
"tags": [
- "Fanatics"
+ "GamesRadar+"
]
}
},
- "/fanatics/search": {
+ "/gamesradar/sections": {
"get": {
- "consumes": [
+ "description": "Returns the public GamesRadar+ editorial taxonomy used by the headlines endpoint.",
+ "operationId": "gamesradar-sections",
+ "produces": [
"application/json"
],
- "description": "Returns one page of Fanatics' own keyword search results (name, brand, price, availability, image, url).",
- "operationId": "fanatics-search",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get GamesRadar+ sections",
+ "tags": [
+ "GamesRadar+"
+ ]
+ }
+ },
+ "/gbnews/article": {
+ "get": {
+ "description": "Returns public GB News article metadata and body paragraphs from a canonical story URL.",
+ "operationId": "gbnews-article",
"parameters": [
{
- "description": "Free-text search keywords.",
+ "description": "Canonical GB News story URL",
"in": "query",
- "name": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "colts jersey"
- },
- {
- "description": "1-based result page. Defaults to 1.",
- "in": "query",
- "name": "page_number",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Results per page. One of 24, 48, 72. Defaults to 24.",
- "in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 24
- },
- {
- "description": "One of TopSellers, LowestPrice, HighestPrice, NewestArrivals. Defaults to TopSellers.",
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "TopSellers"
+ "x-example": "https://www.gbnews.com/news/north-yorkshire-gaza-barracks-fire-catterick-garrison"
}
],
"produces": [
@@ -261834,7 +290465,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanatics.searchResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -261843,8 +290474,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261861,19 +290492,32 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Fanatics' product catalog",
+ "summary": "Get GB News article content",
"tags": [
- "Fanatics"
+ "GB News"
]
}
},
- "/fanaticscollect/auctions": {
+ "/gbnews/author": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns one GB News author's public profile: name, role, biography, image, and their most recent stories (up to 24; older stories are not available).",
+ "operationId": "gbnews-author",
+ "parameters": [
+ {
+ "description": "Author slug, e.g. peter-stevens-a",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "peter-stevens-a"
+ },
+ {
+ "description": "Canonical gbnews.com/authors/ URL; alternative to slug",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.gbnews.com/authors/peter-stevens-a"
+ }
],
- "description": "Returns Fanatics Collect's current and recent weekly and premier auction events -- the same short list the site's own header auction switcher and countdown banner show. This is the discovery endpoint for Search's auction_urn param: copy an event's urn value to browse every lot in that auction. A small, current/recent set (observed live: around 6 events), not a full historical archive -- older auctions' urn values found on a Search result or a GetListing response remain valid for Search even once they no longer appear here. Credential-free public data from Fanatics Collect's own GraphQL API.",
- "operationId": "fanaticscollect-auctions",
"produces": [
"application/json"
],
@@ -261881,17 +290525,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticscollect.auctionsResponseDoc"
+ "$ref": "#/definitions/publicnews.gbnewsAuthorResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261908,19 +290552,418 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fanatics Collect auction events",
+ "summary": "Get a GB News author profile",
"tags": [
- "Fanatics Collect"
+ "GB News"
]
}
},
- "/fanaticscollect/categories": {
+ "/gbnews/headlines": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns fresh GB News headlines from one public section or topic feed.",
+ "operationId": "gbnews-headlines",
+ "parameters": [
+ {
+ "description": "GB News section or topic path",
+ "enum": [
+ "news",
+ "news/animals",
+ "news/army",
+ "news/benefit-fraudsters",
+ "news/best-of-britain",
+ "news/christianity",
+ "news/crime",
+ "news/defence",
+ "news/education",
+ "news/energy",
+ "news/environment",
+ "news/falkland-islands",
+ "news/fire",
+ "news/free-speech",
+ "news/fuel-crisis",
+ "news/gibraltar",
+ "news/grooming-gangs",
+ "news/lgbt",
+ "news/m25",
+ "news/madeleine-mccann",
+ "news/migrant-crisis",
+ "news/national-lottery",
+ "news/neighbour-rows",
+ "news/oil",
+ "news/police",
+ "news/protests",
+ "news/social-media",
+ "news/taxpayer-waste",
+ "news/tesco",
+ "news/trains",
+ "news/transport",
+ "news/uk",
+ "news/uk/birmingham",
+ "news/uk/bristol",
+ "news/uk/east-midlands",
+ "news/uk/east-of-england",
+ "news/uk/edinburgh",
+ "news/uk/england",
+ "news/uk/essex",
+ "news/uk/glasgow",
+ "news/uk/kent",
+ "news/uk/liverpool",
+ "news/uk/london",
+ "news/uk/manchester",
+ "news/uk/north-east",
+ "news/uk/north-west",
+ "news/uk/northern-ireland",
+ "news/uk/scotland",
+ "news/uk/south-east",
+ "news/uk/south-west",
+ "news/uk/wales",
+ "news/uk/west-midlands",
+ "news/uk/yorkshire",
+ "news/us",
+ "news/us/elon-musk",
+ "news/us/melania-trump",
+ "news/us/new-york",
+ "news/video-news",
+ "news/woke-madness",
+ "news/world",
+ "news/world/australia",
+ "news/world/canada",
+ "news/world/china",
+ "news/world/emmanuel-macron",
+ "news/world/europe",
+ "news/world/france",
+ "news/world/germany",
+ "news/world/greece",
+ "news/world/iran",
+ "news/world/ireland",
+ "news/world/isis",
+ "news/world/israel",
+ "news/world/italy",
+ "news/world/nato",
+ "news/world/poland",
+ "news/world/portugal",
+ "news/world/russia",
+ "news/world/spain",
+ "news/world/terrorism",
+ "news/world/ukraine",
+ "news/world/vladimir-putin",
+ "news/world/volodymyr-zelenskyy",
+ "news/world/war",
+ "editorial",
+ "politics",
+ "politics/boris-johnson",
+ "politics/brexit",
+ "politics/ed-davey",
+ "politics/elections",
+ "politics/green-party",
+ "politics/uk",
+ "politics/uk/andy-burnham",
+ "politics/uk/angela-rayner",
+ "politics/uk/conservative-party",
+ "politics/uk/government",
+ "politics/uk/home-office",
+ "politics/uk/house-of-commons",
+ "politics/uk/john-healey",
+ "politics/uk/keir-starmer",
+ "politics/uk/kemi-badenoch",
+ "politics/uk/labour-party",
+ "politics/uk/liberal-democrats",
+ "politics/uk/nicola-sturgeon",
+ "politics/uk/pmqs",
+ "politics/uk/rachel-reeves",
+ "politics/uk/reform-uk",
+ "politics/uk/robert-jenrick",
+ "politics/uk/sadiq-khan",
+ "politics/uk/snp",
+ "politics/uk/suella-braverman",
+ "politics/uk/tony-blair",
+ "politics/us",
+ "politics/us/donald-trump",
+ "politics/us/jd-vance",
+ "politics/us/joe-biden",
+ "politics/world",
+ "politics/world/eu",
+ "us",
+ "sport",
+ "sport/boxing",
+ "sport/boxing/anthony-joshua",
+ "sport/boxing/tyson-fury",
+ "sport/cricket",
+ "sport/cricket/england-cricket",
+ "sport/darts",
+ "sport/darts/luke-littler",
+ "sport/f1",
+ "sport/f1/christian-horner",
+ "sport/f1/george-russell",
+ "sport/f1/lando-norris",
+ "sport/f1/lewis-hamilton",
+ "sport/f1/max-verstappen",
+ "sport/f1/michael-schumacher",
+ "sport/football",
+ "sport/football/arsenal",
+ "sport/football/champions-league",
+ "sport/football/chelsea",
+ "sport/football/cristiano-ronaldo",
+ "sport/football/efl",
+ "sport/football/england-football",
+ "sport/football/liverpool",
+ "sport/football/manchester-city",
+ "sport/football/manchester-united",
+ "sport/football/premier-league",
+ "sport/football/scotland-football",
+ "sport/football/tottenham-hotspur",
+ "sport/football/world-cup",
+ "sport/golf",
+ "sport/golf/rory-mcilroy",
+ "sport/golf/tiger-woods",
+ "sport/horse-racing",
+ "sport/nfl",
+ "sport/olympics",
+ "sport/other-sport",
+ "sport/rugby",
+ "sport/snooker",
+ "sport/snooker/ronnie-osullivan",
+ "sport/tennis",
+ "sport/tennis/carlos-alcaraz",
+ "sport/tennis/emma-raducanu",
+ "sport/tennis/novak-djokovic",
+ "sport/us-sport",
+ "opinion",
+ "celebrity",
+ "celebrity/22-kids-and-counting",
+ "celebrity/bbc",
+ "celebrity/big-brother",
+ "celebrity/britains-got-talent",
+ "celebrity/brooklyn-beckham",
+ "celebrity/channel-4",
+ "celebrity/channel-5",
+ "celebrity/clarksons-farm",
+ "celebrity/coronation-street",
+ "celebrity/david-beckham",
+ "celebrity/disney",
+ "celebrity/dragons-den",
+ "celebrity/eurovision",
+ "celebrity/film",
+ "celebrity/gary-lineker",
+ "celebrity/gogglebox",
+ "celebrity/harry-potter",
+ "celebrity/im-a-celebrity-get-me-out-of-here",
+ "celebrity/itv",
+ "celebrity/james-bond",
+ "celebrity/jk-rowling",
+ "celebrity/katie-price",
+ "celebrity/music",
+ "celebrity/netflix",
+ "celebrity/ricky-gervais",
+ "celebrity/rod-stewart",
+ "celebrity/strictly-come-dancing",
+ "celebrity/the-grand-tour",
+ "celebrity/this-morning",
+ "celebrity/tom-jones",
+ "celebrity/tv",
+ "royal",
+ "royal/buckingham-palace",
+ "royal/camilla",
+ "royal/coronation",
+ "royal/duchess-of-edinburgh",
+ "royal/earl-charles-spencer",
+ "royal/edoardo-mapelli-mozzi",
+ "royal/invictus-games",
+ "royal/james-middleton",
+ "royal/kate-middleton",
+ "royal/king-charles",
+ "royal/king-frederik",
+ "royal/lady-louise",
+ "royal/lilibet",
+ "royal/meghan-markle",
+ "royal/mike-tindall",
+ "royal/pippa-middleton",
+ "royal/prince-albert",
+ "royal/prince-andrew",
+ "royal/prince-archie",
+ "royal/prince-edward",
+ "royal/prince-george",
+ "royal/prince-harry",
+ "royal/prince-louis",
+ "royal/prince-philip",
+ "royal/prince-william",
+ "royal/princess-anne",
+ "royal/princess-beatrice",
+ "royal/princess-charlene",
+ "royal/princess-charlotte",
+ "royal/princess-diana",
+ "royal/princess-eugenie",
+ "royal/queen-elizabeth",
+ "royal/sarah-ferguson",
+ "royal/zara-tindall",
+ "money",
+ "money/amazon",
+ "money/bank-branch-closures",
+ "money/bank-of-england",
+ "money/barclays",
+ "money/cost-of-living",
+ "money/coventry-building-society",
+ "money/dwp",
+ "money/economy",
+ "money/energy-bills",
+ "money/high-street",
+ "money/hmrc",
+ "money/inflation",
+ "money/inheritance-tax",
+ "money/interest-rates",
+ "money/isa",
+ "money/jobs",
+ "money/lloyds-bank",
+ "money/martin-lewis",
+ "money/mortgage",
+ "money/national-insurance",
+ "money/nationwide-building-society",
+ "money/net-zero",
+ "money/nsi",
+ "money/octopus-energy",
+ "money/pension-credit",
+ "money/pensions",
+ "money/pip",
+ "money/poundland",
+ "money/premium-bonds",
+ "money/royal-mail",
+ "money/savings",
+ "money/skipton-building-society",
+ "money/state-pension",
+ "money/store-closures",
+ "money/student-loans",
+ "money/tax",
+ "money/universal-credit",
+ "money/yorkshire-building-society",
+ "lifestyle",
+ "lifestyle/aldi",
+ "lifestyle/asda",
+ "lifestyle/beauty",
+ "lifestyle/cars",
+ "lifestyle/cars/bmw",
+ "lifestyle/cars/byd",
+ "lifestyle/cars/car-finance",
+ "lifestyle/cars/car-insurance",
+ "lifestyle/cars/car-tax",
+ "lifestyle/cars/chery",
+ "lifestyle/cars/classic-cars",
+ "lifestyle/cars/diesel",
+ "lifestyle/cars/driving-laws",
+ "lifestyle/cars/driving-licences",
+ "lifestyle/cars/dvla",
+ "lifestyle/cars/dvsa",
+ "lifestyle/cars/electric-bikes",
+ "lifestyle/cars/electric-vehicles",
+ "lifestyle/cars/ford",
+ "lifestyle/cars/highway-code",
+ "lifestyle/cars/hydrogen-vehicles",
+ "lifestyle/cars/hyundai",
+ "lifestyle/cars/jaguar",
+ "lifestyle/cars/kia",
+ "lifestyle/cars/land-rover",
+ "lifestyle/cars/mercedes",
+ "lifestyle/cars/mini",
+ "lifestyle/cars/mot",
+ "lifestyle/cars/nissan",
+ "lifestyle/cars/parking",
+ "lifestyle/cars/petrol",
+ "lifestyle/cars/renault",
+ "lifestyle/cars/roads",
+ "lifestyle/cars/self-driving",
+ "lifestyle/cars/tesla",
+ "lifestyle/cars/toyota",
+ "lifestyle/cars/ulez",
+ "lifestyle/cars/vauxhall",
+ "lifestyle/cars/volkswagen",
+ "lifestyle/cars/volvo",
+ "lifestyle/diet",
+ "lifestyle/food",
+ "lifestyle/hair",
+ "lifestyle/how-to-look-younger",
+ "lifestyle/lidl",
+ "lifestyle/marks-spencer",
+ "lifestyle/morrisons",
+ "lifestyle/property",
+ "lifestyle/sainsburys",
+ "lifestyle/skin-care",
+ "lifestyle/style",
+ "lifestyle/tesco",
+ "travel",
+ "travel/british-airways",
+ "travel/cruise",
+ "travel/deals",
+ "travel/egypt",
+ "travel/france",
+ "travel/greece",
+ "travel/italy",
+ "travel/jet2",
+ "travel/spain",
+ "travel/staycation",
+ "travel/tui",
+ "travel/turkey",
+ "travel/wizz-air",
+ "health",
+ "health/cancer",
+ "health/covid",
+ "health/dementia",
+ "health/diabetes",
+ "health/nhs",
+ "health/sleep",
+ "health/vaccine",
+ "health/world-health-organisation",
+ "science",
+ "science/archaeology",
+ "science/space",
+ "tech",
+ "tech/ai",
+ "tech/android",
+ "tech/apple",
+ "tech/broadband",
+ "tech/chatgpt",
+ "tech/deals",
+ "tech/dyson",
+ "tech/ee",
+ "tech/fire-tv",
+ "tech/freely",
+ "tech/freeview",
+ "tech/gemini",
+ "tech/google",
+ "tech/kindle",
+ "tech/malware",
+ "tech/meta",
+ "tech/microsoft",
+ "tech/nintendo",
+ "tech/oura",
+ "tech/playstation",
+ "tech/prime-video",
+ "tech/privacy",
+ "tech/reviews",
+ "tech/roku",
+ "tech/samsung",
+ "tech/sky-tv",
+ "tech/streaming",
+ "tech/virgin",
+ "tech/vpn",
+ "tech/whatsapp",
+ "tech/windows",
+ "weather",
+ "weather/flood",
+ "weather/heatwave",
+ "weather/rain",
+ "weather/storms",
+ "traffic-travel",
+ "reflections",
+ "newsfromus",
+ "watch",
+ "watch/originals"
+ ],
+ "in": "query",
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "news"
+ }
],
- "description": "Returns every accepted value for GetListing's marketplace param -- WEEKLY, PREMIER, FIXED -- and for Search's marketplace, category_parent, sub_category, grading_service, status, and sort params. Discovery endpoint for those closed enums.",
- "operationId": "fanaticscollect-categories",
"produces": [
"application/json"
],
@@ -261928,11 +290971,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticscollect.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261949,19 +290992,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fanatics Collect search filter values",
+ "summary": "Get GB News section headlines",
"tags": [
- "Fanatics Collect"
+ "GB News"
]
}
},
- "/fanaticscollect/instant-rips/categories": {
+ "/gbnews/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns every category Fanatics Collect's \"Instant Rips\" mystery-pack product (fanaticscollect.com/instant-rips) currently advertises on its homepage: id, name, and price range. Instant Rips is a \"buy a randomized pack, a real graded card is revealed\" product; each category's id is a real listing id, fetchable through GetListing with type=FIXED for that entry point's own full detail. This does not cover the individual pack-tier tiles within a category or the homepage's \"Recently ripped\" live feed -- both are hydrated client-side in a form this repo cannot reliably parse. Credential-free public data, server-rendered on Fanatics Collect's own page.",
- "operationId": "fanaticscollect-instant-rips-categories",
+ "description": "Returns fresh GB News top stories from the public news feed.",
+ "operationId": "gbnews-news",
"produces": [
"application/json"
],
@@ -261969,11 +291009,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticscollect.instantRipsCategoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -261990,40 +291030,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fanatics Collect Instant Rips categories",
+ "summary": "Get GB News top stories",
"tags": [
- "Fanatics Collect"
+ "GB News"
]
}
},
- "/fanaticscollect/listing/{id}": {
+ "/gbnews/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns full detail for a single Fanatics Collect listing: a weekly-auction lot, a premier-auction lot, or a fixed-price \"buy now\" item (including an Instant Rips pack). Fields include title, current bid/starting/asking price, bid count, auction window and status, images, description, completed sale history, and -- when the card is stored in Fanatics' vault -- grading/authentication metadata including a direct PSA cert-verification link. Credential-free public data from Fanatics Collect's own GraphQL API.",
- "operationId": "fanaticscollect-listing",
- "parameters": [
- {
- "description": "Listing UUID",
- "in": "path",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "1e389d12-6f23-11ed-9d8b-0a58a9feac02"
- },
- {
- "description": "Listing type. Default: WEEKLY",
- "enum": [
- "WEEKLY",
- "PREMIER",
- "FIXED"
- ],
- "in": "query",
- "name": "type",
- "type": "string"
- }
- ],
+ "description": "Returns the public GB News section and topic taxonomy accepted by the headlines endpoint.",
+ "operationId": "gbnews-sections",
"produces": [
"application/json"
],
@@ -262031,35 +291047,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticscollect.listingResponseDoc"
- }
- },
- "400": {
- "description": "Missing or invalid path/query parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Listing not found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
},
"429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Fanatics Collect upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -262070,208 +291068,88 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fanatics Collect listing detail",
+ "summary": "Get GB News sections",
"tags": [
- "Fanatics Collect"
+ "GB News"
]
}
},
- "/fanaticscollect/search": {
+ "/gdelt/context": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Fanatics Collect's full marketplace -- weekly auctions, premier auctions, and the fixed-price \"Buy Now\" marketplace -- by free-text query, category, grading service, price/year/grade range, and listing status, in a caller-selected sort order. Credential-free public data from Fanatics Collect's own public search index. See GetCategories for the accepted category, grading-service, status, and sort values.",
- "operationId": "fanaticscollect-search",
+ "description": "Search recent (last 72 hours) GDELT-monitored news for",
+ "operationId": "gdelt-context",
"parameters": [
{
- "description": "Free-text search across title, brand, subject, and set",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "aaron judge"
- },
- {
- "description": "Listing type. Omit to search all three.",
- "enum": [
- "WEEKLY",
- "PREMIER",
- "FIXED"
- ],
- "in": "query",
- "name": "marketplace",
- "type": "string"
- },
- {
- "description": "Top-level category",
- "enum": [
- "Sports Cards",
- "Trading Card Games",
- "Other",
- "Video Games",
- "Comics"
- ],
- "in": "query",
- "name": "category_parent",
- "type": "string"
- },
- {
- "description": "A parent > child category path (or just the child name), e.g. \\",
- "in": "query",
- "name": "sub_category",
- "type": "string"
- },
- {
- "description": "Grading/authentication service",
- "enum": [
- "Ungraded",
- "CGC",
- "PSA",
- "BGS",
- "SGC",
- "Other Approved",
- "PSA/DNA",
- "CSG",
- "MBA",
- "PSA_DNA",
- "BVG",
- "OTHER_APPROVED",
- "BCCG",
- "WATA",
- "GAI",
- "VGA",
- "CBCS",
- "UDA",
- "CAC",
- "KSA",
- "PCGS"
- ],
- "in": "query",
- "name": "grading_service",
- "type": "string"
- },
- {
- "description": "Exact seller/shop name (case-insensitive). Not a fixed enum -- match a name from a prior Search result's certified_seller field.",
- "in": "query",
- "name": "certified_seller",
- "type": "string",
- "x-example": "Fanatics Collect"
- },
- {
- "description": "Exact seller id (UUID) -- browse everything one seller has listed. Not a fixed enum; match a prior Search result's seller_id field.",
+ "description": "GDELT query string. All terms must co-occur in the same sentence. Supports quoted phrases, (a OR b), domain:example.com.",
"in": "query",
- "name": "seller_id",
+ "name": "query",
+ "required": true,
"type": "string",
- "x-example": "4216b44a-9696-4263-96c3-5f58eeb9a316"
+ "x-example": "climate change"
},
{
- "description": "Exact brand/subject facet value (case-insensitive), e.g. a player, character, or set name. Not a fixed enum; match a prior Search result's brand field.",
+ "description": "Convenience domain filter, appended to the query as domain:VALUE.",
"in": "query",
- "name": "brand",
+ "name": "domain",
"type": "string",
- "x-example": "Michael Jordan"
+ "x-example": "bbc.com"
},
{
- "description": "Browse every lot in one specific weekly or premier auction event. Not a fixed enum; copy the exact value from a prior Search result's auction_urn field. Only WEEKLY/PREMIER listings carry one.",
+ "description": "Source-language filter (GDELT's searchlang parameter). Space-segmented languages only (excludes CJK and similar).",
"in": "query",
- "name": "auction_urn",
+ "name": "language",
"type": "string",
- "x-example": "WEEKLY:fb70389e-1c67-11f1-90df-0ab83224f98f"
- },
- {
- "description": "Listing status. Default LIVE.",
- "enum": [
- "LIVE",
- "SOLD",
- "ALL"
- ],
- "in": "query",
- "name": "status",
- "type": "string"
- },
- {
- "description": "Filter for listings the seller accepts offers on",
- "in": "query",
- "name": "allow_offers",
- "type": "boolean"
- },
- {
- "description": "Filter for listings with at least one active offer pending",
- "in": "query",
- "name": "has_offers",
- "type": "boolean"
+ "x-example": "english"
},
{
- "description": "Filter for listings Fanatics Collect itself flags as a great price vs. guide value",
+ "description": "Only return sentences GDELT identified as a quotation.",
"in": "query",
- "name": "great_price",
+ "name": "is_quote",
"type": "boolean"
},
{
- "description": "Minimum current price/bid, inclusive",
- "in": "query",
- "name": "min_price",
- "type": "number"
- },
- {
- "description": "Maximum current price/bid, inclusive",
- "in": "query",
- "name": "max_price",
- "type": "number"
- },
- {
- "description": "Minimum card/item year, inclusive",
- "in": "query",
- "name": "min_year",
- "type": "integer"
- },
- {
- "description": "Maximum card/item year, inclusive",
+ "description": "Relative time window ending now, e.g. 30min, 6h, 3d. Cannot be combined with from/to. GDELT caps this endpoint's window at 72 hours.",
"in": "query",
- "name": "max_year",
- "type": "integer"
+ "name": "timespan",
+ "type": "string",
+ "x-example": "24h"
},
{
- "description": "Minimum numeric grade, inclusive",
+ "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan; GDELT caps this endpoint's window at 72 hours.",
"in": "query",
- "name": "min_grade",
- "type": "number"
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-08-19"
},
{
- "description": "Maximum numeric grade, inclusive",
+ "description": "End of an absolute time window. Same formats as from.",
"in": "query",
- "name": "max_grade",
- "type": "number"
+ "name": "to",
+ "type": "string",
+ "x-example": "2026-08-20"
},
{
- "description": "Result order. Default best_value.",
+ "default": "relevance",
+ "description": "Result order.",
"enum": [
- "recommended",
- "recently_added",
- "best_deals",
- "lot_number",
- "lowest_price",
- "highest_price",
- "best_value",
- "earliest_year",
- "latest_year",
- "earliest_sale_date",
- "latest_sale_date"
+ "relevance",
+ "datedesc",
+ "dateasc"
],
"in": "query",
"name": "sort",
"type": "string"
},
{
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page, default 24, max 100",
+ "default": 75,
+ "description": "Rows to return. GDELT's own hard cap is 200 for this endpoint (lower than gdelt-search's 250); there is no pagination cursor beyond it.",
"in": "query",
- "name": "per_page",
+ "maximum": 200,
+ "minimum": 1,
+ "name": "maxrecords",
"type": "integer"
}
],
@@ -262282,7 +291160,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticscollect.searchResponseDoc"
+ "$ref": "#/definitions/gdelt.contextResponseDoc"
}
},
"400": {
@@ -262309,269 +291187,92 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Fanatics Collect listings",
+ "summary": "Sentence-level co-occurrence search across recent GDELT coverage",
"tags": [
- "Fanatics Collect"
+ "GDELT"
]
}
},
- "/fanaticscollect/sold-items": {
+ "/gdelt/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Fanatics Collect's sales-history archive -- every completed sale across every marketplace, not just what the live search index currently surfaces. A separate product from Search, reached from the \"View all sold items\" link on every marketplace search page. Credential-free public data from Fanatics Collect's own public sales-history API. See GetCategories for the accepted category, grading-service, eye-appeal-grade, and sort values.",
- "operationId": "fanaticscollect-sold-items",
+ "description": "Search the GDELT Project's continuously updated global news",
+ "operationId": "gdelt-search",
"parameters": [
{
- "description": "Free-text search across item title",
+ "description": "GDELT query string. Supports GDELT's own search operators: quoted phrases, (a OR b), theme:NAME, toneN, near20:\\",
"in": "query",
- "name": "title",
+ "name": "query",
+ "required": true,
"type": "string",
- "x-example": "aaron judge"
- },
- {
- "description": "Item category",
- "enum": [
- "Trading Cards",
- "Baseball",
- "Basketball",
- "Football",
- "Hockey",
- "Golf",
- "Boxing & MMA",
- "Soccer",
- "Tennis",
- "Racing",
- "Misc Sports",
- "Non-Sport",
- "Yu-Gi-Oh!",
- "Magic The Gathering",
- "Pokémon",
- "Collectible Card Games",
- "Miscellaneous",
- "Memorabilia",
- "Photos",
- "Comics",
- "Tickets",
- "Coins",
- "Video Games"
- ],
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Grading/authentication service, including ungraded for raw items",
- "enum": [
- "PSA",
- "SGC",
- "BGS",
- "BVG",
- "BCCG",
- "CGC",
- "CSG",
- "ungraded"
- ],
- "in": "query",
- "name": "grading_service",
- "type": "string"
- },
- {
- "description": "Eye-appeal grade",
- "enum": [
- "Eye Appeal - A",
- "Eye Appeal - E",
- "Eye Appeal - S"
- ],
- "in": "query",
- "name": "eye_appeal_grade",
- "type": "string"
- },
- {
- "description": "Minimum card/item year, inclusive",
- "in": "query",
- "name": "min_year",
- "type": "integer"
- },
- {
- "description": "Maximum card/item year, inclusive",
- "in": "query",
- "name": "max_year",
- "type": "integer"
- },
- {
- "description": "Minimum sold price, inclusive",
- "in": "query",
- "name": "min_price",
- "type": "number"
+ "x-example": "climate change"
},
{
- "description": "Maximum sold price, inclusive",
+ "description": "Convenience source-country filter, appended to the query as sourcecountry:VALUE. Accepts a GDELT-recognized country name (no spaces) or 2-letter FIPS code.",
"in": "query",
- "name": "max_price",
- "type": "number"
+ "name": "country",
+ "type": "string",
+ "x-example": "unitedkingdom"
},
{
- "description": "Result order. Default sold_date_desc.",
- "enum": [
- "sold_date_desc",
- "highest_price",
- "lowest_price"
- ],
+ "description": "Convenience source-language filter, appended to the query as sourcelang:VALUE. Accepts a GDELT-recognized language name or 3-letter code.",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "language",
+ "type": "string",
+ "x-example": "english"
},
{
- "description": "1-based page number, default 1",
+ "description": "Convenience domain filter, appended to the query as domain:VALUE.",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "domain",
+ "type": "string",
+ "x-example": "bbc.com"
},
{
- "description": "Results per page, default 20, max 100",
+ "description": "Relative time window ending now, e.g. 1h, 2d, 1w, 3m. Cannot be combined with from/to.",
"in": "query",
- "name": "per_page",
- "type": "integer"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/fanaticscollect.soldItemsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ "name": "timespan",
+ "type": "string",
+ "x-example": "1w"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Search Fanatics Collect sold items",
- "tags": [
- "Fanatics Collect"
- ]
- }
- },
- "/fanaticscollect/trending-searches": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Fanatics Collect's own currently trending search terms -- the same list shown in the site's own header search box before the visitor types anything. Credential-free public data from Fanatics Collect's own GraphQL API.",
- "operationId": "fanaticscollect-trending-searches",
- "parameters": [
{
- "description": "Number of terms to return, 1-50, default 8",
+ "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan; GDELT only indexes roughly the last 3 months.",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 8
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/fanaticscollect.trendingSearchesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Fanatics Collect trending search terms",
- "tags": [
- "Fanatics Collect"
- ]
- }
- },
- "/fanaticslive/browse": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the live and upcoming shows currently listed under a Fanatics Live league: name, status, cover image, viewers, and the hosting channel/shop. Public data sourced from Fanatics Live's own GraphQL API.",
- "operationId": "fanaticslive-browse",
- "parameters": [
- {
- "description": "Fanatics Live league type code. See GET /fanaticslive/leagues for the full list.",
- "enum": [
- "NFL",
- "NCAA_FB",
- "NBA",
- "MLB",
- "SOCCER",
- "NHL",
- "POKEMON",
- "STAR_WARS",
- "MLS",
- "UFC",
- "WWE",
- "F1",
- "NASCAR",
- "DISNEY",
- "GARBAGE_PAIL_KIDS",
- "MAGIC_THE_GATHERING",
- "WNBA",
- "NCAA_BK",
- "GOLF",
- "VEE_FRIENDS",
- "DUDE_PERFECT",
- "OTHER",
- "ORIGINALS"
- ],
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-08-01"
+ },
+ {
+ "description": "End of an absolute time window. Same formats as from.",
"in": "query",
- "name": "league",
- "required": true,
+ "name": "to",
"type": "string",
- "x-example": "POKEMON"
+ "x-example": "2026-08-19"
+ },
+ {
+ "default": "relevance",
+ "description": "Result order.",
+ "enum": [
+ "relevance",
+ "datedesc",
+ "dateasc",
+ "tonedesc",
+ "toneasc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "default": 75,
+ "description": "Rows to return. GDELT's own hard cap is 250; there is no pagination cursor beyond it.",
+ "in": "query",
+ "maximum": 250,
+ "minimum": 1,
+ "name": "maxrecords",
+ "type": "integer"
}
],
"produces": [
@@ -262581,7 +291282,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticslive.browseResponseDoc"
+ "$ref": "#/definitions/gdelt.searchResponseDoc"
}
},
"400": {
@@ -262608,27 +291309,92 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse Fanatics Live shows by league",
+ "summary": "Search global news coverage indexed by GDELT",
"tags": [
- "Fanatics Live"
+ "GDELT"
]
}
},
- "/fanaticslive/channel/{id}": {
+ "/gdelt/timeline": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Fanatics Live channel's own detail page: its parent shop, and a first page of its live/upcoming and past/replay shows. A shop can run several channels (e.g. a league-specific sub-feed) -- see /fanaticslive/shop/{slug} for a shop's full channel list and /fanaticslive/shop/{slug}/shows for cursor-paginated access to a full show history. Public data sourced from Fanatics Live's own GraphQL API.",
- "operationId": "fanaticslive-channel",
+ "description": "Return how a query's global news coverage has trended over",
+ "operationId": "gdelt-timeline",
"parameters": [
{
- "description": "Fanatics Live channel id (a UUID), e.g. from a shop or show result's channel.id field",
- "in": "path",
- "name": "id",
+ "description": "GDELT query string. Same syntax as gdelt-search's query.",
+ "in": "query",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "adc4b55f-5e10-4ed0-8680-11875cfe1c94"
+ "x-example": "climate change"
+ },
+ {
+ "default": "volume",
+ "description": "Timeline metric. lang and country return one series per language/country instead of one aggregate series.",
+ "enum": [
+ "volume",
+ "volume_raw",
+ "tone",
+ "lang",
+ "country"
+ ],
+ "in": "query",
+ "name": "metric",
+ "type": "string"
+ },
+ {
+ "description": "Convenience source-country filter, appended to the query as sourcecountry:VALUE.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "unitedkingdom"
+ },
+ {
+ "description": "Convenience source-language filter, appended to the query as sourcelang:VALUE.",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "english"
+ },
+ {
+ "description": "Convenience domain filter, appended to the query as domain:VALUE.",
+ "in": "query",
+ "name": "domain",
+ "type": "string",
+ "x-example": "bbc.com"
+ },
+ {
+ "description": "Relative time window ending now, e.g. 1h, 2d, 1w, 3m. Cannot be combined with from/to.",
+ "in": "query",
+ "name": "timespan",
+ "type": "string",
+ "x-example": "1w"
+ },
+ {
+ "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "in": "query",
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-08-01"
+ },
+ {
+ "description": "End of an absolute time window. Same formats as from.",
+ "in": "query",
+ "name": "to",
+ "type": "string",
+ "x-example": "2026-08-19"
+ },
+ {
+ "default": 0,
+ "description": "Moving-window smoothing applied to the timeline, in steps. 0 disables smoothing.",
+ "in": "query",
+ "maximum": 30,
+ "minimum": 0,
+ "name": "smooth",
+ "type": "integer"
}
],
"produces": [
@@ -262638,7 +291404,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticslive.channelResponseDoc"
+ "$ref": "#/definitions/gdelt.timelineResponseDoc"
}
},
"400": {
@@ -262647,12 +291413,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -262671,19 +291431,71 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fanatics Live channel's detail page",
+ "summary": "Coverage volume or tone over time for a GDELT query",
"tags": [
- "Fanatics Live"
+ "GDELT"
]
}
},
- "/fanaticslive/leagues": {
+ "/gdelt/tonechart": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Fanatics Live's full league/category list (e.g. \"Pokemon\", \"NFL\", \"MTG\"). Each entry's type is usable directly with /fanaticslive/browse's league filter. Public data sourced from Fanatics Live's own GraphQL API.",
- "operationId": "fanaticslive-leagues",
+ "description": "Return a sentiment (tone) histogram for a query's matching",
+ "operationId": "gdelt-tonechart",
+ "parameters": [
+ {
+ "description": "GDELT query string. Same syntax as gdelt-search's query.",
+ "in": "query",
+ "name": "query",
+ "required": true,
+ "type": "string",
+ "x-example": "climate change"
+ },
+ {
+ "description": "Convenience source-country filter, appended to the query as sourcecountry:VALUE.",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "unitedkingdom"
+ },
+ {
+ "description": "Convenience source-language filter, appended to the query as sourcelang:VALUE.",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "english"
+ },
+ {
+ "description": "Convenience domain filter, appended to the query as domain:VALUE.",
+ "in": "query",
+ "name": "domain",
+ "type": "string",
+ "x-example": "bbc.com"
+ },
+ {
+ "description": "Relative time window ending now, e.g. 1h, 2d, 1w, 3m. Cannot be combined with from/to.",
+ "in": "query",
+ "name": "timespan",
+ "type": "string",
+ "x-example": "1w"
+ },
+ {
+ "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "in": "query",
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-08-01"
+ },
+ {
+ "description": "End of an absolute time window. Same formats as from.",
+ "in": "query",
+ "name": "to",
+ "type": "string",
+ "x-example": "2026-08-19"
+ }
+ ],
"produces": [
"application/json"
],
@@ -262691,7 +291503,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticslive.leaguesResponseDoc"
+ "$ref": "#/definitions/gdelt.toneChartResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"500": {
@@ -262712,27 +291530,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fanatics Live's league taxonomy",
+ "summary": "Sentiment histogram for a GDELT query",
"tags": [
- "Fanatics Live"
+ "GDELT"
]
}
},
- "/fanaticslive/shop/{slug}": {
+ "/gdelt/tv-concept-entities": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Fanatics Live shop's public profile page: description, social links, follower count, and its channels and staffers. Public data sourced from Fanatics Live's own GraphQL API.",
- "operationId": "fanaticslive-shop",
+ "description": "Return GDELT's own catalog of Google Knowledge Graph concept",
+ "operationId": "gdelt-tv-concept-entities",
"parameters": [
{
- "description": "Fanatics Live shop slug, e.g. from a shops-list result's slug field",
- "in": "path",
- "name": "slug",
- "required": true,
- "type": "string",
- "x-example": "we-the-hobby"
+ "default": 100,
+ "description": "Maximum entries to return, most-frequent first.",
+ "in": "query",
+ "maximum": 10000,
+ "minimum": 1,
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -262742,7 +291561,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticslive.shopResponseDoc"
+ "$ref": "#/definitions/gdelt.tvCapNlpEntityDetailsResponseDoc"
}
},
"400": {
@@ -262751,12 +291570,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -262775,51 +291588,203 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fanatics Live shop's public profile",
+ "summary": "List GDELT Television 2.0 AI concept entities",
"tags": [
- "Fanatics Live"
+ "GDELT"
]
}
},
- "/fanaticslive/shop/{slug}/shows": {
+ "/gdelt/tv-search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Fanatics Live shop's own live/upcoming or past/replay show list -- distinct from /fanaticslive/browse, which lists shows across all shops filtered by league. status=replay is the only credential-free way to observe a COMPLETE-status show. Public data sourced from Fanatics Live's own GraphQL API.",
- "operationId": "fanaticslive-shop-shows",
+ "description": "Search GDELT's Television 2.0 AI index of US television news",
+ "operationId": "gdelt-tv-search",
"parameters": [
{
- "description": "Fanatics Live shop slug, e.g. from a shops-list result's slug field",
- "in": "path",
- "name": "slug",
- "required": true,
- "type": "string",
- "x-example": "going-twice"
+ "collectionFormat": "csv",
+ "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "transcript",
+ "type": "array",
+ "x-example": "climate change"
},
{
- "description": "Which show list to return",
+ "collectionFormat": "csv",
+ "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "caption",
+ "type": "array",
+ "x-example": "climate change"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "concept",
+ "type": "array",
+ "x-example": "/M/0d063v"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "onscreen_text",
+ "type": "array",
+ "x-example": "breaking news"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "visual",
+ "type": "array",
+ "x-example": "flood"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_transcript",
+ "type": "array",
+ "x-example": "campaign ad"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_caption",
+ "type": "array",
+ "x-example": "sanders"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_concept",
+ "type": "array",
+ "x-example": "/M/081pw"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_onscreen_text",
+ "type": "array",
+ "x-example": "sponsored"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_visual",
+ "type": "array",
+ "x-example": "advertisement"
+ },
+ {
+ "description": "Station to search.",
"enum": [
- "live",
- "replay"
+ "CNN",
+ "MSNBC",
+ "FOXNEWS",
+ "BBCNEWS",
+ "KGO",
+ "KPIX",
+ "KNTV"
],
"in": "query",
- "name": "status",
+ "name": "station",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "CNN"
},
{
- "description": "Pagination cursor from a previous response's next_cursor",
+ "description": "Limit to an exact show name.",
"in": "query",
- "name": "after",
+ "name": "show",
+ "type": "string",
+ "x-example": "Inside Politics"
+ },
+ {
+ "description": "Limit to a day of week, 0 (Sunday) through 7 (Saturday), PST.",
+ "in": "query",
+ "maximum": 7,
+ "minimum": 0,
+ "name": "day_of_week",
+ "type": "integer"
+ },
+ {
+ "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. GDELT's TV archive starts July 6, 2010.",
+ "in": "query",
+ "name": "timespan",
+ "type": "string",
+ "x-example": "7d"
+ },
+ {
+ "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "in": "query",
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-08-01"
+ },
+ {
+ "description": "End of an absolute time window. Same formats as from.",
+ "in": "query",
+ "name": "to",
+ "type": "string",
+ "x-example": "2026-08-19"
+ },
+ {
+ "default": "relevance",
+ "description": "Result order.",
+ "enum": [
+ "relevance",
+ "datedesc",
+ "dateasc"
+ ],
+ "in": "query",
+ "name": "sort",
"type": "string"
},
{
- "description": "Max shows to return (default 24)",
+ "default": 50,
+ "description": "Rows to return. GDELT's own hard cap is 3000 for this endpoint; there is no pagination cursor beyond it.",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 24
+ "maximum": 3000,
+ "minimum": 1,
+ "name": "maxrecords",
+ "type": "integer"
}
],
"produces": [
@@ -262829,7 +291794,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticslive.shopShowsResponseDoc"
+ "$ref": "#/definitions/gdelt.tvSearchResponseDoc"
}
},
"400": {
@@ -262838,12 +291803,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -262862,68 +291821,178 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fanatics Live shop's own live or replay show list",
+ "summary": "Search US television news coverage (transcripts, captions, OCR, visual labels)",
"tags": [
- "Fanatics Live"
+ "GDELT"
]
}
},
- "/fanaticslive/shops": {
+ "/gdelt/tv-showchart": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Fanatics Live's full public shop directory: every shop's id, name, slug, logo, and follower count. Each entry's slug is usable directly with /fanaticslive/shop/{slug}. Public data sourced from Fanatics Live's own GraphQL API.",
- "operationId": "fanaticslive-shops",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/fanaticslive.shopsResponseDoc"
- }
+ "description": "Return the top shows by result percentage for a query",
+ "operationId": "gdelt-tv-showchart",
+ "parameters": [
+ {
+ "collectionFormat": "csv",
+ "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "transcript",
+ "type": "array",
+ "x-example": "climate change"
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "collectionFormat": "csv",
+ "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "caption",
+ "type": "array",
+ "x-example": "trump"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Fanatics Live's shop directory",
- "tags": [
- "Fanatics Live"
- ]
- }
- },
- "/fanaticslive/show/{id}": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a Fanatics Live live show's detail page: status, viewers, hosting channel/shop, its currently active break/lot, and its full break/lot list. Public data sourced from Fanatics Live's own GraphQL API.",
- "operationId": "fanaticslive-show",
- "parameters": [
+ "collectionFormat": "csv",
+ "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "concept",
+ "type": "array",
+ "x-example": "/M/0d063v"
+ },
{
- "description": "Fanatics Live show id, e.g. from a browse result's id field",
- "in": "path",
- "name": "id",
+ "collectionFormat": "csv",
+ "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "onscreen_text",
+ "type": "array",
+ "x-example": "breaking news"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "visual",
+ "type": "array",
+ "x-example": "flood"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_transcript",
+ "type": "array",
+ "x-example": "campaign ad"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_caption",
+ "type": "array",
+ "x-example": "sanders"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_concept",
+ "type": "array",
+ "x-example": "/M/081pw"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_onscreen_text",
+ "type": "array",
+ "x-example": "sponsored"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_visual",
+ "type": "array",
+ "x-example": "advertisement"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Required, repeatable. One or more stations, OR'd together.",
+ "in": "query",
+ "items": {
+ "enum": [
+ "CNN",
+ "MSNBC",
+ "FOXNEWS",
+ "BBCNEWS",
+ "KGO",
+ "KPIX",
+ "KNTV"
+ ],
+ "type": "string"
+ },
+ "name": "station",
"required": true,
+ "type": "array",
+ "x-example": "CNN"
+ },
+ {
+ "description": "Limit to an exact show name.",
+ "in": "query",
+ "name": "show",
"type": "string",
- "x-example": "1b1aeec0-346b-4c8f-941a-bcb8af558a5a"
+ "x-example": "Inside Politics"
+ },
+ {
+ "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. Omit both for GDELT's full archive (auto-resolution, back to July 6, 2010).",
+ "in": "query",
+ "name": "timespan",
+ "type": "string",
+ "x-example": "30d"
+ },
+ {
+ "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "in": "query",
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-07-01"
+ },
+ {
+ "description": "End of an absolute time window. Same formats as from.",
+ "in": "query",
+ "name": "to",
+ "type": "string",
+ "x-example": "2026-08-19"
}
],
"produces": [
@@ -262933,7 +292002,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticslive.showResponseDoc"
+ "$ref": "#/definitions/gdelt.tvShowChartResponseDoc"
}
},
"400": {
@@ -262942,12 +292011,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -262966,27 +292029,178 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fanatics Live show's detail page",
+ "summary": "Top US television shows by coverage share for a query",
"tags": [
- "Fanatics Live"
+ "GDELT"
]
}
},
- "/fanaticslive/show/{id}/instant-rips": {
+ "/gdelt/tv-stationchart": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Fanatics Live show's current break's digital-instant-rip state: spot claim/rip progress and the currently revealing item, when a rip is actively in progress. current_break is omitted when the show has no active break at request time. Public data sourced from Fanatics Live's own GraphQL API.",
- "operationId": "fanaticslive-instant-rips",
+ "description": "Return a result-count comparison across the requested",
+ "operationId": "gdelt-tv-stationchart",
"parameters": [
{
- "description": "Fanatics Live show id, the same id GET /fanaticslive/show/{id} takes",
- "in": "path",
- "name": "id",
+ "collectionFormat": "csv",
+ "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "transcript",
+ "type": "array",
+ "x-example": "climate change"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "caption",
+ "type": "array",
+ "x-example": "trump"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "concept",
+ "type": "array",
+ "x-example": "/M/0d063v"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "onscreen_text",
+ "type": "array",
+ "x-example": "breaking news"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "visual",
+ "type": "array",
+ "x-example": "flood"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_transcript",
+ "type": "array",
+ "x-example": "campaign ad"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_caption",
+ "type": "array",
+ "x-example": "sanders"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_concept",
+ "type": "array",
+ "x-example": "/M/081pw"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_onscreen_text",
+ "type": "array",
+ "x-example": "sponsored"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_visual",
+ "type": "array",
+ "x-example": "advertisement"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Required, repeatable. One or more stations, OR'd together.",
+ "in": "query",
+ "items": {
+ "enum": [
+ "CNN",
+ "MSNBC",
+ "FOXNEWS",
+ "BBCNEWS",
+ "KGO",
+ "KPIX",
+ "KNTV"
+ ],
+ "type": "string"
+ },
+ "name": "station",
"required": true,
+ "type": "array",
+ "x-example": "CNN"
+ },
+ {
+ "description": "Limit to an exact show name.",
+ "in": "query",
+ "name": "show",
"type": "string",
- "x-example": "186f8cac-d031-436a-b46d-9d9f0b839df2"
+ "x-example": "Inside Politics"
+ },
+ {
+ "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. Omit both for GDELT's full archive (auto-resolution, back to July 6, 2010).",
+ "in": "query",
+ "name": "timespan",
+ "type": "string",
+ "x-example": "30d"
+ },
+ {
+ "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "in": "query",
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-07-01"
+ },
+ {
+ "description": "End of an absolute time window. Same formats as from.",
+ "in": "query",
+ "name": "to",
+ "type": "string",
+ "x-example": "2026-08-19"
}
],
"produces": [
@@ -262996,7 +292210,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fanaticslive.instantRipsResponseDoc"
+ "$ref": "#/definitions/gdelt.tvStationChartResponseDoc"
}
},
"400": {
@@ -263005,12 +292219,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -263029,19 +292237,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fanatics Live show's current instant-rip state",
+ "summary": "Compare US television news coverage across stations",
"tags": [
- "Fanatics Live"
+ "GDELT"
]
}
},
- "/farfetch/categories": {
+ "/gdelt/tv-stationdetails": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns every department's top-level category directory (name, slug, URL). Each slug is usable directly as the category filter on GET /farfetch/search. Public data sourced live from Farfetch's own listing pages.",
- "operationId": "farfetch-categories",
+ "description": "Return GDELT's own current list of Television 2.0 AI",
+ "operationId": "gdelt-tv-stationdetails",
"produces": [
"application/json"
],
@@ -263049,7 +292257,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/farfetch.categoriesResponseDoc"
+ "$ref": "#/definitions/gdelt.tvStationDetailsResponseDoc"
}
},
"500": {
@@ -263070,27 +292278,174 @@
"ApiKeyAuth": []
}
],
- "summary": "Farfetch category directory",
+ "summary": "List GDELT Television 2.0 AI stations",
"tags": [
- "Farfetch"
+ "GDELT"
]
}
},
- "/farfetch/designers": {
+ "/gdelt/tv-timeline": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a department's full designer directory (name, slug, URL). Each slug is usable directly as the designer filter on GET /farfetch/search. Public data sourced from Farfetch's own designer-directory pages.",
- "operationId": "farfetch-designers",
+ "description": "Returns the amount of US television news airtime matching the supplied query over time, using GDELT Television 2.0 AI timeline-volume data. A station is required. Supports the same caption, transcript, concept, and visual match operators as gdelt-tv-search; coverage and processing-delay caveats are documented there.",
+ "operationId": "gdelt-tv-timeline",
"parameters": [
{
- "description": "Department: women, men, kids",
+ "collectionFormat": "csv",
+ "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
"in": "query",
- "name": "gender",
+ "items": {
+ "type": "string"
+ },
+ "name": "transcript",
+ "type": "array",
+ "x-example": "climate change"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "caption",
+ "type": "array",
+ "x-example": "climate change"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "concept",
+ "type": "array",
+ "x-example": "/M/0d063v"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "onscreen_text",
+ "type": "array",
+ "x-example": "breaking news"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "visual",
+ "type": "array",
+ "x-example": "flood"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_transcript",
+ "type": "array",
+ "x-example": "campaign ad"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_caption",
+ "type": "array",
+ "x-example": "sanders"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_concept",
+ "type": "array",
+ "x-example": "/M/081pw"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_onscreen_text",
+ "type": "array",
+ "x-example": "sponsored"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_visual",
+ "type": "array",
+ "x-example": "advertisement"
+ },
+ {
+ "description": "Station to search.",
+ "enum": [
+ "CNN",
+ "MSNBC",
+ "FOXNEWS",
+ "BBCNEWS",
+ "KGO",
+ "KPIX",
+ "KNTV"
+ ],
+ "in": "query",
+ "name": "station",
"required": true,
"type": "string",
- "x-example": "women"
+ "x-example": "CNN"
+ },
+ {
+ "description": "Limit to an exact show name.",
+ "in": "query",
+ "name": "show",
+ "type": "string",
+ "x-example": "Inside Politics"
+ },
+ {
+ "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. Omit both for GDELT's full archive (auto-resolution, back to July 6, 2010).",
+ "in": "query",
+ "name": "timespan",
+ "type": "string",
+ "x-example": "30d"
+ },
+ {
+ "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "in": "query",
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-07-01"
+ },
+ {
+ "description": "End of an absolute time window. Same formats as from.",
+ "in": "query",
+ "name": "to",
+ "type": "string",
+ "x-example": "2026-08-19"
}
],
"produces": [
@@ -263100,7 +292455,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/farfetch.designersResponseDoc"
+ "$ref": "#/definitions/gdelt.tvTimelineResponseDoc"
}
},
"400": {
@@ -263127,35 +292482,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Farfetch designer directory",
+ "summary": "Airtime volume over time for US television news coverage",
"tags": [
- "Farfetch"
+ "GDELT"
]
}
},
- "/farfetch/product": {
+ "/gdelt/tv-visual-entities": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Farfetch product's full detail: name, brand, color, description, images, category breadcrumb, and every size variant with its own price and availability. Public data sourced from Farfetch's own product pages.",
- "operationId": "farfetch-product",
+ "description": "Return GDELT's own catalog of computer-vision object/activity",
+ "operationId": "gdelt-tv-visual-entities",
"parameters": [
{
- "description": "Department: women, men, kids",
- "in": "query",
- "name": "gender",
- "required": true,
- "type": "string",
- "x-example": "women"
- },
- {
- "description": "Product URL slug from a search result's id field",
- "in": "query",
- "name": "slug",
- "required": true,
- "type": "string",
- "x-example": "gucci-slide-sandals-with-double-g-item-37690086"
+ "default": 100,
+ "description": "Maximum entries to return, most-frequent first.",
+ "in": "query",
+ "maximum": 10000,
+ "minimum": 1,
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -263165,7 +292513,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/farfetch.productResponseDoc"
+ "$ref": "#/definitions/gdelt.tvVisualEntityDetailsResponseDoc"
}
},
"400": {
@@ -263174,12 +292522,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -263198,48 +292540,196 @@
"ApiKeyAuth": []
}
],
- "summary": "Farfetch product detail",
+ "summary": "List GDELT Television 2.0 AI visual entities",
"tags": [
- "Farfetch"
+ "GDELT"
]
}
},
- "/farfetch/search": {
+ "/gdelt/tv-wordcloud": {
"get": {
"consumes": [
"application/json"
],
- "description": "Browses Farfetch's luxury multi-brand marketplace by department plus a designer and/or category filter (at least one is required), returning normalized listing summaries (name, brand, price, image, availability) and the upstream page count. Public data sourced from Farfetch's own listing pages.",
- "operationId": "farfetch-search",
+ "description": "Return a frequency-ranked word/label cloud for one match",
+ "operationId": "gdelt-tv-wordcloud",
"parameters": [
{
- "description": "Department: women, men, kids",
+ "description": "Required. Which match channel to build a word cloud from.",
+ "enum": [
+ "transcript",
+ "caption",
+ "concept",
+ "onscreen_text",
+ "visual"
+ ],
"in": "query",
- "name": "gender",
+ "name": "channel",
"required": true,
"type": "string",
- "x-example": "women"
+ "x-example": "caption"
},
{
- "description": "Designer slug from GET /farfetch/designers; designer or category is required",
+ "collectionFormat": "csv",
+ "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
"in": "query",
- "name": "designer",
+ "items": {
+ "type": "string"
+ },
+ "name": "transcript",
+ "type": "array",
+ "x-example": "climate change"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "caption",
+ "type": "array",
+ "x-example": "trump"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "concept",
+ "type": "array",
+ "x-example": "/M/0d063v"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "onscreen_text",
+ "type": "array",
+ "x-example": "breaking news"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "visual",
+ "type": "array",
+ "x-example": "flood"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_transcript",
+ "type": "array",
+ "x-example": "campaign ad"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_caption",
+ "type": "array",
+ "x-example": "sanders"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_concept",
+ "type": "array",
+ "x-example": "/M/081pw"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_onscreen_text",
+ "type": "array",
+ "x-example": "sponsored"
+ },
+ {
+ "collectionFormat": "csv",
+ "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "exclude_visual",
+ "type": "array",
+ "x-example": "advertisement"
+ },
+ {
+ "description": "Required. Station to search.",
+ "enum": [
+ "CNN",
+ "MSNBC",
+ "FOXNEWS",
+ "BBCNEWS",
+ "KGO",
+ "KPIX",
+ "KNTV"
+ ],
+ "in": "query",
+ "name": "station",
+ "required": true,
"type": "string",
- "x-example": "gucci"
+ "x-example": "CNN"
},
{
- "description": "Category slug from GET /farfetch/categories; designer or category is required",
+ "description": "Limit to an exact show name.",
"in": "query",
- "name": "category",
+ "name": "show",
"type": "string",
- "x-example": "shoes-1"
+ "x-example": "Inside Politics"
},
{
- "description": "1-based page number; defaults to 1",
+ "description": "Limit to a day of week, 0 (Sunday) through 7 (Saturday), PST.",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "day_of_week",
+ "type": "string",
+ "x-example": "1"
+ },
+ {
+ "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. GDELT's TV archive starts July 6, 2010.",
+ "in": "query",
+ "name": "timespan",
+ "type": "string",
+ "x-example": "7d"
+ },
+ {
+ "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "in": "query",
+ "name": "from",
+ "type": "string",
+ "x-example": "2026-08-01"
+ },
+ {
+ "description": "End of an absolute time window. Same formats as from.",
+ "in": "query",
+ "name": "to",
+ "type": "string",
+ "x-example": "2026-08-19"
}
],
"produces": [
@@ -263249,7 +292739,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/farfetch.searchResponseDoc"
+ "$ref": "#/definitions/gdelt.tvWordCloudResponseDoc"
}
},
"400": {
@@ -263276,33 +292766,51 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Farfetch listings",
+ "summary": "Word cloud for US television news coverage",
"tags": [
- "Farfetch"
+ "GDELT"
]
}
},
- "/fashionnova/collections": {
+ "/geocoding/lookup": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized collections from Fashion Nova (https://www.fashionnova.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
- "operationId": "fashionnova-collections",
+ "description": "Returns typed Nominatim JSONv2 places for comma-separated OSM ids such as W34633854,N123,R456.",
+ "operationId": "geocoding-lookup",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Comma-separated OSM ids such as W34633854,N123,R456",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "osm_ids",
+ "required": true,
+ "type": "string",
+ "x-example": "W34633854"
},
{
- "description": "Maximum collections, defaults to 50 and supports up to 250",
+ "description": "Preferred result language, forwarded to Nominatim",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "accept_language",
+ "type": "string"
+ },
+ {
+ "description": "Include address details, defaults to true",
+ "in": "query",
+ "name": "addressdetails",
+ "type": "boolean"
+ },
+ {
+ "description": "Include OSM extra tags",
+ "in": "query",
+ "name": "extratags",
+ "type": "boolean"
+ },
+ {
+ "description": "Include multilingual name details",
+ "in": "query",
+ "name": "namedetails",
+ "type": "boolean"
}
],
"produces": [
@@ -263312,7 +292820,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
+ "$ref": "#/definitions/geocoding.lookupResponseDoc"
}
},
"400": {
@@ -263321,8 +292829,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "502": {
+ "description": "Bad Gateway",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -263339,41 +292853,65 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashion Nova collections",
+ "summary": "Lookup Nominatim OSM ids",
"tags": [
- "Fashion Nova"
+ "Geocoding"
]
}
},
- "/fashionnova/collections/{handle}/products": {
+ "/geocoding/reverse": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from one Fashion Nova (https://www.fashionnova.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
- "operationId": "fashionnova-collection-products",
+ "description": "Returns the nearest typed Nominatim JSONv2 place for latitude and longitude.",
+ "operationId": "geocoding-reverse",
"parameters": [
{
- "description": "Collection handle",
- "in": "path",
- "name": "handle",
+ "description": "Latitude",
+ "in": "query",
+ "name": "lat",
"required": true,
- "type": "string",
- "x-example": "collection-handle"
+ "type": "number",
+ "x-example": 40.7484257
},
{
- "description": "1-based page, defaults to 1",
+ "description": "Longitude",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "lon",
+ "required": true,
+ "type": "number",
+ "x-example": -73.98567
},
{
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Nominatim address zoom, defaults to 18",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "zoom",
+ "type": "integer"
+ },
+ {
+ "description": "Preferred result language, forwarded to Nominatim",
+ "in": "query",
+ "name": "accept_language",
+ "type": "string"
+ },
+ {
+ "description": "Include address details, defaults to true",
+ "in": "query",
+ "name": "addressdetails",
+ "type": "boolean"
+ },
+ {
+ "description": "Include OSM extra tags",
+ "in": "query",
+ "name": "extratags",
+ "type": "boolean"
+ },
+ {
+ "description": "Include multilingual name details",
+ "in": "query",
+ "name": "namedetails",
+ "type": "boolean"
}
],
"produces": [
@@ -263383,7 +292921,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
+ "$ref": "#/definitions/geocoding.reverseResponseDoc"
}
},
"400": {
@@ -263398,8 +292936,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "502": {
+ "description": "Bad Gateway",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -263416,33 +292954,97 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashion Nova collection products",
+ "summary": "Reverse geocode coordinates",
"tags": [
- "Fashion Nova"
+ "Geocoding"
]
}
},
- "/fashionnova/pages": {
+ "/geocoding/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static pages from Fashion Nova (https://www.fashionnova.com). The storefront URL is fixed server-side.",
- "operationId": "fashionnova-pages",
+ "description": "Returns typed Nominatim JSONv2 forward geocoding results. Use either q or structured fields, not both.",
+ "operationId": "geocoding-search",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Free-text search query",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "q",
+ "type": "string"
},
{
- "description": "Maximum static pages, defaults to 50 and supports up to 250",
+ "description": "Structured street or house number",
+ "in": "query",
+ "name": "street",
+ "type": "string"
+ },
+ {
+ "description": "Structured city",
+ "in": "query",
+ "name": "city",
+ "type": "string"
+ },
+ {
+ "description": "Structured county",
+ "in": "query",
+ "name": "county",
+ "type": "string"
+ },
+ {
+ "description": "Structured state",
+ "in": "query",
+ "name": "state",
+ "type": "string"
+ },
+ {
+ "description": "Structured country",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "description": "Structured postal code",
+ "in": "query",
+ "name": "postalcode",
+ "type": "string"
+ },
+ {
+ "description": "Maximum results, defaults to 10 and clamps to 20",
"in": "query",
"name": "limit",
- "type": "integer",
- "x-example": 50
+ "type": "integer"
+ },
+ {
+ "description": "Comma-separated ISO 3166-1 alpha-2 country filters",
+ "in": "query",
+ "name": "countrycodes",
+ "type": "string"
+ },
+ {
+ "description": "Preferred result language, forwarded to Nominatim",
+ "in": "query",
+ "name": "accept_language",
+ "type": "string"
+ },
+ {
+ "description": "Include address details, defaults to true",
+ "in": "query",
+ "name": "addressdetails",
+ "type": "boolean"
+ },
+ {
+ "description": "Include OSM extra tags",
+ "in": "query",
+ "name": "extratags",
+ "type": "boolean"
+ },
+ {
+ "description": "Include multilingual name details",
+ "in": "query",
+ "name": "namedetails",
+ "type": "boolean"
}
],
"produces": [
@@ -263452,7 +293054,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
+ "$ref": "#/definitions/geocoding.searchResponseDoc"
}
},
"400": {
@@ -263461,8 +293063,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "502": {
+ "description": "Bad Gateway",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -263479,27 +293087,36 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashion Nova static pages",
+ "summary": "Search Nominatim places",
"tags": [
- "Fashion Nova"
+ "Geocoding"
]
}
},
- "/fashionnova/pages/{handle}": {
+ "/ghanaweb/archive": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized static page detail for one Fashion Nova (https://www.fashionnova.com) page handle. The storefront URL is fixed server-side.",
- "operationId": "fashionnova-page",
+ "description": "Returns paginated canonical article URLs from one month sitemap. Discover accepted month values from ghanaweb-archive-months; the service only fetches child sitemap URLs derived from that official index.",
+ "operationId": "ghanaweb-archive",
"parameters": [
{
- "description": "Page handle",
- "in": "path",
- "name": "handle",
+ "description": "A YYYYMM value returned by ghanaweb-archive-months",
+ "in": "query",
+ "name": "month",
"required": true,
"type": "string",
- "x-example": "page-handle"
+ "x-example": "202609"
+ },
+ {
+ "description": "Page number (default 1)",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Items per page, 1–100 (default 50)",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -263509,7 +293126,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pageResponseDoc"
+ "$ref": "#/definitions/publicnews.ghanawebArchiveResponseDoc"
}
},
"400": {
@@ -263524,12 +293141,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -263542,35 +293153,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fashion Nova static page",
+ "summary": "List GhanaWeb archive article URLs",
"tags": [
- "Fashion Nova"
+ "GhanaWeb"
]
}
},
- "/fashionnova/products": {
+ "/ghanaweb/archive/months": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized products from Fashion Nova's (https://www.fashionnova.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
- "operationId": "fashionnova-products",
- "parameters": [
- {
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum products, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
- }
- ],
+ "description": "Returns every YYYYMM month currently advertised by GhanaWeb's official article-sitemap index. Use one of these values with ghanaweb-archive.",
+ "operationId": "ghanaweb-archive-months",
"produces": [
"application/json"
],
@@ -263578,19 +293170,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.ghanawebArchiveMonthsResponseDoc"
}
},
"503": {
@@ -263605,27 +293185,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashion Nova products",
+ "summary": "Discover GhanaWeb archive months",
"tags": [
- "Fashion Nova"
+ "GhanaWeb"
]
}
},
- "/fashionnova/products/{handle}": {
+ "/ghanaweb/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized product detail for one Fashion Nova (https://www.fashionnova.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
- "operationId": "fashionnova-product",
+ "description": "Returns public article metadata and readable body paragraphs. GhanaWeb's JSON-LD identifies the publisher rather than person authors, so authors are omitted.",
+ "operationId": "ghanaweb-article",
"parameters": [
{
- "description": "Product handle",
- "in": "path",
- "name": "handle",
+ "description": "Canonical GhanaWeb article URL ending in its numeric story ID",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "product-handle"
+ "x-example": "https://www.ghanaweb.com/GhanaHomePage/NewsArchive/NPP-Chairmanship-Race-How-APL-s-survey-made-a-near-perfect-prediction-2055134"
}
],
"produces": [
@@ -263635,7 +293212,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -263644,18 +293221,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -263668,45 +293233,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fashion Nova product",
+ "summary": "Get GhanaWeb article content",
"tags": [
- "Fashion Nova"
+ "GhanaWeb"
]
}
},
- "/fashionnova/products/{handle}/recommendations": {
+ "/ghanaweb/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized recommended products for one Fashion Nova (https://www.fashionnova.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
- "operationId": "fashionnova-product-recommendations",
+ "description": "Returns article cards from a verified GhanaWeb section page.",
+ "operationId": "ghanaweb-headlines",
"parameters": [
{
- "description": "Product handle",
- "in": "path",
- "name": "handle",
- "required": true,
- "type": "string",
- "x-example": "product-handle"
- },
- {
- "description": "Maximum products, defaults to 10 and supports up to 20",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Recommendation intent. Allowed values: related, complementary",
+ "description": "Section slug from ghanaweb-sections",
"enum": [
- "related",
- "complementary"
+ "news",
+ "sports",
+ "business",
+ "entertainment",
+ "africa",
+ "opinions",
+ "editorial",
+ "crime",
+ "regional",
+ "health",
+ "politics",
+ "tabloid",
+ "world",
+ "lifestyle",
+ "features"
],
"in": "query",
- "name": "intent",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "related"
+ "x-example": "news"
}
],
"produces": [
@@ -263716,7 +293277,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -263725,18 +293286,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -263749,43 +293298,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashion Nova product recommendations",
+ "summary": "Get GhanaWeb section headlines",
"tags": [
- "Fashion Nova"
+ "GhanaWeb"
]
}
},
- "/fashionnova/search/suggest": {
+ "/ghanaweb/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns products, collections, and query suggestions from Fashion Nova's (https://www.fashionnova.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
- "operationId": "fashionnova-search-suggest",
- "parameters": [
- {
- "description": "Search query",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "wool"
- },
- {
- "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
- "in": "query",
- "name": "types",
- "type": "string",
- "x-example": "product,collection,query"
- },
- {
- "description": "Maximum results per type, defaults to 10 and supports up to 20",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- }
- ],
+ "description": "Returns GhanaWeb's current public stories from its Google News sitemap, including canonical URL, headline, and publication time.",
+ "operationId": "ghanaweb-news",
"produces": [
"application/json"
],
@@ -263793,13 +293315,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -263820,42 +293336,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fashion Nova search suggestions",
+ "summary": "Get GhanaWeb latest stories",
"tags": [
- "Fashion Nova"
+ "GhanaWeb"
]
}
},
- "/fashionnova/sitemap/urls": {
+ "/ghanaweb/sections": {
"get": {
- "consumes": [
+ "description": "Returns the complete verified article-bearing section set accepted by ghanaweb-headlines. Static, media, and non-article destinations are excluded.",
+ "operationId": "ghanaweb-sections",
+ "produces": [
"application/json"
],
- "description": "Returns capped URL entries from Fashion Nova's (https://www.fashionnova.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
- "operationId": "fashionnova-sitemap-urls",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get GhanaWeb article sections",
+ "tags": [
+ "GhanaWeb"
+ ]
+ }
+ },
+ "/ghanaweb/video": {
+ "get": {
+ "description": "Returns public GhanaWeb TV metadata and the page's YouTube embed URL. The media itself is not retrieved.",
+ "operationId": "ghanaweb-video",
"parameters": [
{
- "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
- "enum": [
- "all",
- "products",
- "collections",
- "pages",
- "blogs",
- "agentic_discovery",
- "other"
- ],
+ "description": "Numeric GhanaWeb TV video ID",
"in": "query",
- "name": "type",
+ "name": "id",
+ "required": true,
"type": "string",
- "x-example": "products"
- },
- {
- "description": "Maximum URL entries, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "x-example": "138878"
}
],
"produces": [
@@ -263865,7 +293389,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
+ "$ref": "#/definitions/publicnews.ghanawebVideoResponseDoc"
}
},
"400": {
@@ -263874,8 +293398,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -263892,19 +293416,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashion Nova sitemap URLs",
+ "summary": "Get GhanaWeb TV video metadata",
"tags": [
- "Fashion Nova"
+ "GhanaWeb"
]
}
},
- "/fashionnova/sitemaps": {
+ "/ghanaweb/video-sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns child sitemap URLs from Fashion Nova's (https://www.fashionnova.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
- "operationId": "fashionnova-sitemaps",
+ "description": "Returns the complete four-value video category set accepted by ghanaweb-videos.",
+ "operationId": "ghanaweb-video-sections",
"produces": [
"application/json"
],
@@ -263912,25 +293433,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.ghanawebVideoSectionsResponseDoc"
}
}
},
@@ -263939,19 +293442,32 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashion Nova sitemaps",
+ "summary": "Get GhanaWeb TV video sections",
"tags": [
- "Fashion Nova"
+ "GhanaWeb"
]
}
},
- "/fashionnova/store": {
+ "/ghanaweb/videos": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns current public video cards for one GhanaWeb TV category, including metadata and a canonical detail URL. This endpoint does not retrieve video media.",
+ "operationId": "ghanaweb-videos",
+ "parameters": [
+ {
+ "description": "Video category from ghanaweb-video-sections",
+ "enum": [
+ "news",
+ "sports",
+ "business",
+ "entertainment"
+ ],
+ "in": "query",
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "news"
+ }
],
- "description": "Returns normalized storefront metadata for Fashion Nova (https://www.fashionnova.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
- "operationId": "fashionnova-store",
"produces": [
"application/json"
],
@@ -263959,7 +293475,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.storeResponseDoc"
+ "$ref": "#/definitions/publicnews.ghanawebVideosResponseDoc"
}
},
"400": {
@@ -263968,12 +293484,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -263986,33 +293496,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fashion Nova store metadata",
+ "summary": "List GhanaWeb TV videos",
"tags": [
- "Fashion Nova"
+ "GhanaWeb"
]
}
},
- "/fashionphile/collections": {
+ "/github/org/{org}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized collections from Fashionphile (https://www.fashionphile.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
- "operationId": "fashionphile-collections",
+ "description": "Returns a public GitHub organization profile (company-side enrichment).",
+ "operationId": "github-org",
"parameters": [
{
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum collections, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "description": "GitHub organization login",
+ "in": "path",
+ "name": "org",
+ "required": true,
+ "type": "string",
+ "x-example": "github"
}
],
"produces": [
@@ -264020,25 +293524,25 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Wrapped organization profile",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Organization not found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264049,41 +293553,74 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashionphile collections",
+ "summary": "Retrieve a GitHub organization profile",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/collections/{handle}/products": {
+ "/github/org/{org}/repos": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from one Fashionphile (https://www.fashionphile.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
- "operationId": "fashionphile-collection-products",
+ "description": "Returns a page of an organization's public repositories (company tech stack).",
+ "operationId": "github-org-repos",
"parameters": [
{
- "description": "Collection handle",
+ "description": "GitHub organization login",
"in": "path",
- "name": "handle",
+ "name": "org",
"required": true,
"type": "string",
- "x-example": "collection-handle"
+ "x-example": "github"
},
{
- "description": "1-based page, defaults to 1",
+ "description": "Sort field",
+ "enum": [
+ "created",
+ "updated",
+ "pushed",
+ "full_name"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Sort direction",
+ "enum": [
+ "asc",
+ "desc"
+ ],
+ "in": "query",
+ "name": "direction",
+ "type": "string"
+ },
+ {
+ "description": "Repository type",
+ "enum": [
+ "all",
+ "public",
+ "forks",
+ "sources",
+ "member"
+ ],
+ "in": "query",
+ "name": "type",
+ "type": "string"
+ },
+ {
+ "description": "Page number",
"in": "query",
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Results per page (max 100)",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -264091,31 +293628,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Wrapped repository list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264126,33 +293651,35 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashionphile collection products",
+ "summary": "List a GitHub organization's public repositories",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/pages": {
+ "/github/repo/{owner}/{repo}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static pages from Fashionphile (https://www.fashionphile.com). The storefront URL is fixed server-side.",
- "operationId": "fashionphile-pages",
+ "description": "Returns public detail for a single repository (the core project object).",
+ "operationId": "github-repo",
"parameters": [
{
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "description": "Repository owner (user or org login)",
+ "in": "path",
+ "name": "owner",
+ "required": true,
+ "type": "string",
+ "x-example": "torvalds"
},
{
- "description": "Maximum static pages, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "description": "Repository name",
+ "in": "path",
+ "name": "repo",
+ "required": true,
+ "type": "string",
+ "x-example": "linux"
}
],
"produces": [
@@ -264160,25 +293687,25 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Wrapped repository detail",
"schema": {
- "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Repository not found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264189,27 +293716,47 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashionphile static pages",
+ "summary": "Retrieve a GitHub repository",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/pages/{handle}": {
+ "/github/repo/{owner}/{repo}/contributors": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static page detail for one Fashionphile (https://www.fashionphile.com) page handle. The storefront URL is fixed server-side.",
- "operationId": "fashionphile-page",
+ "description": "Returns a page of a repository's contributors (who builds a project).",
+ "operationId": "github-repo-contributors",
"parameters": [
{
- "description": "Page handle",
+ "description": "Repository owner (user or org login)",
"in": "path",
- "name": "handle",
+ "name": "owner",
"required": true,
"type": "string",
- "x-example": "page-handle"
+ "x-example": "torvalds"
+ },
+ {
+ "description": "Repository name",
+ "in": "path",
+ "name": "repo",
+ "required": true,
+ "type": "string",
+ "x-example": "linux"
+ },
+ {
+ "description": "Page number",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Results per page (max 100)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -264217,31 +293764,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/shopifybrands.pageResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Wrapped contributor list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264252,33 +293787,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fashionphile static page",
+ "summary": "List a repository's contributors",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/products": {
+ "/github/repo/{owner}/{repo}/forks": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from Fashionphile's (https://www.fashionphile.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
- "operationId": "fashionphile-products",
+ "description": "Returns a page of a repository's public forks (adopter signal).",
+ "operationId": "github-repo-forks",
"parameters": [
{
- "description": "1-based page, defaults to 1",
+ "description": "Repository owner (user or org login)",
+ "in": "path",
+ "name": "owner",
+ "required": true,
+ "type": "string",
+ "x-example": "torvalds"
+ },
+ {
+ "description": "Repository name",
+ "in": "path",
+ "name": "repo",
+ "required": true,
+ "type": "string",
+ "x-example": "linux"
+ },
+ {
+ "description": "Sort order",
+ "enum": [
+ "newest",
+ "oldest",
+ "stargazers",
+ "watchers"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page number",
"in": "query",
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Results per page (max 100)",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -264286,25 +293847,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/shopifybrands.productsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "description": "Wrapped fork list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264315,27 +293870,35 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashionphile products",
+ "summary": "List a repository's public forks",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/products/{handle}": {
+ "/github/repo/{owner}/{repo}/languages": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized product detail for one Fashionphile (https://www.fashionphile.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
- "operationId": "fashionphile-product",
+ "description": "Returns the language byte breakdown for a repository, sorted by bytes descending (tech fingerprint).",
+ "operationId": "github-repo-languages",
"parameters": [
{
- "description": "Product handle",
+ "description": "Repository owner (user or org login)",
"in": "path",
- "name": "handle",
+ "name": "owner",
"required": true,
"type": "string",
- "x-example": "product-handle"
+ "x-example": "torvalds"
+ },
+ {
+ "description": "Repository name",
+ "in": "path",
+ "name": "repo",
+ "required": true,
+ "type": "string",
+ "x-example": "linux"
}
],
"produces": [
@@ -264343,31 +293906,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/shopifybrands.productResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Wrapped language breakdown",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264378,45 +293929,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fashionphile product",
+ "summary": "Retrieve a repository's language breakdown",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/products/{handle}/recommendations": {
+ "/github/repo/{owner}/{repo}/releases": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized recommended products for one Fashionphile (https://www.fashionphile.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
- "operationId": "fashionphile-product-recommendations",
+ "description": "Returns a page of a repository's releases (momentum/health signal).",
+ "operationId": "github-repo-releases",
"parameters": [
{
- "description": "Product handle",
+ "description": "Repository owner (user or org login)",
"in": "path",
- "name": "handle",
+ "name": "owner",
"required": true,
"type": "string",
- "x-example": "product-handle"
+ "x-example": "torvalds"
},
{
- "description": "Maximum products, defaults to 10 and supports up to 20",
+ "description": "Repository name",
+ "in": "path",
+ "name": "repo",
+ "required": true,
+ "type": "string",
+ "x-example": "linux"
+ },
+ {
+ "description": "Page number",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
+ "name": "page",
+ "type": "integer"
},
{
- "description": "Recommendation intent. Allowed values: related, complementary",
- "enum": [
- "related",
- "complementary"
- ],
+ "description": "Results per page (max 100)",
"in": "query",
- "name": "intent",
- "type": "string",
- "x-example": "related"
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -264424,31 +293977,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Wrapped release list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264459,88 +294000,61 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashionphile product recommendations",
+ "summary": "List a repository's releases",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/search": {
+ "/github/search/repositories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized, ranked products from Fashionphile's (https://www.fashionphile.com) own full-text and faceted product search, including condition grade, discount percentage, and other filter attributes not available from the classic catalog JSON endpoints in this family. The storefront URL is fixed server-side. Omitting `q` browses the full catalog subject to any condition/vendor/availability filters and the chosen sort. By default only in-stock listings are searched, matching the storefront; `availability=sold` searches the sold archive instead. `total_items` is the exact number of products matching the query and all filters.",
- "operationId": "fashionphile-search",
+ "description": "Searches public GitHub repositories (market/competitive discovery). Unauthenticated search is rate limited to roughly 10 requests per minute.",
+ "operationId": "github-search-repositories",
"parameters": [
{
- "description": "Search query text",
+ "description": "GitHub repository search query",
"in": "query",
"name": "q",
+ "required": true,
"type": "string",
- "x-example": "chanel"
- },
- {
- "description": "Filter by condition grade. Allowed values: New, Excellent, Giftable, Shows Wear, Worn, Flawed, Fair",
- "enum": [
- "New",
- "Excellent",
- "Giftable",
- "Shows Wear",
- "Worn",
- "Flawed",
- "Fair"
- ],
- "in": "query",
- "name": "condition",
- "type": "string",
- "x-example": "Excellent"
+ "x-example": "linux"
},
{
- "description": "Which listings to search. Allowed values: available (in-stock only, default), sold (sold archive only), all",
+ "description": "Sort field",
"enum": [
- "available",
- "sold",
- "all"
+ "stars",
+ "forks",
+ "help-wanted-issues",
+ "updated"
],
"in": "query",
- "name": "availability",
- "type": "string",
- "x-example": "available"
- },
- {
- "description": "Filter by exact designer/vendor name, e.g. Chanel",
- "in": "query",
- "name": "vendor",
- "type": "string",
- "x-example": "Chanel"
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Sort order. Allowed values: relevance, newest, price_asc, price_desc",
+ "description": "Sort order",
"enum": [
- "relevance",
- "newest",
- "price_asc",
- "price_desc"
+ "asc",
+ "desc"
],
"in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "relevance"
+ "name": "order",
+ "type": "string"
},
{
- "description": "1-based page, defaults to 1",
+ "description": "Page number",
"in": "query",
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Maximum products, defaults to 20 and supports up to 50",
+ "description": "Results per page (max 100)",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -264548,25 +294062,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/shopifybrands.searchResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "description": "Wrapped repository search result",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264577,41 +294085,60 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Fashionphile products",
+ "summary": "Search public GitHub repositories",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/search/suggest": {
+ "/github/search/users": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns products, collections, and query suggestions from Fashionphile's (https://www.fashionphile.com) credential-free predictive search Ajax endpoint. The storefront URL is fixed server-side.",
- "operationId": "fashionphile-search-suggest",
+ "description": "Searches public GitHub users (developer discovery). Unauthenticated search is rate limited to roughly 10 requests per minute.",
+ "operationId": "github-search-users",
"parameters": [
{
- "description": "Search query",
+ "description": "GitHub user search query",
"in": "query",
"name": "q",
"required": true,
"type": "string",
- "x-example": "wool"
+ "x-example": "torvalds"
},
{
- "description": "Comma-separated suggestion types. Allowed values: product, collection, query",
+ "description": "Sort field",
+ "enum": [
+ "followers",
+ "repositories",
+ "joined"
+ ],
"in": "query",
- "name": "types",
- "type": "string",
- "x-example": "product,collection,query"
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Maximum results per type, defaults to 10 and supports up to 20",
+ "description": "Sort order",
+ "enum": [
+ "asc",
+ "desc"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
+ "name": "order",
+ "type": "string"
+ },
+ {
+ "description": "Page number",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Results per page (max 100)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -264619,25 +294146,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/shopifybrands.searchSuggestResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "description": "Wrapped user search result",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264648,42 +294169,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fashionphile search suggestions",
+ "summary": "Search public GitHub users",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/sitemap/urls": {
+ "/github/trending": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns capped URL entries from Fashionphile's (https://www.fashionphile.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
- "operationId": "fashionphile-sitemap-urls",
+ "description": "Returns the repositories on GitHub's trending page (market discovery).",
+ "operationId": "github-trending",
"parameters": [
{
- "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
- "enum": [
- "all",
- "products",
- "collections",
- "pages",
- "blogs",
- "agentic_discovery",
- "other"
- ],
+ "description": "Programming language filter (e.g. go, python)",
"in": "query",
- "name": "type",
- "type": "string",
- "x-example": "products"
+ "name": "language",
+ "type": "string"
},
{
- "description": "Maximum URL entries, defaults to 50 and supports up to 250",
+ "description": "Time window",
+ "enum": [
+ "daily",
+ "weekly",
+ "monthly"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "since",
+ "type": "string"
}
],
"produces": [
@@ -264691,25 +294206,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "description": "Wrapped trending repository list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264720,43 +294229,56 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashionphile sitemap URLs",
+ "summary": "List trending GitHub repositories",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/sitemaps": {
+ "/github/trending/developers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns child sitemap URLs from Fashionphile's (https://www.fashionphile.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
- "operationId": "fashionphile-sitemaps",
+ "description": "Returns the developers on GitHub's trending developers page (market discovery).",
+ "operationId": "github-trending-developers",
+ "parameters": [
+ {
+ "description": "Programming language filter (e.g. go, python)",
+ "in": "query",
+ "name": "language",
+ "type": "string"
+ },
+ {
+ "description": "Time window",
+ "enum": [
+ "daily",
+ "weekly",
+ "monthly"
+ ],
+ "in": "query",
+ "name": "since",
+ "type": "string"
+ }
+ ],
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "description": "Wrapped trending developer list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264767,43 +294289,53 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fashionphile sitemaps",
+ "summary": "List trending GitHub developers",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fashionphile/store": {
+ "/github/user/{username}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized storefront metadata for Fashionphile (https://www.fashionphile.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
- "operationId": "fashionphile-store",
+ "description": "Returns a public GitHub user's profile plus user-published social links. Email is included only when the user has made it public on their profile.",
+ "operationId": "github-user",
+ "parameters": [
+ {
+ "description": "GitHub username",
+ "in": "path",
+ "name": "username",
+ "required": true,
+ "type": "string",
+ "x-example": "torvalds"
+ }
+ ],
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Wrapped user profile",
"schema": {
- "$ref": "#/definitions/shopifybrands.storeResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "User not found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264814,24 +294346,39 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fashionphile store metadata",
+ "summary": "Retrieve a GitHub user profile",
"tags": [
- "Fashionphile"
+ "GitHub"
]
}
},
- "/fastcompany/article": {
+ "/github/user/{username}/events": {
"get": {
- "description": "Returns public Fast Company article metadata and body paragraphs from a canonical article URL. The service uses the configured production browser fleet when ordinary HTTP transport encounters Fast Company's bot-verification challenge; it does not bypass authentication or access controls.",
- "operationId": "fastcompany-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a page of a user's recent public events, normalized to type, repository, and timestamp (freshness signal).",
+ "operationId": "github-user-events",
"parameters": [
{
- "description": "Canonical Fast Company article URL",
- "in": "query",
- "name": "url",
+ "description": "GitHub username",
+ "in": "path",
+ "name": "username",
"required": true,
"type": "string",
- "x-example": "https://www.fastcompany.com/91611506/example-headline"
+ "x-example": "torvalds"
+ },
+ {
+ "description": "Page number",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Results per page (max 100)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -264839,25 +294386,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "description": "Wrapped event list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264868,24 +294409,39 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fast Company article content",
+ "summary": "List a GitHub user's recent public activity",
"tags": [
- "Fast Company"
+ "GitHub"
]
}
},
- "/fastcompany/author": {
+ "/github/user/{username}/followers": {
"get": {
- "description": "Returns a Fast Company contributor's name, biography, and recent articles from a canonical contributor URL. Recent articles and the contributor's name come from their own public RSS feed; the biography comes from the contributor's profile page and is omitted if that page's bot-verification challenge cannot be cleared. The service uses the configured production browser fleet when ordinary HTTP transport encounters that challenge; it does not bypass authentication or access controls.",
- "operationId": "fastcompany-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a page of the public accounts following a GitHub user.",
+ "operationId": "github-user-followers",
"parameters": [
{
- "description": "Canonical Fast Company contributor URL",
- "in": "query",
- "name": "url",
+ "description": "GitHub username",
+ "in": "path",
+ "name": "username",
"required": true,
"type": "string",
- "x-example": "https://www.fastcompany.com/user/example-writer"
+ "x-example": "torvalds"
+ },
+ {
+ "description": "Page number",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Results per page (max 100)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -264893,25 +294449,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.fastCompanyAuthorResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "description": "Wrapped follower list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -264922,82 +294472,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fast Company contributor profile",
+ "summary": "List a GitHub user's followers",
"tags": [
- "Fast Company"
+ "GitHub"
]
}
},
- "/fastcompany/headlines": {
+ "/github/user/{username}/following": {
"get": {
- "description": "Returns fresh headlines from one Fast Company section or topic's public RSS feed. section accepts any slug returned by GET /fastcompany/sections (78 values, e.g. \"technology\" or \"artificial-intelligence\").",
- "operationId": "fastcompany-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a page of the public accounts a GitHub user follows.",
+ "operationId": "github-user-following",
"parameters": [
{
- "description": "Fast Company section slug, from GET /fastcompany/sections",
- "in": "query",
- "name": "section",
+ "description": "GitHub username",
+ "in": "path",
+ "name": "username",
"required": true,
"type": "string",
- "x-example": "technology"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
- }
+ "x-example": "torvalds"
},
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "Page number",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
+ "description": "Results per page (max 100)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer"
}
],
- "summary": "Get Fast Company section headlines",
- "tags": [
- "Fast Company"
- ]
- }
- },
- "/fastcompany/news": {
- "get": {
- "description": "Returns fresh Fast Company stories from its public RSS feed.",
- "operationId": "fastcompany-news",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Wrapped following list",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -265008,52 +294535,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fast Company top stories",
- "tags": [
- "Fast Company"
- ]
- }
- },
- "/fastcompany/sections": {
- "get": {
- "description": "Returns the Fast Company section/topic inventory: the site's six primary verticals (Tech, Work Life, News, Design, Leadership, Impact) plus every topic tag accepted by GET /fastcompany/headlines (78 values total, too many to enumerate inline -- see that endpoint for the full, current, live-verified list), each linking to its public RSS feed.",
- "operationId": "fastcompany-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Fast Company sections",
+ "summary": "List who a GitHub user follows",
"tags": [
- "Fast Company"
+ "GitHub"
]
}
},
- "/fiveguys/directory": {
+ "/github/user/{username}/pinned": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one level of Five Guys' US restaurant directory: the 50 states at the root, one state's cities when path is a state (e.g. `il`), and that city's restaurants when path is a city (e.g. `il/chicago`). Each child carries the path to pass back as this endpoint's `path`, and a `location_count` of how many restaurants sit under it. At the deepest level children are restaurants themselves (`is_location` true) -- pass their path to GET /fiveguys/store for the full profile. Use this to enumerate or browse locations; use GET /fiveguys/search or /fiveguys/nearby to find them by query or coordinate instead.",
- "operationId": "fiveguys-directory",
+ "description": "Returns the repositories a user pinned on their public profile (showcase signal). Empty when the user pinned nothing.",
+ "operationId": "github-user-pinned",
"parameters": [
{
- "description": "Optional. Directory path from a previous response's children[].path, e.g. \\",
- "in": "query",
- "name": "path",
+ "description": "GitHub username",
+ "in": "path",
+ "name": "username",
+ "required": true,
"type": "string",
- "x-example": "il"
+ "x-example": "torvalds"
}
],
"produces": [
@@ -265061,31 +294563,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/fiveguys.directoryResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Wrapped pinned repository list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -265096,57 +294586,72 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse the Five Guys restaurant directory by state and city",
+ "summary": "List a GitHub user's pinned repositories",
"tags": [
- "FiveGuys"
+ "GitHub"
]
}
},
- "/fiveguys/faq": {
+ "/github/user/{username}/repos": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of Five Guys' published customer FAQ corpus -- 142 entries across 17 categories (Menu, Nutritional and Allergens, Ordering, Gift Card, Careers, Franchise, App, Company, The Crew, and others), filterable by category id and free text, in English (default) or Spanish via `lang`. Get valid category values from GET /fiveguys/faq-categories using the same `lang` -- category ids are language-specific.",
- "operationId": "fiveguys-faq",
+ "description": "Returns a page of a user's public repositories (tech-stack signal).",
+ "operationId": "github-user-repos",
"parameters": [
{
- "description": "Optional. Free-text filter over question and answer text.",
- "in": "query",
- "name": "search",
- "type": "string",
- "x-example": "gluten"
- },
- {
- "description": "Optional. Comma-separated faq_category term ids, from GET /fiveguys/faq-categories.",
- "in": "query",
- "name": "category",
+ "description": "GitHub username",
+ "in": "path",
+ "name": "username",
+ "required": true,
"type": "string",
- "x-example": "21"
+ "x-example": "torvalds"
},
{
- "description": "Optional. 1-based page number, default 1.",
+ "description": "Sort field",
+ "enum": [
+ "created",
+ "updated",
+ "pushed",
+ "full_name"
+ ],
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Optional. Entries per page, 1-100, default 20.",
+ "description": "Sort direction",
+ "enum": [
+ "asc",
+ "desc"
+ ],
"in": "query",
- "name": "per_page",
- "type": "integer",
- "x-example": 20
+ "name": "direction",
+ "type": "string"
},
{
- "description": "Optional. Content language: en (default) or es.",
+ "description": "Repository type",
"enum": [
- "en",
- "es"
+ "all",
+ "owner",
+ "member"
],
"in": "query",
- "name": "lang",
+ "name": "type",
"type": "string"
+ },
+ {
+ "description": "Page number",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Results per page (max 100)",
+ "in": "query",
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -265154,25 +294659,19 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/fiveguys.faqResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
+ "description": "Wrapped repository list",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Upstream error or rate limit",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -265183,29 +294682,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Five Guys' published customer FAQ",
+ "summary": "List a GitHub user's public repositories",
"tags": [
- "FiveGuys"
+ "GitHub"
]
}
},
- "/fiveguys/faq-categories": {
+ "/gizmodo/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns every published Five Guys FAQ category with its id, name, slug, and entry count -- use an id here as GET /fiveguys/faq's category filter. Available in English (default) and Spanish via `lang`; ids differ between languages, so pass the same `lang` to both endpoints.",
- "operationId": "fiveguys-faq-categories",
+ "description": "Returns public Gizmodo article metadata and body paragraphs from a canonical article URL. Gizmodo articles are free to read, so the full body is returned.",
+ "operationId": "gizmodo-article",
"parameters": [
{
- "description": "Optional. Content language: en (default) or es. Category ids differ per language -- feed ids from a given language back into GET /fiveguys/faq with the same lang.",
- "enum": [
- "en",
- "es"
- ],
+ "description": "Canonical Gizmodo article URL",
"in": "query",
- "name": "lang",
- "type": "string"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://gizmodo.com/meta-muse-charm-ai-keychain-2000816515"
}
],
"produces": [
@@ -265215,11 +294709,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiveguys.faqCategoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -265236,35 +294736,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Five Guys FAQ categories",
+ "summary": "Get Gizmodo article content",
"tags": [
- "FiveGuys"
+ "Gizmodo"
]
}
},
- "/fiveguys/menu": {
+ "/gizmodo/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Five Guys' public menu content: every category (Burgers, Fries, Shakes, Hot Dogs, Sandwiches, Drinks, Toppings) -- each with its own short description and cover image, plus its items' name, description, calories, and image -- or one category's items when category is given. Five Guys publishes no per-item price on this surface -- pricing is store-scoped and lives only behind its ordering flow, which this endpoint does not cover. Available in English (default) and Spanish via `lang`. Calories are shown exactly as published: a single value for most items, or a range (e.g. fries' \"530-1100\") for build-your-own items whose calories vary by size and toppings. Some items (drink categories, a few build-your-own items) publish no calorie figure at all; their calories field is omitted rather than estimated.",
- "operationId": "fiveguys-menu",
+ "description": "Returns a Gizmodo author's name, job title, biography, headshot, social links, and most recent articles from a canonical author URL.",
+ "operationId": "gizmodo-author",
"parameters": [
{
- "description": "Optional. One category slug to return only that category's items. Omit to return the full menu across every category. With lang=en (the default) one of: burgers, fries, shakes, dogs, sandwiches, drinks, toppings. With lang=es the slugs differ -- read them from a lang=es response's categories[].slug.",
- "in": "query",
- "name": "category",
- "type": "string"
- },
- {
- "description": "Optional. Content language: en (default) or es.",
- "enum": [
- "en",
- "es"
- ],
+ "description": "Canonical Gizmodo author URL",
"in": "query",
- "name": "lang",
- "type": "string"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://gizmodo.com/author/jpero"
}
],
"produces": [
@@ -265274,7 +294763,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiveguys.menuResponseDoc"
+ "$ref": "#/definitions/publicnews.gizmodoAuthorResponseDoc"
}
},
"400": {
@@ -265289,12 +294778,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -265307,56 +294790,75 @@
"ApiKeyAuth": []
}
],
- "summary": "List Five Guys menu categories and items",
+ "summary": "Get a Gizmodo author profile",
"tags": [
- "FiveGuys"
+ "Gizmodo"
]
}
},
- "/fiveguys/nearby": {
+ "/gizmodo/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Five Guys restaurants within a radius of a latitude/longitude. Each result carries a full profile: a short area/plaza label distinguishing it from other locations, address, phone, weekly in-store hours plus a separate delivery-hours schedule when published, price tier, restaurant-amenity labels (e.g. Takeout, Dine In, Curbside), pickup/delivery service labels, order/delivery/menu URLs, a Google Place id, and distance in miles/kilometers from the given coordinate. `total_results` reports how many restaurants fall inside the radius overall, usually more than one page; use `offset` to page. A coordinate with no Five Guys nearby returns an empty list rather than an error.",
- "operationId": "fiveguys-nearby",
+ "description": "Returns fresh headlines from one Gizmodo section's public RSS feed.",
+ "operationId": "gizmodo-headlines",
"parameters": [
{
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 41.881953
- },
- {
- "description": "Search center longitude",
+ "description": "Gizmodo section slug",
+ "enum": [
+ "tech",
+ "artificial-intelligence",
+ "commerce",
+ "crime",
+ "cryptocurrencies",
+ "culture",
+ "gadgets",
+ "internet",
+ "politics",
+ "privacy-and-security",
+ "robots",
+ "social-media",
+ "sploid",
+ "tech-policy",
+ "transportation",
+ "science",
+ "biology",
+ "health",
+ "human-history",
+ "physics",
+ "space",
+ "io9",
+ "anime",
+ "books-comics",
+ "corporate-culture",
+ "games",
+ "io9-reviews",
+ "movies",
+ "television",
+ "theme-parks-destinations",
+ "toys-and-collectibles",
+ "trailer-frenzy",
+ "earther",
+ "climate-change",
+ "conservation",
+ "earth-science",
+ "energy",
+ "environmental-justice",
+ "reviews",
+ "desktops",
+ "gaming",
+ "headphones",
+ "home-entertainment",
+ "laptops",
+ "other-gadgets",
+ "phones",
+ "tablets",
+ "wearables",
+ "deals"
+ ],
"in": "query",
- "name": "longitude",
+ "name": "section",
"required": true,
- "type": "number",
- "x-example": -87.632362
- },
- {
- "description": "Search radius in miles, 1-100 (default 25)",
- "in": "query",
- "name": "radius",
- "type": "integer",
- "x-example": 25
- },
- {
- "description": "Maximum restaurants to return, 1-50 (default 10)",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Result offset for paging through total_results (default 0)",
- "in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
+ "type": "string",
+ "x-example": "tech"
}
],
"produces": [
@@ -265366,7 +294868,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiveguys.nearbyResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -265375,12 +294877,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -265393,19 +294889,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Find Five Guys restaurants near a coordinate",
+ "summary": "Get Gizmodo section headlines",
"tags": [
- "FiveGuys"
+ "Gizmodo"
]
}
},
- "/fiveguys/nutrition": {
+ "/gizmodo/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Resolves the live location of Five Guys' current dated nutrition & allergen guide PDF (calories, full macro nutrition and allergen data per item) directly from fiveguys.com -- the guide's own file path changes when Five Guys republishes it (observed monthly), so this endpoint always discovers the current link rather than returning a fixed one. Returns the PDF's direct download URL plus best-effort size and last-modified metadata read from the PDF's own response headers. This endpoint returns metadata and a link to the guide, not its table parsed into structured fields -- pair it with GET /fiveguys/menu for structured per-item calories.",
- "operationId": "fiveguys-nutrition",
+ "description": "Returns fresh Gizmodo stories from its public RSS feed.",
+ "operationId": "gizmodo-news",
"produces": [
"application/json"
],
@@ -265413,7 +294906,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiveguys.nutritionResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -265434,65 +294927,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get the current Five Guys nutrition & allergen PDF guide's location",
+ "summary": "Get Gizmodo top stories",
"tags": [
- "FiveGuys"
+ "Gizmodo"
]
}
},
- "/fiveguys/ordering-locations": {
+ "/gizmodo/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Five Guys restaurants near a latitude/longitude as Five Guys' own ordering platform publishes them, with commerce detail no other endpoint in this family carries: per-store delivery fee, delivery and pickup order minimums, whether the store is currently accepting orders at all, the handoff modes an order placed now could actually use (delivery, pickup, curbside, dine-in, drive-thru, dispatch), group-order/coupon/loyalty support, how many days ahead an order may be scheduled, and the store's own order URL. Set `include_hours` to also return each store's dated business and delivery calendars -- concrete dated windows rather than the recurring weekly schedule the locator endpoints publish, so they reflect holiday and special hours a weekly schedule cannot express. This is a different upstream from GET /fiveguys/nearby, which returns the marketing/locator record: the two describe the same restaurants but do not share ids, and this one carries a per-store name (\"Five Guys Austin Arbor\") where the locator publishes the generic brand name. Use each result's `id` with GET /fiveguys/ordering-menu for that store's priced menu. A coordinate with no Five Guys nearby returns an empty list rather than an error.",
- "operationId": "fiveguys-ordering-locations",
- "parameters": [
- {
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 30.267153
- },
- {
- "description": "Search center longitude",
- "in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -97.743061
- },
- {
- "description": "Search radius in miles, 1-50 (default 20)",
- "in": "query",
- "name": "radius",
- "type": "integer",
- "x-example": 20
- },
- {
- "description": "Maximum restaurants to return, 1-50 (default 10)",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Include each store's dated business and delivery calendars",
- "in": "query",
- "name": "include_hours",
- "type": "boolean",
- "x-example": true
- },
- {
- "description": "Days of calendar to return from today, 1-30 (default 7). Only meaningful with include_hours.",
- "in": "query",
- "name": "days",
- "type": "integer",
- "x-example": 7
- }
- ],
+ "description": "Returns the Gizmodo section inventory: its five top-level verticals (Tech, Science, io9, Earther, Reviews), their sub-topics, and Deals, each linking to its public RSS feed. Every slug is accepted by the headlines endpoint.",
+ "operationId": "gizmodo-sections",
"produces": [
"application/json"
],
@@ -265500,25 +294944,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiveguys.orderingLocationsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -265527,27 +294953,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Find Five Guys restaurants near a coordinate with ordering details",
+ "summary": "Get Gizmodo sections",
"tags": [
- "FiveGuys"
+ "Gizmodo"
]
}
},
- "/fiveguys/ordering-menu": {
+ "/globalnews/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one restaurant's full menu exactly as Five Guys' own ordering platform sells it, including real per-item prices -- the one field no other endpoint in this family can surface (GET /fiveguys/menu is fiveguys.com's own marketing content and carries no price at all). Categories and items are returned with name, description, price, calories (a single value or a real range, e.g. a fountain drink sized at checkout), an image, and whether the platform currently has the item available. id is the ordering platform's own restaurant id from GET /fiveguys/ordering-locations' locations[].id -- it is not a Yext entity id and does not correspond to any id from GET /fiveguys/search, /fiveguys/nearby, /fiveguys/directory, or /fiveguys/store.",
- "operationId": "fiveguys-ordering-menu",
+ "description": "Returns public Global News article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "globalnews-article",
"parameters": [
{
- "description": "The ordering platform's restaurant id, from GET /fiveguys/ordering-locations' locations[].id",
+ "description": "Canonical Global News article URL",
"in": "query",
- "name": "id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "23841"
+ "x-example": "https://globalnews.ca/news/12070709/example-article-slug/"
}
],
"produces": [
@@ -265557,7 +294980,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiveguys.orderingMenuResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -265572,12 +294995,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -265590,41 +295007,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Five Guys store's priced menu from the ordering platform",
+ "summary": "Get Global News article content",
"tags": [
- "FiveGuys"
+ "Global News"
]
}
},
- "/fiveguys/search": {
+ "/globalnews/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Five Guys restaurants matching a free-text location query -- a city, a zip/postal code, a street address, or a landmark -- the same way restaurants.fiveguys.com's own locator search box works. Yext's own query understanding geocodes the text server-side, so no separate geocoding call is needed. Each result carries a full profile: a short area/plaza label distinguishing it from other locations, address, phone, weekly in-store hours plus a separate delivery-hours schedule when published, price tier, restaurant-amenity labels (e.g. Takeout, Dine In, Curbside), pickup/delivery service labels, order/delivery/menu URLs, a Google Place id, and distance in miles/kilometers from the resolved query location. `total_results` reports how many restaurants matched overall, usually more than one page; use `offset` to page. A query that resolves to nowhere Five Guys operates returns an empty list rather than an error.",
- "operationId": "fiveguys-search",
+ "description": "Returns a Global News author's byline metadata, biography, and recent articles from a canonical author URL.",
+ "operationId": "globalnews-author",
"parameters": [
{
- "description": "Free-text location: a city, a zip/postal code, a street address, or a landmark",
+ "description": "Canonical Global News author URL",
"in": "query",
- "name": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "Chicago, IL"
- },
- {
- "description": "Maximum restaurants to return, 1-50 (default 10)",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Result offset for paging through total_results (default 0)",
- "in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
+ "x-example": "https://globalnews.ca/author/jane-doe/"
}
],
"produces": [
@@ -265634,7 +295034,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiveguys.searchResponseDoc"
+ "$ref": "#/definitions/publicnews.globalnewsAuthorResponseDoc"
}
},
"400": {
@@ -265643,8 +295043,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -265661,33 +295061,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Five Guys restaurants by free-text location",
+ "summary": "Get a Global News author profile",
"tags": [
- "FiveGuys"
+ "Global News"
]
}
},
- "/fiveguys/store": {
+ "/globalnews/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Five Guys restaurant's full published profile by its locator slug -- address, phone, weekly in-store hours, separate delivery hours, coordinate, Google Place id, restaurant-amenity labels, and order/delivery/menu URLs. Get a path from GET /fiveguys/search or /fiveguys/nearby's `locations[].path`, or from GET /fiveguys/directory's `children[].path` where `is_location` is true. It also returns three detail-only extras that search and nearby results do not carry: `description` (this restaurant's own blurb, templated but genuinely per-location), `photos` (its published gallery images, omitted for the many locations that publish none), and `breadcrumbs` (the directory trail above it, each entry's `path` feeding straight back into GET /fiveguys/directory). Two fields available on search and nearby results are not published on this surface and are omitted here: `price_range` and `pickup_and_delivery_services`. A `profile` block, populated best-effort from a second Yext key, adds further per-restaurant detail no other field in this family carries: `google_attributes` (structured amenity flags, richer than `services`), `review_page_url`/`review_invite_url`, `featured_message`/`featured_message_url`, `google_cid`/`facebook_store_id`, `routable_latitude`/`routable_longitude` (a driving destination, distinct from the display coordinate), `payment_options`, `meals_served`, `services`, `permanently_closed`, `directory_listing_url`, `franchisee_group` (the operator of this specific restaurant -- a corporate code or a franchisee's own company name), `facebook_vanity_url` (this location's own Facebook handle), and `faq` (this restaurant's own generated question set, distinct from the national corpus GET /fiveguys/faq serves). Passing a state or city path returns 404 -- use GET /fiveguys/directory for those.",
- "operationId": "fiveguys-store",
+ "description": "Returns fresh headlines from one public Global News RSS section.",
+ "operationId": "globalnews-headlines",
"parameters": [
{
- "description": "The restaurant's locator slug, e.g. \\",
- "in": "query",
- "name": "path",
- "type": "string",
- "x-example": "703-s-seely-ave"
- },
- {
- "description": "The restaurant's entity id, e.g. \\",
+ "description": "Global News RSS section slug",
+ "enum": [
+ "world",
+ "canada",
+ "politics",
+ "money",
+ "health",
+ "entertainment",
+ "environment",
+ "lifestyle",
+ "perspectives",
+ "sports",
+ "commentary",
+ "us-news",
+ "the-curator",
+ "national",
+ "barrie",
+ "bc",
+ "calgary",
+ "edmonton",
+ "guelph",
+ "halifax",
+ "hamilton",
+ "kingston",
+ "lethbridge",
+ "london",
+ "montreal",
+ "new-brunswick",
+ "okanagan",
+ "ottawa",
+ "peterborough",
+ "regina",
+ "saskatoon",
+ "toronto",
+ "winnipeg"
+ ],
"in": "query",
- "name": "id",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "4060"
+ "x-example": "world"
}
],
"produces": [
@@ -265697,7 +295123,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiveguys.storeResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -265706,11 +295132,37 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Global News section headlines",
+ "tags": [
+ "Global News"
+ ]
+ }
+ },
+ "/globalnews/news": {
+ "get": {
+ "description": "Returns fresh Global News (globalnews.ca) top stories from its public RSS feed.",
+ "operationId": "globalnews-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
"429": {
"description": "Too Many Requests",
@@ -265730,35 +295182,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Five Guys restaurant by its locator path",
+ "summary": "Get Global News top stories",
"tags": [
- "FiveGuys"
+ "Global News"
]
}
},
- "/fiverr/gig/{username}/{slug}": {
+ "/globalnews/sections": {
"get": {
- "consumes": [
+ "description": "Returns the public Global News RSS section inventory used by the headlines endpoint, covering topical sections and every regional/city hub with its own feed.",
+ "operationId": "globalnews-sections",
+ "produces": [
"application/json"
],
- "description": "Returns a normalized Fiverr gig detail page: title, description, category, pricing packages (basic/standard/premium tiers with price and delivery time), rating, review count, orders in queue, tags, gallery images, and a seller summary (level, rating, response time, languages). Public data sourced from Fiverr's own server-rendered gig pages via a real browser-rendering backend. Seller level uses the same values on the search, seller and gig endpoints: level_one_seller, level_two_seller, top_rated_seller, or new_seller.",
- "operationId": "fiverr-gig",
- "parameters": [
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
{
- "description": "Fiverr seller username, e.g. from a search result's seller_username field",
- "in": "path",
- "name": "username",
- "required": true,
- "type": "string",
- "x-example": "inshape_studio"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Global News RSS sections",
+ "tags": [
+ "Global News"
+ ]
+ }
+ },
+ "/globeandmail/article": {
+ "get": {
+ "description": "Returns one public Globe and Mail article's metadata and full body paragraphs from a canonical article URL. The Globe and Mail runs a metered paywall on most staff-bylined stories; those return a 403 permission error rather than a truncated or fabricated body -- see the endpoint markdown for the exact detection method.",
+ "operationId": "globeandmail-article",
+ "parameters": [
{
- "description": "Fiverr gig URL slug, the trailing path segment after the username in a gig URL",
- "in": "path",
- "name": "slug",
+ "description": "Canonical Globe and Mail article URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "do-modern-minimalist-logo-design-for-your-business"
+ "x-example": "https://www.theglobeandmail.com/canada/article-example-story/"
}
],
"produces": [
@@ -265768,7 +295235,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiverr.gigResponseDoc"
+ "$ref": "#/definitions/globeandmail.articleResponseDoc"
}
},
"400": {
@@ -265777,14 +295244,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "403": {
+ "description": "Forbidden",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -265801,34 +295274,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fiverr gig detail",
+ "summary": "Get a Globe and Mail article's content",
"tags": [
- "Fiverr"
+ "GlobeAndMail"
]
}
},
- "/fiverr/search": {
+ "/globeandmail/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Fiverr's public gig listings by free-text keyword, returning normalized gig summaries (title, seller username, seller level, rating, review count, starting price, category, thumbnail image). Public data sourced from Fiverr's own server-rendered search pages via a real browser-rendering backend. Seller level uses the same values on the search, seller and gig endpoints: level_one_seller, level_two_seller, top_rated_seller, or new_seller.",
- "operationId": "fiverr-search",
+ "description": "Returns one Globe and Mail reporter's public profile: name, job title, location, biography, headshot, contact/social links, and their recent articles from a canonical author URL.",
+ "operationId": "globeandmail-author",
"parameters": [
{
- "description": "Free-text gig search keyword",
+ "description": "Canonical Globe and Mail author URL",
"in": "query",
- "name": "q",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "logo design"
- },
- {
- "description": "1-based result page. Defaults to 1.",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 2
+ "x-example": "https://www.theglobeandmail.com/authors/example-reporter/"
}
],
"produces": [
@@ -265838,7 +295301,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiverr.searchResponseDoc"
+ "$ref": "#/definitions/globeandmail.authorResponseDoc"
}
},
"400": {
@@ -265847,8 +295310,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -265865,27 +295334,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Fiverr gigs",
+ "summary": "Get a Globe and Mail reporter profile",
"tags": [
- "Fiverr"
+ "GlobeAndMail"
]
}
},
- "/fiverr/seller/{username}": {
+ "/globeandmail/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a normalized Fiverr seller profile: display name, one-liner title, description, country, seller level, verification status, hourly rate, spoken languages, join date, and the seller's gig ids. Public data sourced from Fiverr's own server-rendered seller profile pages via a real browser-rendering backend. Seller level uses the same values on the search, seller and gig endpoints: level_one_seller, level_two_seller, top_rated_seller, or new_seller.",
- "operationId": "fiverr-seller",
+ "description": "Returns the current public feed for one Globe and Mail section: each story's title, canonical URL, summary, author, publication time, and lead image. Section must be one of the slugs returned by /globeandmail/sections: `canada`, `world`, `business`, `investing`, `personal-finance`, `politics`, `opinion`, `culture`, `sports`, `life`, `real-estate`, `drive`.",
+ "operationId": "globeandmail-headlines",
"parameters": [
{
- "description": "Fiverr seller username, e.g. from a search result's seller_username field",
- "in": "path",
- "name": "username",
+ "description": "Globe and Mail section slug from /globeandmail/sections",
+ "enum": [
+ "canada",
+ "world",
+ "business",
+ "investing",
+ "personal-finance",
+ "politics",
+ "opinion",
+ "culture",
+ "sports",
+ "life",
+ "real-estate",
+ "drive"
+ ],
+ "in": "query",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "inshape_studio"
+ "x-example": "canada"
}
],
"produces": [
@@ -265895,7 +295375,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fiverr.sellerResponseDoc"
+ "$ref": "#/definitions/globeandmail.headlinesResponseDoc"
}
},
"400": {
@@ -265910,8 +295390,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -265928,37 +295408,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fiverr seller profile",
+ "summary": "Get the latest stories in a Globe and Mail section",
"tags": [
- "Fiverr"
+ "GlobeAndMail"
]
}
},
- "/flashscore/calendar": {
+ "/globeandmail/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns public tournament calendar entries, dates, winners when available, and competition paths for the current season.",
- "operationId": "flashscore-calendar",
- "parameters": [
- {
- "description": "Calendar category from flashscore-calendar-categories",
- "enum": [
- "tennis-atp",
- "tennis-wta",
- "golf-pga",
- "golf-dp-world",
- "badminton-bwf",
- "motorsport-f1"
- ],
- "in": "query",
- "name": "category",
- "required": true,
- "type": "string",
- "x-example": "tennis-atp"
- }
- ],
+ "description": "Returns The Globe and Mail's current public top-stories feed: each story's title, canonical URL, summary, author, publication time, and lead image.",
+ "operationId": "globeandmail-news",
"produces": [
"application/json"
],
@@ -265966,17 +295425,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.calendarResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/globeandmail.newsResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -265993,19 +295446,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore season calendar",
+ "summary": "Get the latest Globe and Mail stories",
"tags": [
- "Flashscore"
+ "GlobeAndMail"
]
}
},
- "/flashscore/calendar-categories": {
+ "/globeandmail/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Lists the current ATP, WTA, golf, badminton, and Formula 1 calendar pages.",
- "operationId": "flashscore-calendar-categories",
+ "description": "Lists every Globe and Mail section accepted by /globeandmail/headlines, with its slug, display name, and landing-page URL. This is the full public, RSS-backed section taxonomy from the site's primary navigation.",
+ "operationId": "globeandmail-sections",
"produces": [
"application/json"
],
@@ -266013,7 +295463,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.calendarCategoriesResponseDoc"
+ "$ref": "#/definitions/globeandmail.sectionsResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -266028,73 +295484,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore season calendar categories",
+ "summary": "List Globe and Mail sections",
"tags": [
- "Flashscore"
+ "GlobeAndMail"
]
}
},
- "/flashscore/competitions": {
+ "/gmanews/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Discovers competitions present in a selected sport's score feed, including the provider competition id, label, region, canonical path, and event count. This is the active feed-date inventory, not an archive of inactive or historical seasons.",
- "operationId": "flashscore-competitions",
+ "description": "Returns public GMA News Online article metadata and body paragraphs from a canonical article URL. GMA News articles are free to read; no content is paywalled.",
+ "operationId": "gmanews-article",
"parameters": [
{
- "description": "Sport key",
- "enum": [
- "football",
- "tennis",
- "basketball",
- "hockey",
- "golf",
- "formula-1",
- "baseball",
- "snooker",
- "american-football",
- "aussie-rules",
- "badminton",
- "bandy",
- "beach-soccer",
- "beach-volleyball",
- "boxing",
- "cricket",
- "cycling",
- "darts",
- "esports",
- "field-hockey",
- "floorball",
- "futsal",
- "handball",
- "horse-racing",
- "kabaddi",
- "mma",
- "motorsport",
- "netball",
- "pesapallo",
- "rugby-league",
- "rugby-union",
- "table-tennis",
- "volleyball",
- "water-polo",
- "winter-sports"
- ],
+ "description": "Canonical GMA News article URL",
"in": "query",
- "name": "sport",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "football"
- },
- {
- "description": "Days from today; -7 to 7; defaults to 0",
- "in": "query",
- "maximum": 7,
- "minimum": -7,
- "name": "day_offset",
- "type": "integer",
- "x-example": 0
+ "x-example": "https://www.gmanetwork.com/news/topstories/world/1003638/at-un-netanyahu-defends-israel-as-delegates-storm-out/story/"
}
],
"produces": [
@@ -266104,7 +295511,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.competitionsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -266113,6 +295520,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -266125,27 +295538,70 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore competitions by sport and date",
+ "summary": "Get GMA News article content",
"tags": [
- "Flashscore"
+ "GMA News"
]
}
},
- "/flashscore/match-h2h": {
+ "/gmanews/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Flashscore's public head-to-head and recent-results feed for a match id copied from a Flashscore match URL. The raw upstream feed is preserved as text because its format is not JSON.",
- "operationId": "flashscore-match-h2h",
+ "description": "Returns fresh GMA News Online headlines from one public section RSS feed.",
+ "operationId": "gmanews-headlines",
"parameters": [
{
- "description": "Eight-character Flashscore match id",
+ "description": "GMA News section slug",
+ "enum": [
+ "topstories",
+ "topstories-metro",
+ "topstories-nation",
+ "topstories-opinion",
+ "topstories-regions",
+ "topstories-specialreports",
+ "topstories-ulatfilipino",
+ "topstories-world",
+ "money",
+ "money-companies",
+ "money-economy",
+ "money-motoring",
+ "money-personalfinance",
+ "sports",
+ "sports-basketball",
+ "sports-boxing",
+ "sports-football",
+ "sports-nba",
+ "sports-othersports",
+ "sports-volleyball",
+ "showbiz",
+ "showbiz-chikaminute",
+ "showbiz-showbizabroad",
+ "lifestyle",
+ "lifestyle-artandculture",
+ "lifestyle-familyandrelationships",
+ "lifestyle-food",
+ "lifestyle-healthandwellness",
+ "lifestyle-hobbiesandactivities",
+ "lifestyle-shoppingandfashion",
+ "lifestyle-travel",
+ "scitech",
+ "scitech-science",
+ "scitech-technology",
+ "pinoyabroad",
+ "pinoyabroad-dispatch",
+ "pinoyabroad-pinoyachievers",
+ "serbisyopubliko",
+ "serbisyopubliko-missingpersons",
+ "serbisyopubliko-transportation",
+ "serbisyopubliko-walangpasok",
+ "cbb",
+ "publicaffairs",
+ "weather"
+ ],
"in": "query",
- "name": "id",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "xtmHKGT0"
+ "x-example": "topstories"
}
],
"produces": [
@@ -266155,7 +295611,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.responseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -266164,12 +295620,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -266182,29 +295632,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore match head-to-head and recent results",
+ "summary": "Get GMA News section headlines",
"tags": [
- "Flashscore"
+ "GMA News"
]
}
},
- "/flashscore/match-highlights": {
+ "/gmanews/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns public highlight identifiers, metadata, and video links as the provider's raw delimited text. Video content is not fetched or included. Matches without available highlights return not found.",
- "operationId": "flashscore-match-highlights",
- "parameters": [
- {
- "description": "Eight-character Flashscore match id",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "j52jHsN8"
- }
- ],
+ "description": "Returns fresh GMA News Online top stories from the public top-stories RSS feed, with title, URL, summary, publish time, and thumbnail.",
+ "operationId": "gmanews-news",
"produces": [
"application/json"
],
@@ -266212,23 +295649,49 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.responseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get GMA News top stories",
+ "tags": [
+ "GMA News"
+ ]
+ }
+ },
+ "/gmanews/sections": {
+ "get": {
+ "description": "Returns the public GMA News Online section feeds accepted by the headlines endpoint.",
+ "operationId": "gmanews-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -266239,27 +295702,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore match highlights",
+ "summary": "Get GMA News sections",
"tags": [
- "Flashscore"
+ "GMA News"
]
}
},
- "/flashscore/match-info": {
+ "/goat/collection": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the public match information feed, including available venue, city, capacity, and broadcast listings, as the provider's raw delimited text.",
- "operationId": "flashscore-match-info",
+ "description": "Returns a page of one of GOAT's curated product collections (an editorial rail like \"top trending\" or \"new arrivals\"), the same call GOAT's own product-page \"you may also like\" rails and homepage modules use. Collection slugs are not enumerable by this API -- capture one from a live GOAT page. Credential-free public data.",
+ "operationId": "goat-collection",
"parameters": [
{
- "description": "Eight-character Flashscore match id",
+ "description": "GOAT collection slug, e.g. as seen in a curated rail on GOAT's own site",
"in": "query",
- "name": "id",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "xtmHKGT0"
+ "x-example": "top-trending-uk"
+ },
+ {
+ "description": "1-indexed result page, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Results per page, defaults to 12, maximum 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 12
+ },
+ {
+ "description": "Omit specific products by id, comma-separated",
+ "in": "query",
+ "name": "exclude_product_ids",
+ "type": "string",
+ "x-example": "1481726"
}
],
"produces": [
@@ -266269,7 +295753,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.responseDoc"
+ "$ref": "#/definitions/goat.collectionResponseDoc"
}
},
"400": {
@@ -266284,6 +295768,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -266296,29 +295786,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore match venue and broadcast information",
+ "summary": "Get a GOAT curated product collection",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/match-lineups": {
+ "/goat/countries": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the public starting-lineup and formation feed as the provider's raw delimited text. Matches without published lineups return not found.",
- "operationId": "flashscore-match-lineups",
- "parameters": [
- {
- "description": "Eight-character Flashscore match id",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "j52jHsN8"
- }
- ],
+ "description": "Returns every country GOAT recognizes -- the accepted values for GET /goat/product/{slug}'s country_code parameter -- with the currency and size unit (us, uk, eu) GOAT localizes to for each, plus whether GOAT ships and accepts returns there. Every country is listed, not only the shippable ones, because country_code localizes pricing and is accepted for all of them; filter on ships_to if you want only GOAT's shipping destinations. Credential-free public data.",
+ "operationId": "goat-countries",
"produces": [
"application/json"
],
@@ -266326,17 +295806,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.responseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/goat.countriesResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -266353,29 +295827,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore match lineups and formations",
+ "summary": "Get GOAT countries",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/match-news": {
+ "/goat/curated": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns article references from the public news layout associated with a match. Article content is not included; use the article id with flashscore-news-article for public metadata.",
- "operationId": "flashscore-match-news",
- "parameters": [
- {
- "description": "Eight-character Flashscore match id",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "xtmHKGT0"
- }
- ],
+ "description": "Returns the shelf of editorially curated links GOAT is currently promoting in its own search box: seasonal collections, specific product searches, and browse-all entry points. Every link is actionable against this API -- a collection link carries a value for GET /goat/collection, a search link carries a query for GET /goat/search. Credential-free public data.",
+ "operationId": "goat-curated",
"produces": [
"application/json"
],
@@ -266383,11 +295847,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.matchNewsResponseDoc"
+ "$ref": "#/definitions/goat.curatedResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -266404,52 +295868,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore match news references",
+ "summary": "Get GOAT curated links",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/match-standings": {
+ "/goat/listings/count": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the match-linked table feed. Select overall, home/away, form, over/under, half-time/full-time, live table, or top scorers; the raw provider format is preserved. Defaults to overall.",
- "operationId": "flashscore-match-standings",
- "parameters": [
- {
- "description": "Eight-character Flashscore match id",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "xtmHKGT0"
- },
- {
- "description": "Standings/table view; defaults to overall",
- "enum": [
- "overall",
- "home",
- "away",
- "form_overall",
- "overunder_overall",
- "form_home",
- "form_away",
- "top_scorers",
- "htft_overall",
- "htft_home",
- "htft_away",
- "live_overall",
- "overunder_home",
- "overunder_away"
- ],
- "in": "query",
- "name": "view",
- "type": "string",
- "x-example": "overall"
- }
- ],
+ "description": "Returns how many listings GOAT currently has live across its whole marketplace. This is the only way to see GOAT's true catalog size, because GET /goat/search's total_results saturates at 10000 on a broad query and cannot report a total above that ceiling. Credential-free public data.",
+ "operationId": "goat-listings-count",
"produces": [
"application/json"
],
@@ -266457,17 +295888,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.responseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/goat.listingsCountResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -266484,27 +295909,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore match league standings",
+ "summary": "Get GOAT live listing count",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/match-stats": {
+ "/goat/product/{slug}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Flashscore's public delimited statistics feed for a match id copied from a Flashscore match URL. The raw upstream feed is preserved as text because its format is not JSON.",
- "operationId": "flashscore-match-stats",
+ "description": "Returns a normalized GOAT product: identity/descriptive metadata (name, brand, SKU, colorway, designer, silhouette, taxonomy, materials, release date, retail price, editorial story, images, full size range, other products featured alongside it), plus live per-size/condition pricing and stock status (lowest price, GOAT Instant Ship price, last sold price, highest current buyer offer). Credential-free public data combining GOAT's own product-page payload with its live pricing and offers APIs.",
+ "operationId": "goat-product",
"parameters": [
{
- "description": "Eight-character Flashscore match id",
- "in": "query",
- "name": "id",
+ "description": "GOAT product URL slug, the path segment of a https://www.goat.com/sneakers/{slug} product page",
+ "in": "path",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "xtmHKGT0"
+ "x-example": "fragment-design-x-travis-scott-x-air-jordan-1-low-og-sp-sail-military-blue-dm7866-104"
+ },
+ {
+ "description": "ISO 3166-1 alpha-2 country code used to localize per-size pricing, defaults to US",
+ "in": "query",
+ "name": "country_code",
+ "type": "string",
+ "x-example": "US"
}
],
"produces": [
@@ -266514,7 +295946,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.responseDoc"
+ "$ref": "#/definitions/goat.productResponseDoc"
}
},
"400": {
@@ -266529,6 +295961,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -266541,26 +295979,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore match statistics",
+ "summary": "Get GOAT product detail",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/navigation": {
+ "/goat/product/{slug}/recommended": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the first-party category hierarchy and competition links for a public Flashscore sport or category page. Start with / or a sport path from flashscore-sports, then follow returned paths to enumerate region, country, category, and competition pages. Country/category lists reflect the current upstream navigation.",
- "operationId": "flashscore-navigation",
+ "description": "Returns the recommended/related products GOAT's own product page shows for a given product (other colorways, similar products) -- descriptive metadata only, no live pricing. Credential-free public data from GOAT's own product-page recommendation API.",
+ "operationId": "goat-product-recommended",
"parameters": [
{
- "description": "Relative Flashscore navigation path; defaults to /. Use a path returned by flashscore-sports or flashscore-navigation.",
- "in": "query",
- "name": "path",
+ "description": "GOAT product URL slug to find related products for",
+ "in": "path",
+ "name": "slug",
+ "required": true,
"type": "string",
- "x-example": "/basketball/usa/"
+ "x-example": "fragment-design-x-travis-scott-x-air-jordan-1-low-og-sp-sail-military-blue-dm7866-104"
+ },
+ {
+ "description": "Number of recommended products to return, defaults to 8, maximum 24",
+ "in": "query",
+ "name": "count",
+ "type": "integer",
+ "x-example": 8
}
],
"produces": [
@@ -266570,7 +296016,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.navigationResponseDoc"
+ "$ref": "#/definitions/goat.recommendedResponseDoc"
}
},
"400": {
@@ -266585,6 +296031,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -266597,77 +296049,239 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore sport, category, country, and competition navigation",
+ "summary": "Get GOAT recommended products for a product",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/news": {
+ "/goat/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns article previews from a public Flashscore News section. Use flashscore-news-categories to discover valid category keys. Page numbers follow the site's Show more pagination; article body text is not included.",
- "operationId": "flashscore-news",
+ "description": "Searches or browses GOAT's sneaker/streetwear/collectibles catalog by free-text query and/or facet filters (category, footwear sub-type, activity, color, gender, condition, brand, release year, price range, release-date range, silhouette, designer, in-stock/under-retail/instant-ship, curated collection), returning normalized product summaries (brand, silhouette, category, image, stock status, headline pricing across all sizes) plus the total matching count. Query is optional -- a facet filter alone browses the catalog the same way GOAT's own category/brand pages do. Credential-free public data from the same JSON API backing GOAT's own search page.",
+ "operationId": "goat-search",
"parameters": [
{
- "description": "News section key; defaults to all",
+ "description": "Free-text search query, e.g. a model name, colorway, or style code. Optional -- omit to browse by facet filters alone",
+ "in": "query",
+ "name": "query",
+ "type": "string",
+ "x-example": "jordan 1"
+ },
+ {
+ "description": "Only include products currently in stock",
+ "in": "query",
+ "name": "in_stock",
+ "type": "boolean",
+ "x-example": false
+ },
+ {
+ "description": "Filter by category, comma-separated for multiple values. See GET /goat/search/facets for the current live list",
"enum": [
- "all",
- "football",
- "uefa-nations-league",
- "tennis",
- "features",
- "premier-league",
- "nfl",
- "mlb",
- "nba",
- "nhl",
- "formula-1",
- "champions-league",
- "europa-league",
- "conference-league",
- "darts",
- "snooker",
- "golf",
- "road-cycling",
- "laliga",
- "bundesliga",
- "serie-a",
- "ligue-1",
- "badminton",
- "handball",
- "hockey",
+ "footwear",
+ "apparel",
+ "accessories",
+ "bags",
+ "collectibles",
+ "media",
+ "sports",
+ "jewelry",
+ "home",
+ "objects",
+ "other",
+ "art"
+ ],
+ "in": "query",
+ "name": "categories",
+ "type": "string",
+ "x-example": "footwear"
+ },
+ {
+ "description": "Filter by color, comma-separated for multiple values",
+ "enum": [
+ "black",
+ "white",
+ "blue",
+ "grey",
+ "red",
+ "green",
+ "pink",
+ "cream",
+ "brown",
+ "purple",
+ "multi-color",
+ "orange",
+ "tan",
+ "yellow",
+ "silver",
+ "gold",
+ "teal",
+ "copper"
+ ],
+ "in": "query",
+ "name": "colors",
+ "type": "string",
+ "x-example": "black"
+ },
+ {
+ "description": "Filter by gender, comma-separated for multiple values",
+ "enum": [
+ "men",
+ "youth",
+ "infant",
+ "women"
+ ],
+ "in": "query",
+ "name": "genders",
+ "type": "string",
+ "x-example": "men"
+ },
+ {
+ "description": "Filter by item condition, comma-separated for multiple values",
+ "enum": [
+ "new_no_defects",
+ "used",
+ "new_with_defects",
+ "goat_clean"
+ ],
+ "in": "query",
+ "name": "conditions",
+ "type": "string",
+ "x-example": "new_no_defects"
+ },
+ {
+ "description": "Filter by footwear sub-type, comma-separated for multiple values",
+ "enum": [
+ "sneakers",
+ "sandals",
+ "cleats",
+ "boots",
+ "slip-ons"
+ ],
+ "in": "query",
+ "name": "product_types",
+ "type": "string",
+ "x-example": "sneakers"
+ },
+ {
+ "description": "Filter by activity (sneakers only), comma-separated for multiple values",
+ "enum": [
+ "lifestyle",
"basketball",
- "cricket",
- "rugby-union",
- "athletics",
- "baseball",
- "fifa",
- "rugby-league",
- "motorsport",
- "aussie-rules",
- "flashscore-ratings",
- "american-sports",
- "african-football",
- "combat-sports",
- "winter-sports",
- "transfer-news"
+ "running",
+ "skateboarding"
+ ],
+ "in": "query",
+ "name": "activities",
+ "type": "string",
+ "x-example": "lifestyle"
+ },
+ {
+ "description": "Filter by one or more brand slugs, comma-separated, e.g. air-jordan,nike. GET /goat/search/facets lists GOAT's top brands; long-tail brands are valid here even when absent from that list",
+ "in": "query",
+ "name": "brands",
+ "type": "string",
+ "x-example": "air-jordan"
+ },
+ {
+ "description": "Filter by one or more silhouettes, comma-separated, matching GOAT's own naming (see a product's silhouette field)",
+ "in": "query",
+ "name": "silhouettes",
+ "type": "string",
+ "x-example": "Air Jordan 1"
+ },
+ {
+ "description": "Filter by one or more designers, comma-separated, matching GOAT's own naming (see a product's designer field)",
+ "in": "query",
+ "name": "designers",
+ "type": "string",
+ "x-example": "Peter Moore"
+ },
+ {
+ "description": "Filter by season year(s), comma-separated, e.g. 2025,2026. See GET /goat/search/facets for the current live list",
+ "in": "query",
+ "name": "years",
+ "type": "string",
+ "x-example": "2025"
+ },
+ {
+ "description": "Only include results priced at or above this amount, in cents",
+ "in": "query",
+ "name": "price_cents_min",
+ "type": "integer",
+ "x-example": 10000
+ },
+ {
+ "description": "Only include results priced at or below this amount, in cents",
+ "in": "query",
+ "name": "price_cents_max",
+ "type": "integer",
+ "x-example": 20000
+ },
+ {
+ "description": "Only include products currently trading below original retail price",
+ "in": "query",
+ "name": "under_retail",
+ "type": "boolean",
+ "x-example": false
+ },
+ {
+ "description": "Only include products with GOAT Instant Ship availability",
+ "in": "query",
+ "name": "instant_ship",
+ "type": "boolean",
+ "x-example": false
+ },
+ {
+ "description": "Result sort order, defaults to relevance",
+ "enum": [
+ "relevance",
+ "newest",
+ "price_asc",
+ "price_desc",
+ "discount"
],
"in": "query",
- "name": "category",
+ "name": "sort",
+ "type": "string",
+ "x-example": "relevance"
+ },
+ {
+ "description": "Scope results to a GOAT curated collection (see GET /goat/collection), combinable with query, every other filter, and sort",
+ "in": "query",
+ "name": "collection_slug",
+ "type": "string",
+ "x-example": "top-trending-uk"
+ },
+ {
+ "description": "Only include products released on or after this date (YYYY-MM-DD, UTC)",
+ "in": "query",
+ "name": "released_after",
+ "type": "string",
+ "x-example": "2025-08-01"
+ },
+ {
+ "description": "Only include products released on or before this date (YYYY-MM-DD, UTC)",
+ "in": "query",
+ "name": "released_before",
"type": "string",
- "x-example": "football"
+ "x-example": "2025-08-31"
},
{
- "description": "1-based page, 1 to 100; defaults to 1",
+ "description": "1-indexed result page, defaults to 1",
"in": "query",
- "maximum": 100,
- "minimum": 1,
"name": "page",
"type": "integer",
"x-example": 1
+ },
+ {
+ "description": "Results per page, defaults to 12, maximum 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 12
}
],
"produces": [
@@ -266677,7 +296291,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.newsListResponseDoc"
+ "$ref": "#/definitions/goat.searchResponseDoc"
}
},
"400": {
@@ -266686,8 +296300,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -266704,29 +296318,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore News listings by section",
+ "summary": "Search GOAT products",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/news-article": {
+ "/goat/search/facets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public article metadata and image credits for an article id from a Flashscore match news listing. Article body text is not included.",
- "operationId": "flashscore-news-article",
- "parameters": [
- {
- "description": "Eight-character Flashscore article id",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "GYDHQ2yR"
- }
- ],
+ "description": "Returns the accepted values for goat_search's filter parameters: categories, colors, genders, conditions, brands, and years are read live from GOAT's own search API so a value GOAT adds is discoverable without any client-side change, while product_types and activities are served from a maintained list because GOAT exposes no live facet for them. brands is GOAT's top brands ordered by product count, not the complete brand list -- when brands_truncated is true, brands beyond the ones listed exist and remain valid goat_search values. Credential-free public data.",
+ "operationId": "goat-search-facets",
"produces": [
"application/json"
],
@@ -266734,17 +296338,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.newsArticleResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/goat.facetsResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -266761,19 +296359,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore news article metadata",
+ "summary": "Get GOAT search facet values",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/news-categories": {
+ "/goat/searches/trending": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the exact currently usable public News section keys, names, and source paths from the live navigation inventory. Olympic Games is excluded because its linked page currently returns 404.",
- "operationId": "flashscore-news-categories",
+ "description": "Returns the search terms GOAT is currently surfacing as popular, in GOAT's own ranking order -- the same list its own search box shows. Each term is free text ready to pass to GET /goat/search's query parameter. Credential-free public data.",
+ "operationId": "goat-trending-searches",
"produces": [
"application/json"
],
@@ -266781,36 +296379,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.newsCategoriesResponseDoc"
+ "$ref": "#/definitions/goat.trendingSearchesResponseDoc"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Flashscore News categories",
- "tags": [
- "Flashscore"
- ]
- }
- },
- "/flashscore/ranking-categories": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Lists the live-verified public ranking categories, including tennis live rankings.",
- "operationId": "flashscore-ranking-categories",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
- "$ref": "#/definitions/flashscore.rankingCategoriesResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -266825,64 +296400,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore ranking categories",
+ "summary": "Get GOAT trending searches",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/rankings": {
+ "/goat/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the first-party ranking feed pages for a supported ranking category. When page one is full, page two is included to cover the remaining rows.",
- "operationId": "flashscore-rankings",
+ "description": "Returns GOAT's own search-box autocomplete for a partial query: matching curated collections and matching products. The collections carry the slug values accepted by GET /goat/collection and by GET /goat/search's collection_slug parameter, making this the way to discover collection slugs. Credential-free public data.",
+ "operationId": "goat-suggest",
"parameters": [
{
- "description": "Ranking category from flashscore-ranking-categories",
- "enum": [
- "fifa",
- "tennis-atp",
- "tennis-wta",
- "tennis-atp-race",
- "tennis-wta-race",
- "tennis-atp-doubles",
- "tennis-wta-doubles",
- "tennis-atp-doubles-race",
- "tennis-wta-doubles-race",
- "badminton-bwf-singles-men",
- "badminton-bwf-singles-women",
- "badminton-bwf-doubles-men",
- "badminton-bwf-doubles-women",
- "badminton-bwf-mixed-doubles",
- "golf-owgr",
- "golf-wwgr",
- "golf-pga-fedexcup",
- "golf-pga-money",
- "golf-dp-world-tour",
- "golf-lpga",
- "golf-asian-tour",
- "golf-japan-tour",
- "golf-sunshine-tour",
- "golf-korn-ferry",
- "golf-champions-tour",
- "darts-world-ranking",
- "snooker-world-ranking",
- "tennis-atp-live",
- "tennis-wta-live",
- "tennis-atp-race-live",
- "tennis-wta-race-live",
- "tennis-atp-doubles-live",
- "tennis-wta-doubles-live",
- "tennis-atp-doubles-race-live",
- "tennis-wta-doubles-race-live"
- ],
+ "description": "Partial search text to autocomplete",
"in": "query",
- "name": "category",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "tennis-atp"
+ "x-example": "jord"
+ },
+ {
+ "description": "Maximum curated collections to return. Defaults to 8, maximum 20. Does not affect the product count, which upstream fixes at 25",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 8
}
],
"produces": [
@@ -266892,7 +296437,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.rankingResponseDoc"
+ "$ref": "#/definitions/goat.suggestResponseDoc"
}
},
"400": {
@@ -266901,8 +296446,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -266919,73 +296464,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore rankings",
+ "summary": "Autocomplete a GOAT search",
"tags": [
- "Flashscore"
+ "GOAT"
]
}
},
- "/flashscore/scores": {
+ "/goldin/auctions": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the public score feed for one sport and date-picker day offset. The upstream field-delimited text is preserved because field semantics vary by sport. Use flashscore-sports to discover sport keys, flashscore-navigation for the current category/country/competition directory, and flashscore-competitions for competitions on the selected date.",
- "operationId": "flashscore-scores",
+ "description": "Goldin's complete auction event history, back to 2012 -- title, type, status, start/end window, and buyer's premium for every auction Goldin has run. Pass an auction's own id as auction_id to goldin-search to browse its lots.",
+ "operationId": "goldin-auctions",
"parameters": [
{
- "description": "Sport key",
+ "description": "asc (oldest first) or desc (newest first, default)",
"enum": [
- "football",
- "tennis",
- "basketball",
- "hockey",
- "golf",
- "formula-1",
- "baseball",
- "snooker",
- "american-football",
- "aussie-rules",
- "badminton",
- "bandy",
- "beach-soccer",
- "beach-volleyball",
- "boxing",
- "cricket",
- "cycling",
- "darts",
- "esports",
- "field-hockey",
- "floorball",
- "futsal",
- "handball",
- "horse-racing",
- "kabaddi",
- "mma",
- "motorsport",
- "netball",
- "pesapallo",
- "rugby-league",
- "rugby-union",
- "table-tennis",
- "volleyball",
- "water-polo",
- "winter-sports"
+ "asc",
+ "desc"
],
"in": "query",
- "name": "sport",
- "required": true,
- "type": "string",
- "x-example": "football"
- },
- {
- "description": "Days from today; -7 to 7; defaults to 0",
- "in": "query",
- "maximum": 7,
- "minimum": -7,
- "name": "day_offset",
- "type": "integer",
- "x-example": 0
+ "name": "order",
+ "type": "string"
}
],
"produces": [
@@ -266995,7 +296496,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.responseDoc"
+ "$ref": "#/definitions/goldin.auctionsResponseDoc"
}
},
"400": {
@@ -267004,6 +296505,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -267016,29 +296523,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore scores and fixtures by sport",
+ "summary": "List Goldin's full auction history",
"tags": [
- "Flashscore"
+ "Goldin"
]
}
},
- "/flashscore/search": {
+ "/goldin/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches the same public entity index used by Flashscore's search box. Results can include teams, players, and tournament templates across supported sports.",
- "operationId": "flashscore-search",
+ "description": "Goldin's full filter-enum surface for goldin-search, scoped to one lot pool -- category, sub_category, certification, item_type, and the live auction list (each with its own id, name, and current lot count), plus the sort enum valid for that pool. category/sub_category/certification/item_type are read live from Goldin's own current inventory, not a fixed taxonomy, so results can shift over time. The Auction pool (default) and the Fixed Price \"Private Sales\" marketplace are disjoint item pools with different certification/item_type values and different sort enums -- pass the same auction_type here and to goldin-search.",
+ "operationId": "goldin-categories",
"parameters": [
{
- "description": "Search phrase (2 to 80 characters)",
+ "description": "Auction (default) or Fixed_Price -- selects which lot pool to discover enums for",
+ "enum": [
+ "Auction",
+ "Fixed_Price"
+ ],
"in": "query",
- "maxLength": 80,
- "minLength": 2,
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "Champions League"
+ "name": "auction_type",
+ "type": "string"
}
],
"produces": [
@@ -267048,7 +296555,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.searchResponseDoc"
+ "$ref": "#/definitions/goldin.categoriesResponseDoc"
}
},
"400": {
@@ -267057,78 +296564,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Flashscore search",
- "tags": [
- "Flashscore"
- ]
- }
- },
- "/flashscore/sports": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns every sport category visible in Flashscore's score navigation, with sport id, caller key, page path, and current event/competition counts. Counts are a live snapshot and may be zero when the sport has no fixtures in the current feed window.",
- "operationId": "flashscore-sports",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/flashscore.sportsResponseDoc"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Flashscore sports and live category counts",
- "tags": [
- "Flashscore"
- ]
- }
- },
- "/flashscore/top-search": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the ten-or-fewer public team, player, and tournament results shown in Flashscore's search overlay. This is a changing curated list, not a complete entity directory.",
- "operationId": "flashscore-top-search",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/flashscore.topSearchResponseDoc"
- }
- },
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -267139,36 +296576,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore top search entities",
+ "summary": "List Goldin's search filter enums",
"tags": [
- "Flashscore"
+ "Goldin"
]
}
},
- "/flashscore/tournament-events": {
+ "/goldin/listing": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of the public results or fixtures feed for any supported sport and competition path. Page 1 is embedded in the public tournament page; later pages follow its Show more feed sequence. Sum event_count from successive pages until total_events is reached.",
- "operationId": "flashscore-tournament-events",
+ "description": "One lot's full public detail: title, description, current bid/starting price, auction window and status, grading info, images, and prev/next lot pointers within the same auction. slug is the meta_slug from a goldin-search result (or the trailing path segment of the lot's own goldin.co/item/{slug} page URL).",
+ "operationId": "goldin-listing",
"parameters": [
{
- "description": "Relative Flashscore competition season results or fixtures path",
+ "description": "The lot's meta_slug, from a goldin-search result",
"in": "query",
- "name": "path",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "/football/england/premier-league-2026-2027/fixtures/"
- },
- {
- "description": "1-based page; defaults to 1",
- "in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "2002-03-upper-deck-mj-tribute-michael-jordan-milestones-m2-michael-jor1lwys"
}
],
"produces": [
@@ -267178,7 +296606,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.tournamentEventsResponseDoc"
+ "$ref": "#/definitions/goldin.listingResponseDoc"
}
},
"400": {
@@ -267193,6 +296621,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -267205,27 +296639,99 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore tournament season results or fixtures",
+ "summary": "Get one Goldin lot's full public detail",
"tags": [
- "Flashscore"
+ "Goldin"
]
}
},
- "/flashscore/tournament-seasons": {
+ "/goldin/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Lists the seasons and winners from a public competition archive page. Discover archive paths through flashscore-navigation or flashscore-competitions. Each returned results_path and fixtures_path can be passed to flashscore-tournament-events to retrieve season event feeds.",
- "operationId": "flashscore-tournament-seasons",
+ "description": "Browse or search Goldin's current lot inventory by free-text keyword, category, sub_category, certification, item_type, and auction_id, in a caller-selected sort order. Every filter is optional and combines with AND semantics. All enum values come from goldin-categories -- pass the matching auction_type to both. The Auction pool (default) and the Fixed Price \"Private Sales\" marketplace are disjoint item pools with different certification/item_type values and different sort enums.",
+ "operationId": "goldin-search",
"parameters": [
{
- "description": "Relative Flashscore competition archive path ending in /archive/",
+ "description": "Auction (default) or Fixed_Price -- selects which lot pool to search",
+ "enum": [
+ "Auction",
+ "Fixed_Price"
+ ],
"in": "query",
- "name": "path",
- "required": true,
+ "name": "auction_type",
+ "type": "string"
+ },
+ {
+ "description": "Free-text search across lot titles/descriptions",
+ "in": "query",
+ "name": "keyword",
+ "type": "string"
+ },
+ {
+ "description": "One value from goldin-categories' category field",
+ "in": "query",
+ "name": "category",
"type": "string",
- "x-example": "/football/europe/champions-league/archive/"
+ "x-example": "Sport"
+ },
+ {
+ "description": "One value from goldin-categories' sub_category field",
+ "in": "query",
+ "name": "sub_category",
+ "type": "string",
+ "x-example": "Baseball"
+ },
+ {
+ "description": "One value from goldin-categories' certification field",
+ "in": "query",
+ "name": "certification",
+ "type": "string",
+ "x-example": "PSA"
+ },
+ {
+ "description": "One value from goldin-categories' item_type field",
+ "in": "query",
+ "name": "item_type",
+ "type": "string",
+ "x-example": "Single Cards"
+ },
+ {
+ "description": "One auction id from goldin-categories' auctions field -- only meaningful for auction_type Auction",
+ "in": "query",
+ "name": "auction_id",
+ "type": "string"
+ },
+ {
+ "description": "One value from goldin-categories' own sort field for the same auction_type. Auction pool: Featured (default), Ending_Soonest, Highest_Bids, Lowest_Bids, Most_Bids, Least_Bids, Most_Recent_Bids, Highest_Lot_Number, Recently_Started. Fixed Price pool: Recently_Created (default), Highest_Bids, Lowest_Bids",
+ "enum": [
+ "Featured",
+ "Ending_Soonest",
+ "Highest_Bids",
+ "Lowest_Bids",
+ "Most_Bids",
+ "Least_Bids",
+ "Most_Recent_Bids",
+ "Highest_Lot_Number",
+ "Recently_Started",
+ "Recently_Created"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "1-based page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, defaults to 24, capped at 96",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -267235,7 +296741,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.tournamentSeasonsResponseDoc"
+ "$ref": "#/definitions/goldin.searchResponseDoc"
}
},
"400": {
@@ -267244,8 +296750,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -267262,49 +296768,31 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore tournament archive seasons",
+ "summary": "Search Goldin's lot auction inventory",
"tags": [
- "Flashscore"
+ "Goldin"
]
}
},
- "/flashscore/tournament-standings": {
+ "/goldin/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a competition-level table feed independent of a match id. Discover the stage-specific view values with flashscore-tournament-standings-views. Data remains in Flashscore's raw delimited format.",
- "operationId": "flashscore-tournament-standings",
+ "description": "Goldin's own search-suggestions/autocomplete for a partial keyword, matching the site's own search box typeahead. keyword is optional -- when omitted, returns Goldin's current trending/popular searches instead of an error.",
+ "operationId": "goldin-suggest",
"parameters": [
{
- "description": "Relative Flashscore competition path from flashscore-navigation or flashscore-competitions; omit /standings/",
+ "description": "Partial search query, e.g. \\",
"in": "query",
- "name": "path",
- "required": true,
- "type": "string",
- "x-example": "/football/england/premier-league/"
+ "name": "keyword",
+ "type": "string"
},
{
- "description": "View returned by flashscore-tournament-standings-views; defaults to overall",
- "enum": [
- "overall",
- "home",
- "away",
- "form_overall",
- "form_home",
- "form_away",
- "overunder_overall",
- "overunder_home",
- "overunder_away",
- "htft_overall",
- "htft_home",
- "htft_away",
- "top_scorers"
- ],
+ "description": "Max suggestions to return, defaults to 8, capped at 20",
"in": "query",
- "name": "view",
- "type": "string",
- "x-example": "overall"
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -267314,7 +296802,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.tournamentStandingsResponseDoc"
+ "$ref": "#/definitions/goldin.suggestResponseDoc"
}
},
"400": {
@@ -267323,8 +296811,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -267341,27 +296829,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore competition standings table",
+ "summary": "Get Goldin's search suggestions for a keyword",
"tags": [
- "Flashscore"
+ "Goldin"
]
}
},
- "/flashscore/tournament-standings-views": {
+ "/goodreads/author/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the table views currently exposed on a public Flashscore competition standings page. The view set varies by competition and stage; use a returned value with flashscore-tournament-standings.",
- "operationId": "flashscore-tournament-standings-views",
+ "description": "Returns a normalized Goodreads author profile: bio, birth/death dates, website, genres, photo, and aggregate rating stats. Credential-free public Goodreads data.",
+ "operationId": "goodreads-author",
"parameters": [
{
- "description": "Relative Flashscore competition path from flashscore-navigation or flashscore-competitions; omit /standings/",
- "in": "query",
- "name": "path",
+ "description": "Goodreads author id",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "/football/england/premier-league/"
+ "x-example": "153394"
}
],
"produces": [
@@ -267371,7 +296859,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/flashscore.tournamentStandingsViewsResponseDoc"
+ "$ref": "#/definitions/goodreads.authorResponseDoc"
}
},
"400": {
@@ -267386,6 +296874,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -267398,60 +296892,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Flashscore competition standings view discovery",
+ "summary": "Get a Goodreads author",
"tags": [
- "Flashscore"
+ "Goodreads"
]
}
},
- "/foodpanda/restaurant": {
+ "/goodreads/author/{id}/books": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one foodpanda restaurant's detail by code: name, address, coordinates, budget tier, rating and review count, cuisines, minimum order amount, minimum delivery fee, delivery/pickup availability, timezone, and a hero image. Supplying latitude and longitude only affects the (optional) computed fields the upstream itself returns for that coordinate; it does not filter or reject the lookup.",
- "operationId": "foodpanda-restaurant",
+ "description": "Returns an author's paginated works list (title, author, average rating, ratings count). Credential-free public Goodreads data.",
+ "operationId": "goodreads-author-books",
"parameters": [
{
- "description": "Delivery Hero market the restaurant belongs to. Defaults to sg.",
- "enum": [
- "sg",
- "pk",
- "bd",
- "hk",
- "my",
- "ph",
- "la",
- "kh",
- "tw",
- "mm"
- ],
- "in": "query",
- "name": "market",
- "type": "string",
- "x-example": "sg"
- },
- {
- "description": "Restaurant code, from /foodpanda/search's code field",
- "in": "query",
- "name": "code",
+ "description": "Goodreads author id",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "dxpr"
- },
- {
- "description": "Caller latitude, optional",
- "in": "query",
- "name": "latitude",
- "type": "number",
- "x-example": 1.3521
+ "x-example": "153394"
},
{
- "description": "Caller longitude, optional",
+ "description": "1-based page number, default 1",
"in": "query",
- "name": "longitude",
- "type": "number",
- "x-example": 103.8198
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -267461,7 +296928,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foodpanda.restaurantResponseDoc"
+ "$ref": "#/definitions/goodreads.authorBooksResponseDoc"
}
},
"400": {
@@ -267476,6 +296943,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -267488,46 +296961,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one foodpanda restaurant's detail",
+ "summary": "List a Goodreads author's books",
"tags": [
- "Foodpanda"
+ "Goodreads"
]
}
},
- "/foodpanda/restaurant/menu": {
+ "/goodreads/author/{id}/quotes": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one restaurant's full menu grouped into categories, plus opening hours, price range, cuisines served, and aggregate rating. Every item carries a title, description, image, sold-out flag, and price -- original_price plus discounted_price when the item is currently discounted.",
- "operationId": "foodpanda-restaurant-menu",
+ "description": "Returns an author's paginated attributed-quotes list (quote text, tags, like count, and — when the quote is credited to a specific book — that book's title, id, and work id). Credential-free public Goodreads data.",
+ "operationId": "goodreads-author-quotes",
"parameters": [
{
- "description": "Delivery Hero market the restaurant belongs to. Defaults to sg.",
- "enum": [
- "sg",
- "pk",
- "bd",
- "hk",
- "my",
- "ph",
- "la",
- "kh",
- "tw",
- "mm"
- ],
- "in": "query",
- "name": "market",
+ "description": "Goodreads author id",
+ "in": "path",
+ "name": "id",
+ "required": true,
"type": "string",
- "x-example": "sg"
+ "x-example": "153394"
},
{
- "description": "Restaurant code, from /foodpanda/search's code field",
+ "description": "1-based page number, default 1",
"in": "query",
- "name": "code",
- "required": true,
- "type": "string",
- "x-example": "dxpr"
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -267537,7 +296997,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foodpanda.menuResponseDoc"
+ "$ref": "#/definitions/goodreads.authorQuotesResponseDoc"
}
},
"400": {
@@ -267552,6 +297012,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -267564,46 +297030,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one foodpanda restaurant's menu with prices",
+ "summary": "List a Goodreads author's attributed quotes",
"tags": [
- "Foodpanda"
+ "Goodreads"
]
}
},
- "/foodpanda/restaurant/reviews": {
+ "/goodreads/book/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a sample of real customer reviews for one restaurant -- author name, publish date, review text, and a 1-5 rating. This is the curated sample the restaurant's own storefront page embeds for search-engine rich results, not the full review corpus a logged-in customer would see in the app; the number returned scales with the restaurant's popularity rather than being a fixed cap, and can be empty for a restaurant with few or no reviews.",
- "operationId": "foodpanda-restaurant-reviews",
+ "description": "Returns a normalized Goodreads book: description, authors, series, genres, format, pages, publisher, publication date, ISBNs, and aggregate rating with the full 1-5 star distribution. Credential-free public Goodreads data (goodreads.com), parsed from the book page's embedded GraphQL cache.",
+ "operationId": "goodreads-book",
"parameters": [
{
- "description": "Delivery Hero market the restaurant belongs to. Defaults to sg.",
- "enum": [
- "sg",
- "pk",
- "bd",
- "hk",
- "my",
- "ph",
- "la",
- "kh",
- "tw",
- "mm"
- ],
- "in": "query",
- "name": "market",
- "type": "string",
- "x-example": "sg"
- },
- {
- "description": "Restaurant code, from /foodpanda/search's code field",
- "in": "query",
- "name": "code",
+ "description": "Goodreads book id",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "dxpr"
+ "x-example": "2767052"
}
],
"produces": [
@@ -267613,7 +297060,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foodpanda.reviewsResponseDoc"
+ "$ref": "#/definitions/goodreads.bookResponseDoc"
}
},
"400": {
@@ -267628,6 +297075,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -267640,75 +297093,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a sample of one foodpanda restaurant's customer reviews",
+ "summary": "Get a Goodreads book",
"tags": [
- "Foodpanda"
+ "Goodreads"
]
}
},
- "/foodpanda/search": {
+ "/goodreads/book/{id}/editions": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns restaurants delivering to a latitude/longitude in a foodpanda market, optionally filtered by a numeric cuisine id (call foodpanda_search_cuisines for the live, location-scoped set of valid ids). Each restaurant carries its code (the value the restaurant and menu endpoints take), name, address, coordinates, budget tier, rating, cuisines, minimum order amount and delivery fee, delivery/pickup availability, and a hero image. A location with no coverage returns an empty list rather than an error.",
- "operationId": "foodpanda-search",
+ "description": "Returns a work's paginated edition list (per-edition book id, format, page count, publication date, publisher, ISBN/ISBN13/ASIN, language, and rating) — every other translation, printing, and format of the requested book id. Goodreads keys editions by a separate \"work id\", not the book id in the path, so this makes one extra internal request to resolve it; requests against a book with no editions data return an upstream error.",
+ "operationId": "goodreads-book-editions",
"parameters": [
{
- "description": "Delivery Hero market. Defaults to sg.",
- "enum": [
- "sg",
- "pk",
- "bd",
- "hk",
- "my",
- "ph",
- "la",
- "kh",
- "tw",
- "mm"
- ],
- "in": "query",
- "name": "market",
- "type": "string",
- "x-example": "sg"
- },
- {
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 1.3521
- },
- {
- "description": "Search center longitude",
- "in": "query",
- "name": "longitude",
+ "description": "Goodreads book id",
+ "in": "path",
+ "name": "id",
"required": true,
- "type": "number",
- "x-example": 103.8198
- },
- {
- "description": "Numeric cuisine id to filter by. Cuisine ids are location- and market-scoped, not a fixed global enum -- call foodpanda_search_cuisines with the same market/latitude/longitude to get the valid id set for this location",
- "in": "query",
- "name": "cuisine_id",
- "type": "integer",
- "x-example": 44
- },
- {
- "description": "Restaurants to return, clamped to 50 (default 20)",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 20
+ "type": "string",
+ "x-example": "2767052"
},
{
- "description": "Result offset for pagination (default 0)",
+ "description": "1-based page number, default 1",
"in": "query",
- "name": "offset",
- "type": "integer",
- "x-example": 0
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -267718,7 +297129,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foodpanda.searchResponseDoc"
+ "$ref": "#/definitions/goodreads.editionsResponseDoc"
}
},
"400": {
@@ -267727,80 +297138,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Search foodpanda restaurants near a location",
- "tags": [
- "Foodpanda"
- ]
- }
- },
- "/foodpanda/search/cuisines": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns foodpanda's own live cuisine catalog for a latitude/longitude in a foodpanda market -- the exact facet list (with real, live restaurant counts) the site's own search page cuisine filter sidebar is populated from. Every entry's id is a valid value for /foodpanda/search's cuisine_id parameter. Cuisine ids are location- and market-scoped, not a fixed global enum: the same coordinate in a different neighborhood, or a different market, can return a different id/count set entirely, so call this endpoint with the same market/latitude/longitude you intend to search rather than reusing ids captured elsewhere.",
- "operationId": "foodpanda-search-cuisines",
- "parameters": [
- {
- "description": "Delivery Hero market. Defaults to sg.",
- "enum": [
- "sg",
- "pk",
- "bd",
- "hk",
- "my",
- "ph",
- "la",
- "kh",
- "tw",
- "mm"
- ],
- "in": "query",
- "name": "market",
- "type": "string",
- "x-example": "sg"
- },
- {
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 1.3521
- },
- {
- "description": "Search center longitude",
- "in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": 103.8198
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/foodpanda.cuisinesResponseDoc"
- }
},
- "400": {
- "description": "Bad Request",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -267817,24 +297162,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get foodpanda's live cuisine filter catalog for a location",
+ "summary": "List a Goodreads book's editions",
"tags": [
- "Foodpanda"
+ "Goodreads"
]
}
},
- "/forbes/article": {
+ "/goodreads/book/{id}/reviews": {
"get": {
- "description": "Returns public Forbes article metadata and body content from Forbes's same-host content JSON endpoint. The response preserves rich body HTML, normalized paragraphs, headings, and public embed metadata. Accepts dated /sites//... and /councils//... URLs; it does not bypass login, subscription, or bot challenges.",
- "operationId": "forbes-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a book's featured reviews (reviewer, rating, text, date, like/comment counts, spoiler flag), sorted by like count. Credential-free public Goodreads data.",
+ "operationId": "goodreads-book-reviews",
"parameters": [
{
- "description": "Canonical HTTPS Forbes article URL",
- "in": "query",
- "name": "url",
+ "description": "Goodreads book id",
+ "in": "path",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "https://www.forbes.com/sites/example/2026/09/21/example-story/"
+ "x-example": "2767052"
+ },
+ {
+ "description": "Max reviews, default 10, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -267844,7 +297198,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/forbes.articleResponseDoc"
+ "$ref": "#/definitions/goodreads.reviewsResponseDoc"
}
},
"400": {
@@ -267859,12 +297213,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -267883,30 +297231,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Forbes article content",
+ "summary": "Get a Goodreads book's featured reviews",
"tags": [
- "Forbes"
+ "Goodreads"
]
}
},
- "/forbes/author": {
+ "/goodreads/genre/{name}": {
"get": {
- "description": "Returns one Forbes contributor or staff author's public byline page: name, display type, bio, headshot, and their most recent bylined articles. This is the journalist byline page at forbes.com/sites//, distinct from forbes-person, which is a billionaire net-worth profile from Forbes's rich-list data.",
- "operationId": "forbes-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns up to 50 books on a Goodreads genre/shelf tag page (e.g. fantasy, romance, science-fiction), Goodreads' credential-free per-tag \"top books\" view: title, author, average rating, ratings count, publication year, and how many times the book was shelved under this specific tag. Goodreads' genre/shelf taxonomy is an open, user-generated folksonomy of thousands of tags, not a small fixed list, so there is no directory endpoint — pass any known tag slug, e.g. from a book's genres[] field or a value seen on goodreads.com. There is no pagination beyond the first 50.",
+ "operationId": "goodreads-genre",
"parameters": [
{
- "description": "Forbes contributor slug, e.g. alisondurkee",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "alisondurkee"
- },
- {
- "description": "Canonical forbes.com/sites// URL, as an alternative to slug",
- "in": "query",
- "name": "url",
+ "description": "Goodreads genre/shelf tag",
+ "in": "path",
+ "name": "name",
+ "required": true,
"type": "string",
- "x-example": "https://www.forbes.com/sites/alisondurkee/"
+ "x-example": "fantasy"
}
],
"produces": [
@@ -267916,7 +297261,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/forbes.authorResponseDoc"
+ "$ref": "#/definitions/goodreads.genreResponseDoc"
}
},
"400": {
@@ -267931,12 +297276,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -267955,36 +297294,32 @@
"ApiKeyAuth": []
}
],
- "summary": "Forbes contributor/staff author profile",
+ "summary": "Get a Goodreads genre shelf",
"tags": [
- "Forbes"
+ "Goodreads"
]
}
},
- "/forbes/billionaires": {
+ "/goodreads/list/{id}": {
"get": {
- "description": "Returns a paginated Forbes billionaires list from the public Forbes JSON feed. The default field set includes ranking, worth, person identity, citizenship, category, industry, organization, image, and biography fields.",
- "operationId": "forbes-billionaires",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a Goodreads Listopia list (ranked book list) by id, paginated. Credential-free public Goodreads data; page 1 of well-known lists may be served from a faster live source, with the public list page itself as fallback for every other case.",
+ "operationId": "goodreads-list",
"parameters": [
{
- "default": 2026,
- "description": "Forbes list year",
- "in": "query",
- "name": "year",
- "type": "integer"
- },
- {
- "default": 50,
- "description": "Page size (1-100)",
- "in": "query",
- "name": "limit",
- "type": "integer"
+ "description": "Goodreads list id",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "1"
},
{
- "default": 0,
- "description": "Zero-based offset",
+ "description": "1-based page number, default 1",
"in": "query",
- "name": "start",
+ "name": "page",
"type": "integer"
}
],
@@ -267995,7 +297330,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/forbes.billionairesResponseDoc"
+ "$ref": "#/definitions/goodreads.listResponseDoc"
}
},
"400": {
@@ -268010,12 +297345,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -268034,70 +297363,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Forbes billionaires list",
+ "summary": "Get a Goodreads Listopia list",
"tags": [
- "Forbes"
+ "Goodreads"
]
}
},
- "/forbes/categories": {
+ "/goodreads/lists": {
"get": {
- "description": "Lists the current public Forbes navigation taxonomy, including business, money, innovation, leadership, lifestyle, Forbes Vetted, Advisor, Health, and their public subsections. Article promos, account surfaces, games, video-only links, and external hosts are excluded.",
- "operationId": "forbes-categories",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/forbes.categoriesResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Forbes public editorial sections",
- "tags": [
- "Forbes"
- ]
- }
- },
- "/forbes/headlines": {
- "get": {
- "description": "Returns current Forbes article-card metadata from a public Forbes navigation path. Use /forbes/categories to discover paths.",
- "operationId": "forbes-headlines",
- "parameters": [
- {
- "description": "Forbes navigation path from /forbes/categories",
- "in": "query",
- "name": "section",
- "required": true,
- "type": "string",
- "x-example": "/business/"
- }
- ],
+ "description": "Returns a catalog of well-known Goodreads Listopia lists (id, name, category). Goodreads has no directory or search endpoint for the tens of thousands of user-created lists, so this is served from a live popular-lists source when available, falling back to a curated, hand-picked catalog otherwise. Pass a returned id to GET /goodreads/list/{id} for that list's ranked book contents. Category enum: `general`, `genre`, `era`, `young_adult`, `children`, `holiday`.",
+ "operationId": "goodreads-lists",
"produces": [
"application/json"
],
@@ -268105,19 +297383,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/forbes.headlinesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/goodreads.listsResponseDoc"
}
},
"429": {
@@ -268131,12 +297397,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -268144,24 +297404,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Forbes section headlines",
+ "summary": "List curated Goodreads Listopia lists",
"tags": [
- "Forbes"
+ "Goodreads"
]
}
},
- "/forbes/person": {
+ "/goodreads/search": {
"get": {
- "description": "Returns public Forbes JSON profile data plus the profile page's biography, real-time net-worth display, wealth history, personal facts, editor update, and list-appearance metadata.",
- "operationId": "forbes-person",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Goodreads books by title/author. Credential-free public Goodreads data via the autocomplete endpoint (book results only).",
+ "operationId": "goodreads-search",
"parameters": [
{
- "description": "Forbes person URI",
+ "description": "Search query",
"in": "query",
- "name": "uri",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "vladimir-lisin"
+ "x-example": "hunger games"
+ },
+ {
+ "description": "Max results, default 10, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -268171,7 +297440,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/forbes.personResponseDoc"
+ "$ref": "#/definitions/goodreads.searchResponseDoc"
}
},
"400": {
@@ -268180,18 +297449,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -268210,24 +297467,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Forbes person profile",
+ "summary": "Search Goodreads books",
"tags": [
- "Forbes"
+ "Goodreads"
]
}
},
- "/foreignaffairs/article": {
+ "/goodrx/answer": {
"get": {
- "description": "Returns public article metadata and ordered body paragraphs from a canonical Foreign Affairs article URL. Incomplete, truncated, challenge, or contaminated upstream HTML is rejected as an upstream error.",
- "operationId": "foreignaffairs-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one GoodRx health question with its short answer, supporting paragraphs, the source article, the drug it is about, more questions about that drug, related articles, and related medications. Use a slug from /goodrx/answers.",
+ "operationId": "goodrx-answer",
"parameters": [
{
- "description": "Canonical Foreign Affairs article URL",
+ "description": "Question slug from /goodrx/answers",
"in": "query",
- "name": "url",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "https://www.foreignaffairs.com/united-states/americas-attrition-trap"
+ "x-example": "is-viagra-available-over-the-counter"
}
],
"produces": [
@@ -268237,7 +297497,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignaffairs.articleResponseDoc"
+ "$ref": "#/definitions/goodrx.answerResponseDoc"
}
},
"400": {
@@ -268270,32 +297530,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Extract a Foreign Affairs article",
+ "summary": "Get a GoodRx health question and answer",
"tags": [
- "ForeignAffairs"
+ "GoodRx"
]
}
},
- "/foreignaffairs/author": {
+ "/goodrx/answers": {
"get": {
- "description": "Returns one Foreign Affairs contributor's public profile: name, bio, and the recent articles listed on their contributor page. Foreign Affairs does not paginate this page; it shows a fixed recent-article list.",
- "operationId": "foreignaffairs-author",
- "parameters": [
- {
- "description": "Author slug, e.g. robert-kagan",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "robert-kagan"
- },
- {
- "description": "Canonical foreignaffairs.com/authors/ URL; alternative to slug",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.foreignaffairs.com/authors/robert-kagan"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns GoodRx's medication and health questions: the index's top questions and every question with its slug, grouped by drug where GoodRx's index groups it (questions GoodRx lists only in its sitemap carry just their slug). Use a slug with /goodrx/answer.",
+ "operationId": "goodrx-answers",
"produces": [
"application/json"
],
@@ -268303,19 +297550,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignaffairs.authorResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/goodrx.answersResponseDoc"
}
},
"429": {
@@ -268336,16 +297571,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Foreign Affairs author profile",
+ "summary": "List GoodRx health questions",
"tags": [
- "ForeignAffairs"
+ "GoodRx"
]
}
},
- "/foreignaffairs/headlines": {
+ "/goodrx/brands": {
"get": {
- "description": "Returns fresh Foreign Affairs headlines from the site's public, site-wide RSS feed. Article pages and account state are not required.",
- "operationId": "foreignaffairs-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the brand-name medications GoodRx features on its brand-name drugs page, with price-page slugs.",
+ "operationId": "goodrx-brands",
"produces": [
"application/json"
],
@@ -268353,7 +297591,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignaffairs.headlinesResponseDoc"
+ "$ref": "#/definitions/goodrx.brandsResponseDoc"
}
},
"429": {
@@ -268374,24 +297612,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Foreign Affairs site-wide headlines",
+ "summary": "List GoodRx featured brand-name drugs",
"tags": [
- "ForeignAffairs"
+ "GoodRx"
]
}
},
- "/foreignaffairs/topic": {
+ "/goodrx/class": {
"get": {
- "description": "Returns the newest items from one Foreign Affairs topic RSS feed. Discover accepted values with foreignaffairs-topics; unknown topic values are rejected before upstream I/O.",
- "operationId": "foreignaffairs-topic",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the drugs GoodRx lists for one drug class, with each drug's lowest displayed price and summary. Use a slug from /goodrx/classes.",
+ "operationId": "goodrx-class",
"parameters": [
{
- "description": "Foreign Affairs topic slug from foreignaffairs-topics",
+ "description": "Class slug from /goodrx/classes",
"in": "query",
- "name": "topic",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "economics"
+ "x-example": "statins"
}
],
"produces": [
@@ -268401,7 +297642,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignaffairs.topicResponseDoc"
+ "$ref": "#/definitions/goodrx.classResponseDoc"
}
},
"400": {
@@ -268410,6 +297651,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -268428,52 +297675,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Foreign Affairs topic feed",
+ "summary": "List drugs in a GoodRx drug class",
"tags": [
- "ForeignAffairs"
+ "GoodRx"
]
}
},
- "/foreignaffairs/topics": {
+ "/goodrx/classes": {
"get": {
- "description": "Returns the complete research-backed directory of topic values accepted by foreignaffairs-topic, including each topic's public RSS feed URL.",
- "operationId": "foreignaffairs-topics",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/foreignaffairs.topicsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "List Foreign Affairs topic feeds",
- "tags": [
- "ForeignAffairs"
- ]
- }
- },
- "/foreignpolicy/article": {
- "get": {
- "description": "Returns a public Foreign Policy article's metadata and full body paragraphs from a canonical article URL. is_gated reports the site's own content-tier marker; the full body is always returned regardless, since Foreign Policy serves it in full to anonymous requests either way.",
- "operationId": "foreignpolicy-article",
- "parameters": [
- {
- "description": "Canonical foreignpolicy.com article URL",
- "in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://foreignpolicy.com/2026/04/15/china-ports-maritime-power/"
- }
- ],
+ "description": "Returns every drug class in GoodRx's class directory with slugs for /goodrx/class.",
+ "operationId": "goodrx-classes",
"produces": [
"application/json"
],
@@ -268481,19 +297695,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignpolicy.articleResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/goodrx.classesResponseDoc"
}
},
"429": {
@@ -268514,30 +297716,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Foreign Policy article content",
+ "summary": "List GoodRx drug classes",
"tags": [
- "ForeignPolicy"
+ "GoodRx"
]
}
},
- "/foreignpolicy/author": {
+ "/goodrx/comparison": {
"get": {
- "description": "Returns one Foreign Policy contributor's public profile: name, bio, and their recent articles. Further articles load behind a client-side control this endpoint does not follow, so this is the author page's initial recent-article list, not the contributor's full history.",
- "operationId": "foreignpolicy-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a GoodRx head-to-head drug comparison's key takeaways and the two drugs compared, with their price-page and information slugs. Use a slug from /goodrx/comparisons or /goodrx/drug-info alternatives.",
+ "operationId": "goodrx-comparison",
"parameters": [
{
- "description": "Author slug, e.g. anne-applebaum",
+ "description": "Comparison slug",
"in": "query",
"name": "slug",
+ "required": true,
"type": "string",
- "x-example": "anne-applebaum"
- },
- {
- "description": "Canonical foreignpolicy.com/author// URL; alternative to slug",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://foreignpolicy.com/author/anne-applebaum/"
+ "x-example": "lipitor-vs-zetia"
}
],
"produces": [
@@ -268547,7 +297746,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignpolicy.authorResponseDoc"
+ "$ref": "#/definitions/goodrx.comparisonResponseDoc"
}
},
"400": {
@@ -268580,16 +297779,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Foreign Policy author profile",
+ "summary": "Get a GoodRx drug comparison",
"tags": [
- "ForeignPolicy"
+ "GoodRx"
]
}
},
- "/foreignpolicy/headlines": {
+ "/goodrx/comparisons": {
"get": {
- "description": "Returns fresh headlines from Foreign Policy's public, site-wide RSS feed. There is no section parameter: use foreignpolicy-topic to scope to one category or tag.",
- "operationId": "foreignpolicy-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns GoodRx's head-to-head drug comparisons grouped by health topic, with slugs for /goodrx/comparison.",
+ "operationId": "goodrx-comparisons",
"produces": [
"application/json"
],
@@ -268597,7 +297799,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignpolicy.headlinesResponseDoc"
+ "$ref": "#/definitions/goodrx.comparisonsResponseDoc"
}
},
"429": {
@@ -268618,16 +297820,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Foreign Policy site-wide headlines",
+ "summary": "List GoodRx drug comparisons",
"tags": [
- "ForeignPolicy"
+ "GoodRx"
]
}
},
- "/foreignpolicy/live": {
+ "/goodrx/condition": {
"get": {
- "description": "Returns Foreign Policy's public FP Live conversation directory. The upstream renders the complete all-conversations list and applies year filtering in the browser.",
- "operationId": "foreignpolicy-live",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a health condition's GoodRx overview article as titled sections (definition, types, causes, symptoms, diagnosis, medications, treatments, prevention, references), with the condition's alternate name, authors, publish and modified dates, the medications-list URL, and related articles. Use a slug from /goodrx/conditions.",
+ "operationId": "goodrx-condition",
+ "parameters": [
+ {
+ "description": "Condition slug from /goodrx/conditions",
+ "in": "query",
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "acne"
+ }
+ ],
"produces": [
"application/json"
],
@@ -268635,7 +297850,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignpolicy.liveResponseDoc"
+ "$ref": "#/definitions/goodrx.conditionResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -268656,24 +297883,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List Foreign Policy Live conversations",
+ "summary": "Get a GoodRx health condition overview",
"tags": [
- "ForeignPolicy"
+ "GoodRx"
]
}
},
- "/foreignpolicy/live-detail": {
+ "/goodrx/condition-drugs": {
"get": {
- "description": "Returns one public FP Live conversation by the slug returned by foreignpolicy-live, including its description and any embedded video highlight metadata.",
- "operationId": "foreignpolicy-live-detail",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the medications GoodRx lists for one health condition, with each drug's lowest displayed price and summary. Use a slug from /goodrx/conditions whose has_medications is true.",
+ "operationId": "goodrx-condition-drugs",
"parameters": [
{
- "description": "Foreign Policy FP Live conversation slug",
+ "description": "Condition slug from /goodrx/conditions",
"in": "query",
- "name": "live",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "ama-ask-me-anything-ukraine"
+ "x-example": "acne"
}
],
"produces": [
@@ -268683,7 +297913,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignpolicy.liveDetailResponseDoc"
+ "$ref": "#/definitions/goodrx.conditionDrugsResponseDoc"
}
},
"400": {
@@ -268716,26 +297946,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Foreign Policy Live conversation",
+ "summary": "List GoodRx medications for a condition",
"tags": [
- "ForeignPolicy"
+ "GoodRx"
]
}
},
- "/foreignpolicy/project": {
+ "/goodrx/conditions": {
"get": {
- "description": "Returns a public Foreign Policy curated project hub and its current article cards. Use foreignpolicy-projects to discover live project slugs.",
- "operationId": "foreignpolicy-project",
- "parameters": [
- {
- "description": "Foreign Policy project slug",
- "in": "query",
- "name": "project",
- "required": true,
- "type": "string",
- "x-example": "asia"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns every health condition in GoodRx's conditions directory, with slugs and whether GoodRx publishes a medications list for /goodrx/condition-drugs.",
+ "operationId": "goodrx-conditions",
"produces": [
"application/json"
],
@@ -268743,19 +297966,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignpolicy.projectResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/goodrx.conditionsResponseDoc"
}
},
"429": {
@@ -268776,25 +297987,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Foreign Policy project hub",
+ "summary": "List GoodRx health conditions",
"tags": [
- "ForeignPolicy"
+ "GoodRx"
]
}
},
- "/foreignpolicy/projects": {
+ "/goodrx/drug-guide": {
"get": {
- "description": "Returns one page of Foreign Policy's live public project directory. Follow next_page until it is zero to enumerate the current project slug space, then pass a slug to foreignpolicy-project.",
- "operationId": "foreignpolicy-projects",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one dedicated GoodRx drug guide. side-effects: common and less common side effects with reported frequencies, serious and reported side effects, and the label source. dosage: coupon price per dosage and quantity for each dosage form, and typical dosing. interactions: interacting drugs grouped by severity (not_recommended, usually_not_recommended, increased_risk), with GoodRx slugs where linked. Includes reviewer, last-reviewed date, and related guides. Use pairs from /goodrx/drug-guides; a drug without that guide returns 404. Requests use US egress because GoodRx is US-only.",
+ "operationId": "goodrx-drug-guide",
"parameters": [
{
- "default": 1,
- "description": "1-based project-directory page, defaults to 1",
+ "description": "Drug slug from /goodrx/drug-guides",
"in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "torsemide"
+ },
+ {
+ "description": "Guide topic",
+ "enum": [
+ "side-effects",
+ "dosage",
+ "interactions"
+ ],
+ "in": "query",
+ "name": "topic",
+ "required": true,
+ "type": "string",
+ "x-example": "side-effects"
}
],
"produces": [
@@ -268804,7 +298030,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignpolicy.projectsResponseDoc"
+ "$ref": "#/definitions/goodrx.drugGuideResponseDoc"
}
},
"400": {
@@ -268813,6 +298039,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -268831,44 +298063,37 @@
"ApiKeyAuth": []
}
],
- "summary": "List Foreign Policy project hubs",
+ "summary": "Get a GoodRx drug guide",
"tags": [
- "ForeignPolicy"
+ "GoodRx"
]
}
},
- "/foreignpolicy/topic": {
+ "/goodrx/drug-guides": {
"get": {
- "description": "Returns one page of a public Foreign Policy category or tag archive (newest first). type selects the archive namespace and defaults to category; topic is the slug within it; page is 1-based.",
- "operationId": "foreignpolicy-topic",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns GoodRx's dedicated drug guide pages (side effects, dosage, and interactions) as drug slug and topic pairs with last-modified dates, optionally filtered by topic and by the first character of the drug slug. Use the pairs with /goodrx/drug-guide.",
+ "operationId": "goodrx-drug-guides",
"parameters": [
{
- "default": "category",
- "description": "Archive namespace, defaults to category",
+ "description": "Guide topic",
"enum": [
- "category",
- "tag"
+ "side-effects",
+ "dosage",
+ "interactions"
],
"in": "query",
- "name": "type",
+ "name": "topic",
"type": "string"
},
{
- "description": "Foreign Policy category or tag slug",
+ "description": "First character of the drug slug: a-z or 0-9",
"in": "query",
- "name": "topic",
- "required": true,
+ "name": "letter",
"type": "string",
- "x-example": "world-brief"
- },
- {
- "default": 1,
- "description": "1-based archive page, defaults to 1",
- "in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "x-example": "a"
}
],
"produces": [
@@ -268878,7 +298103,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foreignpolicy.topicResponseDoc"
+ "$ref": "#/definitions/goodrx.drugGuidesResponseDoc"
}
},
"400": {
@@ -268887,12 +298112,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -268911,24 +298130,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Foreign Policy category or tag archive",
+ "summary": "List GoodRx drug guides",
"tags": [
- "ForeignPolicy"
+ "GoodRx"
]
}
},
- "/fortune/article": {
+ "/goodrx/drug-info": {
"get": {
- "description": "Returns public Fortune article metadata and body paragraphs from a canonical article URL.",
- "operationId": "fortune-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a drug's GoodRx information page as titled sections (uses, side effects, pros and cons, pharmacist tips, risks and warnings, dosage, interactions, contraindications, alternatives, pill images, references, and common questions), plus authors, publish and review dates, FAQs, and comparison links to alternatives. With audience=pets it returns the drug's cat and dog page (veterinary uses, side effects, and dosing) for drugs listed by /goodrx/pet-medications; other drugs return 404. Requests use US egress because GoodRx is US-only.",
+ "operationId": "goodrx-drug-info",
"parameters": [
{
- "description": "Canonical Fortune article URL",
+ "description": "Drug slug from /goodrx/drugs (or /goodrx/pet-medications for audience=pets)",
"in": "query",
- "name": "url",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "https://fortune.com/2026/09/21/example/"
+ "x-example": "atorvastatin"
+ },
+ {
+ "default": "people",
+ "description": "people for the general page, pets for the cat and dog page",
+ "enum": [
+ "people",
+ "pets"
+ ],
+ "in": "query",
+ "name": "audience",
+ "type": "string"
}
],
"produces": [
@@ -268938,7 +298171,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/goodrx.drugInfoResponseDoc"
}
},
"400": {
@@ -268953,6 +298186,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -268965,37 +298204,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fortune article content",
+ "summary": "Get GoodRx drug information",
"tags": [
- "Fortune"
+ "GoodRx"
]
}
},
- "/fortune/author": {
+ "/goodrx/drug-options": {
"get": {
- "description": "Returns one Fortune author's public profile: name, bio, email, social accounts, and one page of their recent articles (30 fortune.com/2026-format article dates use \"Month D, YYYY\"; converted to YYYY-MM-DD here).",
- "operationId": "fortune-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns every brand and generic label, dosage form, strength, and quantity GoodRx prices for one drug, with GoodRx's default prescription. Use these values for /goodrx/drug-prices.",
+ "operationId": "goodrx-drug-options",
"parameters": [
{
- "description": "Author slug, e.g. sheryl-estrada",
+ "description": "Drug slug from /goodrx/drugs",
"in": "query",
"name": "slug",
+ "required": true,
"type": "string",
- "x-example": "sheryl-estrada"
- },
- {
- "description": "Canonical fortune.com/author// URL, optionally with a /page// suffix; alternative to slug",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://fortune.com/author/sheryl-estrada/page/2/"
- },
- {
- "default": 1,
- "description": "1-based page number; overrides any page number in url",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "x-example": "atorvastatin"
}
],
"produces": [
@@ -269005,7 +298234,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.fortuneAuthorResponseDoc"
+ "$ref": "#/definitions/goodrx.drugOptionsResponseDoc"
}
},
"400": {
@@ -269020,6 +298249,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -269032,86 +298267,83 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fortune author profile",
+ "summary": "List a GoodRx drug's prescription options",
"tags": [
- "Fortune"
+ "GoodRx"
]
}
},
- "/fortune/companies": {
+ "/goodrx/drug-prices": {
"get": {
- "description": "Returns companies from Fortune's public company directory (9,000+ companies as of 2026-09-23) with search, filtering, and pagination.",
- "operationId": "fortune-companies",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns GoodRx coupon, membership, and mail-order prices by pharmacy for one drug and prescription (brand/generic label, form, dosage, quantity), plus the drug summary, the priced configuration, the location prices were computed for, and every available label/form/dosage/quantity. Omit label/form/dosage/quantity for GoodRx's default prescription; values must come from /goodrx/drug-options. Pass latitude and longitude (optionally zip_code and state) to price at a US location; otherwise prices reflect a US location chosen by GoodRx. Requests use US egress because GoodRx is US-only.",
+ "operationId": "goodrx-drug-prices",
"parameters": [
{
- "description": "Case-insensitive company-name search",
- "in": "query",
- "name": "search",
- "type": "string",
- "x-example": "alphabet"
- },
- {
- "description": "Country/territory slug or title; call fortune-company-filters for the complete accepted set",
+ "description": "Drug slug from /goodrx/drugs, /goodrx/class, or /goodrx/condition-drugs",
"in": "query",
- "name": "country",
+ "name": "slug",
+ "required": true,
"type": "string",
- "x-example": "china"
+ "x-example": "atorvastatin"
},
{
- "description": "Exact industry title; call fortune-company-filters for the complete accepted set",
+ "description": "Brand or generic label slug from /goodrx/drug-options",
"in": "query",
- "name": "industry",
+ "name": "label",
"type": "string",
- "x-example": "Computer Software"
+ "x-example": "atorvastatin"
},
{
- "description": "Fortune ranking slug to filter companies that appear on it; call fortune-company-filters for the accepted set",
+ "description": "Form slug from /goodrx/drug-options",
"in": "query",
- "name": "ranking",
+ "name": "form",
"type": "string",
- "x-example": "fortune500"
+ "x-example": "tablet"
},
{
- "description": "Ranking year the ranking filter is evaluated against; defaults to the current year",
+ "description": "Dosage slug from /goodrx/drug-options",
"in": "query",
- "name": "year",
+ "name": "dosage",
"type": "string",
- "x-example": "2026"
+ "x-example": "20mg"
},
{
- "description": "Minimum revenue in $M",
+ "description": "Quantity (1-999999); /goodrx/drug-options lists GoodRx's standard quantities",
"in": "query",
- "name": "min_revenue",
+ "name": "quantity",
"type": "integer",
- "x-example": 1000
+ "x-example": 30
},
{
- "description": "Maximum revenue in $M",
+ "description": "Latitude of a US location to price at (requires longitude)",
"in": "query",
- "name": "max_revenue",
- "type": "integer",
- "x-example": 500000
+ "name": "latitude",
+ "type": "number",
+ "x-example": 40.7506
},
{
- "description": "Minimum employee count",
+ "description": "Longitude of a US location to price at (requires latitude)",
"in": "query",
- "name": "min_employees",
- "type": "integer",
- "x-example": 1000
+ "name": "longitude",
+ "type": "number",
+ "x-example": -73.9972
},
{
- "description": "Maximum employee count",
+ "description": "Five-digit ZIP code of that location",
"in": "query",
- "name": "max_employees",
- "type": "integer",
- "x-example": 500000
+ "name": "zip_code",
+ "type": "string",
+ "x-example": "10001"
},
{
- "default": 1,
- "description": "1-based page number; 30 companies per page",
+ "description": "Two-letter state code of that location",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "state",
+ "type": "string",
+ "x-example": "NY"
}
],
"produces": [
@@ -269121,7 +298353,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.fortuneCompaniesResponseDoc"
+ "$ref": "#/definitions/goodrx.drugPricesResponseDoc"
}
},
"400": {
@@ -269130,36 +298362,16 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Search the Fortune company directory",
- "tags": [
- "Fortune"
- ]
- }
- },
- "/fortune/companies/filters": {
- "get": {
- "description": "Returns the complete country, industry, and ranking filter inventory (exact values) and revenue/employee ranges accepted by fortune/companies.",
- "operationId": "fortune-company-filters",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
- "$ref": "#/definitions/publicnews.fortuneCompanyFiltersResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -269174,30 +298386,55 @@
"ApiKeyAuth": []
}
],
- "summary": "Discover Fortune company directory filters",
+ "summary": "Get GoodRx drug prices by pharmacy",
"tags": [
- "Fortune"
+ "GoodRx"
]
}
},
- "/fortune/company": {
+ "/goodrx/drugs": {
"get": {
- "description": "Returns one company's public Fortune profile: fact sheet (headquarters, CEO, ticker, revenues, employees, ...), the Fortune rankings it appears on, workplace data tables, earnings report links, and social accounts, recovered from the company's own fortune.com page.",
- "operationId": "fortune-company",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns every drug in one letter of GoodRx's A-Z drug directory, with the price-page slug and drug-information URL.",
+ "operationId": "goodrx-drugs",
"parameters": [
{
- "description": "Company slug, e.g. alphabet",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "alphabet"
- },
- {
- "description": "Canonical fortune.com/company// URL; alternative to slug",
+ "description": "Directory letter",
+ "enum": [
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z"
+ ],
"in": "query",
- "name": "url",
+ "name": "letter",
+ "required": true,
"type": "string",
- "x-example": "https://fortune.com/company/alphabet/"
+ "x-example": "a"
}
],
"produces": [
@@ -269207,7 +298444,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.fortuneCompanyResponseDoc"
+ "$ref": "#/definitions/goodrx.drugsResponseDoc"
}
},
"400": {
@@ -269216,8 +298453,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -269234,61 +298471,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Fortune company profile",
+ "summary": "List GoodRx drugs by letter",
"tags": [
- "Fortune"
+ "GoodRx"
]
}
},
- "/fortune/headlines": {
+ "/goodrx/health-article": {
"get": {
- "description": "Returns fresh headlines from one public Fortune section.",
- "operationId": "fortune-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one GoodRx Health article: headline, description, authors, medical reviewers, published and modified dates, category tag, key takeaways, the body as headed sections of paragraphs and lists, FAQs, references, and related medications. Requests use US egress because GoodRx is US-only.",
+ "operationId": "goodrx-health-article",
"parameters": [
{
- "description": "Fortune section slug",
- "enum": [
- "latest",
- "fortune-500",
- "finance",
- "tech",
- "leadership",
- "lifestyle",
- "economy",
- "newsletters",
- "success",
- "magazine",
- "real-estate",
- "investing",
- "asia",
- "politics",
- "artificial-intelligence",
- "workplace-culture",
- "personal-finance",
- "middle-east",
- "big-tech",
- "travel-and-leisure",
- "c-suite",
- "crypto",
- "health",
- "commentary",
- "retail",
- "mpw",
- "features",
- "conferences",
- "europe",
- "environment",
- "arts-and-entertainment",
- "cybersecurity",
- "global",
- "innovation",
- "news",
- "north-america"
- ],
+ "description": "Article path from /goodrx/health-articles (or a www.goodrx.com article URL)",
"in": "query",
- "name": "section",
+ "name": "path",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "well-being/sleep/cbd-for-sleep"
}
],
"produces": [
@@ -269298,7 +298501,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/goodrx.healthArticleResponseDoc"
}
},
"400": {
@@ -269307,36 +298510,16 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Fortune section headlines",
- "tags": [
- "Fortune"
- ]
- }
- },
- "/fortune/news": {
- "get": {
- "description": "Returns fresh Fortune stories from the public RSS feed.",
- "operationId": "fortune-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -269351,107 +298534,60 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fortune top stories",
+ "summary": "Get a GoodRx Health article",
"tags": [
- "Fortune"
+ "GoodRx"
]
}
},
- "/fortune/ranking": {
+ "/goodrx/health-articles": {
"get": {
- "description": "Returns rows from a selected Fortune ranking list and year -- the Fortune 500 franchise (including Fortune China 500) or one of Fortune's award/culture rankings. Search, filters, sorting, and pagination are applied against Fortune's public ranking data and validated against that list/year's filter inventory.",
- "operationId": "fortune-ranking",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one page of GoodRx Health articles in a section, optionally one topic, most recently modified first: each article's path, section, topic, URL, and last-modified date, with total and total pages. Use a path with /goodrx/health-article.",
+ "operationId": "goodrx-health-articles",
"parameters": [
{
- "default": "fortune500",
- "description": "Accepted values: fortune500, global500, fortune500-europe, southeast-asia-500, fortune-china-500, 100-fastest-growing-companies, 40-under-40, ai-innovators, aiq, americas-most-innovative-companies, asia-future, best-companies, best-companies-europe, best-companies-southeast-asia, best-large-workplaces-in-technology, best-large-workplaces-parents, best-medium-workplaces, best-medium-workplaces-in-technology, best-places-families, best-places-retire-affordably, best-small-workplaces, best-small-workplaces-aging-services-senior-housing-care, best-small-workplaces-bay-area, best-small-workplaces-biotechnology-pharmaceuticals, best-small-workplaces-chicago-area, best-small-workplaces-construction, best-small-workplaces-consulting-professional-services, best-small-workplaces-financial-services-insurance, best-small-workplaces-for-women, best-small-workplaces-health-care, best-small-workplaces-in-technology, best-small-workplaces-manufacturing-production, best-small-workplaces-millennials, best-small-workplaces-new-york, best-small-workplaces-parents, best-small-workplaces-real-estate, best-small-workplaces-retail, best-small-workplaces-technology, best-small-workplaces-texas, best-workplaces-advertising-marketing, best-workplaces-aging-services-at-home-care, best-workplaces-aging-services-senior-housing-care, best-workplaces-baby-boomers, best-workplaces-bay-area, best-workplaces-biotechnology-pharmaceuticals, best-workplaces-camaraderie, best-workplaces-chicago-area, best-workplaces-construction, best-workplaces-consulting-professional-services, best-workplaces-finance-insurance, best-workplaces-financial-services-insurance, best-workplaces-flexibility, best-workplaces-for-african-americans, best-workplaces-for-asian-americans, best-workplaces-for-diversity, best-workplaces-for-hispanics-and-latinos, best-workplaces-for-retirement, best-workplaces-for-women, best-workplaces-gen-x, best-workplaces-giving-back, best-workplaces-health-care, best-workplaces-manufacturing-production, best-workplaces-millennials, best-workplaces-new-york, best-workplaces-parents, best-workplaces-real-estate, best-workplaces-recent-college-graduates, best-workplaces-retail, best-workplaces-technology, best-workplaces-texas, businessperson-of-the-year, candidates-working-women-times-up, change-the-world, creator-25, crypto, cyber, europes-most-innovative-companies, fintech-innovators-asia, food-drink-women-innovators, fortunate50, future-50, global-best-companies, heroes-of-the-fortune-500, impact20, inner-city-100, international-20, lgbtq-leaders, mejores-companias-latinos-hispanos, modern-board-25, most-fantastical-comic-book-businesses, most-important-private-companies, most-powerful-people, most-powerful-rising-executives, most-powerful-women, most-powerful-women-asia, most-powerful-women-europe-middle-east-africa, most-powerful-women-international, nfty-50, the-ledger-40-under-40, unicorns, women-tech-leaders-europe, worlds-best-workplaces, worlds-greatest-leaders, worlds-most-admired-companies. Defaults to fortune500.",
- "in": "query",
- "name": "list",
- "type": "string"
- },
- {
- "description": "For fortune-china-500, accepted values are 2026, 2025, 2024, 2023; otherwise call fortune-ranking-years for this list's accepted years",
- "in": "query",
- "name": "year",
- "type": "string",
- "x-example": "2026"
- },
- {
- "description": "Case-insensitive company-name search; Fortune China 500 searches every displayed row column",
- "in": "query",
- "name": "search",
- "type": "string",
- "x-example": "amazon"
- },
- {
- "collectionFormat": "multi",
- "description": "Repeatable dynamic filter in field:value form; use company for fortune-china-500 or discover list-specific fields and values with fortune-ranking-filters",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "filter",
- "type": "array",
- "x-example": "profitable:yes"
- },
- {
- "description": "Convenience alias for the live sector filter",
- "in": "query",
- "name": "sector",
- "type": "string",
- "x-example": "Technology"
- },
- {
- "description": "Convenience alias for the live industry filter",
- "in": "query",
- "name": "industry",
- "type": "string",
- "x-example": "Internet Services and Retailing"
- },
- {
- "description": "Convenience alias for the live state filter",
- "in": "query",
- "name": "state",
- "type": "string",
- "x-example": "Washington"
- },
- {
- "description": "Convenience alias; accepts true/false or yes/no",
+ "description": "Article section",
+ "enum": [
+ "conditions",
+ "health-topic",
+ "well-being",
+ "pet-health",
+ "insurance",
+ "classes",
+ "drugs",
+ "healthcare-access",
+ "corporate",
+ "hcp",
+ "drug"
+ ],
"in": "query",
- "name": "profitable",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "true"
+ "x-example": "conditions"
},
{
- "description": "For fortune-china-500: Company, Rank, Rank of last year, Revenues ($M), Profits ($M); otherwise discover sortable fields with fortune-ranking-filters",
+ "description": "Topic slug from /goodrx/health-topics",
"in": "query",
- "name": "sort_by",
+ "name": "topic",
"type": "string",
- "x-example": "revenues"
- },
- {
- "default": "asc",
- "description": "Sort direction",
- "enum": [
- "asc",
- "desc"
- ],
- "in": "query",
- "name": "sort_order",
- "type": "string"
+ "x-example": "sleep"
},
{
- "default": 0,
- "description": "Zero-based result offset",
+ "default": 1,
+ "description": "Page number, starting at 1",
"in": "query",
- "name": "offset",
+ "name": "page",
"type": "integer"
},
{
- "default": 100,
- "description": "Number of rows to return; 0 uses the default 100, maximum 1000",
+ "default": 50,
+ "description": "Articles per page (1-200)",
"in": "query",
- "name": "limit",
+ "name": "page_size",
"type": "integer"
}
],
@@ -269462,7 +298598,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.fortuneRankingResponseDoc"
+ "$ref": "#/definitions/goodrx.healthArticlesResponseDoc"
}
},
"400": {
@@ -269471,6 +298607,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -269483,30 +298631,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Search a Fortune ranking",
+ "summary": "List GoodRx Health articles",
"tags": [
- "Fortune"
+ "GoodRx"
]
}
},
- "/fortune/ranking/filters": {
+ "/goodrx/health-topics": {
"get": {
- "description": "Returns the complete list/year-specific filter fields, exact options, and sortable columns from Fortune's public ranking source.",
- "operationId": "fortune-ranking-filters",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns every GoodRx Health article topic as section and topic pairs with article counts and last-modified dates, optionally for one section. Sections: conditions, health-topic, well-being, pet-health, insurance, classes, drugs, healthcare-access, corporate, hcp (clinician resources), and drug (articles about one drug; the topic is the drug slug). Use the pairs with /goodrx/health-articles.",
+ "operationId": "goodrx-health-topics",
"parameters": [
{
- "default": "fortune500",
- "description": "Accepted values: fortune500, global500, fortune500-europe, southeast-asia-500, fortune-china-500, 100-fastest-growing-companies, 40-under-40, ai-innovators, aiq, americas-most-innovative-companies, asia-future, best-companies, best-companies-europe, best-companies-southeast-asia, best-large-workplaces-in-technology, best-large-workplaces-parents, best-medium-workplaces, best-medium-workplaces-in-technology, best-places-families, best-places-retire-affordably, best-small-workplaces, best-small-workplaces-aging-services-senior-housing-care, best-small-workplaces-bay-area, best-small-workplaces-biotechnology-pharmaceuticals, best-small-workplaces-chicago-area, best-small-workplaces-construction, best-small-workplaces-consulting-professional-services, best-small-workplaces-financial-services-insurance, best-small-workplaces-for-women, best-small-workplaces-health-care, best-small-workplaces-in-technology, best-small-workplaces-manufacturing-production, best-small-workplaces-millennials, best-small-workplaces-new-york, best-small-workplaces-parents, best-small-workplaces-real-estate, best-small-workplaces-retail, best-small-workplaces-technology, best-small-workplaces-texas, best-workplaces-advertising-marketing, best-workplaces-aging-services-at-home-care, best-workplaces-aging-services-senior-housing-care, best-workplaces-baby-boomers, best-workplaces-bay-area, best-workplaces-biotechnology-pharmaceuticals, best-workplaces-camaraderie, best-workplaces-chicago-area, best-workplaces-construction, best-workplaces-consulting-professional-services, best-workplaces-finance-insurance, best-workplaces-financial-services-insurance, best-workplaces-flexibility, best-workplaces-for-african-americans, best-workplaces-for-asian-americans, best-workplaces-for-diversity, best-workplaces-for-hispanics-and-latinos, best-workplaces-for-retirement, best-workplaces-for-women, best-workplaces-gen-x, best-workplaces-giving-back, best-workplaces-health-care, best-workplaces-manufacturing-production, best-workplaces-millennials, best-workplaces-new-york, best-workplaces-parents, best-workplaces-real-estate, best-workplaces-recent-college-graduates, best-workplaces-retail, best-workplaces-technology, best-workplaces-texas, businessperson-of-the-year, candidates-working-women-times-up, change-the-world, creator-25, crypto, cyber, europes-most-innovative-companies, fintech-innovators-asia, food-drink-women-innovators, fortunate50, future-50, global-best-companies, heroes-of-the-fortune-500, impact20, inner-city-100, international-20, lgbtq-leaders, mejores-companias-latinos-hispanos, modern-board-25, most-fantastical-comic-book-businesses, most-important-private-companies, most-powerful-people, most-powerful-rising-executives, most-powerful-women, most-powerful-women-asia, most-powerful-women-europe-middle-east-africa, most-powerful-women-international, nfty-50, the-ledger-40-under-40, unicorns, women-tech-leaders-europe, worlds-best-workplaces, worlds-greatest-leaders, worlds-most-admired-companies. Defaults to fortune500.",
+ "description": "Article section",
+ "enum": [
+ "conditions",
+ "health-topic",
+ "well-being",
+ "pet-health",
+ "insurance",
+ "classes",
+ "drugs",
+ "healthcare-access",
+ "corporate",
+ "hcp",
+ "drug"
+ ],
"in": "query",
- "name": "list",
+ "name": "section",
"type": "string"
- },
- {
- "description": "For fortune-china-500, accepted values are 2026, 2025, 2024, 2023; omit for current year or call fortune-ranking-years",
- "in": "query",
- "name": "year",
- "type": "string",
- "x-example": "2026"
}
],
"produces": [
@@ -269516,7 +298672,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.fortuneRankingFiltersResponseDoc"
+ "$ref": "#/definitions/goodrx.healthTopicsResponseDoc"
}
},
"400": {
@@ -269525,6 +298681,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -269537,16 +298699,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Discover Fortune ranking filters",
+ "summary": "List GoodRx Health article topics",
"tags": [
- "Fortune"
+ "GoodRx"
]
}
},
- "/fortune/ranking/lists": {
+ "/goodrx/pet-medications": {
"get": {
- "description": "Returns every public ranking accepted by the other fortune/ranking endpoints -- the Fortune 500 franchise's regional/global variants (including Fortune China 500) plus Fortune's award and culture rankings. Fortune China 500 is parsed from its public server-rendered English list page.",
- "operationId": "fortune-ranking-lists",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the drugs that have a GoodRx cat and dog information page, with slugs for /goodrx/drug-info with audience=pets.",
+ "operationId": "goodrx-pet-medications",
"produces": [
"application/json"
],
@@ -269554,7 +298719,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.fortuneRankingListsResponseDoc"
+ "$ref": "#/definitions/goodrx.petMedicationsResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -269563,23 +298740,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fortune ranking lists",
+ "summary": "List GoodRx pet medications",
"tags": [
- "Fortune"
+ "GoodRx"
]
}
},
- "/fortune/ranking/years": {
+ "/google-jobs/job": {
"get": {
- "description": "Returns every year accepted by Fortune's public ranking source for a selected list, including the 2023-2026 Fortune China 500 editions.",
- "operationId": "fortune-ranking-years",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Google Careers posting by its numeric job id (the `id` field returned by search). Parsed from careers.google.com's server-rendered job detail page.",
+ "operationId": "google-jobs-job",
"parameters": [
{
- "default": "fortune500",
- "description": "Accepted values: fortune500, global500, fortune500-europe, southeast-asia-500, fortune-china-500, 100-fastest-growing-companies, 40-under-40, ai-innovators, aiq, americas-most-innovative-companies, asia-future, best-companies, best-companies-europe, best-companies-southeast-asia, best-large-workplaces-in-technology, best-large-workplaces-parents, best-medium-workplaces, best-medium-workplaces-in-technology, best-places-families, best-places-retire-affordably, best-small-workplaces, best-small-workplaces-aging-services-senior-housing-care, best-small-workplaces-bay-area, best-small-workplaces-biotechnology-pharmaceuticals, best-small-workplaces-chicago-area, best-small-workplaces-construction, best-small-workplaces-consulting-professional-services, best-small-workplaces-financial-services-insurance, best-small-workplaces-for-women, best-small-workplaces-health-care, best-small-workplaces-in-technology, best-small-workplaces-manufacturing-production, best-small-workplaces-millennials, best-small-workplaces-new-york, best-small-workplaces-parents, best-small-workplaces-real-estate, best-small-workplaces-retail, best-small-workplaces-technology, best-small-workplaces-texas, best-workplaces-advertising-marketing, best-workplaces-aging-services-at-home-care, best-workplaces-aging-services-senior-housing-care, best-workplaces-baby-boomers, best-workplaces-bay-area, best-workplaces-biotechnology-pharmaceuticals, best-workplaces-camaraderie, best-workplaces-chicago-area, best-workplaces-construction, best-workplaces-consulting-professional-services, best-workplaces-finance-insurance, best-workplaces-financial-services-insurance, best-workplaces-flexibility, best-workplaces-for-african-americans, best-workplaces-for-asian-americans, best-workplaces-for-diversity, best-workplaces-for-hispanics-and-latinos, best-workplaces-for-retirement, best-workplaces-for-women, best-workplaces-gen-x, best-workplaces-giving-back, best-workplaces-health-care, best-workplaces-manufacturing-production, best-workplaces-millennials, best-workplaces-new-york, best-workplaces-parents, best-workplaces-real-estate, best-workplaces-recent-college-graduates, best-workplaces-retail, best-workplaces-technology, best-workplaces-texas, businessperson-of-the-year, candidates-working-women-times-up, change-the-world, creator-25, crypto, cyber, europes-most-innovative-companies, fintech-innovators-asia, food-drink-women-innovators, fortunate50, future-50, global-best-companies, heroes-of-the-fortune-500, impact20, inner-city-100, international-20, lgbtq-leaders, mejores-companias-latinos-hispanos, modern-board-25, most-fantastical-comic-book-businesses, most-important-private-companies, most-powerful-people, most-powerful-rising-executives, most-powerful-women, most-powerful-women-asia, most-powerful-women-europe-middle-east-africa, most-powerful-women-international, nfty-50, the-ledger-40-under-40, unicorns, women-tech-leaders-europe, worlds-best-workplaces, worlds-greatest-leaders, worlds-most-admired-companies. Defaults to fortune500.",
+ "description": "Numeric Google job id",
"in": "query",
- "name": "list",
- "type": "string"
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "85207000467546822"
}
],
"produces": [
@@ -269589,7 +298770,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.fortuneRankingYearsResponseDoc"
+ "$ref": "#/definitions/googlejobs.jobResponseDoc"
}
},
"400": {
@@ -269598,6 +298779,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -269610,16 +298803,43 @@
"ApiKeyAuth": []
}
],
- "summary": "List Fortune ranking years",
+ "summary": "Google Jobs single posting",
"tags": [
- "Fortune"
+ "Google Jobs"
]
}
},
- "/fortune/sections": {
+ "/google-jobs/search": {
"get": {
- "description": "Returns the public Fortune editorial section inventory.",
- "operationId": "fortune-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Google's public careers site (careers.google.com) via its server-rendered search page's embedded job data. Each result includes the description, responsibilities, and qualifications inline. Page size is fixed by Google at 20 results.",
+ "operationId": "google-jobs-search",
+ "parameters": [
+ {
+ "description": "Search query",
+ "in": "query",
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "software engineer"
+ },
+ {
+ "description": "Location filter (free text)",
+ "in": "query",
+ "name": "location",
+ "type": "string",
+ "x-example": "Singapore"
+ },
+ {
+ "description": "Page number, 1-based",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ }
+ ],
"produces": [
"application/json"
],
@@ -269627,7 +298847,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/googlejobs.searchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -269636,19 +298874,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fortune sections",
+ "summary": "Google Jobs search",
"tags": [
- "Fortune"
+ "Google Jobs"
]
}
},
- "/fotmob/audio-matches": {
+ "/google/finance/analyst-articles/{quote}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns FotMob's current match-to-audio-language availability index. Match ids are open-ended and can be passed to /fotmob/match. The list is independent of a selected match date and may include matches outside the current fixtures feed.",
- "operationId": "fotmob-audio-matches",
+ "description": "Returns normalized analyst article results for a quote.",
+ "operationId": "google-finance-analyst-articles",
+ "parameters": [
+ {
+ "description": "Quote identifier such as AAPL:NASDAQ",
+ "in": "path",
+ "name": "quote",
+ "required": true,
+ "type": "string",
+ "x-example": "AAPL:NASDAQ"
+ }
+ ],
"produces": [
"application/json"
],
@@ -269656,7 +298904,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.articlesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -269671,31 +298937,33 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob matches with audio commentary",
+ "summary": "Google Finance analyst articles",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/fifa-ranking-periods": {
+ "/google/finance/chart/{quote}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns every ranking period currently offered by FotMob for the selected gender. Use a returned periodId with /fotmob/fifa-rankings.",
- "operationId": "fotmob-fifa-ranking-periods",
+ "description": "Returns normalized chart points for a quote and window.",
+ "operationId": "google-finance-chart",
"parameters": [
{
- "description": "Ranking gender",
- "enum": [
- "men",
- "women"
- ],
- "in": "query",
- "name": "gender",
+ "description": "Quote identifier such as AAPL:NASDAQ",
+ "in": "path",
+ "name": "quote",
"required": true,
"type": "string",
- "x-example": "men"
+ "x-example": "AAPL:NASDAQ"
+ },
+ {
+ "description": "Window: 1d, 5d, 1m, 6m, ytd, 1y, 5y, max",
+ "in": "query",
+ "name": "window",
+ "type": "string"
}
],
"produces": [
@@ -269705,7 +298973,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.fifaRankingPeriodsResponseDoc"
+ "$ref": "#/definitions/finance.chartResponseDoc"
}
},
"400": {
@@ -269714,6 +298982,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -269726,39 +299006,27 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob FIFA ranking period directory",
+ "summary": "Google Finance chart data",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/fifa-rankings": {
+ "/google/finance/classification/{quote}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns ranked national-team points and rank changes for one period. Discover valid periodId values for the selected gender from /fotmob/fifa-ranking-periods.",
- "operationId": "fotmob-fifa-rankings",
+ "description": "Returns normalized classification strings for a quote.",
+ "operationId": "google-finance-classification",
"parameters": [
{
- "description": "Ranking gender",
- "enum": [
- "men",
- "women"
- ],
- "in": "query",
- "name": "gender",
- "required": true,
- "type": "string",
- "x-example": "men"
- },
- {
- "description": "Period id returned for this gender by /fotmob/fifa-ranking-periods",
- "in": "query",
- "name": "period_id",
+ "description": "Quote identifier such as AAPL:NASDAQ",
+ "in": "path",
+ "name": "quote",
"required": true,
"type": "string",
- "x-example": "20260720"
+ "x-example": "AAPL:NASDAQ"
}
],
"produces": [
@@ -269768,7 +299036,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.fifaRankingsResponseDoc"
+ "$ref": "#/definitions/finance.classificationResponseDoc"
}
},
"400": {
@@ -269783,6 +299051,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -269795,27 +299069,27 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob FIFA national-team rankings",
+ "summary": "Google Finance classification data",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/latest-news": {
+ "/google/finance/company/{quote}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the global English latest-news feed. Items are article previews; the upstream response contains up to 20 items per offset. Use start_index increments of 20 to page without overlap.",
- "operationId": "fotmob-latest-news",
+ "description": "Returns normalized company information from Google Finance.",
+ "operationId": "google-finance-company",
"parameters": [
{
- "description": "Zero-based news offset; defaults to 0",
- "in": "query",
- "maximum": 10000,
- "minimum": 0,
- "name": "start_index",
- "type": "integer"
+ "description": "Quote identifier such as AAPL:NASDAQ",
+ "in": "path",
+ "name": "quote",
+ "required": true,
+ "type": "string",
+ "x-example": "AAPL:NASDAQ"
}
],
"produces": [
@@ -269825,7 +299099,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.newsListResponseDoc"
+ "$ref": "#/definitions/finance.companyResponseDoc"
}
},
"400": {
@@ -269840,6 +299114,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -269852,41 +299132,27 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob latest football news",
+ "summary": "Google Finance company data",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/league": {
+ "/google/finance/context": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns FotMob's public league page payload, including available tabs, overview, table, fixtures, statistics, transfers, and seasons where supplied by the league. Discover valid season values with /fotmob/seasons. shotmap=true includes the optional, larger overview shot-map payload.",
- "operationId": "fotmob-league",
+ "description": "Searches Google Finance for instruments matching a company name or ticker query and returns normalized results with ticker, exchange, name, price, currency, and change data. Use a returned ticker with quote, company, chart, or news endpoints.",
+ "operationId": "google-finance-context",
"parameters": [
{
- "description": "Numeric FotMob league id from /fotmob/leagues",
+ "description": "Search query",
"in": "query",
- "name": "league_id",
+ "name": "q",
"required": true,
- "type": "integer",
- "x-example": 47
- },
- {
- "description": "Optional season value from /fotmob/seasons for this league",
- "in": "query",
- "name": "season",
"type": "string",
- "x-example": "2025/2026"
- },
- {
- "default": false,
- "description": "Include the optional overview shot map; increases response size",
- "in": "query",
- "name": "shotmap",
- "type": "boolean"
+ "x-example": "apple"
}
],
"produces": [
@@ -269896,7 +299162,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.contextResponseDoc"
}
},
"400": {
@@ -269911,6 +299177,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -269923,19 +299195,29 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob league details and sections",
+ "summary": "Find Google Finance instruments by query",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/leagues": {
+ "/google/finance/financials/{quote}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns FotMob's full public league directory grouped into popular, international, and country collections. Use league ids with other FotMob endpoints.",
- "operationId": "fotmob-leagues",
+ "description": "Returns normalized annual and quarterly financial rows when Google Finance has statement data for the quote.",
+ "operationId": "google-finance-financials",
+ "parameters": [
+ {
+ "description": "Quote identifier such as AAPL:NASDAQ",
+ "in": "path",
+ "name": "quote",
+ "required": true,
+ "type": "string",
+ "x-example": "AAPL:NASDAQ"
+ }
+ ],
"produces": [
"application/json"
],
@@ -269943,7 +299225,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.financialsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -269958,27 +299258,33 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob competition directory",
+ "summary": "Google Finance financial statements",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/lineup-builder-players": {
+ "/google/finance/markets/categories/{category}/news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public metadata for 1 to 11 selected lineup players. Player ids are open-ended and can be discovered through /fotmob/search or /fotmob/lineup-builder-team. Unknown ids without complete public metadata return 404.",
- "operationId": "fotmob-lineup-builder-players",
+ "description": "Returns normalized news for a Google Finance category.",
+ "operationId": "google-finance-markets-category-news",
"parameters": [
{
- "description": "Comma-separated list of 1 to 11 numeric FotMob player ids",
- "in": "query",
- "name": "player_ids",
+ "description": "Google Finance category id",
+ "in": "path",
+ "name": "category",
"required": true,
"type": "string",
- "x-example": "961995,562727"
+ "x-example": "2"
+ },
+ {
+ "description": "Result offset",
+ "in": "query",
+ "name": "offset",
+ "type": "integer"
}
],
"produces": [
@@ -269988,7 +299294,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.categoryNewsResponseDoc"
}
},
"400": {
@@ -270003,6 +299309,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -270015,27 +299327,33 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob lineup builder player metadata",
+ "summary": "Google Finance category news",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/lineup-builder-team": {
+ "/google/finance/markets/categories/{category}/stocks": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the public lineup builder's prefilled formation, starting lineup, and squad for a team id. Discover open-ended team ids with /fotmob/search. Some teams legitimately have no squad list.",
- "operationId": "fotmob-lineup-builder-team",
+ "description": "Returns normalized instruments for a Google Finance category.",
+ "operationId": "google-finance-markets-category-stocks",
"parameters": [
{
- "description": "Numeric FotMob team id discoverable through /fotmob/search",
- "in": "query",
- "name": "team_id",
+ "description": "Google Finance category id",
+ "in": "path",
+ "name": "category",
"required": true,
"type": "string",
- "x-example": "9825"
+ "x-example": "2"
+ },
+ {
+ "description": "Result offset",
+ "in": "query",
+ "name": "offset",
+ "type": "integer"
}
],
"produces": [
@@ -270045,7 +299363,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.categoryStocksResponseDoc"
}
},
"400": {
@@ -270060,6 +299378,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -270072,29 +299396,19 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob lineup builder team data",
+ "summary": "Google Finance category stocks",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/match": {
+ "/google/finance/markets/earnings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns FotMob's public match-details payload, including available facts, events, statistics, lineups, shot map, momentum, table and head-to-head sections. The data field preserves the upstream JSON shape; individual sections may be absent for a match.",
- "operationId": "fotmob-match",
- "parameters": [
- {
- "description": "Numeric FotMob match id",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "5181825"
- }
- ],
+ "description": "Returns normalized earnings calendar instruments.",
+ "operationId": "google-finance-markets-earnings",
"produces": [
"application/json"
],
@@ -270102,17 +299416,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/finance.earningsResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270129,29 +299437,19 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob match details",
+ "summary": "Google Finance earnings calendar",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/match-media": {
+ "/google/finance/markets/featured": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the public highlight-video and media metadata for one match. The request uses FotMob's English United States variant; unavailable media is represented by null source fields.",
- "operationId": "fotmob-match-media",
- "parameters": [
- {
- "description": "Numeric FotMob match id, discoverable from /fotmob/matches or /fotmob/search",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "5795457"
- }
- ],
+ "description": "Returns normalized featured instruments.",
+ "operationId": "google-finance-markets-featured",
"produces": [
"application/json"
],
@@ -270159,17 +299457,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/finance.instrumentsResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270186,36 +299478,19 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob match videos and media metadata",
+ "summary": "Google Finance featured stocks",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/matches": {
+ "/google/finance/markets/headline": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns FotMob's public match payload for a calendar date and IANA timezone. The data field preserves the upstream JSON shape.",
- "operationId": "fotmob-matches",
- "parameters": [
- {
- "description": "Date in YYYYMMDD format",
- "in": "query",
- "name": "date",
- "required": true,
- "type": "string",
- "x-example": "20260925"
- },
- {
- "description": "IANA timezone; defaults to UTC",
- "in": "query",
- "name": "timezone",
- "type": "string",
- "x-example": "Asia/Shanghai"
- }
- ],
+ "description": "Returns the top Google Finance headline.",
+ "operationId": "google-finance-markets-headline",
"produces": [
"application/json"
],
@@ -270223,11 +299498,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.headlineResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270244,37 +299519,19 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob matches for a date",
+ "summary": "Google Finance top headline",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/news": {
+ "/google/finance/markets/indices": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of FotMob news items for one league. League ids are discoverable from /fotmob/leagues; start_index is a zero-based offset.",
- "operationId": "fotmob-news",
- "parameters": [
- {
- "description": "Numeric FotMob league id",
- "in": "query",
- "name": "league_id",
- "required": true,
- "type": "string",
- "x-example": "47"
- },
- {
- "description": "Zero-based news offset; defaults to 0",
- "in": "query",
- "maximum": 10000,
- "minimum": 0,
- "name": "start_index",
- "type": "integer"
- }
- ],
+ "description": "Returns normalized market index instruments.",
+ "operationId": "google-finance-markets-indices",
"produces": [
"application/json"
],
@@ -270282,17 +299539,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/finance.instrumentsResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270309,27 +299560,37 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob league news",
+ "summary": "Google Finance market indices",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/news-article": {
+ "/google/finance/markets/movers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the full article body for a FotMob-authored top-news story. Pass the complete id-and-slug value from the public /topnews/ URL. News previews from external publishers remain external and are not fetched.",
- "operationId": "fotmob-news-article",
+ "description": "Returns normalized market mover instruments.",
+ "operationId": "google-finance-markets-movers",
"parameters": [
{
- "description": "Complete FotMob top-news article id and slug from the public article URL",
+ "description": "Comma-separated numeric categories",
"in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "29776-fotmob-totw-premier-league-matchday-5s-best-xi"
+ "name": "categories",
+ "type": "string"
+ },
+ {
+ "description": "Result count",
+ "in": "query",
+ "name": "count",
+ "type": "integer"
+ },
+ {
+ "description": "Result offset",
+ "in": "query",
+ "name": "offset",
+ "type": "integer"
}
],
"produces": [
@@ -270339,7 +299600,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.marketMoversResponseDoc"
}
},
"400": {
@@ -270354,6 +299615,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -270366,34 +299633,31 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob full top-news article",
+ "summary": "Google Finance market movers",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/player": {
+ "/google/finance/markets/top": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a public FotMob player profile, including current team, injuries, recent matches, career history, trophies, market values, and the player-specific season identifiers needed for deeper statistics. Discover player ids through /fotmob/search. Market values are included by default.",
- "operationId": "fotmob-player",
+ "description": "Returns normalized top instruments for a Google Finance metric.",
+ "operationId": "google-finance-markets-top",
"parameters": [
{
- "description": "Numeric FotMob player id from fotmob/search",
+ "description": "Google Finance metric id",
"in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "961995"
+ "name": "metric",
+ "type": "integer"
},
{
- "default": true,
- "description": "Include market-value history; defaults to true",
+ "description": "Page number",
"in": "query",
- "name": "include_market_values",
- "type": "boolean"
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -270403,17 +299667,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/finance.topStocksResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270430,35 +299688,25 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob player profile",
+ "summary": "Google Finance top stocks by metric",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/player-match-stats": {
+ "/google/finance/markets/trending": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the public per-match stat rows for one player, including the available stat key, value, and translated label. Discover player ids through fotmob/search and match ids through fotmob/match or fotmob/player-matches.",
- "operationId": "fotmob-player-match-stats",
+ "description": "Returns normalized trending instruments.",
+ "operationId": "google-finance-markets-trending",
"parameters": [
{
- "description": "Numeric FotMob player id",
- "in": "query",
- "name": "player_id",
- "required": true,
- "type": "string",
- "x-example": "961995"
- },
- {
- "description": "Numeric FotMob match id",
+ "description": "Result limit",
"in": "query",
- "name": "match_id",
- "required": true,
- "type": "string",
- "x-example": "5795457"
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -270468,17 +299716,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/finance.instrumentsResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270495,50 +299737,33 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob player match stats",
+ "summary": "Google Finance trending stocks",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/player-matches": {
+ "/google/finance/news/{quote}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of player match history. The player's matchFilters and permitted league/team pairs are discovered from /fotmob/player. For another page, copy the numeric before timestamp from the upstream previous URL.",
- "operationId": "fotmob-player-matches",
+ "description": "Returns normalized news articles for a quote.",
+ "operationId": "google-finance-news",
"parameters": [
{
- "description": "Numeric FotMob player id from fotmob/search",
- "in": "query",
- "name": "player_id",
+ "description": "Quote identifier such as AAPL:NASDAQ",
+ "in": "path",
+ "name": "quote",
"required": true,
"type": "string",
- "x-example": "961995"
- },
- {
- "default": "all",
- "description": "all, or a numeric league id from fotmob/player matchFilters",
- "in": "query",
- "name": "league_id",
- "type": "string",
- "x-example": "47"
- },
- {
- "default": "all",
- "description": "all, or a numeric team id paired with league_id in fotmob/player matchFilters",
- "in": "query",
- "name": "team_id",
- "type": "string",
- "x-example": "9825"
+ "x-example": "AAPL:NASDAQ"
},
{
- "description": "Numeric before timestamp from the upstream previous URL; omit for the newest page",
+ "description": "Article limit",
"in": "query",
- "name": "before",
- "type": "string",
- "x-example": "1767902400"
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -270548,7 +299773,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.articlesResponseDoc"
}
},
"400": {
@@ -270563,6 +299788,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -270575,35 +299806,27 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob player match history",
+ "summary": "Google Finance quote news",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/player-stats": {
+ "/google/finance/quote/{quote}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns deep statistics, shot map, heatmap, and goalkeeper shot map for one player-specific season entry. Discover valid season_id values and hasDeepStats from /fotmob/player statSeasons; entry ids vary by player and season.",
- "operationId": "fotmob-player-stats",
+ "description": "Fetches the latest quote data for a provided stock symbol from Google Finance https://www.google.com/finance/quote/AAPL:NASDAQ?hl=en.",
+ "operationId": "google-finance-quote",
"parameters": [
{
- "description": "Numeric FotMob player id from fotmob/search",
- "in": "query",
- "name": "player_id",
- "required": true,
- "type": "string",
- "x-example": "961995"
- },
- {
- "description": "Player-specific entryId from fotmob/player statSeasons",
- "in": "query",
- "name": "season_id",
+ "description": "Stock symbol to fetch the latest quote for (e.g., AAPL:NASDAQ, BTC-USD)",
+ "in": "path",
+ "name": "quote",
"required": true,
"type": "string",
- "x-example": "0-1"
+ "x-example": "AAPL:NASDAQ"
}
],
"produces": [
@@ -270611,25 +299834,19 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Latest stock quote data",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.quoteResponseDoc"
}
},
"400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
+ "description": "Invalid input parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270640,29 +299857,27 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob player season statistics",
+ "summary": "Google Finance Quote API",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/search": {
+ "/google/finance/related/{quote}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public search suggestions for FotMob leagues, teams, players, and matches. term must contain 1 to 50 characters. Suggestions preserve the upstream JSON shape.",
- "operationId": "fotmob-search",
+ "description": "Returns normalized related instruments for a quote.",
+ "operationId": "google-finance-related",
"parameters": [
{
- "description": "Search phrase, 1 to 50 characters",
- "in": "query",
- "maxLength": 50,
- "minLength": 1,
- "name": "term",
+ "description": "Quote identifier such as AAPL:NASDAQ",
+ "in": "path",
+ "name": "quote",
"required": true,
"type": "string",
- "x-example": "Arsenal"
+ "x-example": "AAPL:NASDAQ"
}
],
"produces": [
@@ -270672,7 +299887,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.relatedResponseDoc"
}
},
"400": {
@@ -270681,6 +299896,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -270693,27 +299920,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search FotMob entities",
+ "summary": "Google Finance related instruments",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/seasons": {
+ "/google/finance/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the complete list of season values accepted by the FotMob league endpoint for one competition.",
- "operationId": "fotmob-seasons",
+ "description": "Fetches normalized search results for a provided keyword from Google Finance.",
+ "operationId": "google-finance-search",
"parameters": [
{
- "description": "Numeric FotMob league id from /fotmob/leagues",
+ "description": "Keyword to search for (e.g., Apple)",
"in": "query",
- "name": "league_id",
+ "name": "q",
"required": true,
- "type": "integer",
- "x-example": 47
+ "type": "string",
+ "x-example": "Apple"
}
],
"produces": [
@@ -270721,25 +299948,25 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Search results",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.searchResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google Finance upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270750,77 +299977,33 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob league season discovery",
+ "summary": "Google Finance Search API",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/stats": {
+ "/google/finance/ticker/{ticker}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns ranked player or team statistics for a stat id discovered from /fotmob/stats-categories. The accepted stat ids vary by league, season, and type. team_id optionally restricts player statistics to one team. position filters player results client-side.",
- "operationId": "fotmob-stats",
+ "description": "Fetches chart ticker data from Google Finance based on a provided ticker and window period.",
+ "operationId": "google-finance-ticker",
"parameters": [
{
- "description": "Numeric FotMob league id",
- "in": "query",
- "name": "league_id",
- "required": true,
- "type": "string",
- "x-example": "47"
- },
- {
- "description": "Numeric season id from /fotmob/stats-categories; defaults to the newest season",
- "in": "query",
- "name": "season_id",
- "type": "string",
- "x-example": "36781"
- },
- {
- "description": "Stats subject",
- "enum": [
- "players",
- "teams"
- ],
- "in": "query",
- "name": "type",
- "required": true,
- "type": "string",
- "x-example": "players"
- },
- {
- "description": "Stat id returned by /fotmob/stats-categories for this league, season, and type",
- "in": "query",
- "name": "stat",
+ "description": "Ticker symbol to fetch data for example:AAPL:NASDAQ, BTC-USD ",
+ "in": "path",
+ "name": "ticker",
"required": true,
"type": "string",
- "x-example": "goals"
- },
- {
- "description": "Optional numeric team id to filter player stats",
- "in": "query",
- "name": "team_id",
- "type": "string",
- "x-example": "8456"
+ "x-example": "AAPL:NASDAQ"
},
{
- "description": "Optional client-side player position filter",
- "enum": [
- "all",
- "striker",
- "winger",
- "attackingMidfielder",
- "midfielder",
- "fullback",
- "centerBack"
- ],
+ "description": "Time window for the ticker data (default: 1d), options: 1d, 5d, 1m, 6m, 1y, 5y, max",
"in": "query",
- "name": "position",
- "type": "string",
- "x-example": "striker"
+ "name": "window",
+ "type": "string"
}
],
"produces": [
@@ -270828,25 +300011,25 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Ticker time series",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/finance.tickerResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google Finance upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270857,46 +300040,28 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob league player or team statistics",
+ "summary": "Google Finance Ticker API",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/stats-categories": {
- "get": {
+ "/google/jobs": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns FotMob's current stat catalog and available seasons for a league. With season_id omitted, the response exposes the season list and initial top-stat choices; pass a returned season id to retrieve that season's full player or team stat catalog.",
- "operationId": "fotmob-stats-categories",
+ "description": "Returns normalized Google Jobs results parsed from public Google web responses.",
+ "operationId": "google-jobs",
"parameters": [
{
- "description": "Numeric FotMob league id",
- "in": "query",
- "name": "league_id",
- "required": true,
- "type": "string",
- "x-example": "47"
- },
- {
- "description": "Numeric season id; omit to discover seasons",
- "in": "query",
- "name": "season_id",
- "type": "string",
- "x-example": "36781"
- },
- {
- "description": "Stats subject",
- "enum": [
- "players",
- "teams"
- ],
- "in": "query",
- "name": "type",
+ "description": "Google Jobs search payload",
+ "in": "body",
+ "name": "option",
"required": true,
- "type": "string",
- "x-example": "players"
+ "schema": {
+ "$ref": "#/definitions/google.JobsOption"
+ }
}
],
"produces": [
@@ -270906,7 +300071,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/google.JobsResponse"
}
},
"400": {
@@ -270915,8 +300080,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270933,27 +300098,27 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob league stat categories and seasons",
+ "summary": "Search Google Jobs",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/table": {
+ "/google/map/place/{place_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the league standings and the upstream table views, including all, home, away, form, and expected-goals tables. League ids are discoverable from /fotmob/leagues.",
- "operationId": "fotmob-table",
+ "description": "Returns detailed information for a specified place_id. Rate limit is enforced at 1 request per second.",
+ "operationId": "google-map-place",
"parameters": [
{
- "description": "Numeric FotMob league id",
- "in": "query",
- "name": "league_id",
+ "description": "Google Place ID",
+ "in": "path",
+ "name": "place_id",
"required": true,
"type": "string",
- "x-example": "47"
+ "x-example": "ChIJs3cv0KuvEmsRHcXYwNJ6GU0"
}
],
"produces": [
@@ -270962,18 +300127,30 @@
"responses": {
"200": {
"description": "OK",
+ "headers": {
+ "X-RateLimit-Per-Second-Remaining": {
+ "description": "Number of remaining requests per second",
+ "type": "string"
+ }
+ },
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/google.mapPlaceResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -270984,27 +300161,33 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob league table",
+ "summary": "Google Maps place details API",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/team": {
+ "/google/map/place/{place_id}/photos": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public team data and the sections currently available for that team, such as overview, table, fixtures, squad, stats, transfers, and history. Team ids can be found with /fotmob/search. The upstream section set varies by team. For older fixtures, pass fixtures.previousFixturesUrl to /fotmob/team-fixtures.",
- "operationId": "fotmob-team",
+ "description": "Returns the photos Google publishes for a specified place_id — the imagery shown on\nthe place's Google Maps page, typically dozens of images for a well-covered business.\nEach entry carries the image URL as served plus its pixel dimensions when reported;\nswap the trailing size suffix on the URL (e.g. `=w203-h100-k-no`) to request other\ndimensions. Contributor avatars and review-attached photos are excluded. This is the\nplace page's image set, not a paginated archive feed. Rate limit is enforced at 1\nrequest per second.",
+ "operationId": "google-map-place-photos",
"parameters": [
{
- "description": "Numeric FotMob team id",
- "in": "query",
- "name": "id",
+ "description": "Google Place ID",
+ "in": "path",
+ "name": "place_id",
"required": true,
"type": "string",
- "x-example": "9825"
+ "x-example": "ChIJs3cv0KuvEmsRHcXYwNJ6GU0"
+ },
+ {
+ "description": "Maximum number of photos to return. Omit or 0 for all captured.",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -271013,24 +300196,30 @@
"responses": {
"200": {
"description": "OK",
+ "headers": {
+ "X-RateLimit-Per-Second-Remaining": {
+ "description": "Number of remaining requests per second",
+ "type": "string"
+ }
+ },
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/google.mapPlacePhotosResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271041,34 +300230,33 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob team details",
+ "summary": "Google Maps place photos API",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/team-fixtures": {
+ "/google/map/place/{place_id}/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of older team matches. Start with the fixtures.previousFixturesUrl cursor from /fotmob/team, then pass each response's previous value as cursor until it is empty or null. Team ids are open-ended numeric ids discoverable through /fotmob/search.",
- "operationId": "fotmob-team-fixtures",
+ "description": "Returns the reviews Google shows on a specified place_id's Google Maps page —\ntypically the 8 most relevant, each with its rating, text, reviewer, timestamp, and\nany photos the reviewer attached. Photo-only reviews return an empty `text`.\nThis is the place page's first page of reviews, not the full review archive.\nRate limit is enforced at 1 request per second.",
+ "operationId": "google-map-place-reviews",
"parameters": [
{
- "description": "Numeric FotMob team id",
- "in": "query",
- "name": "team_id",
+ "description": "Google Place ID",
+ "in": "path",
+ "name": "place_id",
"required": true,
"type": "string",
- "x-example": "9825"
+ "x-example": "ChIJs3cv0KuvEmsRHcXYwNJ6GU0"
},
{
- "description": "Opaque cursor copied from fixtures.previousFixturesUrl in /fotmob/team or previous in the preceding response",
+ "description": "Maximum number of reviews to return. Omit or 0 for all captured.",
"in": "query",
- "name": "cursor",
- "required": true,
- "type": "string"
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -271077,24 +300265,30 @@
"responses": {
"200": {
"description": "OK",
+ "headers": {
+ "X-RateLimit-Per-Second-Remaining": {
+ "description": "Number of remaining requests per second",
+ "type": "string"
+ }
+ },
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/google.mapPlaceReviewsResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271105,36 +300299,28 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob paginated team fixtures",
+ "summary": "Google Maps place reviews API",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/team-news": {
- "get": {
+ "/google/map/search": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns the paginated article feed shown on a public FotMob team news page. Team ids can be found with /fotmob/search or /fotmob/team.",
- "operationId": "fotmob-team-news",
+ "description": "Returns results from Google Maps based on search options. Rate limit is enforced at 1 request per second.",
+ "operationId": "google-map-search",
"parameters": [
{
- "description": "Numeric FotMob team id",
- "in": "query",
- "name": "team_id",
+ "description": "Search options",
+ "in": "body",
+ "name": "mapSearchOption",
"required": true,
- "type": "integer",
- "x-example": 8456
- },
- {
- "description": "Zero-based news offset from 0 through 10000",
- "in": "query",
- "maximum": 10000,
- "minimum": 0,
- "name": "start_index",
- "type": "integer",
- "x-example": 0
+ "schema": {
+ "$ref": "#/definitions/google.MapSearchOption"
+ }
}
],
"produces": [
@@ -271143,24 +300329,30 @@
"responses": {
"200": {
"description": "OK",
+ "headers": {
+ "X-RateLimit-Per-Second-Remaining": {
+ "description": "Number of remaining requests per second",
+ "type": "string"
+ }
+ },
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/google.mapSearchResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271171,122 +300363,58 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob team news",
+ "summary": "Google Maps search API",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/transfers": {
+ "/google/news": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns confirmed transfers, rumours, or popular transfers with the public transfer-center filters. Fee values are in EUR. Use fotmob/leagues and fotmob/search to discover league and team ids. The upstream returns 50 rows per page and caps its hit count at 10,000.",
- "operationId": "fotmob-transfers",
+ "description": "Returns current Google News search results using anonymous HTTP requests with fresh proxy profiles, without browser rendering. Pages slice the finite result snapshot; they do not traverse the Google Search index. Results include title, source, publisher article URL, age, and thumbnail when available. Valid no-results searches and exhausted pages return an empty array. Locale defaults to country=us and lang=en. Returns 503 for blocked or malformed upstream responses.",
+ "operationId": "google-news",
"parameters": [
{
- "default": "all",
- "description": "Feed mode",
- "enum": [
- "all",
- "rumours",
- "popular"
- ],
+ "description": "Search query",
"in": "query",
- "name": "mode",
- "type": "string"
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "openai"
},
{
- "default": 1,
- "description": "One-based result page; 50 rows per page",
+ "description": "1-based page within the current finite result snapshot; defaults to 1",
"in": "query",
- "maximum": 200,
"minimum": 1,
"name": "page",
- "type": "integer"
- },
- {
- "default": "6months",
- "description": "Time window",
- "enum": [
- "6months",
- "1year",
- "2years",
- "3years"
- ],
- "in": "query",
- "name": "last",
- "type": "string"
- },
- {
- "default": "all",
- "description": "Transfer direction; applied when league_ids or team_ids is supplied",
- "enum": [
- "all",
- "in",
- "out"
- ],
- "in": "query",
- "name": "direction",
- "type": "string"
- },
- {
- "description": "Minimum transfer fee in EUR",
- "in": "query",
- "minimum": 0,
- "name": "min_fee",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Maximum transfer fee in EUR",
+ "description": "Results per page; defaults to 10, clamped to 1..50",
"in": "query",
- "minimum": 0,
- "name": "max_fee",
- "type": "integer"
+ "maximum": 50,
+ "minimum": 1,
+ "name": "count",
+ "type": "integer",
+ "x-example": 10
},
{
- "description": "Comma-separated numeric FotMob league ids, up to 50; discover with /fotmob/leagues",
+ "description": "Two-letter country code; defaults to us",
"in": "query",
- "name": "league_ids",
+ "name": "country",
"type": "string",
- "x-example": "47"
+ "x-example": "us"
},
{
- "description": "Comma-separated numeric FotMob team ids, up to 50; discover with /fotmob/search",
+ "description": "Google UI language; defaults to en",
"in": "query",
- "name": "team_ids",
+ "name": "lang",
"type": "string",
- "x-example": "8456"
- },
- {
- "default": "lastModified",
- "description": "Sort column",
- "enum": [
- "lastModified",
- "fee",
- "date",
- "name",
- "fromClubName",
- "toClubName"
- ],
- "in": "query",
- "name": "order_by",
- "type": "string"
- },
- {
- "default": false,
- "description": "Exclude contract-extension records",
- "in": "query",
- "name": "exclude_extensions",
- "type": "boolean"
- },
- {
- "default": false,
- "description": "Return only likely rumours; mode must be rumours",
- "in": "query",
- "name": "likely_only",
- "type": "boolean"
+ "x-example": "en"
}
],
"produces": [
@@ -271296,23 +300424,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/google.newsResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271323,60 +300457,28 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob transfer center",
+ "summary": "Search Google News",
"tags": [
- "FotMob"
+ "Google"
]
- }
- },
- "/fotmob/trending-news": {
- "get": {
+ },
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns the five-story Trending shelf shown on FotMob's public News page. Items are curated previews and may overlap the global latest-news feed; the upstream list is dynamic. No locale or country parameter is exposed because the complete accepted value space is not pinned.",
- "operationId": "fotmob-trending-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/fotmob.newsListResponseDoc"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
+ "description": "Restored JSON compatibility endpoint. Returns current Google News articles using anonymous HTTP requests with fresh proxy profiles, without browser rendering. Pages slice the finite current result snapshot. Uses the legacy result array and field names; no-results searches and exhausted pages return an empty result array.",
+ "operationId": "google-news-search",
+ "parameters": [
+ {
+ "description": "Search options; keyword, language and country are required. limit defaults to 10 and is clamped to 10..100; page defaults to 1.",
+ "in": "body",
+ "name": "searchOption",
+ "required": true,
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/google.SearchOption"
}
}
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
],
- "summary": "FotMob trending football news",
- "tags": [
- "FotMob"
- ]
- }
- },
- "/fotmob/trending-searches": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns FotMob's current grouped trending suggestions for all entities, players, teams, and leagues. The feed is dynamic and may vary by the upstream's inferred region; no region or category parameter is exposed.",
- "operationId": "fotmob-trending-searches",
"produces": [
"application/json"
],
@@ -271384,11 +300486,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/google.newsSearchResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Invalid input",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271399,117 +300519,50 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob trending search suggestions",
+ "summary": "Search Google News with JSON",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/tv-guide": {
+ "/google/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the public seven-day football broadcast schedule for a country, with local schedule times. Discover all accepted country codes from /fotmob/tv-guide-countries. Timezone defaults to UTC.",
- "operationId": "fotmob-tv-guide",
+ "description": "Returns Google autosuggest query completions from the public unauthenticated suggest JSON endpoint.",
+ "operationId": "google-suggest",
"parameters": [
{
- "description": "Market code from /fotmob/tv-guide-countries",
- "enum": [
- "us",
- "se",
- "gb",
- "de",
- "no",
- "es",
- "mx",
- "ar",
- "bo",
- "cl",
- "co",
- "cr",
- "ec",
- "gt",
- "hn",
- "ni",
- "pa",
- "py",
- "pe",
- "uy",
- "ve",
- "da",
- "ca",
- "au",
- "at",
- "be",
- "bg",
- "hr",
- "cy",
- "cz",
- "ee",
- "fi",
- "fr",
- "gr",
- "hu",
- "is",
- "ie",
- "il",
- "it",
- "nl",
- "pl",
- "pt",
- "ro",
- "ru",
- "ch",
- "tr",
- "za",
- "br",
- "in",
- "me",
- "id",
- "th",
- "mm",
- "al",
- "az",
- "bl",
- "ba",
- "ks",
- "la",
- "li",
- "mk",
- "rs",
- "sk",
- "ua",
- "essv",
- "nz",
- "bd",
- "cn",
- "gh",
- "hk",
- "jp",
- "kr",
- "ma",
- "mt",
- "my",
- "ng",
- "ph",
- "pk",
- "sg",
- "si",
- "tz"
- ],
+ "description": "Search query prefix",
"in": "query",
- "name": "country",
+ "name": "q",
"required": true,
"type": "string",
+ "x-example": "openai"
+ },
+ {
+ "description": "Suggestions to return; defaults to 10, clamped to 1..12",
+ "in": "query",
+ "maximum": 12,
+ "minimum": 1,
+ "name": "count",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Google result country; defaults to us",
+ "in": "query",
+ "name": "country",
+ "type": "string",
"x-example": "us"
},
{
- "description": "IANA timezone for local times",
+ "description": "Google UI language; defaults to en",
"in": "query",
- "name": "timezone",
+ "name": "lang",
"type": "string",
- "x-example": "America/New_York"
+ "x-example": "en"
}
],
"produces": [
@@ -271519,23 +300572,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/google.suggestResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271546,112 +300605,16 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob football TV guide",
+ "summary": "Suggest Google search queries",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/tv-guide-channels": {
+ "/google/trends/categories": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Discovers channels attached to matches in the selected country's current seven-day public TV guide window. Use the country directory to discover the complete country code set.",
- "operationId": "fotmob-tv-guide-channels",
- "parameters": [
- {
- "description": "Market code from /fotmob/tv-guide-countries",
- "enum": [
- "us",
- "se",
- "gb",
- "de",
- "no",
- "es",
- "mx",
- "ar",
- "bo",
- "cl",
- "co",
- "cr",
- "ec",
- "gt",
- "hn",
- "ni",
- "pa",
- "py",
- "pe",
- "uy",
- "ve",
- "da",
- "ca",
- "au",
- "at",
- "be",
- "bg",
- "hr",
- "cy",
- "cz",
- "ee",
- "fi",
- "fr",
- "gr",
- "hu",
- "is",
- "ie",
- "il",
- "it",
- "nl",
- "pl",
- "pt",
- "ro",
- "ru",
- "ch",
- "tr",
- "za",
- "br",
- "in",
- "me",
- "id",
- "th",
- "mm",
- "al",
- "az",
- "bl",
- "ba",
- "ks",
- "la",
- "li",
- "mk",
- "rs",
- "sk",
- "ua",
- "essv",
- "nz",
- "bd",
- "cn",
- "gh",
- "hk",
- "jp",
- "kr",
- "ma",
- "mt",
- "my",
- "ng",
- "ph",
- "pk",
- "sg",
- "si",
- "tz"
- ],
- "in": "query",
- "name": "country",
- "required": true,
- "type": "string",
- "x-example": "us"
- }
- ],
+ "description": "Returns supported top-level Google Trends category ids and labels for Trending Now category filters.",
+ "operationId": "google-trends-categories",
"produces": [
"application/json"
],
@@ -271659,23 +300622,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/trends.trendsCategoriesResponseDoc"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271686,19 +300643,16 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob TV guide channels",
+ "summary": "Google Trends categories",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/fotmob/tv-guide-countries": {
+ "/google/trends/enums": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Lists all country codes exposed by FotMob's public football TV guide country selector.",
- "operationId": "fotmob-tv-guide-countries",
+ "description": "Returns supported Google Trends enum values for explore/trending filters, including locations, date ranges, search types, categories, statuses, and sort modes.",
+ "operationId": "google-trends-enums",
"produces": [
"application/json"
],
@@ -271706,11 +300660,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/fotmob.responseDoc"
+ "$ref": "#/definitions/trends.trendsEnumsResponseDoc"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271721,24 +300681,28 @@
"ApiKeyAuth": []
}
],
- "summary": "FotMob TV guide country directory",
+ "summary": "Google Trends enum metadata",
"tags": [
- "FotMob"
+ "Google"
]
}
},
- "/foxnews/article": {
- "get": {
- "description": "Returns public Fox News article metadata and body paragraphs from a canonical article URL. This does not bypass login, subscription, or other access controls.",
- "operationId": "foxnews-article",
+ "/google/trends/explore": {
+ "post": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized Google Trends keyword analytics from internal Trends widget requests: interest over time, interest by region, related queries, and related topics when available.",
+ "operationId": "google-trends-explore",
"parameters": [
{
- "description": "Canonical Fox News article URL",
- "in": "query",
- "name": "url",
+ "description": "Explore request",
+ "in": "body",
+ "name": "request",
"required": true,
- "type": "string",
- "x-example": "https://www.foxnews.com/us/example-story"
+ "schema": {
+ "$ref": "#/definitions/trends.ExploreRequest"
+ }
}
],
"produces": [
@@ -271748,29 +300712,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foxnews.articleResponseDoc"
+ "$ref": "#/definitions/trends.exploreResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google Trends upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271781,30 +300745,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fox News article content",
+ "summary": "Google Trends explore data",
"tags": [
- "Fox News"
+ "Google"
]
}
},
- "/foxnews/author": {
- "get": {
- "description": "Returns one Fox News author/personality's public bio page: name, biography, and their most recent articles. Provide either the author's name slug or the full https://www.foxnews.com/person// page URL.",
- "operationId": "foxnews-author",
+ "/google/trends/explore/interest-by-region": {
+ "post": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns only the interest-by-region widget from the Google Trends Explore widget flow. Supports multiple comparison terms and returns an empty interest_by_region array when Google returns no rows.",
+ "operationId": "google-trends-explore-interest-by-region",
"parameters": [
{
- "description": "Fox News author name slug, e.g. brooke-taylor",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "brooke-taylor"
- },
- {
- "description": "Canonical https://www.foxnews.com/person// author page URL, as an alternative to slug",
- "in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.foxnews.com/person/t/brooke-taylor"
+ "description": "Explore request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/trends.ExploreRequest"
+ }
}
],
"produces": [
@@ -271814,29 +300776,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foxnews.authorResponseDoc"
+ "$ref": "#/definitions/trends.interestByRegionResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google Trends upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271847,37 +300809,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fox News author profile",
+ "summary": "Google Trends interest by region",
"tags": [
- "Fox News"
+ "Google"
]
}
},
- "/foxnews/headlines": {
- "get": {
- "description": "Returns fresh headlines from one public Fox News article RSS section. Use foxnews-sections for the current value space.",
- "operationId": "foxnews-headlines",
+ "/google/trends/explore/interest-over-time": {
+ "post": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns only the interest-over-time timeline from the Google Trends Explore widget flow. Supports multiple comparison terms.",
+ "operationId": "google-trends-explore-interest-over-time",
"parameters": [
{
- "description": "Fox News RSS section slug: us, world, politics, science, health, sports, travel, tech, opinion, entertainment, media, or lifestyle",
- "enum": [
- "us",
- "world",
- "politics",
- "science",
- "health",
- "sports",
- "travel",
- "tech",
- "opinion",
- "entertainment",
- "media",
- "lifestyle"
- ],
- "in": "query",
- "name": "section",
+ "description": "Explore request",
+ "in": "body",
+ "name": "request",
"required": true,
- "type": "string"
+ "schema": {
+ "$ref": "#/definitions/trends.ExploreRequest"
+ }
}
],
"produces": [
@@ -271887,29 +300840,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foxnews.headlinesResponseDoc"
+ "$ref": "#/definitions/trends.interestOverTimeResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google Trends upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271920,16 +300873,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fox News section headlines",
+ "summary": "Google Trends interest over time",
"tags": [
- "Fox News"
+ "Google"
]
}
},
- "/foxnews/news": {
- "get": {
- "description": "Returns fresh Fox News top stories from the public site-wide RSS feed. The feed is a public headline/body source and does not require credentials.",
- "operationId": "foxnews-news",
+ "/google/trends/explore/related-topics": {
+ "post": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns only the related topics widget from the Google Trends Explore widget flow. Returns an empty related_topics array when Google returns no topic rows for the requested term/filter combination.",
+ "operationId": "google-trends-explore-related-topics",
+ "parameters": [
+ {
+ "description": "Explore request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/trends.ExploreRequest"
+ }
+ }
+ ],
"produces": [
"application/json"
],
@@ -271937,17 +300904,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foxnews.newsResponseDoc"
+ "$ref": "#/definitions/trends.relatedTopicsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Invalid input",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google Trends upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -271958,45 +300937,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fox News top stories",
+ "summary": "Google Trends related topics",
"tags": [
- "Fox News"
+ "Google"
]
}
},
- "/foxnews/search": {
- "get": {
- "description": "Searches Fox News' public credential-free Moxie search surface. Results may include article, video, or slideshow records; use type to restrict the result kind.",
- "operationId": "foxnews-search",
+ "/google/trends/explore/rising-queries": {
+ "post": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the Rising related queries widget for one or more Google Trends explore terms. Returns an empty queries array when Google returns no rows for the requested term/filter combination.",
+ "operationId": "google-trends-explore-rising-queries",
"parameters": [
{
- "description": "Search query",
- "in": "query",
- "maxLength": 200,
- "minLength": 1,
- "name": "q",
+ "description": "Explore request",
+ "in": "body",
+ "name": "request",
"required": true,
- "type": "string"
- },
- {
- "default": 1,
- "description": "1-based result offset",
- "in": "query",
- "maximum": 10000,
- "minimum": 1,
- "name": "start",
- "type": "integer"
- },
- {
- "description": "Result type",
- "enum": [
- "article",
- "video",
- "slideshow"
- ],
- "in": "query",
- "name": "type",
- "type": "string"
+ "schema": {
+ "$ref": "#/definitions/trends.ExploreRequest"
+ }
}
],
"produces": [
@@ -272006,23 +300968,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foxnews.searchResponseDoc"
+ "$ref": "#/definitions/trends.exploreQueriesResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google Trends upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -272033,16 +301001,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Fox News public content",
+ "summary": "Google Trends explore rising queries",
"tags": [
- "Fox News"
+ "Google"
]
}
},
- "/foxnews/sections": {
- "get": {
- "description": "Returns the exact live-verified Fox News article RSS section slugs accepted by foxnews-headlines. The video-only RSS feed is intentionally excluded.",
- "operationId": "foxnews-sections",
+ "/google/trends/explore/top-queries": {
+ "post": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the Top related queries widget for one or more Google Trends explore terms. Returns an empty queries array when Google returns no rows for the requested term/filter combination.",
+ "operationId": "google-trends-explore-top-queries",
+ "parameters": [
+ {
+ "description": "Explore request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/trends.ExploreRequest"
+ }
+ }
+ ],
"produces": [
"application/json"
],
@@ -272050,11 +301032,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/foxnews.sectionsResponseDoc"
+ "$ref": "#/definitions/trends.exploreQueriesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Invalid input",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Google Trends upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -272065,26 +301065,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Fox News RSS sections",
+ "summary": "Google Trends explore top queries",
"tags": [
- "Fox News"
+ "Google"
]
}
},
- "/foxsports/article": {
+ "/google/trends/locations": {
"get": {
- "description": "Returns public FOX Sports article metadata and body paragraphs from a canonical foxsports.com/stories// URL. Public body content stops at the article body container.",
- "operationId": "foxsports-article",
- "parameters": [
- {
- "description": "Canonical FOX Sports story URL",
- "in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.foxsports.com/stories/nfl/how-to-watch-eagles-vs-bears-tv-channel-live-stream-time-2026-week-3"
- }
- ],
+ "description": "Returns supported Google Trends location codes. Explore endpoints also accept WORLDWIDE.",
+ "operationId": "google-trends-locations",
"produces": [
"application/json"
],
@@ -272092,29 +301082,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/trends.trendsLocationsResponseDoc"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -272125,48 +301103,384 @@
"ApiKeyAuth": []
}
],
- "summary": "Get FOX Sports article content",
+ "summary": "Google Trends locations",
"tags": [
- "FOX Sports"
+ "Google"
]
}
},
- "/foxsports/headlines": {
+ "/google/trends/trending": {
"get": {
- "description": "Returns current headlines from one public FOX Sports editorial RSS feed.",
- "operationId": "foxsports-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized Google Trends Trending Now rows from the internal TrendsUi batch RPC replay.",
+ "operationId": "google-trends-trending",
"parameters": [
{
- "description": "FOX Sports section slug",
+ "default": "US",
+ "description": "Country/territory location code",
"enum": [
- "top",
- "mlb",
- "nfl",
- "college-football",
- "ufl",
- "nba",
- "nhl",
- "college-basketball",
- "nascar",
- "ufc",
- "motor-sports",
- "golf",
- "soccer",
- "fifa-world-cup",
- "fifa-womens-world-cup",
- "olympics",
- "tennis",
- "horseracing",
- "westminster-kennel-club-dog-show",
- "wnba",
- "womens-college-basketball",
- "world-baseball-classic",
- "wwe"
+ "AF",
+ "AX",
+ "AL",
+ "DZ",
+ "AS",
+ "AD",
+ "AO",
+ "AI",
+ "AQ",
+ "AG",
+ "AR",
+ "AM",
+ "AW",
+ "AU",
+ "AT",
+ "AZ",
+ "BS",
+ "BH",
+ "BD",
+ "BB",
+ "BY",
+ "BE",
+ "BZ",
+ "BJ",
+ "BM",
+ "BT",
+ "BO",
+ "BA",
+ "BW",
+ "BV",
+ "BR",
+ "IO",
+ "VG",
+ "BN",
+ "BG",
+ "BF",
+ "BI",
+ "KH",
+ "CM",
+ "CA",
+ "CV",
+ "BQ",
+ "KY",
+ "CF",
+ "TD",
+ "CL",
+ "CN",
+ "CX",
+ "CC",
+ "CO",
+ "KM",
+ "CG",
+ "CD",
+ "CK",
+ "CR",
+ "CI",
+ "HR",
+ "CU",
+ "CW",
+ "CY",
+ "CZ",
+ "DK",
+ "DJ",
+ "DM",
+ "DO",
+ "EC",
+ "EG",
+ "SV",
+ "GQ",
+ "ER",
+ "EE",
+ "SZ",
+ "ET",
+ "FK",
+ "FO",
+ "FJ",
+ "FI",
+ "FR",
+ "GF",
+ "PF",
+ "TF",
+ "GA",
+ "GM",
+ "GE",
+ "DE",
+ "GH",
+ "GI",
+ "GR",
+ "GL",
+ "GD",
+ "GP",
+ "GU",
+ "GT",
+ "GG",
+ "GN",
+ "GW",
+ "GY",
+ "HT",
+ "HM",
+ "HN",
+ "HK",
+ "HU",
+ "IS",
+ "IN",
+ "ID",
+ "IR",
+ "IQ",
+ "IE",
+ "IM",
+ "IL",
+ "IT",
+ "JM",
+ "JP",
+ "JE",
+ "JO",
+ "KZ",
+ "KE",
+ "KI",
+ "XK",
+ "KW",
+ "KG",
+ "LA",
+ "LV",
+ "LB",
+ "LS",
+ "LR",
+ "LY",
+ "LI",
+ "LT",
+ "LU",
+ "MO",
+ "MG",
+ "MW",
+ "MY",
+ "MV",
+ "ML",
+ "MT",
+ "MH",
+ "MQ",
+ "MR",
+ "MU",
+ "YT",
+ "MX",
+ "FM",
+ "MD",
+ "MC",
+ "MN",
+ "ME",
+ "MS",
+ "MA",
+ "MZ",
+ "MM",
+ "NA",
+ "NR",
+ "NP",
+ "NL",
+ "NC",
+ "NZ",
+ "NI",
+ "NE",
+ "NG",
+ "NU",
+ "NF",
+ "KP",
+ "MK",
+ "MP",
+ "NO",
+ "OM",
+ "PK",
+ "PW",
+ "PS",
+ "PA",
+ "PG",
+ "PY",
+ "PE",
+ "PH",
+ "PN",
+ "PL",
+ "PT",
+ "PR",
+ "QA",
+ "RE",
+ "RO",
+ "RU",
+ "RW",
+ "WS",
+ "SM",
+ "ST",
+ "SA",
+ "SN",
+ "RS",
+ "SC",
+ "SL",
+ "SG",
+ "SX",
+ "SK",
+ "SI",
+ "SB",
+ "SO",
+ "ZA",
+ "GS",
+ "KR",
+ "SS",
+ "ES",
+ "LK",
+ "BL",
+ "SH",
+ "KN",
+ "LC",
+ "MF",
+ "PM",
+ "VC",
+ "SD",
+ "SR",
+ "SJ",
+ "SE",
+ "CH",
+ "SY",
+ "TW",
+ "TJ",
+ "TZ",
+ "TH",
+ "TL",
+ "TG",
+ "TK",
+ "TO",
+ "TT",
+ "TN",
+ "TR",
+ "TM",
+ "TC",
+ "TV",
+ "UM",
+ "VI",
+ "UG",
+ "UA",
+ "AE",
+ "GB",
+ "US",
+ "UY",
+ "UZ",
+ "VU",
+ "VA",
+ "VE",
+ "VN",
+ "WF",
+ "EH",
+ "YE",
+ "ZM",
+ "ZW"
+ ],
+ "in": "query",
+ "name": "geo",
+ "type": "string"
+ },
+ {
+ "default": "en-US",
+ "description": "Google Trends UI locale",
+ "in": "query",
+ "name": "hl",
+ "type": "string"
+ },
+ {
+ "default": 0,
+ "description": "Timezone offset minutes",
+ "in": "query",
+ "name": "tz",
+ "type": "integer"
+ },
+ {
+ "default": "24h",
+ "description": "Trend window",
+ "enum": [
+ "4h",
+ "24h",
+ "48h",
+ "7d"
+ ],
+ "in": "query",
+ "name": "window",
+ "type": "string"
+ },
+ {
+ "description": "Alias for window",
+ "enum": [
+ "4h",
+ "24h",
+ "48h",
+ "7d"
+ ],
+ "in": "query",
+ "name": "time_range",
+ "type": "string"
+ },
+ {
+ "default": 0,
+ "description": "Trending category id",
+ "enum": [
+ 0,
+ 3,
+ 47,
+ 44,
+ 22,
+ 12,
+ 5,
+ 7,
+ 71,
+ 8,
+ 45,
+ 65,
+ 11,
+ 13,
+ 958,
+ 19,
+ 16,
+ 299,
+ 14,
+ 66,
+ 29,
+ 533,
+ 174,
+ 18,
+ 20,
+ 67
+ ],
+ "in": "query",
+ "name": "category",
+ "type": "integer"
+ },
+ {
+ "default": "all",
+ "description": "Trend status filter",
+ "enum": [
+ "all",
+ "active",
+ "ended"
],
"in": "query",
- "name": "section",
- "required": true,
+ "name": "status",
+ "type": "string"
+ },
+ {
+ "default": "relevance",
+ "description": "Sort mode",
+ "enum": [
+ "relevance",
+ "title",
+ "recency",
+ "search_volume"
+ ],
+ "in": "query",
+ "name": "sort_by",
"type": "string"
+ },
+ {
+ "default": 20,
+ "description": "Maximum rows to return",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -272176,23 +301490,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/trends.trendingResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Invalid input",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google Trends upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -272203,16 +301523,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get FOX Sports section headlines",
+ "summary": "Google Trends trending now data",
"tags": [
- "FOX Sports"
+ "Google"
]
}
},
- "/foxsports/news": {
- "get": {
- "description": "Returns current FOX Sports top stories from the official public All Headlines RSS feed.",
- "operationId": "foxsports-news",
+ "/google/trends/trending/detail": {
+ "post": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the Explore detail widgets for a single trending term, including interest over time, regional interest, top/rising related queries, and related topics when Google returns them.",
+ "operationId": "google-trends-trending-detail",
+ "parameters": [
+ {
+ "description": "Trending detail request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/trends.TrendingDetailRequest"
+ }
+ }
+ ],
"produces": [
"application/json"
],
@@ -272220,17 +301554,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/trends.exploreResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Invalid input",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google Trends upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -272241,50 +301587,58 @@
"ApiKeyAuth": []
}
],
- "summary": "Get FOX Sports top stories",
+ "summary": "Google Trends trending term detail",
"tags": [
- "FOX Sports"
+ "Google"
]
}
},
- "/foxsports/sections": {
+ "/google/videos": {
"get": {
- "description": "Returns the live-verified public editorial RSS feed inventory used by foxsports-headlines.",
- "operationId": "foxsports-sections",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get FOX Sports news sections",
- "tags": [
- "FOX Sports"
- ]
- }
- },
- "/france24/article": {
- "get": {
- "description": "Returns public France 24 English-edition article metadata and body paragraphs from a canonical article URL. Live-blog pages are supported and return their chronological update entries as body paragraphs.",
- "operationId": "france24-article",
+ "description": "Returns normalized Google video vertical results (title, platform, link, duration, age) parsed from the public Google video results page. Locale defaults to country=us and lang=en. Returns 503 when Google serves a challenge page or unusable HTML.",
+ "operationId": "google-videos",
"parameters": [
{
- "description": "Canonical France 24 article URL",
+ "description": "Search query",
"in": "query",
- "name": "url",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "https://www.france24.com/en/europe/20260924-eu-sanctions-russian-pundit-xenia-fedorova-after-expulsion-from-france"
+ "x-example": "openai"
+ },
+ {
+ "description": "1-based page number; defaults to 1",
+ "in": "query",
+ "minimum": 1,
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Results per page; defaults to 10, clamped to 1..50",
+ "in": "query",
+ "maximum": 50,
+ "minimum": 1,
+ "name": "count",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Two-letter country code; defaults to us",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Google UI language; defaults to en",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -272294,23 +301648,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/google.videosResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid query parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Google upstream request failed",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -272321,24 +301681,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get France 24 article content",
+ "summary": "Search Google video results",
"tags": [
- "France 24"
+ "Google"
]
}
},
- "/france24/author": {
+ "/googlepatents/classification": {
"get": {
- "description": "Returns one France 24 byline's public profile (name, job title, biography) and their recent articles from a canonical author-profile URL. This includes the shared \"FRANCE 24\" newsroom byline used on many stories, which has no individual biography.",
- "operationId": "france24-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a CPC classification symbol's official title, its position in the classification tree (parent/child symbols), related symbols, and its full scope-note description. Accepts a symbol at any level, e.g. a section (\"A\"), a class (\"A61\"), a subclass (\"A61K\"), or a full group/subgroup (\"A61K31/00\"). Public data, sourced from Google Patents' own search API.",
+ "operationId": "googlepatents-classification",
"parameters": [
{
- "description": "Canonical www.france24.com/en/author// URL",
+ "description": "CPC classification symbol",
"in": "query",
- "name": "url",
+ "name": "code",
"required": true,
"type": "string",
- "x-example": "https://www.france24.com/en/author/france-24/"
+ "x-example": "A61K31/00"
}
],
"produces": [
@@ -272348,7 +301711,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.france24AuthorResponseDoc"
+ "$ref": "#/definitions/googlepatents.classificationResponseDoc"
}
},
"400": {
@@ -272363,6 +301726,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -272375,39 +301750,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a France 24 author profile",
+ "summary": "Look up a Cooperative Patent Classification (CPC) symbol",
"tags": [
- "France 24"
+ "Google Patents"
]
}
},
- "/france24/headlines": {
+ "/googlepatents/coverage": {
"get": {
- "description": "Returns fresh headlines from one public France 24 English-edition section.",
- "operationId": "france24-headlines",
- "parameters": [
- {
- "description": "France 24 section slug",
- "enum": [
- "africa",
- "americas",
- "asia-pacific",
- "europe",
- "france",
- "middle-east",
- "business-tech",
- "culture",
- "environment",
- "sport",
- "live-news",
- "tv-shows"
- ],
- "in": "query",
- "name": "section",
- "required": true,
- "type": "string"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns how many patent grants and applications Google Patents has indexed, per patent office/country, per year, across every authority it covers. Public data, sourced from Google Patents' own search API.",
+ "operationId": "googlepatents-coverage",
"produces": [
"application/json"
],
@@ -272415,46 +301770,20 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/googlepatents.coverageResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get France 24 section headlines",
- "tags": [
- "France 24"
- ]
- }
- },
- "/france24/news": {
- "get": {
- "description": "Returns fresh France 24 English-edition stories from the public RSS feed.",
- "operationId": "france24-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
},
"503": {
"description": "Service Unavailable",
@@ -272468,42 +301797,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Get France 24 top stories",
+ "summary": "Google Patents database coverage: grants and applications indexed per country per year",
"tags": [
- "France 24"
+ "Google Patents"
]
}
},
- "/france24/sections": {
+ "/googlepatents/detail": {
"get": {
- "description": "Returns the complete public France 24 English-edition section inventory (regions, topics, and other public hubs) accepted by /france24/headlines.",
- "operationId": "france24-sections",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
+ "description": "Returns a single patent's normalized detail: title, abstract, inventors, assignees, dates, legal status, CPC/IPC classifications, claims, description, patent citations, cited-by patents, family members, and similar documents. `number` is a publication number such as `US10758101B2`, `EP1000000A1`, or `WO2020123456A1`. Public data, sourced from Google Patents' server-rendered detail pages. To search or browse by keyword, inventor, or assignee instead of a known publication number, use `/googlepatents/search`.",
+ "operationId": "googlepatents-detail",
+ "parameters": [
{
- "ApiKeyAuth": []
+ "description": "Publication number, e.g. US10758101B2",
+ "in": "query",
+ "name": "number",
+ "required": true,
+ "type": "string",
+ "x-example": "US10758101B2"
+ },
+ {
+ "description": "Language code for the translated page, default en",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
- "summary": "Get France 24 sections",
- "tags": [
- "France 24"
- ]
- }
- },
- "/freemalaysiatoday/news": {
- "get": {
- "description": "Returns Free Malaysia Today's current public top-stories RSS feed: each story's title, canonical URL, summary, author, publication time, and lead image.",
- "operationId": "freemalaysiatoday-news",
"produces": [
"application/json"
],
@@ -272511,46 +301834,20 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/freemalaysiatoday.newsResponseDoc"
+ "$ref": "#/definitions/googlepatents.detailResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get the latest Free Malaysia Today stories",
- "tags": [
- "Free Malaysia Today"
- ]
- }
- },
- "/freemalaysiatoday/sections": {
- "get": {
- "description": "Lists every live-verified primary editorial navigation section, with its slug, display name, and landing-page URL. This is the live-verified primary editorial navigation taxonomy; media, promotional, and duplicate commercial destinations are excluded.",
- "operationId": "freemalaysiatoday-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/freemalaysiatoday.sectionsResponseDoc"
- }
},
"429": {
"description": "Too Many Requests",
@@ -272558,6 +301855,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -272570,24 +301873,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List Free Malaysia Today sections",
+ "summary": "A single patent's bibliographic data, abstract, claims, description, citations, and family",
"tags": [
- "Free Malaysia Today"
+ "Google Patents"
]
}
},
- "/ft/article": {
+ "/googlepatents/recent": {
"get": {
- "description": "Returns one public Financial Times article's metadata and body paragraphs from a canonical article URL. Subscriber-only articles that the FT serves as a subscription page are not available.",
- "operationId": "ft-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the patent publications Google Patents' bulk sitemap indexes for one ISO 8601 week (format YYYY-Www, e.g. \"2026-W20\"): publication number, title, and detail-page URL for each. Useful for browsing recently published patents without a search query. Public data, sourced from Google Patents' own sitemap.",
+ "operationId": "googlepatents-recent",
"parameters": [
{
- "description": "Canonical FT article URL",
+ "description": "ISO 8601 week, format YYYY-Www",
"in": "query",
- "name": "url",
+ "name": "week",
"required": true,
"type": "string",
- "x-example": "https://www.ft.com/content/018aa34c-2498-4120-906b-5baf36e98c77"
+ "x-example": "2026-W20"
}
],
"produces": [
@@ -272597,7 +301903,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ft.articleResponseDoc"
+ "$ref": "#/definitions/googlepatents.recentResponseDoc"
}
},
"400": {
@@ -272606,12 +301912,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "403": {
- "description": "Forbidden",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"404": {
"description": "Not Found",
"schema": {
@@ -272624,6 +301924,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -272636,37 +301942,147 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Financial Times article's content",
+ "summary": "Browse patent publications indexed by Google Patents for one ISO week",
"tags": [
- "FT"
+ "Google Patents"
]
}
},
- "/ft/author": {
+ "/googlepatents/search": {
"get": {
- "description": "Returns one Financial Times contributor's public byline profile (name, job title, email, social accounts) plus one page of their recent articles. FT author pages carry no bio paragraph, only this byline metadata.",
- "operationId": "ft-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Google Patents' full index by free-text query, with optional inventor, assignee, patent office, status, type, language, and date filters. Returns a page of normalized hits plus top-assignee/top-inventor/top-classification breakdowns over the full result set. Public data, sourced from Google Patents' own search API.",
+ "operationId": "googlepatents-search",
"parameters": [
{
- "description": "Author URL slug, e.g. martin-wolf",
+ "description": "Free-text search query",
"in": "query",
- "name": "slug",
+ "name": "q",
+ "required": true,
"type": "string",
- "x-example": "martin-wolf"
+ "x-example": "battery"
},
{
- "description": "Canonical www.ft.com/ author URL; alternative to slug",
+ "description": "Filter by inventor name",
"in": "query",
- "name": "url",
+ "name": "inventor",
"type": "string",
- "x-example": "https://www.ft.com/martin-wolf"
+ "x-example": "Thomas Fogarty"
},
{
- "default": 1,
- "description": "1-based page number of the author's article list",
+ "description": "Filter by assignee/applicant name",
+ "in": "query",
+ "name": "assignee",
+ "type": "string",
+ "x-example": "Emerson Electric"
+ },
+ {
+ "description": "Filter by patent office/authority code, e.g. US, EP, WO, CN, JP",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "US"
+ },
+ {
+ "description": "Filter by legal status. Allowed values: GRANT, APPLICATION",
+ "enum": [
+ "GRANT",
+ "APPLICATION"
+ ],
+ "in": "query",
+ "name": "status",
+ "type": "string",
+ "x-example": "GRANT"
+ },
+ {
+ "description": "Filter by document type. Allowed values: PATENT, DESIGN",
+ "enum": [
+ "PATENT",
+ "DESIGN"
+ ],
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "PATENT"
+ },
+ {
+ "description": "Filter by document language. Allowed values: ENGLISH, GERMAN, CHINESE, FRENCH, SPANISH, ARABIC, JAPANESE, KOREAN, PORTUGUESE, RUSSIAN, ITALIAN, DUTCH, SWEDISH, FINNISH, NORWEGIAN, DANISH",
+ "enum": [
+ "ENGLISH",
+ "GERMAN",
+ "CHINESE",
+ "FRENCH",
+ "SPANISH",
+ "ARABIC",
+ "JAPANESE",
+ "KOREAN",
+ "PORTUGUESE",
+ "RUSSIAN",
+ "ITALIAN",
+ "DUTCH",
+ "SWEDISH",
+ "FINNISH",
+ "NORWEGIAN",
+ "DANISH"
+ ],
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "ENGLISH"
+ },
+ {
+ "description": "Which date before/after filter. Allowed values: priority, filing, publication. Defaults to priority when before/after is set",
+ "enum": [
+ "priority",
+ "filing",
+ "publication"
+ ],
+ "in": "query",
+ "name": "date_field",
+ "type": "string",
+ "x-example": "priority"
+ },
+ {
+ "description": "Only results dated on or before this date (YYYY-MM-DD)",
+ "in": "query",
+ "name": "before",
+ "type": "string",
+ "x-example": "2021-12-31"
+ },
+ {
+ "description": "Only results dated on or after this date (YYYY-MM-DD)",
+ "in": "query",
+ "name": "after",
+ "type": "string",
+ "x-example": "2020-01-01"
+ },
+ {
+ "description": "Sort order. Allowed values: relevance, new, old. Defaults to relevance",
+ "enum": [
+ "relevance",
+ "new",
+ "old"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "relevance"
+ },
+ {
+ "description": "Results per page, default 10, max 100",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 10
+ },
+ {
+ "description": "Page number, 0-indexed, default 0",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 0
}
],
"produces": [
@@ -272676,7 +302092,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ft.authorResponseDoc"
+ "$ref": "#/definitions/googlepatents.searchResponseDoc"
}
},
"400": {
@@ -272685,14 +302101,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -272709,16 +302125,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an FT author profile",
+ "summary": "Search Google Patents by keyword, inventor, assignee, and other filters",
"tags": [
- "FT"
+ "Google Patents"
]
}
},
- "/ft/categories": {
+ "/googlepatents/suggest": {
"get": {
- "description": "Lists every Financial Times section accepted by /ft/headlines, grouped by top-level section, with each section's slug, display name, and landing-page URL.",
- "operationId": "ft-categories",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Google Patents' own autocomplete suggestions for an inventor or assignee name as the user types, the same suggestions shown by the Inventor/Assignee fields on Google Patents' advanced search page. Public data, sourced from Google Patents' own search API.",
+ "operationId": "googlepatents-suggest",
+ "parameters": [
+ {
+ "description": "Which field to autocomplete. Allowed values: inventor, assignee",
+ "enum": [
+ "inventor",
+ "assignee"
+ ],
+ "in": "query",
+ "name": "field",
+ "required": true,
+ "type": "string",
+ "x-example": "inventor"
+ },
+ {
+ "description": "Partial name typed so far",
+ "in": "query",
+ "name": "value",
+ "required": true,
+ "type": "string",
+ "x-example": "John"
+ }
+ ],
"produces": [
"application/json"
],
@@ -272726,7 +302167,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ft.categoriesResponseDoc"
+ "$ref": "#/definitions/googlepatents.suggestResponseDoc"
}
},
"400": {
@@ -272741,6 +302182,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -272753,32 +302200,41 @@
"ApiKeyAuth": []
}
],
- "summary": "List Financial Times sections",
+ "summary": "Autocomplete an inventor or assignee name for Google Patents search",
"tags": [
- "FT"
+ "Google Patents"
]
}
},
- "/ft/headlines": {
+ "/googleplay/app": {
"get": {
- "description": "Returns one page of a Financial Times section front: each story's title, canonical URL, summary, section tag, publication time, and lead image. Section must be a slug returned by /ft/categories.",
- "operationId": "ft-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized app metadata from a Google Play details page, including installs, ratings, pricing, version info, developer metadata, media assets, release state, selected user comments, and \"More by this developer\" and \"Similar apps\" recommendation rails. For a per-device (phone/tablet/Chromebook) ratings-and-reviews breakdown, see `/googleplay/ratings`. Defaults: `country=us`, `lang=en`.",
+ "operationId": "googleplay-app",
"parameters": [
{
- "description": "Section slug from /ft/categories",
+ "description": "Google Play package name",
"in": "query",
- "name": "section",
+ "name": "app_id",
"required": true,
"type": "string",
- "x-example": "world"
+ "x-example": "com.openai.chatgpt"
},
{
- "description": "Results page",
+ "description": "Two-letter storefront country code",
"in": "query",
- "maximum": 20,
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -272786,9 +302242,9 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Wrapped app details payload",
"schema": {
- "$ref": "#/definitions/ft.headlinesResponseDoc"
+ "$ref": "#/definitions/googleplay.AppDetailsResponse"
}
},
"400": {
@@ -272809,8 +302265,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -272821,98 +302277,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get the latest stories in a Financial Times section",
+ "summary": "Retrieve full Google Play app details",
"tags": [
- "FT"
+ "GooglePlay"
]
}
},
- "/ft/news": {
+ "/googleplay/categories": {
"get": {
- "description": "Returns the Financial Times' current news feed: the newest stories across all sections, each with its title, canonical URL, and publication time.",
- "operationId": "ft-news",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/ft.newsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get the latest Financial Times stories",
- "tags": [
- "FT"
- ]
- }
- },
- "/ft/search": {
- "get": {
- "description": "Returns one page of Financial Times search results: each story's title, canonical URL, summary, section tag, publication time, and lead image. Results can be ordered by relevance or date and filtered by publication window.",
- "operationId": "ft-search",
+ "description": "Returns category ids found in the Google Play apps navigation.",
+ "operationId": "googleplay-categories",
"parameters": [
{
- "description": "Search keywords",
+ "description": "Two-letter country code",
"in": "query",
- "name": "q",
- "required": true,
+ "name": "country",
"type": "string",
- "x-example": "climate"
- },
- {
- "description": "Results page",
- "in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Result ordering",
- "enum": [
- "relevance",
- "date"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
+ "x-example": "us"
},
{
- "description": "Publication-window filter",
- "enum": [
- "now-24h",
- "now-7d",
- "now-30d",
- "now-1y"
- ],
+ "description": "Two-letter language code",
"in": "query",
- "name": "date_range",
- "type": "string"
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -272922,7 +302313,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ft.searchResponseDoc"
+ "$ref": "#/definitions/googleplay.categoriesResponseDoc"
}
},
"400": {
@@ -272943,8 +302334,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -272955,24 +302346,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Financial Times articles",
+ "summary": "Retrieve Google Play app categories",
"tags": [
- "FT"
+ "GooglePlay"
]
}
},
- "/gamerant/article": {
+ "/googleplay/datasafety": {
"get": {
- "description": "Returns public Game Rant article metadata and body paragraphs from a canonical article URL.",
- "operationId": "gamerant-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the data safety information displayed on Google Play.",
+ "operationId": "googleplay-datasafety",
"parameters": [
{
- "description": "Canonical Game Rant article URL",
+ "description": "Google Play app id",
"in": "query",
- "name": "url",
+ "name": "app_id",
"required": true,
"type": "string",
- "x-example": "https://gamerant.com/xbox-console-update-patch-notes-september-2026/"
+ "x-example": "com.openai.chatgpt"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -272982,7 +302383,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/googleplay.dataSafetyResponseDoc"
}
},
"400": {
@@ -273003,8 +302404,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -273015,24 +302416,55 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Game Rant article content",
+ "summary": "Retrieve Google Play data safety details",
"tags": [
- "Game Rant"
+ "GooglePlay"
]
}
},
- "/gamerant/author": {
+ "/googleplay/developer/{dev_id}": {
"get": {
- "description": "Returns a Game Rant author's byline metadata, biography, social links, and recent articles from a canonical author URL.",
- "operationId": "gamerant-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns apps published by a developer id or developer name.",
+ "operationId": "googleplay-developer",
"parameters": [
{
- "description": "Canonical Game Rant author URL",
- "in": "query",
- "name": "url",
+ "description": "Developer id or name",
+ "in": "path",
+ "name": "dev_id",
"required": true,
"type": "string",
- "x-example": "https://gamerant.com/author/dominik-bosnjak/"
+ "x-example": "OpenAI"
+ },
+ {
+ "description": "Number of apps",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 60
+ },
+ {
+ "description": "Two-letter country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
+ },
+ {
+ "default": false,
+ "description": "Resolve each app to full detail",
+ "in": "query",
+ "name": "full_detail",
+ "type": "boolean"
}
],
"produces": [
@@ -273042,7 +302474,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.gamerantAuthorResponseDoc"
+ "$ref": "#/definitions/googleplay.developerResultsResponseDoc"
}
},
"400": {
@@ -273057,8 +302489,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -273069,203 +302507,91 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Game Rant author profile",
+ "summary": "Retrieve apps by Google Play developer",
"tags": [
- "Game Rant"
+ "GooglePlay"
]
}
},
- "/gamerant/headlines": {
+ "/googleplay/list": {
"get": {
- "description": "Returns fresh headlines from one public Game Rant RSS section. Items from video sections have type video and are not readable through the article endpoint.",
- "operationId": "gamerant-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns apps from a Google Play collection and category.",
+ "operationId": "googleplay-list",
"parameters": [
{
- "description": "Game Rant RSS section slug",
+ "description": "Collection: TOP_FREE, TOP_PAID, GROSSING, NEW_FREE, NEW_PAID",
"enum": [
- "games",
- "gaming",
- "pc-news",
- "steam-news",
- "core-news",
- "xbox-series-xs-news",
- "xbox-news",
- "xbox-one-news",
- "platforms",
- "lists",
- "strategy-guide",
- "anime",
- "anime-news",
- "nintendo-news",
- "legend-of-zelda-news",
- "originals",
- "features",
- "gaming-features",
- "exclusives",
- "ps5-news",
- "bethesda-news",
- "playstation-news",
- "pokemon-news",
- "animal-crossing-news",
- "activision-news",
- "call-of-duty-news",
- "grand-theft-auto-news",
- "epic-games-store-news",
- "nintendo-switch-news",
- "fortnite-news",
- "one-piece-news",
- "anime-editorial",
- "diablo-news",
- "pokemon-go-news",
- "mobile-news",
- "ios-news",
- "android-news",
- "tabletop",
- "dc-news",
- "mortal-kombat-news",
- "latest-videos",
- "game-rant-series",
- "gamerant-gaming-videos-original",
- "videos",
- "disney-news",
- "movies-tv",
- "movies-tv-news",
- "movies-tv-lists",
- "movies-tv-features",
- "giveaways-contests",
- "stardew-valley-articles",
- "grand-theft-auto-5-news",
- "cd-projekt-red-news",
- "halo-news",
- "persona-news",
- "death-stranding-news",
- "dragon-ball-z-news",
- "genshin-impact-guides",
- "lord-of-the-rings-news",
- "world-of-warcraft-news",
- "streaming",
- "the-witcher-franchise-news",
- "final-fantasy-news",
- "resident-evil-news",
- "final-fantasy-7-news",
- "ps4-news",
- "call-of-duty-warzone-news",
- "the-elder-scrolls-news",
- "destiny-news",
- "fallout-news",
- "red-dead-redemption-news",
- "game-reviews",
- "final-fantasy-14-news",
- "the-last-of-us-news",
- "nintendo-3ds-news",
- "fallout-76-news",
- "marvel-news",
- "featured",
- "editorial",
- "ps3-news",
- "xbox-360-news",
- "video-interviews",
- "assassins-creed-news",
- "pause-for-thought",
- "star-wars-news",
- "pokemon-scarlet-violet-news",
- "theme-parks",
- "bloodborne-news",
- "review-roundup",
- "apex-legends-news",
- "dungeons-and-dragons-news",
- "kingdom-hearts-franchise-news",
- "dragon-age-news",
- "overwatch-news",
- "overwatch-2-news",
- "pokemon-legends-z-a-news",
- "pokemon-videos",
- "minecraft-news",
- "game-previews",
- "elden-ring-news",
- "amazon-news",
- "doom-news",
- "no-mans-sky-news",
- "metroid-franchise-news",
- "league-of-legends-news",
- "borderlands-news",
- "super-smash-bros-news",
- "valheim-news",
- "spider-man-news",
- "wii-news",
- "pokemon-go-guides",
- "the-witcher-3-news",
- "red-dead-redemption-2-news",
- "battlefield-franchise-news",
- "gta-online-news",
- "cod-modern-warfare-news",
- "video-lists",
- "playstation-videos",
- "xbox-videos",
- "dark-souls-news",
- "video-originals",
- "genshin-impact-news",
- "elden-ring-videos",
- "mass-effect-news",
- "rainbow-six-siege-news",
- "rainbow-six-franchise-news",
- "god-of-war-news",
- "persona-5-news",
- "the-last-of-us-2-news",
- "explainer",
- "stardew-valley-guides",
- "halo-infinite-news",
- "hardware-reviews",
- "movie-review",
- "dead-by-daylight-news",
- "far-cry-franchise-news",
- "zelda-breath-of-the-wild-news",
- "pokemon-go-reading",
- "365-days-later",
- "dead-space-news",
- "acnh-news",
- "game-rant-advance",
- "nintendo-switch-reviews",
- "pokemon-scarlet-and-violet-features",
- "red-dead-online-news",
- "game-deals",
- "steam-videos",
- "psn-news",
- "complete-guides-walkthroughs",
- "horizon-forbidden-west-news",
- "tv-review",
- "game-trailers",
- "assassins-creed-videos",
- "wii-u-news",
- "pc-videos",
- "pubg-news",
- "buyers-guides",
- "cyberpunk-videos",
- "baldurs-gate-3-videos",
- "pokemon-legends-z-a-guides",
- "rantable",
- "pokemon-scarlet-and-violet-guides",
- "fallout-videos",
- "fallout-4-videos",
- "game-rant-mailbag",
- "video-news",
- "star-wars-outlaws-videos",
- "hype-train-videos",
- "borderlands-3-news",
- "bite-size-lore",
- "open-world-videos",
- "gamers-said",
- "red-dead-redemption-2-videos",
- "stardew-valley-videos",
- "have-you-heard-of",
- "creators-on-game-rant",
- "movies-tv-trailers",
- "indie-videos"
+ "TOP_FREE",
+ "TOP_PAID",
+ "GROSSING",
+ "NEW_FREE",
+ "NEW_PAID"
+ ],
+ "in": "query",
+ "name": "collection",
+ "type": "string",
+ "x-example": "TOP_FREE"
+ },
+ {
+ "description": "Category id",
+ "in": "query",
+ "name": "category",
+ "type": "string",
+ "x-example": "TOOLS"
+ },
+ {
+ "description": "Google Play device tab: phone, tablet, tv, chromebook, watch, xr, car",
+ "enum": [
+ "phone",
+ "tablet",
+ "tv",
+ "chromebook",
+ "watch",
+ "xr",
+ "car"
],
"in": "query",
- "name": "section",
- "required": true,
- "type": "string"
+ "name": "device",
+ "type": "string",
+ "x-example": "tablet"
+ },
+ {
+ "description": "Family age range",
+ "in": "query",
+ "name": "age",
+ "type": "string",
+ "x-example": "AGE_RANGE1"
+ },
+ {
+ "description": "Number of apps",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 50
+ },
+ {
+ "description": "Two-letter country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
+ },
+ {
+ "default": false,
+ "description": "Resolve each app to full detail",
+ "in": "query",
+ "name": "full_detail",
+ "type": "boolean"
}
],
"produces": [
@@ -273275,7 +302601,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/googleplay.listResultsResponseDoc"
}
},
"400": {
@@ -273284,14 +302610,20 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -273302,16 +302634,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Game Rant section headlines",
+ "summary": "Retrieve apps from a Google Play top collection",
"tags": [
- "Game Rant"
+ "GooglePlay"
]
}
},
- "/gamerant/news": {
+ "/googleplay/permissions": {
"get": {
- "description": "Returns fresh Game Rant top stories from its public RSS feed.",
- "operationId": "gamerant-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Google Play permission groups or a short permission name list.",
+ "operationId": "googleplay-permissions",
+ "parameters": [
+ {
+ "description": "Google Play app id",
+ "in": "query",
+ "name": "app_id",
+ "required": true,
+ "type": "string",
+ "x-example": "com.openai.chatgpt"
+ },
+ {
+ "description": "Two-letter country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
+ },
+ {
+ "default": false,
+ "description": "Return only permission names",
+ "in": "query",
+ "name": "short",
+ "type": "boolean"
+ }
+ ],
"produces": [
"application/json"
],
@@ -273319,7 +302685,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/googleplay.permissionsResultsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -273328,8 +302706,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -273340,16 +302718,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Game Rant top stories",
+ "summary": "Retrieve Google Play app permissions",
"tags": [
- "Game Rant"
+ "GooglePlay"
]
}
},
- "/gamerant/sections": {
+ "/googleplay/ratings": {
"get": {
- "description": "Returns the public Game Rant RSS section inventory used by the headlines endpoint.",
- "operationId": "gamerant-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the ratings-and-reviews breakdown Google Play shows under the details page's device tabs, one entry each for phone, tablet, and Chromebook. Defaults: `country=us`, `lang=en`.",
+ "operationId": "googleplay-ratings",
+ "parameters": [
+ {
+ "description": "Google Play package name",
+ "in": "query",
+ "name": "app_id",
+ "required": true,
+ "type": "string",
+ "x-example": "com.openai.chatgpt"
+ },
+ {
+ "description": "Two-letter storefront country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
+ }
+ ],
"produces": [
"application/json"
],
@@ -273357,7 +302762,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/googleplay.ratingsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -273365,6 +302782,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -273372,24 +302795,73 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Game Rant RSS sections",
+ "summary": "Get Google Play ratings by device",
"tags": [
- "Game Rant"
+ "GooglePlay"
]
}
},
- "/gamesradar/article": {
+ "/googleplay/reviews": {
"get": {
- "description": "Returns public GamesRadar+ article metadata and body paragraphs from a canonical article URL.",
- "operationId": "gamesradar-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one or more pages of app reviews. Set `paginate=true` to fetch only the requested page.",
+ "operationId": "googleplay-reviews",
"parameters": [
{
- "description": "Canonical GamesRadar+ article URL",
+ "description": "Google Play app id",
"in": "query",
- "name": "url",
+ "name": "app_id",
"required": true,
"type": "string",
- "x-example": "https://www.gamesradar.com/games/silent-hill/silent-hill-townfall-review/"
+ "x-example": "com.openai.chatgpt"
+ },
+ {
+ "description": "Sort: helpfulness, newest, rating",
+ "enum": [
+ "helpfulness",
+ "newest",
+ "rating"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "newest"
+ },
+ {
+ "description": "Number of reviews",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 100
+ },
+ {
+ "description": "Two-letter country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
+ },
+ {
+ "default": false,
+ "description": "Only fetch the requested page",
+ "in": "query",
+ "name": "paginate",
+ "type": "boolean"
+ },
+ {
+ "description": "Token from a previous response",
+ "in": "query",
+ "name": "next_pagination_token",
+ "type": "string"
}
],
"produces": [
@@ -273399,7 +302871,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/googleplay.reviewsResponseDoc"
}
},
"400": {
@@ -273414,8 +302886,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -273426,37 +302904,67 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GamesRadar+ article content",
+ "summary": "Retrieve Google Play reviews",
"tags": [
- "GamesRadar+"
+ "GooglePlay"
]
}
},
- "/gamesradar/author": {
+ "/googleplay/search": {
"get": {
- "description": "Returns one GamesRadar+ author's public profile: name, job title, biography, social links, and one page of their recent articles.",
- "operationId": "gamesradar-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Google Play search results for a term.",
+ "operationId": "googleplay-search",
"parameters": [
{
- "description": "Author slug, e.g. rosalie-newcombe",
+ "description": "Search term",
"in": "query",
- "name": "slug",
+ "name": "term",
+ "required": true,
"type": "string",
- "x-example": "rosalie-newcombe"
+ "x-example": "chatgpt"
},
{
- "description": "Canonical gamesradar.com/author/ URL, optionally with a /page/ segment; alternative to slug",
+ "description": "Number of apps",
"in": "query",
- "name": "url",
+ "name": "num",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "description": "Two-letter country code",
+ "in": "query",
+ "name": "country",
"type": "string",
- "x-example": "https://www.gamesradar.com/author/rosalie-newcombe/"
+ "x-example": "us"
},
{
- "default": 1,
- "description": "1-based page number; overrides any page number in url",
+ "description": "Two-letter language code",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
+ },
+ {
+ "default": false,
+ "description": "Resolve each app to full detail",
+ "in": "query",
+ "name": "full_detail",
+ "type": "boolean"
+ },
+ {
+ "description": "Price filter: all, free, paid",
+ "enum": [
+ "all",
+ "free",
+ "paid"
+ ],
+ "in": "query",
+ "name": "price",
+ "type": "string",
+ "x-example": "all"
}
],
"produces": [
@@ -273466,7 +302974,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.gamesradarAuthorResponseDoc"
+ "$ref": "#/definitions/googleplay.searchResultsResponseDoc"
}
},
"400": {
@@ -273481,8 +302989,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -273493,46 +303007,55 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a GamesRadar+ author profile",
+ "summary": "Search Google Play",
"tags": [
- "GamesRadar+"
+ "GooglePlay"
]
}
},
- "/gamesradar/headlines": {
+ "/googleplay/similar": {
"get": {
- "description": "Returns fresh GamesRadar+ headlines from one public section hub page.",
- "operationId": "gamesradar-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns apps from the \"Similar apps\" cluster on an app details page.",
+ "operationId": "googleplay-similar",
"parameters": [
{
- "description": "GamesRadar+ section slug",
- "enum": [
- "games",
- "platforms",
- "entertainment",
- "comics",
- "hardware",
- "toys-collectibles",
- "tabletop-gaming",
- "buying-guides",
- "lego",
- "dungeons-and-dragons",
- "videos",
- "games-news",
- "games-features",
- "games-reviews",
- "games-guides",
- "hardware-news",
- "hardware-reviews",
- "hardware-features",
- "entertainment-tv",
- "entertainment-movies",
- "entertainment-streaming"
- ],
+ "description": "Google Play app id",
"in": "query",
- "name": "section",
+ "name": "app_id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "com.openai.chatgpt"
+ },
+ {
+ "description": "Number of apps",
+ "in": "query",
+ "name": "num",
+ "type": "integer",
+ "x-example": 24
+ },
+ {
+ "description": "Two-letter country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
+ },
+ {
+ "default": false,
+ "description": "Resolve each app to full detail",
+ "in": "query",
+ "name": "full_detail",
+ "type": "boolean"
}
],
"produces": [
@@ -273542,7 +303065,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/googleplay.similarResultsResponseDoc"
}
},
"400": {
@@ -273551,37 +303074,11 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get GamesRadar+ section headlines",
- "tags": [
- "GamesRadar+"
- ]
- }
- },
- "/gamesradar/news": {
- "get": {
- "description": "Returns fresh GamesRadar+ top stories from the public RSS feed.",
- "operationId": "gamesradar-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
},
"429": {
"description": "Too Many Requests",
@@ -273589,8 +303086,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -273601,16 +303098,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GamesRadar+ top stories",
+ "summary": "Retrieve similar Google Play apps",
"tags": [
- "GamesRadar+"
+ "GooglePlay"
]
}
},
- "/gamesradar/sections": {
+ "/googleplay/suggest/{term}": {
"get": {
- "description": "Returns the public GamesRadar+ editorial taxonomy used by the headlines endpoint.",
- "operationId": "gamesradar-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns up to 10 suggestions for a search term.",
+ "operationId": "googleplay-suggest",
+ "parameters": [
+ {
+ "description": "Search term prefix",
+ "in": "path",
+ "name": "term",
+ "required": true,
+ "type": "string",
+ "x-example": "chatg"
+ },
+ {
+ "description": "Two-letter country code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "us"
+ },
+ {
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en"
+ }
+ ],
"produces": [
"application/json"
],
@@ -273618,7 +303142,31 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/googleplay.suggestResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -273627,24 +303175,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GamesRadar+ sections",
+ "summary": "Retrieve Google Play query suggestions",
"tags": [
- "GamesRadar+"
+ "GooglePlay"
]
}
},
- "/gbnews/article": {
+ "/gq/article": {
"get": {
- "description": "Returns public GB News article metadata and body paragraphs from a canonical story URL.",
- "operationId": "gbnews-article",
+ "description": "Returns public GQ article metadata and body paragraphs from a canonical story URL. A story GQ marks as subscriber-only returns a 403 permission error instead of partial text.",
+ "operationId": "gq-article",
"parameters": [
{
- "description": "Canonical GB News story URL",
+ "description": "Canonical GQ story URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.gbnews.com/news/north-yorkshire-gaza-barracks-fire-catterick-garrison"
+ "x-example": "https://www.gq.com/story/how-to-unclog-your-ear"
}
],
"produces": [
@@ -273663,6 +303211,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "403": {
+ "description": "Forbidden",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"404": {
"description": "Not Found",
"schema": {
@@ -273681,30 +303235,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GB News article content",
+ "summary": "Get GQ article content",
"tags": [
- "GB News"
+ "GQ"
]
}
},
- "/gbnews/author": {
+ "/gq/author": {
"get": {
- "description": "Returns one GB News author's public profile: name, role, biography, image, and their most recent stories (up to 24; older stories are not available).",
- "operationId": "gbnews-author",
+ "description": "Returns one GQ contributor's public profile: name, biography, headshot, social links, and one page of their recent articles.",
+ "operationId": "gq-author",
"parameters": [
{
- "description": "Author slug, e.g. peter-stevens-a",
+ "description": "Contributor slug, e.g. tom-ward; provide slug or url",
"in": "query",
"name": "slug",
"type": "string",
- "x-example": "peter-stevens-a"
+ "x-example": "tom-ward"
},
{
- "description": "Canonical gbnews.com/authors/ URL; alternative to slug",
+ "description": "Canonical www.gq.com/contributor/ URL; alternative to slug",
"in": "query",
"name": "url",
"type": "string",
- "x-example": "https://www.gbnews.com/authors/peter-stevens-a"
+ "x-example": "https://www.gq.com/contributor/tom-ward"
+ },
+ {
+ "default": 1,
+ "description": "1-based page of the contributor's article list (1-100)",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -273714,7 +303275,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.gbnewsAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.gqAuthorResponseDoc"
}
},
"400": {
@@ -273741,417 +303302,115 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a GB News author profile",
+ "summary": "Get a GQ contributor profile",
"tags": [
- "GB News"
+ "GQ"
]
}
},
- "/gbnews/headlines": {
+ "/gq/headlines": {
"get": {
- "description": "Returns fresh GB News headlines from one public section or topic feed.",
- "operationId": "gbnews-headlines",
+ "description": "Returns the current story cards from one GQ section page: headline, standfirst, byline, publish date, and image.",
+ "operationId": "gq-headlines",
"parameters": [
{
- "description": "GB News section or topic path",
+ "description": "GQ section slug",
"enum": [
- "news",
- "news/animals",
- "news/army",
- "news/benefit-fraudsters",
- "news/best-of-britain",
- "news/christianity",
- "news/crime",
- "news/defence",
- "news/education",
- "news/energy",
- "news/environment",
- "news/falkland-islands",
- "news/fire",
- "news/free-speech",
- "news/fuel-crisis",
- "news/gibraltar",
- "news/grooming-gangs",
- "news/lgbt",
- "news/m25",
- "news/madeleine-mccann",
- "news/migrant-crisis",
- "news/national-lottery",
- "news/neighbour-rows",
- "news/oil",
- "news/police",
- "news/protests",
- "news/social-media",
- "news/taxpayer-waste",
- "news/tesco",
- "news/trains",
- "news/transport",
- "news/uk",
- "news/uk/birmingham",
- "news/uk/bristol",
- "news/uk/east-midlands",
- "news/uk/east-of-england",
- "news/uk/edinburgh",
- "news/uk/england",
- "news/uk/essex",
- "news/uk/glasgow",
- "news/uk/kent",
- "news/uk/liverpool",
- "news/uk/london",
- "news/uk/manchester",
- "news/uk/north-east",
- "news/uk/north-west",
- "news/uk/northern-ireland",
- "news/uk/scotland",
- "news/uk/south-east",
- "news/uk/south-west",
- "news/uk/wales",
- "news/uk/west-midlands",
- "news/uk/yorkshire",
- "news/us",
- "news/us/elon-musk",
- "news/us/melania-trump",
- "news/us/new-york",
- "news/video-news",
- "news/woke-madness",
- "news/world",
- "news/world/australia",
- "news/world/canada",
- "news/world/china",
- "news/world/emmanuel-macron",
- "news/world/europe",
- "news/world/france",
- "news/world/germany",
- "news/world/greece",
- "news/world/iran",
- "news/world/ireland",
- "news/world/isis",
- "news/world/israel",
- "news/world/italy",
- "news/world/nato",
- "news/world/poland",
- "news/world/portugal",
- "news/world/russia",
- "news/world/spain",
- "news/world/terrorism",
- "news/world/ukraine",
- "news/world/vladimir-putin",
- "news/world/volodymyr-zelenskyy",
- "news/world/war",
- "editorial",
+ "culture",
+ "entertainment",
+ "fitness",
+ "gq-hype",
+ "gq-recommends",
+ "gqsports",
+ "grooming",
"politics",
- "politics/boris-johnson",
- "politics/brexit",
- "politics/ed-davey",
- "politics/elections",
- "politics/green-party",
- "politics/uk",
- "politics/uk/andy-burnham",
- "politics/uk/angela-rayner",
- "politics/uk/conservative-party",
- "politics/uk/government",
- "politics/uk/home-office",
- "politics/uk/house-of-commons",
- "politics/uk/john-healey",
- "politics/uk/keir-starmer",
- "politics/uk/kemi-badenoch",
- "politics/uk/labour-party",
- "politics/uk/liberal-democrats",
- "politics/uk/nicola-sturgeon",
- "politics/uk/pmqs",
- "politics/uk/rachel-reeves",
- "politics/uk/reform-uk",
- "politics/uk/robert-jenrick",
- "politics/uk/sadiq-khan",
- "politics/uk/snp",
- "politics/uk/suella-braverman",
- "politics/uk/tony-blair",
- "politics/us",
- "politics/us/donald-trump",
- "politics/us/jd-vance",
- "politics/us/joe-biden",
- "politics/world",
- "politics/world/eu",
- "us",
- "sport",
- "sport/boxing",
- "sport/boxing/anthony-joshua",
- "sport/boxing/tyson-fury",
- "sport/cricket",
- "sport/cricket/england-cricket",
- "sport/darts",
- "sport/darts/luke-littler",
- "sport/f1",
- "sport/f1/christian-horner",
- "sport/f1/george-russell",
- "sport/f1/lando-norris",
- "sport/f1/lewis-hamilton",
- "sport/f1/max-verstappen",
- "sport/f1/michael-schumacher",
- "sport/football",
- "sport/football/arsenal",
- "sport/football/champions-league",
- "sport/football/chelsea",
- "sport/football/cristiano-ronaldo",
- "sport/football/efl",
- "sport/football/england-football",
- "sport/football/liverpool",
- "sport/football/manchester-city",
- "sport/football/manchester-united",
- "sport/football/premier-league",
- "sport/football/scotland-football",
- "sport/football/tottenham-hotspur",
- "sport/football/world-cup",
- "sport/golf",
- "sport/golf/rory-mcilroy",
- "sport/golf/tiger-woods",
- "sport/horse-racing",
- "sport/nfl",
- "sport/olympics",
- "sport/other-sport",
- "sport/rugby",
- "sport/snooker",
- "sport/snooker/ronnie-osullivan",
- "sport/tennis",
- "sport/tennis/carlos-alcaraz",
- "sport/tennis/emma-raducanu",
- "sport/tennis/novak-djokovic",
- "sport/us-sport",
- "opinion",
- "celebrity",
- "celebrity/22-kids-and-counting",
- "celebrity/bbc",
- "celebrity/big-brother",
- "celebrity/britains-got-talent",
- "celebrity/brooklyn-beckham",
- "celebrity/channel-4",
- "celebrity/channel-5",
- "celebrity/clarksons-farm",
- "celebrity/coronation-street",
- "celebrity/david-beckham",
- "celebrity/disney",
- "celebrity/dragons-den",
- "celebrity/eurovision",
- "celebrity/film",
- "celebrity/gary-lineker",
- "celebrity/gogglebox",
- "celebrity/harry-potter",
- "celebrity/im-a-celebrity-get-me-out-of-here",
- "celebrity/itv",
- "celebrity/james-bond",
- "celebrity/jk-rowling",
- "celebrity/katie-price",
- "celebrity/music",
- "celebrity/netflix",
- "celebrity/ricky-gervais",
- "celebrity/rod-stewart",
- "celebrity/strictly-come-dancing",
- "celebrity/the-grand-tour",
- "celebrity/this-morning",
- "celebrity/tom-jones",
- "celebrity/tv",
- "royal",
- "royal/buckingham-palace",
- "royal/camilla",
- "royal/coronation",
- "royal/duchess-of-edinburgh",
- "royal/earl-charles-spencer",
- "royal/edoardo-mapelli-mozzi",
- "royal/invictus-games",
- "royal/james-middleton",
- "royal/kate-middleton",
- "royal/king-charles",
- "royal/king-frederik",
- "royal/lady-louise",
- "royal/lilibet",
- "royal/meghan-markle",
- "royal/mike-tindall",
- "royal/pippa-middleton",
- "royal/prince-albert",
- "royal/prince-andrew",
- "royal/prince-archie",
- "royal/prince-edward",
- "royal/prince-george",
- "royal/prince-harry",
- "royal/prince-louis",
- "royal/prince-philip",
- "royal/prince-william",
- "royal/princess-anne",
- "royal/princess-beatrice",
- "royal/princess-charlene",
- "royal/princess-charlotte",
- "royal/princess-diana",
- "royal/princess-eugenie",
- "royal/queen-elizabeth",
- "royal/sarah-ferguson",
- "royal/zara-tindall",
- "money",
- "money/amazon",
- "money/bank-branch-closures",
- "money/bank-of-england",
- "money/barclays",
- "money/cost-of-living",
- "money/coventry-building-society",
- "money/dwp",
- "money/economy",
- "money/energy-bills",
- "money/high-street",
- "money/hmrc",
- "money/inflation",
- "money/inheritance-tax",
- "money/interest-rates",
- "money/isa",
- "money/jobs",
- "money/lloyds-bank",
- "money/martin-lewis",
- "money/mortgage",
- "money/national-insurance",
- "money/nationwide-building-society",
- "money/net-zero",
- "money/nsi",
- "money/octopus-energy",
- "money/pension-credit",
- "money/pensions",
- "money/pip",
- "money/poundland",
- "money/premium-bonds",
- "money/royal-mail",
- "money/savings",
- "money/skipton-building-society",
- "money/state-pension",
- "money/store-closures",
- "money/student-loans",
- "money/tax",
- "money/universal-credit",
- "money/yorkshire-building-society",
- "lifestyle",
- "lifestyle/aldi",
- "lifestyle/asda",
- "lifestyle/beauty",
- "lifestyle/cars",
- "lifestyle/cars/bmw",
- "lifestyle/cars/byd",
- "lifestyle/cars/car-finance",
- "lifestyle/cars/car-insurance",
- "lifestyle/cars/car-tax",
- "lifestyle/cars/chery",
- "lifestyle/cars/classic-cars",
- "lifestyle/cars/diesel",
- "lifestyle/cars/driving-laws",
- "lifestyle/cars/driving-licences",
- "lifestyle/cars/dvla",
- "lifestyle/cars/dvsa",
- "lifestyle/cars/electric-bikes",
- "lifestyle/cars/electric-vehicles",
- "lifestyle/cars/ford",
- "lifestyle/cars/highway-code",
- "lifestyle/cars/hydrogen-vehicles",
- "lifestyle/cars/hyundai",
- "lifestyle/cars/jaguar",
- "lifestyle/cars/kia",
- "lifestyle/cars/land-rover",
- "lifestyle/cars/mercedes",
- "lifestyle/cars/mini",
- "lifestyle/cars/mot",
- "lifestyle/cars/nissan",
- "lifestyle/cars/parking",
- "lifestyle/cars/petrol",
- "lifestyle/cars/renault",
- "lifestyle/cars/roads",
- "lifestyle/cars/self-driving",
- "lifestyle/cars/tesla",
- "lifestyle/cars/toyota",
- "lifestyle/cars/ulez",
- "lifestyle/cars/vauxhall",
- "lifestyle/cars/volkswagen",
- "lifestyle/cars/volvo",
- "lifestyle/diet",
- "lifestyle/food",
- "lifestyle/hair",
- "lifestyle/how-to-look-younger",
- "lifestyle/lidl",
- "lifestyle/marks-spencer",
- "lifestyle/morrisons",
- "lifestyle/property",
- "lifestyle/sainsburys",
- "lifestyle/skin-care",
- "lifestyle/style",
- "lifestyle/tesco",
- "travel",
- "travel/british-airways",
- "travel/cruise",
- "travel/deals",
- "travel/egypt",
- "travel/france",
- "travel/greece",
- "travel/italy",
- "travel/jet2",
- "travel/spain",
- "travel/staycation",
- "travel/tui",
- "travel/turkey",
- "travel/wizz-air",
- "health",
- "health/cancer",
- "health/covid",
- "health/dementia",
- "health/diabetes",
- "health/nhs",
- "health/sleep",
- "health/vaccine",
- "health/world-health-organisation",
- "science",
- "science/archaeology",
- "science/space",
- "tech",
- "tech/ai",
- "tech/android",
- "tech/apple",
- "tech/broadband",
- "tech/chatgpt",
- "tech/deals",
- "tech/dyson",
- "tech/ee",
- "tech/fire-tv",
- "tech/freely",
- "tech/freeview",
- "tech/gemini",
- "tech/google",
- "tech/kindle",
- "tech/malware",
- "tech/meta",
- "tech/microsoft",
- "tech/nintendo",
- "tech/oura",
- "tech/playstation",
- "tech/prime-video",
- "tech/privacy",
- "tech/reviews",
- "tech/roku",
- "tech/samsung",
- "tech/sky-tv",
- "tech/streaming",
- "tech/virgin",
- "tech/vpn",
- "tech/whatsapp",
- "tech/windows",
- "weather",
- "weather/flood",
- "weather/heatwave",
- "weather/rain",
- "weather/storms",
- "traffic-travel",
- "reflections",
- "newsfromus",
- "watch",
- "watch/originals"
+ "style",
+ "watches",
+ "wellness"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "culture"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get GQ section headlines",
+ "tags": [
+ "GQ"
+ ]
+ }
+ },
+ "/gq/news": {
+ "get": {
+ "description": "Returns fresh GQ top stories from the public RSS feed.",
+ "operationId": "gq-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
}
],
+ "summary": "Get GQ top stories",
+ "tags": [
+ "GQ"
+ ]
+ }
+ },
+ "/gq/sections": {
+ "get": {
+ "description": "Returns the GQ section (channel) slugs accepted by the headlines endpoint, each verified to list live stories.",
+ "operationId": "gq-sections",
"produces": [
"application/json"
],
@@ -274159,11 +303418,40 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get GQ sections",
+ "tags": [
+ "GQ"
+ ]
+ }
+ },
+ "/grailed/categories": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Grailed's full facet taxonomy for the enum-like parameters grailed-search/grailed-sold-listings accept: department, category, category_path (a more granular subcategory slug), condition, color, and size, each with its own live listing count. department and condition are exhaustive closed sets (2 and 5 values respectively); category/category_path/color/size are the full, exhaustive value space as of the request. Designer is NOT included here (7,363 values, far too large for a facet-count response) -- see grailed-designers for that discovery endpoint.",
+ "operationId": "grailed-categories",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/grailed.categoriesResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -274180,16 +303468,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GB News section headlines",
+ "summary": "List Grailed's facet taxonomy",
"tags": [
- "GB News"
+ "Grailed"
]
}
},
- "/gbnews/news": {
+ "/grailed/collection": {
"get": {
- "description": "Returns fresh GB News top stories from the public news feed.",
- "operationId": "gbnews-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Grailed curated homepage collection's full listing set. id is the collection's numeric id, from grailed-collections' own collections[].id field. An unknown id returns a typed not-found error.",
+ "operationId": "grailed-collection",
+ "parameters": [
+ {
+ "description": "Collection id, from grailed-collections' own collections[].id field",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "integer",
+ "x-example": 20
+ }
+ ],
"produces": [
"application/json"
],
@@ -274197,7 +303498,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/grailed.collectionResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -274218,16 +303531,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GB News top stories",
+ "summary": "Get one Grailed curated collection's listings",
"tags": [
- "GB News"
+ "Grailed"
]
}
},
- "/gbnews/sections": {
+ "/grailed/collections": {
"get": {
- "description": "Returns the public GB News section and topic taxonomy accepted by the headlines endpoint.",
- "operationId": "gbnews-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Grailed's own curated homepage merchandising collections (e.g. \"Trending: Apparel\", \"Dark Luxury\", \"Chromed Out\") -- editorial/trending shelves distinct from a plain search or facet browse. Each collection's numeric id is the value grailed-collection's own id parameter accepts.",
+ "operationId": "grailed-collections",
"produces": [
"application/json"
],
@@ -274235,7 +303551,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/grailed.collectionsResponseDoc"
}
},
"429": {
@@ -274256,89 +303572,97 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GB News sections",
+ "summary": "List Grailed's curated homepage collections",
"tags": [
- "GB News"
+ "Grailed"
]
}
},
- "/gdelt/context": {
+ "/grailed/designers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Search recent (last 72 hours) GDELT-monitored news for",
- "operationId": "gdelt-context",
+ "description": "Returns a page of Grailed's full designer/brand taxonomy (7,363 designers as of 2026-09-09) -- the value space grailed-search/grailed-sold-listings' own designer parameter accepts (by name). q is an optional free-text filter (typo-tolerant, e.g. a partial name for typeahead-style lookup); an empty q lists the full taxonomy ordered by Grailed's own default ranking (most-listed designers first).",
+ "operationId": "grailed-designers",
"parameters": [
{
- "description": "GDELT query string. All terms must co-occur in the same sentence. Supports quoted phrases, (a OR b), domain:example.com.",
- "in": "query",
- "name": "query",
- "required": true,
- "type": "string",
- "x-example": "climate change"
- },
- {
- "description": "Convenience domain filter, appended to the query as domain:VALUE.",
- "in": "query",
- "name": "domain",
- "type": "string",
- "x-example": "bbc.com"
- },
- {
- "description": "Source-language filter (GDELT's searchlang parameter). Space-segmented languages only (excludes CJK and similar).",
+ "description": "Free-text designer name filter",
"in": "query",
- "name": "language",
+ "name": "q",
"type": "string",
- "x-example": "english"
+ "x-example": "gucci"
},
{
- "description": "Only return sentences GDELT identified as a quotation.",
+ "description": "One-based page number, defaults to 1",
"in": "query",
- "name": "is_quote",
- "type": "boolean"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Relative time window ending now, e.g. 30min, 6h, 3d. Cannot be combined with from/to. GDELT caps this endpoint's window at 72 hours.",
+ "description": "Results per page, defaults to 24, maximum 100",
"in": "query",
- "name": "timespan",
- "type": "string",
- "x-example": "24h"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 24
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/grailed.designersResponseDoc"
+ }
},
- {
- "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan; GDELT caps this endpoint's window at 72 hours.",
- "in": "query",
- "name": "from",
- "type": "string",
- "x-example": "2026-08-19"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "End of an absolute time window. Same formats as from.",
- "in": "query",
- "name": "to",
- "type": "string",
- "x-example": "2026-08-20"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "default": "relevance",
- "description": "Result order.",
- "enum": [
- "relevance",
- "datedesc",
- "dateasc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List or search Grailed's designer/brand taxonomy",
+ "tags": [
+ "Grailed"
+ ]
+ }
+ },
+ "/grailed/listing": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns full normalized listing-detail data for one Grailed listing: description, every photo, measurements, designers, and the seller's full profile -- richer than the flattened summary grailed-search/grailed-sold-listings return per listing. id is the listing's numeric id, from a search or sold-listings result's own listings[].id field.",
+ "operationId": "grailed-listing",
+ "parameters": [
{
- "default": 75,
- "description": "Rows to return. GDELT's own hard cap is 200 for this endpoint (lower than gdelt-search's 250); there is no pagination cursor beyond it.",
+ "description": "Listing id, from a search or sold-listings result's own listings[].id field",
"in": "query",
- "maximum": 200,
- "minimum": 1,
- "name": "maxrecords",
- "type": "integer"
+ "name": "id",
+ "required": true,
+ "type": "integer",
+ "x-example": 105379689
}
],
"produces": [
@@ -274348,7 +303672,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.contextResponseDoc"
+ "$ref": "#/definitions/grailed.listingResponseDoc"
}
},
"400": {
@@ -274357,8 +303681,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -274375,92 +303705,124 @@
"ApiKeyAuth": []
}
],
- "summary": "Sentence-level co-occurrence search across recent GDELT coverage",
+ "summary": "Get a Grailed listing",
"tags": [
- "GDELT"
+ "Grailed"
]
}
},
- "/gdelt/search": {
+ "/grailed/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Search the GDELT Project's continuously updated global news",
- "operationId": "gdelt-search",
+ "description": "Searches or browses Grailed's (grailed.com) peer-to-peer resale marketplace for currently-active listings. q, designer, department, category, size, color, condition, min_price, and max_price are all optional and combine as an AND -- a free-text q can be combined with any of the facet filters in the same request, or every field can be omitted to browse the full active catalog by Grailed's own \"heat\" relevance ranking. designer accepts one of the values grailed-designers' own designers[].name field returns; department, category, size, and color accept values from grailed-categories' own departments[].value/categories[].value/sizes[].value/colors[].value fields. condition and sort are fixed, closed enums (listed below). Keyword search is Algolia's own typo-tolerant relevance ranking, not a guaranteed exact match. A query with genuinely zero matches returns a well-formed empty result rather than an error.",
+ "operationId": "grailed-search",
"parameters": [
{
- "description": "GDELT query string. Supports GDELT's own search operators: quoted phrases, (a OR b), theme:NAME, toneN, near20:\\",
+ "description": "Free-text search query",
"in": "query",
- "name": "query",
- "required": true,
+ "name": "q",
"type": "string",
- "x-example": "climate change"
+ "x-example": "gucci"
},
{
- "description": "Convenience source-country filter, appended to the query as sourcecountry:VALUE. Accepts a GDELT-recognized country name (no spaces) or 2-letter FIPS code.",
+ "description": "Designer/brand name filter, from grailed-designers' own designers[].name field",
"in": "query",
- "name": "country",
+ "name": "designer",
"type": "string",
- "x-example": "unitedkingdom"
+ "x-example": "Gucci"
},
{
- "description": "Convenience source-language filter, appended to the query as sourcelang:VALUE. Accepts a GDELT-recognized language name or 3-letter code.",
+ "description": "Department filter",
+ "enum": [
+ "menswear",
+ "womenswear"
+ ],
"in": "query",
- "name": "language",
+ "name": "department",
"type": "string",
- "x-example": "english"
+ "x-example": "menswear"
},
{
- "description": "Convenience domain filter, appended to the query as domain:VALUE.",
+ "description": "Category facet filter, from grailed-categories' own categories[].value field",
"in": "query",
- "name": "domain",
+ "name": "category",
"type": "string",
- "x-example": "bbc.com"
+ "x-example": "tops"
},
{
- "description": "Relative time window ending now, e.g. 1h, 2d, 1w, 3m. Cannot be combined with from/to.",
+ "description": "Size facet filter, from grailed-categories' own sizes[].value field",
"in": "query",
- "name": "timespan",
+ "name": "size",
"type": "string",
- "x-example": "1w"
+ "x-example": "m"
},
{
- "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan; GDELT only indexes roughly the last 3 months.",
+ "description": "Color facet filter, from grailed-categories' own colors[].value field",
"in": "query",
- "name": "from",
+ "name": "color",
"type": "string",
- "x-example": "2026-08-01"
+ "x-example": "black"
},
{
- "description": "End of an absolute time window. Same formats as from.",
+ "description": "Condition filter",
+ "enum": [
+ "is_new",
+ "is_gently_used",
+ "is_used",
+ "is_worn",
+ "is_not_specified"
+ ],
"in": "query",
- "name": "to",
+ "name": "condition",
"type": "string",
- "x-example": "2026-08-19"
+ "x-example": "is_gently_used"
},
{
- "default": "relevance",
- "description": "Result order.",
+ "description": "Minimum price (inclusive), in USD",
+ "in": "query",
+ "name": "min_price",
+ "type": "number",
+ "x-example": 50
+ },
+ {
+ "description": "Maximum price (inclusive), in USD",
+ "in": "query",
+ "name": "max_price",
+ "type": "number",
+ "x-example": 500
+ },
+ {
+ "description": "Sort order, defaults to heat",
"enum": [
- "relevance",
- "datedesc",
- "dateasc",
- "tonedesc",
- "toneasc"
+ "heat",
+ "heat_recency",
+ "followers",
+ "newest",
+ "price_asc",
+ "price_desc",
+ "recently_updated",
+ "quality"
],
"in": "query",
"name": "sort",
- "type": "string"
+ "type": "string",
+ "x-example": "heat"
},
{
- "default": 75,
- "description": "Rows to return. GDELT's own hard cap is 250; there is no pagination cursor beyond it.",
+ "description": "One-based page number, defaults to 1",
"in": "query",
- "maximum": 250,
- "minimum": 1,
- "name": "maxrecords",
- "type": "integer"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Results per page, defaults to 24, maximum 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 24
}
],
"produces": [
@@ -274470,7 +303832,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.searchResponseDoc"
+ "$ref": "#/definitions/grailed.searchResponseDoc"
}
},
"400": {
@@ -274479,8 +303841,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -274497,92 +303859,181 @@
"ApiKeyAuth": []
}
],
- "summary": "Search global news coverage indexed by GDELT",
+ "summary": "Search or browse Grailed active listings",
"tags": [
- "GDELT"
+ "Grailed"
]
}
},
- "/gdelt/timeline": {
+ "/grailed/seller": {
"get": {
"consumes": [
"application/json"
],
- "description": "Return how a query's global news coverage has trended over",
- "operationId": "gdelt-timeline",
+ "description": "Returns a Grailed seller's public profile plus a page of their current active listings (Grailed's own \"shop\" view of a seller). username is the seller's Grailed username, from a listing's own seller.username field or grailed.com/{username}. Listings only ever contains that seller's ACTIVE listings; use grailed-sold-listings with a designer/query filter for a broader sales-history lookup, since sold listings are not filterable by seller through this endpoint. An unknown username returns a typed not-found error.",
+ "operationId": "grailed-seller",
"parameters": [
{
- "description": "GDELT query string. Same syntax as gdelt-search's query.",
+ "description": "Grailed username",
"in": "query",
- "name": "query",
+ "name": "username",
"required": true,
"type": "string",
- "x-example": "climate change"
+ "x-example": "woodlandstepps"
},
{
- "default": "volume",
- "description": "Timeline metric. lang and country return one series per language/country instead of one aggregate series.",
- "enum": [
- "volume",
- "volume_raw",
- "tone",
- "lang",
- "country"
- ],
+ "description": "One-based page number for the seller's listings, defaults to 1",
"in": "query",
- "name": "metric",
- "type": "string"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Convenience source-country filter, appended to the query as sourcecountry:VALUE.",
+ "description": "Listings per page, defaults to 24, maximum 100",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "unitedkingdom"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 24
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/grailed.sellerResponseDoc"
+ }
},
- {
- "description": "Convenience source-language filter, appended to the query as sourcelang:VALUE.",
- "in": "query",
- "name": "language",
- "type": "string",
- "x-example": "english"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Convenience domain filter, appended to the query as domain:VALUE.",
- "in": "query",
- "name": "domain",
- "type": "string",
- "x-example": "bbc.com"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Relative time window ending now, e.g. 1h, 2d, 1w, 3m. Cannot be combined with from/to.",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Grailed seller's profile and active listings",
+ "tags": [
+ "Grailed"
+ ]
+ }
+ },
+ "/grailed/seller-reviews": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a page of a Grailed seller's individual buyer feedback entries (rating, note, feedback tags, and the listing each review was left for) -- reputation detail grailed-seller does not carry (grailed-seller only exposes the aggregate rating_average/rating_count). username is the seller's Grailed username, from a listing's own seller.username field or grailed.com/{username}. An unknown username returns a typed not-found error.",
+ "operationId": "grailed-seller-reviews",
+ "parameters": [
+ {
+ "description": "Grailed username",
"in": "query",
- "name": "timespan",
+ "name": "username",
+ "required": true,
"type": "string",
- "x-example": "1w"
+ "x-example": "woodlandstepps"
},
{
- "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "description": "One-based page number, defaults to 1",
"in": "query",
- "name": "from",
- "type": "string",
- "x-example": "2026-08-01"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/grailed.sellerReviewsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "End of an absolute time window. Same formats as from.",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Grailed seller's buyer feedback",
+ "tags": [
+ "Grailed"
+ ]
+ }
+ },
+ "/grailed/similar-listings": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the listings Grailed's own product page recommends as \"similar\" to one listing -- the same related-items shelf shown on grailed.com's own listing-detail page. id is the listing's numeric id, from a search, sold-listings, or collection result's own id field. An id for a listing that does not exist (deleted, sold and removed, or never valid) returns a typed not-found error.",
+ "operationId": "grailed-similar-listings",
+ "parameters": [
+ {
+ "description": "Listing id to find similar listings for",
"in": "query",
- "name": "to",
- "type": "string",
- "x-example": "2026-08-19"
+ "name": "id",
+ "required": true,
+ "type": "integer",
+ "x-example": 105379689
},
{
- "default": 0,
- "description": "Moving-window smoothing applied to the timeline, in steps. 0 disables smoothing.",
+ "description": "Results to return, defaults to 30, maximum 99",
"in": "query",
- "maximum": 30,
- "minimum": 0,
- "name": "smooth",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 30
}
],
"produces": [
@@ -274592,7 +304043,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.timelineResponseDoc"
+ "$ref": "#/definitions/grailed.similarListingsResponseDoc"
}
},
"400": {
@@ -274601,8 +304052,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -274619,69 +304076,119 @@
"ApiKeyAuth": []
}
],
- "summary": "Coverage volume or tone over time for a GDELT query",
+ "summary": "Get listings similar to a Grailed listing",
"tags": [
- "GDELT"
+ "Grailed"
]
}
},
- "/gdelt/tonechart": {
+ "/grailed/sold-listings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Return a sentiment (tone) histogram for a query's matching",
- "operationId": "gdelt-tonechart",
+ "description": "Searches Grailed's SOLD-listing index -- a separate dataset from active listings, carrying each item's final sale price and sale date. Same filter shape as grailed-search (q, designer, department, category, size, color, condition), but min_price/max_price filter the SOLD price, not the original asking price. Useful for sale-price-history/comparable-sales lookups (e.g. \"what did this designer/category actually sell for recently\"). A query with genuinely zero matches returns a well-formed empty result rather than an error.",
+ "operationId": "grailed-sold-listings",
"parameters": [
{
- "description": "GDELT query string. Same syntax as gdelt-search's query.",
+ "description": "Free-text search query",
"in": "query",
- "name": "query",
- "required": true,
+ "name": "q",
"type": "string",
- "x-example": "climate change"
+ "x-example": "gucci"
},
{
- "description": "Convenience source-country filter, appended to the query as sourcecountry:VALUE.",
+ "description": "Designer/brand name filter, from grailed-designers' own designers[].name field",
"in": "query",
- "name": "country",
+ "name": "designer",
"type": "string",
- "x-example": "unitedkingdom"
+ "x-example": "Gucci"
},
{
- "description": "Convenience source-language filter, appended to the query as sourcelang:VALUE.",
+ "description": "Department filter",
+ "enum": [
+ "menswear",
+ "womenswear"
+ ],
"in": "query",
- "name": "language",
+ "name": "department",
"type": "string",
- "x-example": "english"
+ "x-example": "menswear"
},
{
- "description": "Convenience domain filter, appended to the query as domain:VALUE.",
+ "description": "Category facet filter, from grailed-categories' own categories[].value field",
"in": "query",
- "name": "domain",
+ "name": "category",
"type": "string",
- "x-example": "bbc.com"
+ "x-example": "footwear"
},
{
- "description": "Relative time window ending now, e.g. 1h, 2d, 1w, 3m. Cannot be combined with from/to.",
+ "description": "Size facet filter, from grailed-categories' own sizes[].value field",
"in": "query",
- "name": "timespan",
+ "name": "size",
"type": "string",
- "x-example": "1w"
+ "x-example": "9"
},
{
- "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "description": "Color facet filter, from grailed-categories' own colors[].value field",
"in": "query",
- "name": "from",
+ "name": "color",
"type": "string",
- "x-example": "2026-08-01"
+ "x-example": "white"
},
{
- "description": "End of an absolute time window. Same formats as from.",
+ "description": "Condition filter",
+ "enum": [
+ "is_new",
+ "is_gently_used",
+ "is_used",
+ "is_worn",
+ "is_not_specified"
+ ],
"in": "query",
- "name": "to",
+ "name": "condition",
"type": "string",
- "x-example": "2026-08-19"
+ "x-example": "is_used"
+ },
+ {
+ "description": "Minimum SOLD price (inclusive), in USD",
+ "in": "query",
+ "name": "min_price",
+ "type": "number",
+ "x-example": 100
+ },
+ {
+ "description": "Maximum SOLD price (inclusive), in USD",
+ "in": "query",
+ "name": "max_price",
+ "type": "number",
+ "x-example": 500
+ },
+ {
+ "description": "Sort order, defaults to recent",
+ "enum": [
+ "recent",
+ "price_asc",
+ "price_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "recent"
+ },
+ {
+ "description": "One-based page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Results per page, defaults to 24, maximum 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 24
}
],
"produces": [
@@ -274691,7 +304198,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.toneChartResponseDoc"
+ "$ref": "#/definitions/grailed.soldListingsResponseDoc"
}
},
"400": {
@@ -274700,8 +304207,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -274718,28 +304225,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Sentiment histogram for a GDELT query",
+ "summary": "Search Grailed sold listings (sale price history)",
"tags": [
- "GDELT"
+ "Grailed"
]
}
},
- "/gdelt/tv-concept-entities": {
+ "/grailed/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Return GDELT's own catalog of Google Knowledge Graph concept",
- "operationId": "gdelt-tv-concept-entities",
+ "description": "Returns Grailed's own search-box typeahead suggestions for a partial query -- a flat list of suggested search phrases with a popularity score and live active-listing match count, no listing data. Pass a suggestion straight through to grailed-search/grailed-sold-listings' own q parameter. A query with no genuine matches returns a well-formed empty result rather than an error.",
+ "operationId": "grailed-suggest",
"parameters": [
{
- "default": 100,
- "description": "Maximum entries to return, most-frequent first.",
+ "description": "Partial search query",
"in": "query",
- "maximum": 10000,
- "minimum": 1,
- "name": "limit",
- "type": "integer"
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "guc"
}
],
"produces": [
@@ -274749,7 +304255,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.tvCapNlpEntityDetailsResponseDoc"
+ "$ref": "#/definitions/grailed.suggestResponseDoc"
}
},
"400": {
@@ -274758,8 +304264,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -274776,202 +304282,288 @@
"ApiKeyAuth": []
}
],
- "summary": "List GDELT Television 2.0 AI concept entities",
+ "summary": "Grailed search-box typeahead suggestions",
"tags": [
- "GDELT"
+ "Grailed"
]
}
},
- "/gdelt/tv-search": {
+ "/greystar/articles": {
"get": {
"consumes": [
"application/json"
],
- "description": "Search GDELT's Television 2.0 AI index of US television news",
- "operationId": "gdelt-tv-search",
+ "description": "Lists Greystar's renter guides (applying and leasing, general guides, moving) and blog posts from its public sitemap, newest first. Entries carry the section, slug, URL and last-modified date; fetch /greystar/articles/{section}/{slug} for the title and body.",
+ "operationId": "greystar-articles",
"parameters": [
{
- "collectionFormat": "csv",
- "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "description": "Content section",
+ "enum": [
+ "applying-and-leasing",
+ "general-guides",
+ "moving",
+ "blog"
+ ],
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "transcript",
- "type": "array",
- "x-example": "climate change"
+ "name": "section",
+ "type": "string"
},
{
- "collectionFormat": "csv",
- "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
+ "description": "Text matched against the slug",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "caption",
- "type": "array",
- "x-example": "climate change"
+ "name": "query",
+ "type": "string"
},
{
- "collectionFormat": "csv",
- "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
+ "default": 1,
+ "description": "1-based page",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "concept",
- "type": "array",
- "x-example": "/M/0d063v"
+ "name": "page",
+ "type": "integer"
},
{
- "collectionFormat": "csv",
- "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
+ "default": 50,
+ "description": "Entries per page, 1-100",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "onscreen_text",
- "type": "array",
- "x-example": "breaking news"
+ "name": "per_page",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/greystar.ContentList"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "visual",
- "type": "array",
- "x-example": "flood"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_transcript",
- "type": "array",
- "x-example": "campaign ad"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_caption",
- "type": "array",
- "x-example": "sanders"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Greystar renter guides and blog posts",
+ "tags": [
+ "Greystar"
+ ]
+ }
+ },
+ "/greystar/articles/{section}/{slug}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Retrieves one Greystar renter guide or blog post: title, description, category, publish date (blog posts), lead image, and the body as ordered heading, paragraph, and list blocks. Get section and slug values from /greystar/articles.",
+ "operationId": "greystar-article",
+ "parameters": [
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_concept",
- "type": "array",
- "x-example": "/M/081pw"
+ "description": "Content section",
+ "enum": [
+ "applying-and-leasing",
+ "general-guides",
+ "moving",
+ "blog"
+ ],
+ "in": "path",
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "blog"
},
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_onscreen_text",
- "type": "array",
- "x-example": "sponsored"
+ "description": "Article slug from /greystar/articles",
+ "in": "path",
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "the-best-plants-for-apartment-living"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/greystar.Article"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_visual",
- "type": "array",
- "x-example": "advertisement"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Station to search.",
- "enum": [
- "CNN",
- "MSNBC",
- "FOXNEWS",
- "BBCNEWS",
- "KGO",
- "KPIX",
- "KNTV"
- ],
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Greystar renter guide or blog post",
+ "tags": [
+ "Greystar"
+ ]
+ }
+ },
+ "/greystar/location": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Retrieves one Greystar state, city, or neighborhood rental hub: title, description, editorial guide text as ordered blocks, child locations with summaries, communities listed on the page (id, name, address, and price text when shown), and FAQs. State, city, and neighborhood slugs must come from /greystar/locations; unknown values return 400.",
+ "operationId": "greystar-location",
+ "parameters": [
+ {
+ "description": "State slug from /greystar/locations, e.g. tx",
"in": "query",
- "name": "station",
+ "name": "state",
"required": true,
"type": "string",
- "x-example": "CNN"
+ "x-example": "tx"
},
{
- "description": "Limit to an exact show name.",
+ "description": "City slug from /greystar/locations",
"in": "query",
- "name": "show",
- "type": "string",
- "x-example": "Inside Politics"
+ "name": "city",
+ "type": "string"
},
{
- "description": "Limit to a day of week, 0 (Sunday) through 7 (Saturday), PST.",
+ "description": "Neighborhood slug from /greystar/locations; requires city",
"in": "query",
- "maximum": 7,
- "minimum": 0,
- "name": "day_of_week",
- "type": "integer"
+ "name": "neighborhood",
+ "type": "string"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/greystar.LocationDetail"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. GDELT's TV archive starts July 6, 2010.",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Greystar rental hub page",
+ "tags": [
+ "Greystar"
+ ]
+ }
+ },
+ "/greystar/locations": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists Greystar's state, city, and neighborhood rental hub pages (the site's own location tree) with slugs and URLs. Use the slugs with /greystar/location for a hub's editorial content, child locations, listed communities, and FAQs.",
+ "operationId": "greystar-locations",
+ "parameters": [
+ {
+ "description": "Hub level",
+ "enum": [
+ "state",
+ "city",
+ "neighborhood"
+ ],
"in": "query",
- "name": "timespan",
- "type": "string",
- "x-example": "7d"
+ "name": "level",
+ "type": "string"
},
{
- "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "description": "State slug from this list, e.g. tx",
"in": "query",
- "name": "from",
- "type": "string",
- "x-example": "2026-08-01"
+ "name": "state",
+ "type": "string"
},
{
- "description": "End of an absolute time window. Same formats as from.",
+ "description": "City slug from this list; requires state",
"in": "query",
- "name": "to",
- "type": "string",
- "x-example": "2026-08-19"
+ "name": "city",
+ "type": "string"
},
{
- "default": "relevance",
- "description": "Result order.",
- "enum": [
- "relevance",
- "datedesc",
- "dateasc"
- ],
+ "default": 1,
+ "description": "1-based page",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "page",
+ "type": "integer"
},
{
- "default": 50,
- "description": "Rows to return. GDELT's own hard cap is 3000 for this endpoint; there is no pagination cursor beyond it.",
+ "default": 100,
+ "description": "Entries per page, 1-200",
"in": "query",
- "maximum": 3000,
- "minimum": 1,
- "name": "maxrecords",
+ "name": "per_page",
"type": "integer"
}
],
@@ -274982,7 +304574,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.tvSearchResponseDoc"
+ "$ref": "#/definitions/greystar.LocationList"
}
},
"400": {
@@ -274991,8 +304583,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -275009,178 +304601,137 @@
"ApiKeyAuth": []
}
],
- "summary": "Search US television news coverage (transcripts, captions, OCR, visual labels)",
+ "summary": "List Greystar rental hub locations",
"tags": [
- "GDELT"
+ "Greystar"
]
}
},
- "/gdelt/tv-showchart": {
+ "/greystar/markets": {
"get": {
"consumes": [
"application/json"
],
- "description": "Return the top shows by result percentage for a query",
- "operationId": "gdelt-tv-showchart",
- "parameters": [
- {
- "collectionFormat": "csv",
- "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "transcript",
- "type": "array",
- "x-example": "climate change"
- },
- {
- "collectionFormat": "csv",
- "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "caption",
- "type": "array",
- "x-example": "trump"
+ "description": "Returns every value accepted by the /greystar/search market_area, neighborhood, city, state, and country_code filters, each with the number of communities currently published. Derived from the full live community list, so it is the complete value space.",
+ "operationId": "greystar-markets",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/greystar.Markets"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "concept",
- "type": "array",
- "x-example": "/M/0d063v"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "collectionFormat": "csv",
- "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "onscreen_text",
- "type": "array",
- "x-example": "breaking news"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Greystar markets, neighborhoods, cities, and states",
+ "tags": [
+ "Greystar"
+ ]
+ }
+ },
+ "/greystar/newsroom": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists Greystar corporate newsroom releases and news articles from its public sitemap, newest first, with slug, URL and last-modified date. Fetch /greystar/newsroom/{slug} for the title, date, and body.",
+ "operationId": "greystar-newsroom",
+ "parameters": [
{
- "collectionFormat": "csv",
- "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
+ "description": "Text matched against the slug",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "visual",
- "type": "array",
- "x-example": "flood"
+ "name": "query",
+ "type": "string"
},
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
+ "default": 1,
+ "description": "1-based page",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_transcript",
- "type": "array",
- "x-example": "campaign ad"
+ "name": "page",
+ "type": "integer"
},
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
+ "default": 50,
+ "description": "Entries per page, 1-100",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_caption",
- "type": "array",
- "x-example": "sanders"
+ "name": "per_page",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/greystar.ContentList"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_concept",
- "type": "array",
- "x-example": "/M/081pw"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_onscreen_text",
- "type": "array",
- "x-example": "sponsored"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_visual",
- "type": "array",
- "x-example": "advertisement"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Greystar newsroom releases",
+ "tags": [
+ "Greystar"
+ ]
+ }
+ },
+ "/greystar/newsroom/{slug}": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Retrieves one Greystar newsroom release: title, type (for example Press Release), publish date, lead image, and body paragraphs. Older news stubs carry only a title and date, so the body can be empty. Get slugs from /greystar/newsroom.",
+ "operationId": "greystar-newsroom-article",
+ "parameters": [
{
- "collectionFormat": "csv",
- "description": "Required, repeatable. One or more stations, OR'd together.",
- "in": "query",
- "items": {
- "enum": [
- "CNN",
- "MSNBC",
- "FOXNEWS",
- "BBCNEWS",
- "KGO",
- "KPIX",
- "KNTV"
- ],
- "type": "string"
- },
- "name": "station",
+ "description": "Newsroom slug from /greystar/newsroom",
+ "in": "path",
+ "name": "slug",
"required": true,
- "type": "array",
- "x-example": "CNN"
- },
- {
- "description": "Limit to an exact show name.",
- "in": "query",
- "name": "show",
- "type": "string",
- "x-example": "Inside Politics"
- },
- {
- "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. Omit both for GDELT's full archive (auto-resolution, back to July 6, 2010).",
- "in": "query",
- "name": "timespan",
- "type": "string",
- "x-example": "30d"
- },
- {
- "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
- "in": "query",
- "name": "from",
"type": "string",
- "x-example": "2026-07-01"
- },
- {
- "description": "End of an absolute time window. Same formats as from.",
- "in": "query",
- "name": "to",
- "type": "string",
- "x-example": "2026-08-19"
+ "x-example": "kenzie-tolbert-rising-star"
}
],
"produces": [
@@ -275190,7 +304741,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.tvShowChartResponseDoc"
+ "$ref": "#/definitions/greystar.Article"
}
},
"400": {
@@ -275199,8 +304750,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -275217,178 +304774,157 @@
"ApiKeyAuth": []
}
],
- "summary": "Top US television shows by coverage share for a query",
+ "summary": "Get a Greystar newsroom release",
"tags": [
- "GDELT"
+ "Greystar"
]
}
},
- "/gdelt/tv-stationchart": {
+ "/greystar/properties/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Return a result-count comparison across the requested",
- "operationId": "gdelt-tv-stationchart",
+ "description": "Retrieves a public Greystar community profile by its numeric property id: location, description, amenities, office hours, walk scores, tours, floor plans, published fees, and currently available units with starting prices and available dates. Get ids from /greystar/search.",
+ "operationId": "greystar-property",
"parameters": [
{
- "collectionFormat": "csv",
- "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "transcript",
- "type": "array",
- "x-example": "climate change"
+ "description": "Numeric Greystar property id, e.g. 10124",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "10124"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/greystar.PropertyDetails"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "caption",
- "type": "array",
- "x-example": "trump"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "concept",
- "type": "array",
- "x-example": "/M/0d063v"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "onscreen_text",
- "type": "array",
- "x-example": "breaking news"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "collectionFormat": "csv",
- "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Greystar apartment community",
+ "tags": [
+ "Greystar"
+ ]
+ }
+ },
+ "/greystar/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists Greystar communities published on greystar.com, optionally filtered by market area, neighborhood, city, state, country, starting rent, or free text. Filter values must come from /greystar/markets; an unknown value returns 400. Starting prices reflect each community's published minimum and are null when none is published. Results come from a snapshot refreshed every few minutes.",
+ "operationId": "greystar-search",
+ "parameters": [
+ {
+ "description": "Free-text match on name, address, city, neighborhood, market area, or postal code (max 160 characters)",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "visual",
- "type": "array",
- "x-example": "flood"
+ "name": "query",
+ "type": "string"
},
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
+ "description": "Exact market area from /greystar/markets, e.g. Greater Austin",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_transcript",
- "type": "array",
- "x-example": "campaign ad"
+ "name": "market_area",
+ "type": "string"
},
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
+ "description": "Exact neighborhood from /greystar/markets",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_caption",
- "type": "array",
- "x-example": "sanders"
+ "name": "neighborhood",
+ "type": "string"
},
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
+ "description": "Exact city from /greystar/markets",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_concept",
- "type": "array",
- "x-example": "/M/081pw"
+ "name": "city",
+ "type": "string"
},
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
+ "description": "State or region abbreviation from /greystar/markets, e.g. TX",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_onscreen_text",
- "type": "array",
- "x-example": "sponsored"
+ "name": "state",
+ "type": "string"
},
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
+ "description": "ISO country code from /greystar/markets, e.g. US",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_visual",
- "type": "array",
- "x-example": "advertisement"
+ "name": "country_code",
+ "type": "string"
},
{
- "collectionFormat": "csv",
- "description": "Required, repeatable. One or more stations, OR'd together.",
+ "description": "Minimum starting monthly rent; excludes communities with no published price",
"in": "query",
- "items": {
- "enum": [
- "CNN",
- "MSNBC",
- "FOXNEWS",
- "BBCNEWS",
- "KGO",
- "KPIX",
- "KNTV"
- ],
- "type": "string"
- },
- "name": "station",
- "required": true,
- "type": "array",
- "x-example": "CNN"
+ "name": "min_price",
+ "type": "number"
},
{
- "description": "Limit to an exact show name.",
+ "description": "Maximum starting monthly rent; excludes communities with no published price",
"in": "query",
- "name": "show",
- "type": "string",
- "x-example": "Inside Politics"
+ "name": "max_price",
+ "type": "number"
},
{
- "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. Omit both for GDELT's full archive (auto-resolution, back to July 6, 2010).",
+ "default": "relevance",
+ "description": "Result order",
+ "enum": [
+ "relevance",
+ "name",
+ "price_asc",
+ "price_desc"
+ ],
"in": "query",
- "name": "timespan",
- "type": "string",
- "x-example": "30d"
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "default": 1,
+ "description": "1-based page",
"in": "query",
- "name": "from",
- "type": "string",
- "x-example": "2026-07-01"
+ "name": "page",
+ "type": "integer"
},
{
- "description": "End of an absolute time window. Same formats as from.",
+ "default": 20,
+ "description": "Results per page, 1-100",
"in": "query",
- "name": "to",
- "type": "string",
- "x-example": "2026-08-19"
+ "name": "per_page",
+ "type": "integer"
}
],
"produces": [
@@ -275398,7 +304934,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.tvStationChartResponseDoc"
+ "$ref": "#/definitions/greystar.SearchResult"
}
},
"400": {
@@ -275407,8 +304943,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -275425,19 +304961,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Compare US television news coverage across stations",
+ "summary": "Search Greystar apartment communities",
"tags": [
- "GDELT"
+ "Greystar"
]
}
},
- "/gdelt/tv-stationdetails": {
+ "/grubhub/availability": {
"get": {
"consumes": [
"application/json"
],
- "description": "Return GDELT's own current list of Television 2.0 AI",
- "operationId": "gdelt-tv-stationdetails",
+ "description": "Returns current ordering state for up to 20 restaurants in one call, relative to a diner location. Each entry reports whether the restaurant is open overall and per channel (these can differ), whether delivery and pickup are offered at all as distinct from open right now, whether it delivers to the supplied coordinate, blackout and overloaded flags, distance, delivery and pickup time estimates, delivery fee, order minimum, cuisines, and the next time an order can be sent per channel -- useful when a restaurant is currently closed. The response echoes the requested ids so a caller can tell which ones Grubhub returned nothing for.",
+ "operationId": "grubhub-availability",
+ "parameters": [
+ {
+ "description": "Comma-separated Grubhub restaurant ids, up to 20",
+ "in": "query",
+ "name": "restaurant_ids",
+ "required": true,
+ "type": "string",
+ "x-example": "6238960,14344720"
+ },
+ {
+ "description": "Diner location latitude -- availability is relative to it",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 40.7128
+ },
+ {
+ "description": "Diner location longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -74.006
+ }
+ ],
"produces": [
"application/json"
],
@@ -275445,11 +305007,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.tvStationDetailsResponseDoc"
+ "$ref": "#/definitions/grubhub.availabilityResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -275466,174 +305040,43 @@
"ApiKeyAuth": []
}
],
- "summary": "List GDELT Television 2.0 AI stations",
+ "summary": "Check ordering availability for a batch of Grubhub restaurants",
"tags": [
- "GDELT"
+ "Grubhub"
]
}
},
- "/gdelt/tv-timeline": {
+ "/grubhub/offers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the amount of US television news airtime matching the supplied query over time, using GDELT Television 2.0 AI timeline-volume data. A station is required. Supports the same caption, transcript, concept, and visual match operators as gdelt-tv-search; coverage and processing-delay caveats are documented there.",
- "operationId": "gdelt-tv-timeline",
+ "description": "Returns the promotional offers a Grubhub restaurant is currently running -- free items, BOGO deals, spend-and-save discounts -- the same data that drives the \"2 offers available\" badge on the site's own restaurant cards. An empty list is the common, legitimate case: most restaurants have no active promotion at any given moment. `amount.value` is 0 for a free-item offer since the item itself is the value, not a monetary discount; `amount.amount_maximum` then caps the item's dollar value, and `amount.order_minimum` is the spend threshold required to unlock it.",
+ "operationId": "grubhub-offers",
"parameters": [
{
- "collectionFormat": "csv",
- "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "transcript",
- "type": "array",
- "x-example": "climate change"
- },
- {
- "collectionFormat": "csv",
- "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "caption",
- "type": "array",
- "x-example": "climate change"
- },
- {
- "collectionFormat": "csv",
- "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "concept",
- "type": "array",
- "x-example": "/M/0d063v"
- },
- {
- "collectionFormat": "csv",
- "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "onscreen_text",
- "type": "array",
- "x-example": "breaking news"
- },
- {
- "collectionFormat": "csv",
- "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "visual",
- "type": "array",
- "x-example": "flood"
- },
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_transcript",
- "type": "array",
- "x-example": "campaign ad"
- },
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_caption",
- "type": "array",
- "x-example": "sanders"
- },
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_concept",
- "type": "array",
- "x-example": "/M/081pw"
- },
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_onscreen_text",
- "type": "array",
- "x-example": "sponsored"
- },
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_visual",
- "type": "array",
- "x-example": "advertisement"
- },
- {
- "description": "Station to search.",
- "enum": [
- "CNN",
- "MSNBC",
- "FOXNEWS",
- "BBCNEWS",
- "KGO",
- "KPIX",
- "KNTV"
- ],
+ "description": "Grubhub restaurant id",
"in": "query",
- "name": "station",
+ "name": "restaurant_id",
"required": true,
"type": "string",
- "x-example": "CNN"
- },
- {
- "description": "Limit to an exact show name.",
- "in": "query",
- "name": "show",
- "type": "string",
- "x-example": "Inside Politics"
- },
- {
- "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. Omit both for GDELT's full archive (auto-resolution, back to July 6, 2010).",
- "in": "query",
- "name": "timespan",
- "type": "string",
- "x-example": "30d"
+ "x-example": "1338141"
},
{
- "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "description": "Diner location latitude",
"in": "query",
- "name": "from",
- "type": "string",
- "x-example": "2026-07-01"
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 40.7128
},
{
- "description": "End of an absolute time window. Same formats as from.",
+ "description": "Diner location longitude",
"in": "query",
- "name": "to",
- "type": "string",
- "x-example": "2026-08-19"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -74.006
}
],
"produces": [
@@ -275643,7 +305086,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.tvTimelineResponseDoc"
+ "$ref": "#/definitions/grubhub.offersResponseDoc"
}
},
"400": {
@@ -275652,8 +305095,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -275670,28 +305119,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Airtime volume over time for US television news coverage",
+ "summary": "Get one Grubhub restaurant's currently active promotions",
"tags": [
- "GDELT"
+ "Grubhub"
]
}
},
- "/gdelt/tv-visual-entities": {
+ "/grubhub/restaurant": {
"get": {
"consumes": [
"application/json"
],
- "description": "Return GDELT's own catalog of computer-vision object/activity",
- "operationId": "gdelt-tv-visual-entities",
+ "description": "Returns one Grubhub restaurant: name, address with coordinates, timezone, phone, cuisines, star rating, price tier, whether online ordering is available, whether it offers delivery and pickup, delivery fee, coupon availability, restaurant tags and the full published week of service hours. Note this endpoint publishes fewer economics than GET /grubhub/search -- delivery minimum and the delivery/pickup time estimates come back empty here, so use the search endpoint when you need those.",
+ "operationId": "grubhub-restaurant",
"parameters": [
{
- "default": 100,
- "description": "Maximum entries to return, most-frequent first.",
+ "description": "Grubhub's numeric restaurant id, from /grubhub/search",
"in": "query",
- "maximum": 10000,
- "minimum": 1,
- "name": "limit",
- "type": "integer"
+ "name": "restaurant_id",
+ "required": true,
+ "type": "string",
+ "x-example": "6238960"
}
],
"produces": [
@@ -275701,7 +305149,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.tvVisualEntityDetailsResponseDoc"
+ "$ref": "#/definitions/grubhub.restaurantResponseDoc"
}
},
"400": {
@@ -275710,8 +305158,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -275728,196 +305182,122 @@
"ApiKeyAuth": []
}
],
- "summary": "List GDELT Television 2.0 AI visual entities",
+ "summary": "Get one Grubhub restaurant's detail",
"tags": [
- "GDELT"
+ "Grubhub"
]
}
},
- "/gdelt/tv-wordcloud": {
+ "/grubhub/restaurant/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Return a frequency-ranked word/label cloud for one match",
- "operationId": "gdelt-tv-wordcloud",
+ "description": "Returns one restaurant's full menu grouped into categories. Every item carries a base price, a delivery price and a pickup price, which genuinely differ, plus a min and max price bounding items whose price varies with the options chosen. Items also carry a description, a popularity flag, availability, tags and an image. Amounts are given both in minor units (cents) and as a decimal value.",
+ "operationId": "grubhub-restaurant-menu",
"parameters": [
{
- "description": "Required. Which match channel to build a word cloud from.",
- "enum": [
- "transcript",
- "caption",
- "concept",
- "onscreen_text",
- "visual"
- ],
+ "description": "Grubhub's numeric restaurant id, from /grubhub/search",
"in": "query",
- "name": "channel",
+ "name": "restaurant_id",
"required": true,
"type": "string",
- "x-example": "caption"
- },
- {
- "collectionFormat": "csv",
- "description": "Search machine-generated speech-to-text transcripts (GDELT's asr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "transcript",
- "type": "array",
- "x-example": "climate change"
- },
- {
- "collectionFormat": "csv",
- "description": "Search human-provided closed captioning (GDELT's cap: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "caption",
- "type": "array",
- "x-example": "trump"
- },
- {
- "collectionFormat": "csv",
- "description": "Search Google Knowledge Graph concepts extracted from captioning, by MID code (GDELT's capnlp: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "concept",
- "type": "array",
- "x-example": "/M/0d063v"
- },
- {
- "collectionFormat": "csv",
- "description": "Search OCR'd onscreen text/chyrons (GDELT's ocr: operator). Repeatable; multiple values are OR'd together. Short phrases only (GDELT caps each at 5 words).",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "onscreen_text",
- "type": "array",
- "x-example": "breaking news"
- },
- {
- "collectionFormat": "csv",
- "description": "Search visual object/activity labels from computer vision (GDELT's visual: operator). Repeatable; multiple values are OR'd together.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "visual",
- "type": "array",
- "x-example": "flood"
+ "x-example": "6238960"
},
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose speech-to-text transcript matches this value (GDELT's -asr: operator). Repeatable; every value must be absent.",
+ "description": "Include items the restaurant currently has unavailable (default false)",
"in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_transcript",
- "type": "array",
- "x-example": "campaign ad"
+ "name": "include_unavailable",
+ "type": "boolean",
+ "x-example": true
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/grubhub.menuResponseDoc"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose closed captioning matches this value (GDELT's -cap: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_caption",
- "type": "array",
- "x-example": "sanders"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose extracted concepts match this MID code (GDELT's -capnlp: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_concept",
- "type": "array",
- "x-example": "/M/081pw"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "collectionFormat": "csv",
- "description": "Exclude clips whose OCR'd onscreen text matches this value (GDELT's -ocr: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_onscreen_text",
- "type": "array",
- "x-example": "sponsored"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "collectionFormat": "csv",
- "description": "Exclude clips whose visual labels match this value (GDELT's -visual: operator). Repeatable; every value must be absent.",
- "in": "query",
- "items": {
- "type": "string"
- },
- "name": "exclude_visual",
- "type": "array",
- "x-example": "advertisement"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get one Grubhub restaurant's menu with prices",
+ "tags": [
+ "Grubhub"
+ ]
+ }
+ },
+ "/grubhub/restaurant/reviews": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one restaurant's customer reviews plus its 1-5 star rating histogram. Each review carries the star rating, the written body, the reviewer's display name and how many reviews they have written, the review date, Grubhub's own sentiment classification, the diner type, and the specific menu items the review is attached to -- Grubhub ties each review to what the diner actually ordered. sort accepts `timeCreated_desc` (most recent, the default) and `ratingValue_desc` (highest rated). Note the written-review corpus and the headline rating shown in search are separate systems upstream, so a restaurant can report a large rating count in search while returning few or no written reviews here.",
+ "operationId": "grubhub-restaurant-reviews",
+ "parameters": [
{
- "description": "Required. Station to search.",
- "enum": [
- "CNN",
- "MSNBC",
- "FOXNEWS",
- "BBCNEWS",
- "KGO",
- "KPIX",
- "KNTV"
- ],
+ "description": "Grubhub's numeric restaurant id, from /grubhub/search",
"in": "query",
- "name": "station",
+ "name": "restaurant_id",
"required": true,
"type": "string",
- "x-example": "CNN"
- },
- {
- "description": "Limit to an exact show name.",
- "in": "query",
- "name": "show",
- "type": "string",
- "x-example": "Inside Politics"
- },
- {
- "description": "Limit to a day of week, 0 (Sunday) through 7 (Saturday), PST.",
- "in": "query",
- "name": "day_of_week",
- "type": "string",
- "x-example": "1"
+ "x-example": "6238960"
},
{
- "description": "Relative time window ending now, e.g. 1h, 7d, 3m, 1y. Cannot be combined with from/to. GDELT's TV archive starts July 6, 2010.",
+ "description": "Reviews per page, 1-50 (default 20)",
"in": "query",
- "name": "timespan",
- "type": "string",
- "x-example": "7d"
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 20
},
{
- "description": "Start of an absolute time window. Accepts YYYY-MM-DD, RFC3339, or GDELT's raw YYYYMMDDHHMMSS. Cannot be combined with timespan.",
+ "description": "1-based page number (default 1)",
"in": "query",
- "name": "from",
- "type": "string",
- "x-example": "2026-08-01"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "End of an absolute time window. Same formats as from.",
+ "description": "One of timeCreated_desc, ratingValue_desc. Default timeCreated_desc.",
+ "enum": [
+ "timeCreated_desc",
+ "ratingValue_desc"
+ ],
"in": "query",
- "name": "to",
+ "name": "sort",
"type": "string",
- "x-example": "2026-08-19"
+ "x-example": "timeCreated_desc"
}
],
"produces": [
@@ -275927,7 +305307,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gdelt.tvWordCloudResponseDoc"
+ "$ref": "#/definitions/grubhub.reviewsResponseDoc"
}
},
"400": {
@@ -275936,8 +305316,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -275954,50 +305340,67 @@
"ApiKeyAuth": []
}
],
- "summary": "Word cloud for US television news coverage",
+ "summary": "Get one Grubhub restaurant's reviews and rating histogram",
"tags": [
- "GDELT"
+ "Grubhub"
]
}
},
- "/geocoding/lookup": {
+ "/grubhub/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns typed Nominatim JSONv2 places for comma-separated OSM ids such as W34633854,N123,R456.",
- "operationId": "geocoding-lookup",
+ "description": "Returns restaurants delivering to (or offering pickup at) a latitude/longitude, optionally filtered by keyword over restaurant names, cuisines and dishes. Each restaurant carries its id (the value every other Grubhub endpoint takes), name, full address with coordinates, phone, cuisines, star rating and rating count, Grubhub's 1-4 price tier, distance, open state, delivery and pickup fees and minimums, service fee, delivery and pickup time estimates, coupon availability and total menu item count. A location Grubhub does not serve returns an empty list rather than an error.",
+ "operationId": "grubhub-search",
"parameters": [
{
- "description": "Comma-separated OSM ids such as W34633854,N123,R456",
+ "description": "Search center latitude",
"in": "query",
- "name": "osm_ids",
+ "name": "latitude",
"required": true,
- "type": "string"
+ "type": "number",
+ "x-example": 40.7128
},
{
- "description": "Preferred result language, forwarded to Nominatim",
+ "description": "Search center longitude",
"in": "query",
- "name": "accept_language",
- "type": "string"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -74.006
},
{
- "description": "Include address details, defaults to true",
+ "description": "Keyword over restaurant names, cuisines and dishes",
"in": "query",
- "name": "addressdetails",
- "type": "boolean"
+ "name": "search",
+ "type": "string",
+ "x-example": "pizza"
},
{
- "description": "Include OSM extra tags",
+ "description": "One of delivery, pickup. Default delivery.",
+ "enum": [
+ "delivery",
+ "pickup"
+ ],
"in": "query",
- "name": "extratags",
- "type": "boolean"
+ "name": "order_method",
+ "type": "string",
+ "x-example": "delivery"
+ },
+ {
+ "description": "Restaurants per page, 1-50 (default 20)",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 20
},
{
- "description": "Include multilingual name details",
+ "description": "1-based page number (default 1)",
"in": "query",
- "name": "namedetails",
- "type": "boolean"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -276007,7 +305410,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/geocoding.lookupResponseDoc"
+ "$ref": "#/definitions/grubhub.searchResponseDoc"
}
},
"400": {
@@ -276022,8 +305425,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "502": {
- "description": "Bad Gateway",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -276040,63 +305443,62 @@
"ApiKeyAuth": []
}
],
- "summary": "Lookup Nominatim OSM ids",
+ "summary": "Search Grubhub restaurants near a location",
"tags": [
- "Geocoding"
+ "Grubhub"
]
}
},
- "/geocoding/reverse": {
+ "/grubhub/timepicker": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the nearest typed Nominatim JSONv2 place for latitude and longitude.",
- "operationId": "geocoding-reverse",
+ "description": "Returns every future delivery or pickup time slot Grubhub will accept an order for, up to 7 days ahead. This is what powers the site's own \"schedule my order\" picker: `/grubhub/availability` tells you whether a restaurant is orderable right now plus one \"next\" time, while this returns the full future slot calendar a caller would need to build an actual date-and-time picker. Slots are grouped by date and given as full timestamps carrying the restaurant's real UTC offset for that instant, so a caller never has to resolve daylight-saving transitions themselves. Requesting `location_mode=DELIVERY` returns delivery slots only; `PICKUP` returns pickup slots only -- the upstream only computes one side per call.",
+ "operationId": "grubhub-timepicker",
"parameters": [
{
- "description": "Latitude",
+ "description": "Grubhub restaurant id",
"in": "query",
- "name": "lat",
+ "name": "restaurant_id",
"required": true,
- "type": "number"
+ "type": "string",
+ "x-example": "698307"
},
{
- "description": "Longitude",
+ "description": "Diner location latitude",
"in": "query",
- "name": "lon",
+ "name": "latitude",
"required": true,
- "type": "number"
- },
- {
- "description": "Nominatim address zoom, defaults to 18",
- "in": "query",
- "name": "zoom",
- "type": "integer"
- },
- {
- "description": "Preferred result language, forwarded to Nominatim",
- "in": "query",
- "name": "accept_language",
- "type": "string"
+ "type": "number",
+ "x-example": 40.7128
},
{
- "description": "Include address details, defaults to true",
+ "description": "Diner location longitude",
"in": "query",
- "name": "addressdetails",
- "type": "boolean"
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -74.006
},
{
- "description": "Include OSM extra tags",
+ "description": "Which slot grid to return",
+ "enum": [
+ "DELIVERY",
+ "PICKUP"
+ ],
"in": "query",
- "name": "extratags",
- "type": "boolean"
+ "name": "location_mode",
+ "required": true,
+ "type": "string",
+ "x-example": "DELIVERY"
},
{
- "description": "Include multilingual name details",
+ "description": "How many days ahead to fetch, 1-7 (default 7)",
"in": "query",
- "name": "namedetails",
- "type": "boolean"
+ "name": "days",
+ "type": "integer",
+ "x-example": 7
}
],
"produces": [
@@ -276106,7 +305508,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/geocoding.reverseResponseDoc"
+ "$ref": "#/definitions/grubhub.timepickerResponseDoc"
}
},
"400": {
@@ -276121,8 +305523,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "502": {
- "description": "Bad Gateway",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -276139,97 +305541,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Reverse geocode coordinates",
+ "summary": "Get one Grubhub restaurant's future orderable time-slot calendar",
"tags": [
- "Geocoding"
+ "Grubhub"
]
}
},
- "/geocoding/search": {
+ "/guardian/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns typed Nominatim JSONv2 forward geocoding results. Use either q or structured fields, not both.",
- "operationId": "geocoding-search",
+ "description": "Returns a Guardian article's public metadata and body paragraphs from a canonical article URL. Live-blog timelines are not supported.",
+ "operationId": "guardian-article",
"parameters": [
{
- "description": "Free-text search query",
- "in": "query",
- "name": "q",
- "type": "string"
- },
- {
- "description": "Structured street or house number",
- "in": "query",
- "name": "street",
- "type": "string"
- },
- {
- "description": "Structured city",
- "in": "query",
- "name": "city",
- "type": "string"
- },
- {
- "description": "Structured county",
- "in": "query",
- "name": "county",
- "type": "string"
- },
- {
- "description": "Structured state",
- "in": "query",
- "name": "state",
- "type": "string"
- },
- {
- "description": "Structured country",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "description": "Structured postal code",
- "in": "query",
- "name": "postalcode",
- "type": "string"
- },
- {
- "description": "Maximum results, defaults to 10 and clamps to 20",
- "in": "query",
- "name": "limit",
- "type": "integer"
- },
- {
- "description": "Comma-separated ISO 3166-1 alpha-2 country filters",
- "in": "query",
- "name": "countrycodes",
- "type": "string"
- },
- {
- "description": "Preferred result language, forwarded to Nominatim",
- "in": "query",
- "name": "accept_language",
- "type": "string"
- },
- {
- "description": "Include address details, defaults to true",
- "in": "query",
- "name": "addressdetails",
- "type": "boolean"
- },
- {
- "description": "Include OSM extra tags",
- "in": "query",
- "name": "extratags",
- "type": "boolean"
- },
- {
- "description": "Include multilingual name details",
+ "description": "Canonical www.theguardian.com article URL",
"in": "query",
- "name": "namedetails",
- "type": "boolean"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.theguardian.com/world/2026/aug/26/us-military-kills-four-boat-strike-caribbean"
}
],
"produces": [
@@ -276239,7 +305568,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/geocoding.searchResponseDoc"
+ "$ref": "#/definitions/guardian.articleResponseDoc"
}
},
"400": {
@@ -276254,8 +305583,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "502": {
- "description": "Bad Gateway",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -276272,34 +305601,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Nominatim places",
+ "summary": "Get Guardian article content",
"tags": [
- "Geocoding"
+ "Guardian"
]
}
},
- "/ghanaweb/archive": {
+ "/guardian/author": {
"get": {
- "description": "Returns paginated canonical article URLs from one month sitemap. Discover accepted month values from ghanaweb-archive-months; the service only fetches child sitemap URLs derived from that official index.",
- "operationId": "ghanaweb-archive",
+ "description": "Returns one Guardian contributor's public profile: name, bio, Twitter handle, byline image, and one page of their recent articles. Provide either the contributor's profile slug or the full profile page URL.",
+ "operationId": "guardian-author",
"parameters": [
{
- "description": "A YYYYMM value returned by ghanaweb-archive-months",
+ "description": "Guardian contributor profile slug, e.g. hannah-devlin",
"in": "query",
- "name": "month",
- "required": true,
- "type": "string"
+ "name": "slug",
+ "type": "string",
+ "x-example": "hannah-devlin"
},
{
- "description": "Page number (default 1)",
+ "description": "Canonical https://www.theguardian.com/profile/ page URL, as an alternative to slug",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.theguardian.com/profile/hannah-devlin"
},
{
- "description": "Items per page, 1–100 (default 50)",
+ "default": 1,
+ "description": "1-based article-history page, 1 to 100, defaults to 1",
"in": "query",
- "name": "limit",
+ "maximum": 100,
+ "minimum": 1,
+ "name": "page",
"type": "integer"
}
],
@@ -276310,7 +305643,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.ghanawebArchiveResponseDoc"
+ "$ref": "#/definitions/guardian.authorResponseDoc"
}
},
"400": {
@@ -276325,6 +305658,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -276337,16 +305676,38 @@
"ApiKeyAuth": []
}
],
- "summary": "List GhanaWeb archive article URLs",
+ "summary": "Get Guardian contributor profile",
"tags": [
- "GhanaWeb"
+ "Guardian"
]
}
},
- "/ghanaweb/archive/months": {
+ "/guardian/headlines": {
"get": {
- "description": "Returns every YYYYMM month currently advertised by GhanaWeb's official article-sitemap index. Use one of these values with ghanaweb-archive.",
- "operationId": "ghanaweb-archive-months",
+ "description": "Returns fresh headlines from a public Guardian RSS section. section defaults to world.",
+ "operationId": "guardian-headlines",
+ "parameters": [
+ {
+ "description": "Guardian RSS section, defaults to world",
+ "enum": [
+ "world",
+ "uk-news",
+ "us-news",
+ "politics",
+ "business",
+ "technology",
+ "environment",
+ "science",
+ "sport",
+ "culture",
+ "lifeandstyle",
+ "commentisfree"
+ ],
+ "in": "query",
+ "name": "section",
+ "type": "string"
+ }
+ ],
"produces": [
"application/json"
],
@@ -276354,7 +305715,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.ghanawebArchiveMonthsResponseDoc"
+ "$ref": "#/definitions/guardian.headlinesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -276369,23 +305748,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Discover GhanaWeb archive months",
+ "summary": "Get Guardian section headlines",
"tags": [
- "GhanaWeb"
+ "Guardian"
]
}
},
- "/ghanaweb/article": {
+ "/guardian/live": {
"get": {
- "description": "Returns public article metadata and readable body paragraphs. GhanaWeb's JSON-LD identifies the publisher rather than person authors, so authors are omitted.",
- "operationId": "ghanaweb-article",
+ "description": "Returns a bounded text snapshot of one public Guardian live blog: the headline, the key-events timeline, and the update blocks with timestamps, headings, bylines, and body paragraphs. This is a single page fetch of the public page at a canonical live-blog URL — not a live stream or polling feed. URLs must use the dated www.theguardian.com section /live/ path, e.g. https://www.theguardian.com/sport/live/2026/aug/08//.",
+ "operationId": "guardian-live",
"parameters": [
{
- "description": "Canonical GhanaWeb article URL ending in its numeric story ID",
+ "description": "Canonical www.theguardian.com live-blog URL",
"in": "query",
"name": "url",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "https://www.theguardian.com/sport/live/2026/aug/08/japan-vs-australia-live-updates-wallabies-nations-championship-rugby-union"
}
],
"produces": [
@@ -276395,7 +305775,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/guardian.liveResponseDoc"
}
},
"400": {
@@ -276404,6 +305784,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -276416,40 +305808,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GhanaWeb article content",
+ "summary": "Get Guardian live blog snapshot",
"tags": [
- "GhanaWeb"
+ "Guardian"
]
}
},
- "/ghanaweb/headlines": {
+ "/guardian/topic": {
"get": {
- "description": "Returns article cards from a verified GhanaWeb section page.",
- "operationId": "ghanaweb-headlines",
+ "description": "Returns the stories on a public Guardian tag archive (20 per page, newest first, with total pages and results) or section front (a single curated page, is_front true). topic is a Guardian tag or section slug and page defaults to 1. resolved_topic reports the path actually served, which differs for edition-scoped fronts.",
+ "operationId": "guardian-topic",
"parameters": [
{
- "description": "Section slug from ghanaweb-sections",
- "enum": [
- "news",
- "sports",
- "business",
- "entertainment",
- "africa",
- "opinions",
- "editorial",
- "crime",
- "regional",
- "health",
- "politics",
- "tabloid",
- "world",
- "lifestyle",
- "features"
- ],
+ "description": "Guardian tag or section slug",
"in": "query",
- "name": "section",
+ "name": "topic",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "world"
+ },
+ {
+ "default": 1,
+ "description": "1-based archive page, 1 to 100, defaults to 1",
+ "in": "query",
+ "maximum": 100,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -276459,7 +305844,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/guardian.topicResponseDoc"
}
},
"400": {
@@ -276468,6 +305853,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -276480,16 +305877,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GhanaWeb section headlines",
+ "summary": "Get Guardian topic archive",
"tags": [
- "GhanaWeb"
+ "Guardian"
]
}
},
- "/ghanaweb/news": {
+ "/gucci/categories": {
"get": {
- "description": "Returns GhanaWeb's current public stories from its Google News sitemap, including canonical URL, headline, and publication time.",
- "operationId": "ghanaweb-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Gucci's full department/category/subcategory taxonomy, sourced directly from the site's own header navigation menu. Each entry's category value is exactly what gucci-category's own category parameter accepts. Filter to one department with department (e.g. women, men); omit for every department -- see the response's own departments field for the live list of top-level department labels to filter by.",
+ "operationId": "gucci-categories",
+ "parameters": [
+ {
+ "description": "Department label to filter to (case-insensitive substring match against the response's own departments field), e.g. women, men. Omit for every department.",
+ "in": "query",
+ "name": "department",
+ "type": "string",
+ "x-example": "women"
+ }
+ ],
"produces": [
"application/json"
],
@@ -276497,7 +305906,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/gucci.categoriesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -276518,16 +305933,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GhanaWeb latest stories",
+ "summary": "List Gucci's category and subcategory taxonomy",
"tags": [
- "GhanaWeb"
+ "Gucci"
]
}
},
- "/ghanaweb/sections": {
+ "/gucci/category": {
"get": {
- "description": "Returns the complete verified article-bearing section set accepted by ghanaweb-headlines. Static, media, and non-article destinations are excluded.",
- "operationId": "ghanaweb-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Gucci category/browse listing: normalized products (name, price, colors, images, stock) plus the upstream's own product count, page count, sibling-category counts, and sort options. category comes from gucci-categories' own category field. page selects how many of the upstream's own batches to accumulate -- Gucci's own category pages page this way: requesting page=N returns every product from page 1 through page N combined (its own \"Load All\" button simply requests the last page), not a single page's worth. Defaults to 1 (the upstream's own first batch, 36 products); request page equal to the response's own pages_count to fetch a category's complete listing in one call.",
+ "operationId": "gucci-category",
+ "parameters": [
+ {
+ "description": "Category path from gucci-categories' own category field",
+ "in": "query",
+ "name": "category",
+ "required": true,
+ "type": "string",
+ "x-example": "women/handbags-c-women-handbags"
+ },
+ {
+ "description": "How many of the upstream's own batches to accumulate, defaults to 1 (see description)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ }
+ ],
"produces": [
"application/json"
],
@@ -276535,7 +305970,31 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/gucci.categoryResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -276544,23 +306003,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GhanaWeb article sections",
+ "summary": "Browse a Gucci category listing",
"tags": [
- "GhanaWeb"
+ "Gucci"
]
}
},
- "/ghanaweb/video": {
+ "/gucci/product": {
"get": {
- "description": "Returns public GhanaWeb TV metadata and the page's YouTube embed URL. The media itself is not retrieved.",
- "operationId": "ghanaweb-video",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns full normalized product detail for one style: name, marketing description, breadcrumb trail, brand line, gender, colors, materials, sizes, price, images, and stock -- combining Gucci's own structured product record with the product page's own marketing copy. style_code comes from gucci-search's or gucci-category's own style_code field.",
+ "operationId": "gucci-product",
"parameters": [
{
- "description": "Numeric GhanaWeb TV video ID",
+ "description": "Product style code, from gucci-search's or gucci-category's own style_code field",
"in": "query",
- "name": "id",
+ "name": "style_code",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "A005Y8AAG231096"
}
],
"produces": [
@@ -276570,7 +306033,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.ghanawebVideoResponseDoc"
+ "$ref": "#/definitions/gucci.productResponseDoc"
}
},
"400": {
@@ -276585,6 +306048,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -276597,16 +306066,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GhanaWeb TV video metadata",
+ "summary": "Get a Gucci product",
"tags": [
- "GhanaWeb"
+ "Gucci"
]
}
},
- "/ghanaweb/video-sections": {
+ "/gucci/recommendations": {
"get": {
- "description": "Returns the complete four-value video category set accepted by ghanaweb-videos.",
- "operationId": "ghanaweb-video-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Gucci recommendations shelf: normalized product summaries (name, price, image, stock) from either a given product's own \"You May Also Like\" carousel (style_code set) or the site's general trending-items shelf (style_code omitted). style_code comes from gucci-search's or gucci-category's own style_code field.",
+ "operationId": "gucci-recommendations",
+ "parameters": [
+ {
+ "description": "Product style code to get related items for; omit for the site's general trending-items shelf instead",
+ "in": "query",
+ "name": "style_code",
+ "type": "string",
+ "x-example": "A005Y8AAG231096"
+ },
+ {
+ "description": "Maximum products to return, defaults to 10, maximum 20",
+ "in": "query",
+ "name": "max",
+ "type": "integer",
+ "x-example": 10
+ }
+ ],
"produces": [
"application/json"
],
@@ -276614,7 +306102,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.ghanawebVideoSectionsResponseDoc"
+ "$ref": "#/definitions/gucci.recommendationsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -276623,29 +306129,48 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GhanaWeb TV video sections",
+ "summary": "Gucci product recommendations",
"tags": [
- "GhanaWeb"
+ "Gucci"
]
}
},
- "/ghanaweb/videos": {
+ "/gucci/search": {
"get": {
- "description": "Returns current public video cards for one GhanaWeb TV category, including metadata and a canonical detail URL. This endpoint does not retrieve video media.",
- "operationId": "ghanaweb-videos",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Gucci's product catalog by keyword: normalized product summaries (name, price, colors, materials, sizes, gender, stock) with the search index's own live total result count. A genuinely empty result (e.g. a nonsense query) returns a well-formed empty products list, not an error. The response's own size_facets field lists every size value present in the result set (with live counts) -- pass one of those values as size on a follow-up call to filter to just that size.",
+ "operationId": "gucci-search",
"parameters": [
{
- "description": "Video category from ghanaweb-video-sections",
- "enum": [
- "news",
- "sports",
- "business",
- "entertainment"
- ],
+ "description": "Search keyword",
"in": "query",
- "name": "section",
+ "name": "q",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "belt"
+ },
+ {
+ "description": "One-based page number, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Results per page, defaults to 24, maximum 100",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 24
+ },
+ {
+ "description": "Filter to products listing this exact size as available (e.g. \\",
+ "in": "query",
+ "name": "size",
+ "type": "string",
+ "x-example": "9 = 9.5 US"
}
],
"produces": [
@@ -276655,7 +306180,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.ghanawebVideosResponseDoc"
+ "$ref": "#/definitions/gucci.searchResponseDoc"
}
},
"400": {
@@ -276664,6 +306189,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -276676,26 +306207,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List GhanaWeb TV videos",
+ "summary": "Search Gucci's product catalog",
"tags": [
- "GhanaWeb"
+ "Gucci"
]
}
},
- "/github/org/{org}": {
+ "/gucci/size-guide": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a public GitHub organization profile (company-side enrichment).",
- "operationId": "github-org",
+ "description": "Returns Gucci's own size-conversion chart for one product style, as a plain header row plus data rows. Not every style carries one -- a one-size accessory (a bag, a scarf) returns available: false with no headers/rows, a well-formed signal rather than an error. style_code comes from gucci-search's or gucci-category's own style_code field.",
+ "operationId": "gucci-size-guide",
"parameters": [
{
- "description": "GitHub organization login",
- "in": "path",
- "name": "org",
+ "description": "Product style code",
+ "in": "query",
+ "name": "style_code",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "757892AACAG9055"
}
],
"produces": [
@@ -276703,25 +306235,25 @@
],
"responses": {
"200": {
- "description": "Wrapped organization profile",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/gucci.sizeGuideResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Organization not found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -276732,73 +306264,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve a GitHub organization profile",
+ "summary": "Gucci product size chart",
"tags": [
- "GitHub"
+ "Gucci"
]
}
},
- "/github/org/{org}/repos": {
+ "/gucci/store": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of an organization's public repositories (company tech stack).",
- "operationId": "github-org-repos",
+ "description": "Returns one Gucci store's full detail: name, phone, address, opening hours, and photos. slug comes from gucci-stores' own slug field.",
+ "operationId": "gucci-store",
"parameters": [
{
- "description": "GitHub organization login",
- "in": "path",
- "name": "org",
- "required": true,
- "type": "string"
- },
- {
- "description": "Sort field",
- "enum": [
- "created",
- "updated",
- "pushed",
- "full_name"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort direction",
- "enum": [
- "asc",
- "desc"
- ],
- "in": "query",
- "name": "direction",
- "type": "string"
- },
- {
- "description": "Repository type",
- "enum": [
- "all",
- "public",
- "forks",
- "sources",
- "member"
- ],
- "in": "query",
- "name": "type",
- "type": "string"
- },
- {
- "description": "Page number",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page (max 100)",
+ "description": "Store slug, from gucci-stores' own slug field",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "900-north-michigan-avenue"
}
],
"produces": [
@@ -276806,19 +306292,31 @@
],
"responses": {
"200": {
- "description": "Wrapped repository list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/gucci.storeResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -276829,33 +306327,26 @@
"ApiKeyAuth": []
}
],
- "summary": "List a GitHub organization's public repositories",
+ "summary": "Get a Gucci store's detail",
"tags": [
- "GitHub"
+ "Gucci"
]
}
},
- "/github/repo/{owner}/{repo}": {
+ "/gucci/stores": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public detail for a single repository (the core project object).",
- "operationId": "github-repo",
+ "description": "Returns Gucci's full US store-locator listing: name, address, phone, coordinates, product departments carried, and a link to book an in-store appointment for each location. Filter to stores carrying one department with department (e.g. jewelry, mens_shoes); omit for every store -- see the response's own departments field for the live list of department tags to filter by.",
+ "operationId": "gucci-stores",
"parameters": [
{
- "description": "Repository owner (user or org login)",
- "in": "path",
- "name": "owner",
- "required": true,
- "type": "string"
- },
- {
- "description": "Repository name",
- "in": "path",
- "name": "repo",
- "required": true,
- "type": "string"
+ "description": "Department tag to filter to (case-insensitive substring match against the response's own departments field), e.g. jewelry, mens_shoes. Omit for every store.",
+ "in": "query",
+ "name": "department",
+ "type": "string",
+ "x-example": "jewelry"
}
],
"produces": [
@@ -276863,25 +306354,25 @@
],
"responses": {
"200": {
- "description": "Wrapped repository detail",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/gucci.storesResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Repository not found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -276892,45 +306383,82 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve a GitHub repository",
+ "summary": "List Gucci store locations",
"tags": [
- "GitHub"
+ "Gucci"
]
}
},
- "/github/repo/{owner}/{repo}/contributors": {
+ "/gucci/stores/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of a repository's contributors (who builds a project).",
- "operationId": "github-repo-contributors",
+ "description": "Searches Gucci's public store-map GeoJSON feed for locations inside the requested viewport. market selects the storefront locale and localized labels; it does not filter results by country. The supported, live-verified market values are ca (English), fr (French), jp (Japanese), uk (English), and us (English). Coordinates and viewport bounds determine the returned stores. The Gucci site's text field geocodes in the browser and its name parameter does not filter this feed, so callers must provide bounds and a center (geocode a place before calling). Dateline-crossing bounds are not supported.",
+ "operationId": "gucci-store-search",
"parameters": [
{
- "description": "Repository owner (user or org login)",
- "in": "path",
- "name": "owner",
+ "description": "Gucci storefront locale; controls localization only, not geographic filtering",
+ "enum": [
+ "ca",
+ "fr",
+ "jp",
+ "uk",
+ "us"
+ ],
+ "in": "query",
+ "name": "market",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "us"
},
{
- "description": "Repository name",
- "in": "path",
- "name": "repo",
+ "description": "Viewport northern latitude",
+ "in": "query",
+ "name": "north",
"required": true,
- "type": "string"
+ "type": "number",
+ "x-example": 40.917705
},
{
- "description": "Page number",
+ "description": "Viewport western longitude",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "west",
+ "required": true,
+ "type": "number",
+ "x-example": -74.258843
},
{
- "description": "Results per page (max 100)",
+ "description": "Viewport southern latitude",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "south",
+ "required": true,
+ "type": "number",
+ "x-example": 40.476578
+ },
+ {
+ "description": "Viewport eastern longitude",
+ "in": "query",
+ "name": "east",
+ "required": true,
+ "type": "number",
+ "x-example": -73.700169
+ },
+ {
+ "description": "Viewport center latitude",
+ "in": "query",
+ "name": "latitude",
+ "required": true,
+ "type": "number",
+ "x-example": 40.7127753
+ },
+ {
+ "description": "Viewport center longitude",
+ "in": "query",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -74.0059728
}
],
"produces": [
@@ -276938,19 +306466,25 @@
],
"responses": {
"200": {
- "description": "Wrapped contributor list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/gucci.storeSearchResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -276961,57 +306495,34 @@
"ApiKeyAuth": []
}
],
- "summary": "List a repository's contributors",
+ "summary": "Search Gucci stores in a map viewport",
"tags": [
- "GitHub"
+ "Gucci"
]
}
},
- "/github/repo/{owner}/{repo}/forks": {
+ "/gucci/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of a repository's public forks (adopter signal).",
- "operationId": "github-repo-forks",
+ "description": "Returns Gucci's own search-box typeahead suggestions for a partial query, each with its own live total result count on the search index. Not product data -- pass a suggestion's own query value straight into gucci-search for results.",
+ "operationId": "gucci-suggest",
"parameters": [
{
- "description": "Repository owner (user or org login)",
- "in": "path",
- "name": "owner",
- "required": true,
- "type": "string"
- },
- {
- "description": "Repository name",
- "in": "path",
- "name": "repo",
- "required": true,
- "type": "string"
- },
- {
- "description": "Sort order",
- "enum": [
- "newest",
- "oldest",
- "stargazers",
- "watchers"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Page number",
+ "description": "Partial search query",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "bel"
},
{
- "description": "Results per page (max 100)",
+ "description": "Maximum suggestions to return, defaults to 5, maximum 20",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 5
}
],
"produces": [
@@ -277019,19 +306530,25 @@
],
"responses": {
"200": {
- "description": "Wrapped fork list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/gucci.suggestResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277042,33 +306559,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List a repository's public forks",
+ "summary": "Gucci search-box suggestions",
"tags": [
- "GitHub"
+ "Gucci"
]
}
},
- "/github/repo/{owner}/{repo}/languages": {
+ "/gulfnews/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the language byte breakdown for a repository, sorted by bytes descending (tech fingerprint).",
- "operationId": "github-repo-languages",
+ "description": "Returns public Gulf News article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "gulfnews-article",
"parameters": [
{
- "description": "Repository owner (user or org login)",
- "in": "path",
- "name": "owner",
- "required": true,
- "type": "string"
- },
- {
- "description": "Repository name",
- "in": "path",
- "name": "repo",
+ "description": "Canonical Gulf News article URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "https://gulfnews.com/business/aviation/air-india-flydubai-tie-up-opens-52-more-destinations-via-dubai-1.500686930"
}
],
"produces": [
@@ -277076,19 +306584,25 @@
],
"responses": {
"200": {
- "description": "Wrapped language breakdown",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277099,45 +306613,105 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve a repository's language breakdown",
+ "summary": "Get Gulf News article content",
"tags": [
- "GitHub"
+ "Gulf News"
]
}
},
- "/github/repo/{owner}/{repo}/releases": {
+ "/gulfnews/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a page of a repository's releases (momentum/health signal).",
- "operationId": "github-repo-releases",
+ "description": "Returns one Gulf News author's public profile: name, job title, bio, and their recent articles.",
+ "operationId": "gulfnews-author",
"parameters": [
{
- "description": "Repository owner (user or org login)",
- "in": "path",
- "name": "owner",
- "required": true,
- "type": "string"
- },
- {
- "description": "Repository name",
- "in": "path",
- "name": "repo",
- "required": true,
- "type": "string"
+ "description": "Author slug, e.g. nathaniel-lacsina",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "nathaniel-lacsina"
},
{
- "description": "Page number",
+ "description": "Canonical gulfnews.com/author/ URL; alternative to slug",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "url",
+ "type": "string",
+ "x-example": "https://gulfnews.com/author/nathaniel-lacsina"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.gulfNewsAuthorResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Results per page (max 100)",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Gulf News author profile",
+ "tags": [
+ "Gulf News"
+ ]
+ }
+ },
+ "/gulfnews/headlines": {
+ "get": {
+ "description": "Returns fresh headlines from one public Gulf News section.",
+ "operationId": "gulfnews-headlines",
+ "parameters": [
+ {
+ "description": "Gulf News section slug",
+ "enum": [
+ "latest-news",
+ "business",
+ "best-buys",
+ "uae",
+ "entertainment",
+ "world",
+ "sport",
+ "living-in-uae",
+ "lifestyle",
+ "opinion",
+ "travel",
+ "podcasts",
+ "special-reports",
+ "things-to-do",
+ "friday",
+ "the-kurator",
+ "uae-success-stories",
+ "photos",
+ "your-money"
+ ],
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "latest-news"
}
],
"produces": [
@@ -277145,19 +306719,19 @@
],
"responses": {
"200": {
- "description": "Wrapped release list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277168,82 +306742,56 @@
"ApiKeyAuth": []
}
],
- "summary": "List a repository's releases",
+ "summary": "Get Gulf News section headlines",
"tags": [
- "GitHub"
+ "Gulf News"
]
}
},
- "/github/search/repositories": {
+ "/gulfnews/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches public GitHub repositories (market/competitive discovery). Unauthenticated search is rate limited to roughly 10 requests per minute.",
- "operationId": "github-search-repositories",
- "parameters": [
- {
- "description": "GitHub repository search query",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string"
- },
- {
- "description": "Sort field",
- "enum": [
- "stars",
- "forks",
- "help-wanted-issues",
- "updated"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort order",
- "enum": [
- "asc",
- "desc"
- ],
- "in": "query",
- "name": "order",
- "type": "string"
- },
- {
- "description": "Page number",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page (max 100)",
- "in": "query",
- "name": "per_page",
- "type": "integer"
- }
- ],
+ "description": "Returns fresh Gulf News stories from the public site-wide RSS feed.",
+ "operationId": "gulfnews-news",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "Wrapped repository search result",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "400": {
- "description": "Missing or invalid parameters",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Upstream error or rate limit",
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Gulf News top stories",
+ "tags": [
+ "Gulf News"
+ ]
+ }
+ },
+ "/gulfnews/sections": {
+ "get": {
+ "description": "Returns the public Gulf News editorial section inventory.",
+ "operationId": "gulfnews-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -277252,59 +306800,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Search public GitHub repositories",
+ "summary": "Get Gulf News sections",
"tags": [
- "GitHub"
+ "Gulf News"
]
}
},
- "/github/search/users": {
+ "/gymshark/collections": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches public GitHub users (developer discovery). Unauthenticated search is rate limited to roughly 10 requests per minute.",
- "operationId": "github-search-users",
+ "description": "Returns normalized collections from Gymshark (https://row.gymshark.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
+ "operationId": "gymshark-collections",
"parameters": [
{
- "description": "GitHub user search query",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string"
- },
- {
- "description": "Sort field",
- "enum": [
- "followers",
- "repositories",
- "joined"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort order",
- "enum": [
- "asc",
- "desc"
- ],
- "in": "query",
- "name": "order",
- "type": "string"
- },
- {
- "description": "Page number",
+ "description": "1-based page, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Results per page (max 100)",
+ "description": "Maximum collections, defaults to 50 and supports up to 250",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -277312,19 +306834,25 @@
],
"responses": {
"200": {
- "description": "Wrapped user search result",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277335,36 +306863,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Search public GitHub users",
+ "summary": "List Gymshark collections",
"tags": [
- "GitHub"
+ "Gymshark"
]
}
},
- "/github/trending": {
+ "/gymshark/collections/{handle}/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the repositories on GitHub's trending page (market discovery).",
- "operationId": "github-trending",
+ "description": "Returns normalized products from one Gymshark (https://row.gymshark.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
+ "operationId": "gymshark-collection-products",
"parameters": [
{
- "description": "Programming language filter (e.g. go, python)",
+ "description": "Collection handle",
+ "in": "path",
+ "name": "handle",
+ "required": true,
+ "type": "string",
+ "x-example": "collection-handle"
+ },
+ {
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "language",
- "type": "string"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Time window",
- "enum": [
- "daily",
- "weekly",
- "monthly"
- ],
+ "description": "Maximum products, defaults to 50 and supports up to 250",
"in": "query",
- "name": "since",
- "type": "string"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -277372,19 +306905,31 @@
],
"responses": {
"200": {
- "description": "Wrapped trending repository list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
}
},
"400": {
- "description": "Invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277395,36 +306940,33 @@
"ApiKeyAuth": []
}
],
- "summary": "List trending GitHub repositories",
+ "summary": "List Gymshark collection products",
"tags": [
- "GitHub"
+ "Gymshark"
]
}
},
- "/github/trending/developers": {
+ "/gymshark/pages": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the developers on GitHub's trending developers page (market discovery).",
- "operationId": "github-trending-developers",
+ "description": "Returns normalized static pages from Gymshark (https://row.gymshark.com). The storefront URL is fixed server-side.",
+ "operationId": "gymshark-pages",
"parameters": [
{
- "description": "Programming language filter (e.g. go, python)",
+ "description": "1-based page, defaults to 1",
"in": "query",
- "name": "language",
- "type": "string"
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Time window",
- "enum": [
- "daily",
- "weekly",
- "monthly"
- ],
+ "description": "Maximum static pages, defaults to 50 and supports up to 250",
"in": "query",
- "name": "since",
- "type": "string"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -277432,19 +306974,25 @@
],
"responses": {
"200": {
- "description": "Wrapped trending developer list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
}
},
"400": {
- "description": "Invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277455,26 +307003,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List trending GitHub developers",
+ "summary": "List Gymshark static pages",
"tags": [
- "GitHub"
+ "Gymshark"
]
}
},
- "/github/user/{username}": {
+ "/gymshark/pages/{handle}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a public GitHub user's profile plus user-published social links. Email is included only when the user has made it public on their profile.",
- "operationId": "github-user",
+ "description": "Returns normalized static page detail for one Gymshark (https://row.gymshark.com) page handle. The storefront URL is fixed server-side.",
+ "operationId": "gymshark-page",
"parameters": [
{
- "description": "GitHub username",
+ "description": "Page handle",
"in": "path",
- "name": "username",
+ "name": "handle",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "page-handle"
}
],
"produces": [
@@ -277482,25 +307031,31 @@
],
"responses": {
"200": {
- "description": "Wrapped user profile",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/shopifybrands.pageResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "User not found",
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277511,38 +307066,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve a GitHub user profile",
+ "summary": "Get a Gymshark static page",
"tags": [
- "GitHub"
+ "Gymshark"
]
}
},
- "/github/user/{username}/events": {
+ "/gymshark/products": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of a user's recent public events, normalized to type, repository, and timestamp (freshness signal).",
- "operationId": "github-user-events",
+ "description": "Returns normalized products from Gymshark's (https://row.gymshark.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
+ "operationId": "gymshark-products",
"parameters": [
{
- "description": "GitHub username",
- "in": "path",
- "name": "username",
- "required": true,
- "type": "string"
- },
- {
- "description": "Page number",
+ "description": "1-based page, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Results per page (max 100)",
+ "description": "Maximum products, defaults to 50 and supports up to 250",
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -277550,19 +307100,25 @@
],
"responses": {
"200": {
- "description": "Wrapped event list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/shopifybrands.productsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277573,38 +307129,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List a GitHub user's recent public activity",
+ "summary": "List Gymshark products",
"tags": [
- "GitHub"
+ "Gymshark"
]
}
},
- "/github/user/{username}/followers": {
+ "/gymshark/products/{handle}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of the public accounts following a GitHub user.",
- "operationId": "github-user-followers",
+ "description": "Returns normalized product detail for one Gymshark (https://row.gymshark.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
+ "operationId": "gymshark-product",
"parameters": [
{
- "description": "GitHub username",
+ "description": "Product handle",
"in": "path",
- "name": "username",
+ "name": "handle",
"required": true,
- "type": "string"
- },
- {
- "description": "Page number",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page (max 100)",
- "in": "query",
- "name": "per_page",
- "type": "integer"
+ "type": "string",
+ "x-example": "product-handle"
}
],
"produces": [
@@ -277612,19 +307157,31 @@
],
"responses": {
"200": {
- "description": "Wrapped follower list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/shopifybrands.productResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277635,38 +307192,45 @@
"ApiKeyAuth": []
}
],
- "summary": "List a GitHub user's followers",
+ "summary": "Get a Gymshark product",
"tags": [
- "GitHub"
+ "Gymshark"
]
}
},
- "/github/user/{username}/following": {
+ "/gymshark/products/{handle}/recommendations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of the public accounts a GitHub user follows.",
- "operationId": "github-user-following",
+ "description": "Returns normalized recommended products for one Gymshark (https://row.gymshark.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
+ "operationId": "gymshark-product-recommendations",
"parameters": [
{
- "description": "GitHub username",
+ "description": "Product handle",
"in": "path",
- "name": "username",
+ "name": "handle",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "product-handle"
},
{
- "description": "Page number",
+ "description": "Maximum products, defaults to 10 and supports up to 20",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
},
{
- "description": "Results per page (max 100)",
+ "description": "Recommendation intent. Allowed values: related, complementary",
+ "enum": [
+ "related",
+ "complementary"
+ ],
"in": "query",
- "name": "per_page",
- "type": "integer"
+ "name": "intent",
+ "type": "string",
+ "x-example": "related"
}
],
"produces": [
@@ -277674,19 +307238,31 @@
],
"responses": {
"200": {
- "description": "Wrapped following list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277697,26 +307273,42 @@
"ApiKeyAuth": []
}
],
- "summary": "List who a GitHub user follows",
+ "summary": "List Gymshark product recommendations",
"tags": [
- "GitHub"
+ "Gymshark"
]
}
},
- "/github/user/{username}/pinned": {
+ "/gymshark/sitemap/urls": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the repositories a user pinned on their public profile (showcase signal). Empty when the user pinned nothing.",
- "operationId": "github-user-pinned",
+ "description": "Returns capped URL entries from Gymshark's (https://row.gymshark.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
+ "operationId": "gymshark-sitemap-urls",
"parameters": [
{
- "description": "GitHub username",
- "in": "path",
- "name": "username",
- "required": true,
- "type": "string"
+ "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
+ "enum": [
+ "all",
+ "products",
+ "collections",
+ "pages",
+ "blogs",
+ "agentic_discovery",
+ "other"
+ ],
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "products"
+ },
+ {
+ "description": "Maximum URL entries, defaults to 50 and supports up to 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -277724,19 +307316,25 @@
],
"responses": {
"200": {
- "description": "Wrapped pinned repository list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277747,91 +307345,43 @@
"ApiKeyAuth": []
}
],
- "summary": "List a GitHub user's pinned repositories",
+ "summary": "List Gymshark sitemap URLs",
"tags": [
- "GitHub"
+ "Gymshark"
]
}
},
- "/github/user/{username}/repos": {
+ "/gymshark/sitemaps": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of a user's public repositories (tech-stack signal).",
- "operationId": "github-user-repos",
- "parameters": [
- {
- "description": "GitHub username",
- "in": "path",
- "name": "username",
- "required": true,
- "type": "string"
- },
- {
- "description": "Sort field",
- "enum": [
- "created",
- "updated",
- "pushed",
- "full_name"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "description": "Sort direction",
- "enum": [
- "asc",
- "desc"
- ],
- "in": "query",
- "name": "direction",
- "type": "string"
- },
- {
- "description": "Repository type",
- "enum": [
- "all",
- "owner",
- "member"
- ],
- "in": "query",
- "name": "type",
- "type": "string"
- },
- {
- "description": "Page number",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Results per page (max 100)",
- "in": "query",
- "name": "per_page",
- "type": "integer"
- }
- ],
+ "description": "Returns child sitemap URLs from Gymshark's (https://row.gymshark.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
+ "operationId": "gymshark-sitemaps",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "Wrapped repository list",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
}
},
"400": {
- "description": "Missing or invalid parameters",
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Upstream error or rate limit",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277842,26 +307392,19 @@
"ApiKeyAuth": []
}
],
- "summary": "List a GitHub user's public repositories",
+ "summary": "List Gymshark sitemaps",
"tags": [
- "GitHub"
+ "Gymshark"
]
}
},
- "/gizmodo/article": {
+ "/gymshark/store": {
"get": {
- "description": "Returns public Gizmodo article metadata and body paragraphs from a canonical article URL. Gizmodo articles are free to read, so the full body is returned.",
- "operationId": "gizmodo-article",
- "parameters": [
- {
- "description": "Canonical Gizmodo article URL",
- "in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://gizmodo.com/meta-muse-charm-ai-keychain-2000816515"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns normalized storefront metadata for Gymshark (https://row.gymshark.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
+ "operationId": "gymshark-store",
"produces": [
"application/json"
],
@@ -277869,7 +307412,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/shopifybrands.storeResponseDoc"
}
},
"400": {
@@ -277878,8 +307421,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -277896,24 +307439,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Gizmodo article content",
+ "summary": "Get Gymshark store metadata",
"tags": [
- "Gizmodo"
+ "Gymshark"
]
}
},
- "/gizmodo/author": {
+ "/hbr/article": {
"get": {
- "description": "Returns a Gizmodo author's name, job title, biography, headshot, social links, and most recent articles from a canonical author URL.",
- "operationId": "gizmodo-author",
+ "description": "Returns a public Harvard Business Review article's metadata and full body text from a canonical article URL. from_magazine flags articles originally published in the print magazine.",
+ "operationId": "hbr-article",
"parameters": [
{
- "description": "Canonical Gizmodo author URL",
+ "description": "Canonical hbr.org article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://gizmodo.com/author/jpero"
+ "x-example": "https://hbr.org/2026/09/is-your-strategic-plan-too-ambitious-or-not-ambitious-enough"
}
],
"produces": [
@@ -277923,7 +307466,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.gizmodoAuthorResponseDoc"
+ "$ref": "#/definitions/hbr.articleResponseDoc"
}
},
"400": {
@@ -277938,6 +307481,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -277950,76 +307499,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Gizmodo author profile",
+ "summary": "Get Harvard Business Review article content",
"tags": [
- "Gizmodo"
+ "Harvard Business Review"
]
}
},
- "/gizmodo/headlines": {
+ "/hbr/categories": {
"get": {
- "description": "Returns fresh headlines from one Gizmodo section's public RSS feed.",
- "operationId": "gizmodo-headlines",
- "parameters": [
- {
- "description": "Gizmodo section slug",
- "enum": [
- "tech",
- "artificial-intelligence",
- "commerce",
- "crime",
- "cryptocurrencies",
- "culture",
- "gadgets",
- "internet",
- "politics",
- "privacy-and-security",
- "robots",
- "social-media",
- "sploid",
- "tech-policy",
- "transportation",
- "science",
- "biology",
- "health",
- "human-history",
- "physics",
- "space",
- "io9",
- "anime",
- "books-comics",
- "corporate-culture",
- "games",
- "io9-reviews",
- "movies",
- "television",
- "theme-parks-destinations",
- "toys-and-collectibles",
- "trailer-frenzy",
- "earther",
- "climate-change",
- "conservation",
- "earth-science",
- "energy",
- "environmental-justice",
- "reviews",
- "desktops",
- "gaming",
- "headphones",
- "home-entertainment",
- "laptops",
- "other-gadgets",
- "phones",
- "tablets",
- "wearables",
- "deals"
- ],
- "in": "query",
- "name": "section",
- "required": true,
- "type": "string"
- }
- ],
+ "description": "Returns Harvard Business Review's full public topic taxonomy, grouped into Subject, Industry, and Geography. Use a topic's slug directly as the topic parameter on hbr-topic.",
+ "operationId": "hbr-categories",
"produces": [
"application/json"
],
@@ -278027,11 +307516,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/hbr.categoriesResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -278048,16 +307537,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Gizmodo section headlines",
+ "summary": "Get Harvard Business Review topic taxonomy",
"tags": [
- "Gizmodo"
+ "Harvard Business Review"
]
}
},
- "/gizmodo/news": {
+ "/hbr/headlines": {
"get": {
- "description": "Returns fresh Gizmodo stories from its public RSS feed.",
- "operationId": "gizmodo-news",
+ "description": "Returns fresh entries from Harvard Business Review's public, site-wide \"The Latest\" content stream.",
+ "operationId": "hbr-headlines",
"produces": [
"application/json"
],
@@ -278065,7 +307554,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/hbr.headlinesResponseDoc"
}
},
"429": {
@@ -278086,16 +307575,26 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Gizmodo top stories",
+ "summary": "Get Harvard Business Review latest headlines",
"tags": [
- "Gizmodo"
+ "Harvard Business Review"
]
}
},
- "/gizmodo/sections": {
+ "/hbr/topic": {
"get": {
- "description": "Returns the Gizmodo section inventory: its five top-level verticals (Tech, Science, io9, Earther, Reviews), their sub-topics, and Deals, each linking to its public RSS feed. Every slug is accepted by the headlines endpoint.",
- "operationId": "gizmodo-sections",
+ "description": "Returns the newest public Harvard Business Review articles on one topic archive page. topic is a \"/\" value -- see hbr-categories for the full known value space.",
+ "operationId": "hbr-topic",
+ "parameters": [
+ {
+ "description": "Harvard Business Review topic slug",
+ "in": "query",
+ "name": "topic",
+ "required": true,
+ "type": "string",
+ "x-example": "subject/strategy"
+ }
+ ],
"produces": [
"application/json"
],
@@ -278103,7 +307602,31 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/hbr.topicResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -278112,24 +307635,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Gizmodo sections",
+ "summary": "Get Harvard Business Review topic archive",
"tags": [
- "Gizmodo"
+ "Harvard Business Review"
]
}
},
- "/globalnews/article": {
+ "/healthgrades/autocomplete": {
"get": {
- "description": "Returns public Global News article metadata and body paragraphs from a canonical article URL.",
- "operationId": "globalnews-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns dynamic provider, specialty, condition, procedure, and other suggestions for a free-text query. Group categories vary with the query and are returned as data, not accepted as a closed enum.",
+ "operationId": "healthgrades-autocomplete",
"parameters": [
{
- "description": "Canonical Global News article URL",
+ "description": "Free-text provider, specialty, condition, or procedure query",
"in": "query",
- "name": "url",
+ "name": "term",
"required": true,
"type": "string",
- "x-example": "https://globalnews.ca/news/12070709/example-article-slug/"
+ "x-example": "orthopedic surgeon"
}
],
"produces": [
@@ -278139,7 +307665,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/healthgrades.suggestionsResponseDoc"
}
},
"400": {
@@ -278148,8 +307674,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -278166,24 +307692,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Global News article content",
+ "summary": "Get Healthgrades search suggestions",
"tags": [
- "Global News"
+ "Healthgrades"
]
}
},
- "/globalnews/author": {
+ "/healthgrades/facilities/filters": {
"get": {
- "description": "Returns a Global News author's byline metadata, biography, and recent articles from a canonical author URL.",
- "operationId": "globalnews-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the sorts and filters for a Healthgrades facility search: distance values and, for hospitals, every specialty rating and award value accepted by /healthgrades/facilities/search.",
+ "operationId": "healthgrades-facilities-filters",
"parameters": [
{
- "description": "Canonical Global News author URL",
+ "description": "Facility type",
+ "enum": [
+ "hospital",
+ "pharmacy",
+ "group_practice",
+ "urgent_care"
+ ],
"in": "query",
- "name": "url",
+ "name": "type",
"required": true,
"type": "string",
- "x-example": "https://globalnews.ca/author/jane-doe/"
+ "x-example": "hospital"
+ },
+ {
+ "description": "Optional facility name or keyword",
+ "in": "query",
+ "name": "query",
+ "type": "string"
+ },
+ {
+ "description": "City and state, or ZIP code",
+ "in": "query",
+ "name": "where",
+ "required": true,
+ "type": "string",
+ "x-example": "Boston, MA"
}
],
"produces": [
@@ -278193,7 +307742,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.globalnewsAuthorResponseDoc"
+ "$ref": "#/definitions/healthgrades.facilityFiltersResponseDoc"
}
},
"400": {
@@ -278202,8 +307751,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -278220,58 +307769,96 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Global News author profile",
+ "summary": "List Healthgrades facility search filters",
"tags": [
- "Global News"
+ "Healthgrades"
]
}
},
- "/globalnews/headlines": {
+ "/healthgrades/facilities/search": {
"get": {
- "description": "Returns fresh headlines from one public Global News RSS section.",
- "operationId": "globalnews-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one page of Healthgrades facility search results near a location for one facility type (hospital, pharmacy, group practice, or urgent care), with name, address, phone, distance, profile URL, affiliated provider and rating counts, hospital awards, and the filters available for the search. Requests use US egress because Healthgrades restricts content by region.",
+ "operationId": "healthgrades-facilities-search",
"parameters": [
{
- "description": "Global News RSS section slug",
+ "description": "Facility type",
"enum": [
- "world",
- "canada",
- "politics",
- "money",
- "health",
- "entertainment",
- "environment",
- "lifestyle",
- "perspectives",
- "sports",
- "commentary",
- "us-news",
- "the-curator",
- "national",
- "barrie",
- "bc",
- "calgary",
- "edmonton",
- "guelph",
- "halifax",
- "hamilton",
- "kingston",
- "lethbridge",
- "london",
- "montreal",
- "new-brunswick",
- "okanagan",
- "ottawa",
- "peterborough",
- "regina",
- "saskatoon",
- "toronto",
- "winnipeg"
+ "hospital",
+ "pharmacy",
+ "group_practice",
+ "urgent_care"
],
"in": "query",
- "name": "section",
+ "name": "type",
+ "required": true,
+ "type": "string",
+ "x-example": "hospital"
+ },
+ {
+ "description": "Optional facility name or keyword",
+ "in": "query",
+ "name": "query",
+ "type": "string",
+ "x-example": "Mass General"
+ },
+ {
+ "description": "City and state, or ZIP code",
+ "in": "query",
+ "name": "where",
"required": true,
+ "type": "string",
+ "x-example": "Boston, MA"
+ },
+ {
+ "default": 1,
+ "description": "Result page (1-500, 20 results per page)",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Result order; patientsatisfaction is hospital-only and group_practice supports only distance",
+ "enum": [
+ "bestmatch",
+ "distance",
+ "patientsatisfaction"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Search radius in miles",
+ "enum": [
+ "0.5",
+ "1",
+ "5",
+ "10",
+ "25",
+ "50",
+ "100",
+ "national"
+ ],
+ "in": "query",
+ "name": "distance",
"type": "string"
+ },
+ {
+ "description": "Hospital specialty-rating value from /healthgrades/facilities/filters (type=hospital only)",
+ "in": "query",
+ "name": "rating",
+ "type": "string",
+ "x-example": "Bowel Obstruction|BLO"
+ },
+ {
+ "description": "Hospital award value from /healthgrades/facilities/filters (type=hospital only)",
+ "in": "query",
+ "name": "award",
+ "type": "string",
+ "x-example": "Critical Care Excellence Award|CCU"
}
],
"produces": [
@@ -278281,7 +307868,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/healthgrades.facilitySearchResponseDoc"
}
},
"400": {
@@ -278290,6 +307877,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -278302,16 +307895,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Global News section headlines",
+ "summary": "Search Healthgrades hospitals, pharmacies, group practices, and urgent care",
"tags": [
- "Global News"
+ "Healthgrades"
]
}
},
- "/globalnews/news": {
+ "/healthgrades/facility": {
"get": {
- "description": "Returns fresh Global News (globalnews.ca) top stories from its public RSS feed.",
- "operationId": "globalnews-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Healthgrades pharmacy, urgent care center, or group practice profile; the type (pharmacy, urgent_care, or group_practice) is inferred from the URL. Pharmacies: opening hours, services (for example compounding, immunizations, Medicare), and nearby pharmacies. Urgent care centers: opening hours and aggregated visitor answers to amenity questions. Group practices: specialties, providers with specialty and rating, medical services offered, language services, office locations with phones and coordinates, FAQs, and nearby offices. All types include name, address, and phone. Patient-authored reviews are not returned. Requests use US egress because Healthgrades restricts content by region.",
+ "operationId": "healthgrades-facility",
+ "parameters": [
+ {
+ "description": "Healthgrades pharmacy, urgent care, or group practice profile URL from /healthgrades/facilities/search",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.healthgrades.com/pharmacy/walgreens-12805-pas6pu"
+ }
+ ],
"produces": [
"application/json"
],
@@ -278319,7 +307925,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/healthgrades.facilityResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -278340,16 +307958,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Global News top stories",
+ "summary": "Get a Healthgrades pharmacy, urgent care, or group practice profile",
"tags": [
- "Global News"
+ "Healthgrades"
]
}
},
- "/globalnews/sections": {
+ "/healthgrades/health-article": {
"get": {
- "description": "Returns the public Global News RSS section inventory used by the headlines endpoint, covering topical sections and every regional/city hub with its own feed.",
- "operationId": "globalnews-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Healthgrades Health A-Z or drug article: headline, description, authors, medical reviewers, published and modified dates, image, the conditions the article is tagged with, and the article body as headed sections of paragraphs and lists. Works for standard, chaptered, and slideshow articles. Requests use US egress because Healthgrades restricts content by region.",
+ "operationId": "healthgrades-health-article",
+ "parameters": [
+ {
+ "description": "Article URL from /healthgrades/health-articles",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://resources.healthgrades.com/drugs/atenolol"
+ }
+ ],
"produces": [
"application/json"
],
@@ -278357,7 +307988,31 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/healthgrades.healthArticleResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -278366,24 +308021,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Global News RSS sections",
+ "summary": "Get a Healthgrades Health A-Z article",
"tags": [
- "Global News"
+ "Healthgrades"
]
}
},
- "/globeandmail/article": {
+ "/healthgrades/health-articles": {
"get": {
- "description": "Returns one public Globe and Mail article's metadata and full body paragraphs from a canonical article URL. The Globe and Mail runs a metered paywall on most staff-bylined stories; those return a 403 permission error rather than a truncated or fabricated body -- see the endpoint markdown for the exact detection method.",
- "operationId": "globeandmail-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one page of a Healthgrades Health A-Z topic's articles (slug, URL, and last-modified date), most recently modified first, with total and total pages. Use topic=drugs for drug articles. Use an article URL with /healthgrades/health-article.",
+ "operationId": "healthgrades-health-articles",
"parameters": [
{
- "description": "Canonical Globe and Mail article URL",
+ "description": "Topic slug from /healthgrades/health-topics",
"in": "query",
- "name": "url",
+ "name": "topic",
"required": true,
"type": "string",
- "x-example": "https://www.theglobeandmail.com/canada/article-example-story/"
+ "x-example": "diabetes"
+ },
+ {
+ "default": 1,
+ "description": "Page number, starting at 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "default": 50,
+ "description": "Articles per page (1-200)",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -278393,17 +308065,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/globeandmail.articleResponseDoc"
+ "$ref": "#/definitions/healthgrades.healthArticlesResponseDoc"
}
},
"400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "403": {
- "description": "Forbidden",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -278432,26 +308098,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Globe and Mail article's content",
+ "summary": "List Healthgrades Health A-Z articles in a topic",
"tags": [
- "GlobeAndMail"
+ "Healthgrades"
]
}
},
- "/globeandmail/author": {
+ "/healthgrades/health-topics": {
"get": {
- "description": "Returns one Globe and Mail reporter's public profile: name, job title, location, biography, headshot, contact/social links, and their recent articles from a canonical author URL.",
- "operationId": "globeandmail-author",
- "parameters": [
- {
- "description": "Canonical Globe and Mail author URL",
- "in": "query",
- "name": "url",
- "required": true,
- "type": "string",
- "x-example": "https://www.theglobeandmail.com/authors/example-reporter/"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns every topic of Healthgrades' Health A-Z library (conditions, body systems, treatments, and wellness topics) with its article count, last-modified date, and topic hub URL where one exists, plus the drugs topic for Healthgrades' drug articles. Use a slug with /healthgrades/health-articles.",
+ "operationId": "healthgrades-health-topics",
"produces": [
"application/json"
],
@@ -278459,19 +308118,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/globeandmail.authorResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/healthgrades.healthTopicsResponseDoc"
}
},
"429": {
@@ -278492,38 +308139,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Globe and Mail reporter profile",
+ "summary": "List Healthgrades Health A-Z topics",
"tags": [
- "GlobeAndMail"
+ "Healthgrades"
]
}
},
- "/globeandmail/headlines": {
+ "/healthgrades/hospital": {
"get": {
- "description": "Returns the current public feed for one Globe and Mail section: each story's title, canonical URL, summary, author, publication time, and lead image. Section must be one of the slugs returned by /globeandmail/sections: `canada`, `world`, `business`, `investing`, `personal-finance`, `politics`, `opinion`, `culture`, `sports`, `life`, `real-estate`, `drive`.",
- "operationId": "globeandmail-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one Healthgrades hospital profile: hospital-wide and specialty awards with years, clinical outcome ratings by service line (procedure or condition, measure, outcome rating, and 1-5 stars), patient-experience measures with national comparisons, address, and phone. Patient-authored reviews are not returned. Requests use US egress because Healthgrades restricts content by region.",
+ "operationId": "healthgrades-hospital",
"parameters": [
{
- "description": "Globe and Mail section slug from /globeandmail/sections",
- "enum": [
- "canada",
- "world",
- "business",
- "investing",
- "personal-finance",
- "politics",
- "opinion",
- "culture",
- "sports",
- "life",
- "real-estate",
- "drive"
- ],
+ "description": "Healthgrades hospital profile URL from /healthgrades/facilities/search",
"in": "query",
- "name": "section",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "canada"
+ "x-example": "https://www.healthgrades.com/hospital/massachusetts-general-hospital-60c282"
}
],
"produces": [
@@ -278533,7 +308169,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/globeandmail.headlinesResponseDoc"
+ "$ref": "#/definitions/healthgrades.hospitalResponseDoc"
}
},
"400": {
@@ -278566,16 +308202,147 @@
"ApiKeyAuth": []
}
],
- "summary": "Get the latest stories in a Globe and Mail section",
+ "summary": "Get a Healthgrades hospital profile",
"tags": [
- "GlobeAndMail"
+ "Healthgrades"
]
}
},
- "/globeandmail/news": {
+ "/healthgrades/hospital-awards": {
"get": {
- "description": "Returns The Globe and Mail's current public top-stories feed: each story's title, canonical URL, summary, author, publication time, and lead image.",
- "operationId": "globeandmail-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns one page (20 hospitals) of a Healthgrades hospital quality award list: America's Best Hospitals (top 50, 100, or 250), Specialty Excellence (by specialty, top 50 or 100), Patient Safety Excellence, Outstanding Patient Experience, Ob-Gyn Care, or Specialty State Rankings. Filter by year, state, city, specialty, and Ob-Gyn award type; sort by name or, with latitude and longitude, by distance. Each hospital includes its profile URL (for /healthgrades/hospital), address, coordinates, phone, and every award it holds with years. Read accepted filter values from /healthgrades/hospital-awards/filters. Requests use US egress because Healthgrades restricts content by region.",
+ "operationId": "healthgrades-hospital-awards",
+ "parameters": [
+ {
+ "description": "Award list",
+ "enum": [
+ "americas-best-hospitals",
+ "specialty-excellence-americas-best-care",
+ "patient-safety-excellence-award",
+ "outstanding-patient-experience-award",
+ "ob-gyn-care-excellence-awards",
+ "state-rankings"
+ ],
+ "in": "query",
+ "name": "award",
+ "required": true,
+ "type": "string",
+ "x-example": "americas-best-hospitals"
+ },
+ {
+ "description": "Award year from the filters (defaults to the latest)",
+ "in": "query",
+ "name": "year",
+ "type": "string",
+ "x-example": "2026"
+ },
+ {
+ "description": "State slug from the filters",
+ "in": "query",
+ "name": "state",
+ "type": "string",
+ "x-example": "texas"
+ },
+ {
+ "description": "City slug from the filters for the state (requires state)",
+ "in": "query",
+ "name": "city",
+ "type": "string",
+ "x-example": "houston"
+ },
+ {
+ "description": "America's Best Hospitals list size (award=americas-best-hospitals)",
+ "enum": [
+ "top50",
+ "top100",
+ "top250"
+ ],
+ "in": "query",
+ "name": "list",
+ "type": "string"
+ },
+ {
+ "description": "Specialty Excellence list size (award=specialty-excellence-americas-best-care)",
+ "enum": [
+ "top50",
+ "top100"
+ ],
+ "in": "query",
+ "name": "list_category",
+ "type": "string"
+ },
+ {
+ "description": "Specialty code (award=specialty-excellence-americas-best-care or state-rankings)",
+ "enum": [
+ "BAR",
+ "CVO",
+ "CWS",
+ "PCI",
+ "NSG",
+ "CCU",
+ "GIO",
+ "GSO",
+ "ORJ",
+ "NSC",
+ "ORT",
+ "OJO",
+ "OOR",
+ "OBP",
+ "PRS",
+ "PUL",
+ "ORS",
+ "NEU",
+ "OVSC",
+ "VAS"
+ ],
+ "in": "query",
+ "name": "specialty",
+ "type": "string"
+ },
+ {
+ "description": "Ob-Gyn award (award=ob-gyn-care-excellence-awards): GYS gynecologic surgery, LAB labor and delivery, OBG obstetrics and gynecology",
+ "enum": [
+ "GYS",
+ "LAB",
+ "OBG"
+ ],
+ "in": "query",
+ "name": "ob_gyn_type",
+ "type": "string"
+ },
+ {
+ "description": "Result order; distance requires latitude and longitude",
+ "enum": [
+ "name",
+ "distance"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Latitude for distance sorting",
+ "in": "query",
+ "name": "latitude",
+ "type": "number"
+ },
+ {
+ "description": "Longitude for distance sorting",
+ "in": "query",
+ "name": "longitude",
+ "type": "number"
+ },
+ {
+ "default": 1,
+ "description": "Page number (20 hospitals per page)",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
@@ -278583,46 +308350,20 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/globeandmail.newsResponseDoc"
+ "$ref": "#/definitions/healthgrades.hospitalAwardsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get the latest Globe and Mail stories",
- "tags": [
- "GlobeAndMail"
- ]
- }
- },
- "/globeandmail/sections": {
- "get": {
- "description": "Lists every Globe and Mail section accepted by /globeandmail/headlines, with its slug, display name, and landing-page URL. This is the full public, RSS-backed section taxonomy from the site's primary navigation.",
- "operationId": "globeandmail-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/globeandmail.sectionsResponseDoc"
- }
},
"429": {
"description": "Too Many Requests",
@@ -278642,24 +308383,49 @@
"ApiKeyAuth": []
}
],
- "summary": "List Globe and Mail sections",
+ "summary": "List Healthgrades hospital award recipients",
"tags": [
- "GlobeAndMail"
+ "Healthgrades"
]
}
},
- "/gmanews/article": {
+ "/healthgrades/hospital-awards/filters": {
"get": {
- "description": "Returns public GMA News Online article metadata and body paragraphs from a canonical article URL. GMA News articles are free to read; no content is paywalled.",
- "operationId": "gmanews-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the filter values Healthgrades offers for one hospital award list: list sizes, specialty codes, Ob-Gyn award types, award years, states with recipients, and (with a state) cities with recipient counts, plus the sort options. Each group's param names the /healthgrades/hospital-awards parameter that accepts its values.",
+ "operationId": "healthgrades-hospital-award-filters",
"parameters": [
{
- "description": "Canonical GMA News article URL",
+ "description": "Award list",
+ "enum": [
+ "americas-best-hospitals",
+ "specialty-excellence-americas-best-care",
+ "patient-safety-excellence-award",
+ "outstanding-patient-experience-award",
+ "ob-gyn-care-excellence-awards",
+ "state-rankings"
+ ],
"in": "query",
- "name": "url",
+ "name": "award",
"required": true,
"type": "string",
- "x-example": "https://www.gmanetwork.com/news/topstories/world/1003638/at-un-netanyahu-defends-israel-as-delegates-storm-out/story/"
+ "x-example": "americas-best-hospitals"
+ },
+ {
+ "description": "State slug, to list its cities",
+ "in": "query",
+ "name": "state",
+ "type": "string",
+ "x-example": "california"
+ },
+ {
+ "description": "Award year",
+ "in": "query",
+ "name": "year",
+ "type": "string",
+ "x-example": "2026"
}
],
"produces": [
@@ -278669,7 +308435,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/healthgrades.hospitalAwardFiltersResponseDoc"
}
},
"400": {
@@ -278684,6 +308450,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -278696,69 +308468,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GMA News article content",
+ "summary": "List Healthgrades hospital award filters",
"tags": [
- "GMA News"
+ "Healthgrades"
]
}
},
- "/gmanews/headlines": {
+ "/healthgrades/locations": {
"get": {
- "description": "Returns fresh GMA News Online headlines from one public section RSS feed.",
- "operationId": "gmanews-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns location autocomplete suggestions for a city, state, ZIP code, or other free-text location. Private upstream metadata and coordinates are omitted.",
+ "operationId": "healthgrades-locations",
"parameters": [
{
- "description": "GMA News section slug",
- "enum": [
- "topstories",
- "topstories-metro",
- "topstories-nation",
- "topstories-opinion",
- "topstories-regions",
- "topstories-specialreports",
- "topstories-ulatfilipino",
- "topstories-world",
- "money",
- "money-companies",
- "money-economy",
- "money-motoring",
- "money-personalfinance",
- "sports",
- "sports-basketball",
- "sports-boxing",
- "sports-football",
- "sports-nba",
- "sports-othersports",
- "sports-volleyball",
- "showbiz",
- "showbiz-chikaminute",
- "showbiz-showbizabroad",
- "lifestyle",
- "lifestyle-artandculture",
- "lifestyle-familyandrelationships",
- "lifestyle-food",
- "lifestyle-healthandwellness",
- "lifestyle-hobbiesandactivities",
- "lifestyle-shoppingandfashion",
- "lifestyle-travel",
- "scitech",
- "scitech-science",
- "scitech-technology",
- "pinoyabroad",
- "pinoyabroad-dispatch",
- "pinoyabroad-pinoyachievers",
- "serbisyopubliko",
- "serbisyopubliko-missingpersons",
- "serbisyopubliko-transportation",
- "serbisyopubliko-walangpasok",
- "cbb",
- "publicaffairs",
- "weather"
- ],
+ "description": "City, state, or ZIP code",
"in": "query",
- "name": "section",
+ "name": "term",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "Boston"
}
],
"produces": [
@@ -278768,7 +308498,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/healthgrades.suggestionsResponseDoc"
}
},
"400": {
@@ -278777,6 +308507,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -278789,16 +308525,29 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GMA News section headlines",
+ "summary": "Get Healthgrades location suggestions",
"tags": [
- "GMA News"
+ "Healthgrades"
]
}
},
- "/gmanews/news": {
+ "/healthgrades/physician": {
"get": {
- "description": "Returns fresh GMA News Online top stories from the public top-stories RSS feed, with title, URL, summary, publish time, and thumbnail.",
- "operationId": "gmanews-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns public professional profile fields and practice locations for one Healthgrades physician. Patient-authored review text is not returned. Requests use US egress because Healthgrades restricts some content by region.",
+ "operationId": "healthgrades-physician",
+ "parameters": [
+ {
+ "description": "Canonical Healthgrades physician profile URL",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.healthgrades.com/physician/dr-example-abcde"
+ }
+ ],
"produces": [
"application/json"
],
@@ -278806,7 +308555,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/healthgrades.physicianResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -278827,16 +308588,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GMA News top stories",
+ "summary": "Get a Healthgrades physician profile",
"tags": [
- "GMA News"
+ "Healthgrades"
]
}
},
- "/gmanews/sections": {
+ "/healthgrades/physicians/filters": {
"get": {
- "description": "Returns the public GMA News Online section feeds accepted by the headlines endpoint.",
- "operationId": "gmanews-sections",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns every filter available for a Healthgrades provider search at a location, with accepted values, labels, and result counts: insurers (with plan IDs), gender, distance, age, availability, language, patient rating, clinical focus, affiliated hospitals, practicing specialties, and affirming care. Insurer, language, clinical focus, hospital, and specialty values depend on the query and location. Each group's param names the /healthgrades/physicians/search parameter that accepts its values.",
+ "operationId": "healthgrades-physicians-filters",
+ "parameters": [
+ {
+ "description": "Specialty, condition, procedure, or provider name",
+ "in": "query",
+ "name": "query",
+ "required": true,
+ "type": "string",
+ "x-example": "Cardiology"
+ },
+ {
+ "description": "City and state, or ZIP code",
+ "in": "query",
+ "name": "where",
+ "type": "string",
+ "x-example": "Boston, MA"
+ }
+ ],
"produces": [
"application/json"
],
@@ -278844,7 +308625,13 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/healthgrades.physicianFiltersResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -278852,6 +308639,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -278859,48 +308652,164 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GMA News sections",
+ "summary": "List Healthgrades physician search filters",
"tags": [
- "GMA News"
+ "Healthgrades"
]
}
},
- "/goat/collection": {
+ "/healthgrades/physicians/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of one of GOAT's curated product collections (an editorial rail like \"top trending\" or \"new arrivals\"), the same call GOAT's own product-page \"you may also like\" rails and homepage modules use. Collection slugs are not enumerable by this API -- capture one from a live GOAT page. Credential-free public data.",
- "operationId": "goat-collection",
+ "description": "Returns one page of Healthgrades provider search results for a specialty, condition, procedure, or provider name near a location, with each provider's NPI, specialty, office, aggregate patient rating, accepted insurers, and profile URL, plus the filters available for the search. Closed-set filters accept the listed values; insurance, insurance_plan, language, clinical_focus, affiliated_hospital, and specialty accept values returned in the filters for the same query/where. List filters take comma-separated values. Requests use US egress because Healthgrades restricts content by region. Patient review text is not returned.",
+ "operationId": "healthgrades-physicians-search",
"parameters": [
{
- "description": "GOAT collection slug, e.g. as seen in a curated rail on GOAT's own site",
+ "description": "Specialty, condition, procedure, or provider name",
"in": "query",
- "name": "slug",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "top-trending-uk"
+ "x-example": "Cardiology"
},
{
- "description": "1-indexed result page, defaults to 1",
+ "description": "City and state, or ZIP code",
+ "in": "query",
+ "name": "where",
+ "type": "string",
+ "x-example": "Boston, MA"
+ },
+ {
+ "default": 1,
+ "description": "Result page (1-500, 20 results per page)",
"in": "query",
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Results per page, defaults to 12, maximum 100",
+ "default": "bestmatch",
+ "description": "Result order",
+ "enum": [
+ "bestmatch",
+ "distance",
+ "ratings"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 12
+ "name": "sort",
+ "type": "string"
},
{
- "description": "Omit specific products by id, comma-separated",
+ "description": "Provider gender",
+ "enum": [
+ "F",
+ "M"
+ ],
"in": "query",
- "name": "exclude_product_ids",
+ "name": "gender",
+ "type": "string"
+ },
+ {
+ "description": "Search radius in miles",
+ "enum": [
+ "1",
+ "5",
+ "10",
+ "25",
+ "50",
+ "100",
+ "national"
+ ],
+ "in": "query",
+ "name": "distance",
+ "type": "string"
+ },
+ {
+ "description": "Comma-separated provider age bands",
+ "enum": [
+ "*-40",
+ "41-50",
+ "51-60",
+ "61-70",
+ "71-*"
+ ],
+ "in": "query",
+ "name": "age",
+ "type": "string"
+ },
+ {
+ "description": "Comma-separated availability filters",
+ "enum": [
+ "today",
+ "tomorrow",
+ "nextTwoWeeks",
+ "online",
+ "acceptsNewPatients",
+ "telehealth"
+ ],
+ "in": "query",
+ "name": "availability",
+ "type": "string"
+ },
+ {
+ "description": "Minimum patient-satisfaction stars (5 means exactly 5)",
+ "enum": [
+ "1",
+ "2",
+ "3",
+ "4",
+ "5"
+ ],
+ "in": "query",
+ "name": "rating",
+ "type": "string"
+ },
+ {
+ "description": "Comma-separated insurer codes from the insurance filter",
+ "in": "query",
+ "name": "insurance",
"type": "string",
- "x-example": "1481726"
+ "x-example": "HPY00006F7"
+ },
+ {
+ "description": "Comma-separated plan IDs from an insurer's plans (requires insurance)",
+ "in": "query",
+ "name": "insurance_plan",
+ "type": "string",
+ "x-example": "HPT0000407"
+ },
+ {
+ "description": "Comma-separated language codes from the language filter",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "spanish"
+ },
+ {
+ "description": "Comma-separated clinical focus codes from the clinical_focus filter",
+ "in": "query",
+ "name": "clinical_focus",
+ "type": "string"
+ },
+ {
+ "description": "Comma-separated hospital codes from the affiliated_hospital filter",
+ "in": "query",
+ "name": "affiliated_hospital",
+ "type": "string"
+ },
+ {
+ "description": "Comma-separated practicing-specialty codes from the specialty filter",
+ "in": "query",
+ "name": "specialty",
+ "type": "string",
+ "x-example": "ps1027"
+ },
+ {
+ "description": "Only providers marked LGBTQ+ affirming",
+ "in": "query",
+ "name": "affirming_care",
+ "type": "boolean"
}
],
"produces": [
@@ -278910,7 +308819,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.collectionResponseDoc"
+ "$ref": "#/definitions/healthgrades.physicianSearchResponseDoc"
}
},
"400": {
@@ -278919,14 +308828,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -278943,19 +308846,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a GOAT curated product collection",
+ "summary": "Search Healthgrades physicians",
"tags": [
- "GOAT"
+ "Healthgrades"
]
}
},
- "/goat/countries": {
+ "/healthgrades/specialties": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns every country GOAT recognizes -- the accepted values for GET /goat/product/{slug}'s country_code parameter -- with the currency and size unit (us, uk, eu) GOAT localizes to for each, plus whether GOAT ships and accepts returns there. Every country is listed, not only the shippable ones, because country_code localizes pricing and is accepted for all of them; filter on ships_to if you want only GOAT's shipping destinations. Credential-free public data.",
- "operationId": "goat-countries",
+ "description": "Returns every specialty name and directory URL shown on Healthgrades' public A-Z specialty directory. Requests use US egress and Safari browser impersonation because the site restricts some content by region.",
+ "operationId": "healthgrades-specialties",
"produces": [
"application/json"
],
@@ -278963,11 +308866,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.countriesResponseDoc"
+ "$ref": "#/definitions/healthgrades.specialtiesResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -278984,19 +308887,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GOAT countries",
+ "summary": "List Healthgrades physician specialties",
"tags": [
- "GOAT"
+ "Healthgrades"
]
}
},
- "/goat/curated": {
+ "/healthgrades/top-searches": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the shelf of editorially curated links GOAT is currently promoting in its own search box: seasonal collections, specific product searches, and browse-all entry points. Every link is actionable against this API -- a collection link carries a value for GET /goat/collection, a search link carries a query for GET /goat/search. Credential-free public data.",
- "operationId": "goat-curated",
+ "description": "Returns Healthgrades' current popular specialty search suggestions.",
+ "operationId": "healthgrades-top-searches",
"produces": [
"application/json"
],
@@ -279004,11 +308907,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.curatedResponseDoc"
+ "$ref": "#/definitions/healthgrades.suggestionsResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279025,19 +308928,67 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GOAT curated links",
+ "summary": "List popular Healthgrades searches",
"tags": [
- "GOAT"
+ "Healthgrades"
]
}
},
- "/goat/listings/count": {
+ "/hermes/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns how many listings GOAT currently has live across its whole marketplace. This is the only way to see GOAT's true catalog size, because GET /goat/search's total_results saturates at 10000 on a broad query and cannot report a total above that ceiling. Credential-free public data.",
- "operationId": "goat-listings-count",
+ "description": "Returns every browsable Hermès category for a market: the category code hermes-category accepts, its display name, its page path and absolute URL, its parent code and its depth in the tree. This is the discovery endpoint for hermes-category's category parameter, so every accepted value is obtainable from this API rather than by reading the website. Editorial and story tiles that carry no browsable category page are excluded, so every code returned is one hermes-category will accept.",
+ "operationId": "hermes-categories",
+ "parameters": [
+ {
+ "default": "us_en",
+ "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
+ "enum": [
+ "at_de",
+ "au_en",
+ "be_en",
+ "be_fr",
+ "br_pt",
+ "ca_en",
+ "ca_fr",
+ "ch_de",
+ "ch_fr",
+ "cz_en",
+ "de_de",
+ "dh_en",
+ "dk_en",
+ "es_es",
+ "fi_en",
+ "fr_fr",
+ "gr_en",
+ "hk_en",
+ "ie_en",
+ "it_it",
+ "jp_ja",
+ "kr_ko",
+ "lu_fr",
+ "mo_en",
+ "mx_es",
+ "my_en",
+ "nl_en",
+ "no_en",
+ "pl_en",
+ "pt_en",
+ "ri_en",
+ "se_en",
+ "sg_en",
+ "th_en",
+ "tw_zh",
+ "uk_en",
+ "us_en"
+ ],
+ "in": "query",
+ "name": "locale",
+ "type": "string"
+ }
+ ],
"produces": [
"application/json"
],
@@ -279045,11 +308996,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.listingsCountResponseDoc"
+ "$ref": "#/definitions/hermes.categoriesResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279066,34 +309023,93 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GOAT live listing count",
+ "summary": "List Hermès category codes",
"tags": [
- "GOAT"
+ "Hermes"
]
}
},
- "/goat/product/{slug}": {
+ "/hermes/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized GOAT product: identity/descriptive metadata (name, brand, SKU, colorway, designer, silhouette, taxonomy, materials, release date, retail price, editorial story, images, full size range, other products featured alongside it), plus live per-size/condition pricing and stock status (lowest price, GOAT Instant Ship price, last sold price, highest current buyer offer). Credential-free public data combining GOAT's own product-page payload with its live pricing and offers APIs.",
- "operationId": "goat-product",
+ "description": "Browses one Hermès product category and returns a page of normalized products (SKU, title, price with currency, colour, size, stock, images) plus the facet groups Hermès offers for that category, and the category's own title and description. The category parameter takes a category code from hermes-categories, which is the discovery endpoint for every accepted value. Page size is fixed at 48 by Hermès and cannot be changed. Prices are returned with the ISO-4217 currency for the selected market, since Hermès itself publishes bare numbers.",
+ "operationId": "hermes-category",
"parameters": [
{
- "description": "GOAT product URL slug, the path segment of a https://www.goat.com/sneakers/{slug} product page",
- "in": "path",
- "name": "slug",
+ "description": "Hermès category code, from hermes-categories",
+ "in": "query",
+ "name": "category",
"required": true,
"type": "string",
- "x-example": "fragment-design-x-travis-scott-x-air-jordan-1-low-og-sp-sail-military-blue-dm7866-104"
+ "x-example": "WOMEN_SHOES_SNEAKERS"
},
{
- "description": "ISO 3166-1 alpha-2 country code used to localize per-size pricing, defaults to US",
+ "default": "relevance",
+ "description": "Result order. One of: relevance, priceasc, pricedsc. Non-default sorts are best-effort",
+ "enum": [
+ "relevance",
+ "priceasc",
+ "pricedsc"
+ ],
"in": "query",
- "name": "country_code",
- "type": "string",
- "x-example": "US"
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "default": "us_en",
+ "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
+ "enum": [
+ "at_de",
+ "au_en",
+ "be_en",
+ "be_fr",
+ "br_pt",
+ "ca_en",
+ "ca_fr",
+ "ch_de",
+ "ch_fr",
+ "cz_en",
+ "de_de",
+ "dh_en",
+ "dk_en",
+ "es_es",
+ "fi_en",
+ "fr_fr",
+ "gr_en",
+ "hk_en",
+ "ie_en",
+ "it_it",
+ "jp_ja",
+ "kr_ko",
+ "lu_fr",
+ "mo_en",
+ "mx_es",
+ "my_en",
+ "nl_en",
+ "no_en",
+ "pl_en",
+ "pt_en",
+ "ri_en",
+ "se_en",
+ "sg_en",
+ "th_en",
+ "tw_zh",
+ "uk_en",
+ "us_en"
+ ],
+ "in": "query",
+ "name": "locale",
+ "type": "string"
+ },
+ {
+ "default": 1,
+ "description": "One-based result page; page size is fixed at 48. Page 1 is fully validated; pages beyond 1 are best-effort and provisional",
+ "in": "query",
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -279103,7 +309119,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.productResponseDoc"
+ "$ref": "#/definitions/hermes.categoryResponseDoc"
}
},
"400": {
@@ -279112,14 +309128,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279136,34 +309146,73 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GOAT product detail",
+ "summary": "Browse a Hermès category",
"tags": [
- "GOAT"
+ "Hermes"
]
}
},
- "/goat/product/{slug}/recommended": {
+ "/hermes/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the recommended/related products GOAT's own product page shows for a given product (other colorways, similar products) -- descriptive metadata only, no live pricing. Credential-free public data from GOAT's own product-page recommendation API.",
- "operationId": "goat-product-recommended",
+ "description": "Returns one Hermès product's full detail: title, description, dimensions, the Hermès colour name, country of manufacture, price with its market currency, stock, every product image, and the complete colour and size variant matrix with per-variant sku, price, stock and image. Care, gift and delivery text are returned as Hermès' own HTML fragments. sku accepts the reference-plus-colour form (H252013Z BM), the fuller listing sku that also carries size (H252013Z BM360), or the URL identifier returned by hermes-products (H252013ZvBM).",
+ "operationId": "hermes-product",
"parameters": [
{
- "description": "GOAT product URL slug to find related products for",
- "in": "path",
- "name": "slug",
+ "description": "Hermès product sku, in any of the accepted forms",
+ "in": "query",
+ "name": "sku",
"required": true,
"type": "string",
- "x-example": "fragment-design-x-travis-scott-x-air-jordan-1-low-og-sp-sail-military-blue-dm7866-104"
+ "x-example": "H252013Z BM"
},
{
- "description": "Number of recommended products to return, defaults to 8, maximum 24",
+ "default": "us_en",
+ "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
+ "enum": [
+ "at_de",
+ "au_en",
+ "be_en",
+ "be_fr",
+ "br_pt",
+ "ca_en",
+ "ca_fr",
+ "ch_de",
+ "ch_fr",
+ "cz_en",
+ "de_de",
+ "dh_en",
+ "dk_en",
+ "es_es",
+ "fi_en",
+ "fr_fr",
+ "gr_en",
+ "hk_en",
+ "ie_en",
+ "it_it",
+ "jp_ja",
+ "kr_ko",
+ "lu_fr",
+ "mo_en",
+ "mx_es",
+ "my_en",
+ "nl_en",
+ "no_en",
+ "pl_en",
+ "pt_en",
+ "ri_en",
+ "se_en",
+ "sg_en",
+ "th_en",
+ "tw_zh",
+ "uk_en",
+ "us_en"
+ ],
"in": "query",
- "name": "count",
- "type": "integer",
- "x-example": 8
+ "name": "locale",
+ "type": "string"
}
],
"produces": [
@@ -279173,7 +309222,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.recommendedResponseDoc"
+ "$ref": "#/definitions/hermes.productResponseDoc"
}
},
"400": {
@@ -279188,8 +309237,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279206,239 +309255,198 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GOAT recommended products for a product",
+ "summary": "Get a Hermès product",
"tags": [
- "GOAT"
+ "Hermes"
]
}
},
- "/goat/search": {
+ "/hermes/product/recommendations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches or browses GOAT's sneaker/streetwear/collectibles catalog by free-text query and/or facet filters (category, footwear sub-type, activity, color, gender, condition, brand, release year, price range, release-date range, silhouette, designer, in-stock/under-retail/instant-ship, curated collection), returning normalized product summaries (brand, silhouette, category, image, stock status, headline pricing across all sizes) plus the total matching count. Query is optional -- a facet filter alone browses the catalog the same way GOAT's own category/brand pages do. Credential-free public data from the same JSON API backing GOAT's own search page.",
- "operationId": "goat-search",
+ "description": "Returns the cross-sell shelves Hermès shows on a product page: \"keep exploring\" (similar items) and \"perfect partner\" (items styled with it), each a list of normalized products with price, stock and image. Takes the same sku forms as hermes-product. A product Hermès offers no recommendations for returns an empty shelves list rather than an error.",
+ "operationId": "hermes-product-recommendations",
"parameters": [
{
- "description": "Free-text search query, e.g. a model name, colorway, or style code. Optional -- omit to browse by facet filters alone",
- "in": "query",
- "name": "query",
- "type": "string",
- "x-example": "jordan 1"
- },
- {
- "description": "Only include products currently in stock",
- "in": "query",
- "name": "in_stock",
- "type": "boolean",
- "x-example": false
- },
- {
- "description": "Filter by category, comma-separated for multiple values. See GET /goat/search/facets for the current live list",
- "enum": [
- "footwear",
- "apparel",
- "accessories",
- "bags",
- "collectibles",
- "media",
- "sports",
- "jewelry",
- "home",
- "objects",
- "other",
- "art"
- ],
- "in": "query",
- "name": "categories",
- "type": "string",
- "x-example": "footwear"
- },
- {
- "description": "Filter by color, comma-separated for multiple values",
- "enum": [
- "black",
- "white",
- "blue",
- "grey",
- "red",
- "green",
- "pink",
- "cream",
- "brown",
- "purple",
- "multi-color",
- "orange",
- "tan",
- "yellow",
- "silver",
- "gold",
- "teal",
- "copper"
- ],
- "in": "query",
- "name": "colors",
- "type": "string",
- "x-example": "black"
- },
- {
- "description": "Filter by gender, comma-separated for multiple values",
- "enum": [
- "men",
- "youth",
- "infant",
- "women"
- ],
- "in": "query",
- "name": "genders",
- "type": "string",
- "x-example": "men"
- },
- {
- "description": "Filter by item condition, comma-separated for multiple values",
- "enum": [
- "new_no_defects",
- "used",
- "new_with_defects",
- "goat_clean"
- ],
- "in": "query",
- "name": "conditions",
- "type": "string",
- "x-example": "new_no_defects"
- },
- {
- "description": "Filter by footwear sub-type, comma-separated for multiple values",
- "enum": [
- "sneakers",
- "sandals",
- "cleats",
- "boots",
- "slip-ons"
- ],
+ "description": "Hermès product sku, in any of the forms hermes-product accepts",
"in": "query",
- "name": "product_types",
+ "name": "sku",
+ "required": true,
"type": "string",
- "x-example": "sneakers"
+ "x-example": "H252013Z BM"
},
{
- "description": "Filter by activity (sneakers only), comma-separated for multiple values",
+ "default": "us_en",
+ "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
"enum": [
- "lifestyle",
- "basketball",
- "running",
- "skateboarding"
+ "at_de",
+ "au_en",
+ "be_en",
+ "be_fr",
+ "br_pt",
+ "ca_en",
+ "ca_fr",
+ "ch_de",
+ "ch_fr",
+ "cz_en",
+ "de_de",
+ "dh_en",
+ "dk_en",
+ "es_es",
+ "fi_en",
+ "fr_fr",
+ "gr_en",
+ "hk_en",
+ "ie_en",
+ "it_it",
+ "jp_ja",
+ "kr_ko",
+ "lu_fr",
+ "mo_en",
+ "mx_es",
+ "my_en",
+ "nl_en",
+ "no_en",
+ "pl_en",
+ "pt_en",
+ "ri_en",
+ "se_en",
+ "sg_en",
+ "th_en",
+ "tw_zh",
+ "uk_en",
+ "us_en"
],
"in": "query",
- "name": "activities",
- "type": "string",
- "x-example": "lifestyle"
- },
- {
- "description": "Filter by one or more brand slugs, comma-separated, e.g. air-jordan,nike. GET /goat/search/facets lists GOAT's top brands; long-tail brands are valid here even when absent from that list",
- "in": "query",
- "name": "brands",
- "type": "string",
- "x-example": "air-jordan"
- },
- {
- "description": "Filter by one or more silhouettes, comma-separated, matching GOAT's own naming (see a product's silhouette field)",
- "in": "query",
- "name": "silhouettes",
- "type": "string",
- "x-example": "Air Jordan 1"
- },
- {
- "description": "Filter by one or more designers, comma-separated, matching GOAT's own naming (see a product's designer field)",
- "in": "query",
- "name": "designers",
- "type": "string",
- "x-example": "Peter Moore"
- },
- {
- "description": "Filter by season year(s), comma-separated, e.g. 2025,2026. See GET /goat/search/facets for the current live list",
- "in": "query",
- "name": "years",
- "type": "string",
- "x-example": "2025"
+ "name": "locale",
+ "type": "string"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/hermes.recommendationsResponseDoc"
+ }
},
- {
- "description": "Only include results priced at or above this amount, in cents",
- "in": "query",
- "name": "price_cents_min",
- "type": "integer",
- "x-example": 10000
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Only include results priced at or below this amount, in cents",
- "in": "query",
- "name": "price_cents_max",
- "type": "integer",
- "x-example": 20000
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Only include products currently trading below original retail price",
- "in": "query",
- "name": "under_retail",
- "type": "boolean",
- "x-example": false
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Only include products with GOAT Instant Ship availability",
- "in": "query",
- "name": "instant_ship",
- "type": "boolean",
- "x-example": false
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Hermès product's recommended items",
+ "tags": [
+ "Hermes"
+ ]
+ }
+ },
+ "/hermes/products": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a page of Hermès' full catalogue index for one market: each product's URL, slug, URL identifier and the date Hermès last modified it. Built from Hermès' own product sitemap, so it enumerates the entire catalogue for that market including items no category listing surfaces. Use changed_since to return only products added or updated on or after a date, which makes this a new-arrivals feed. The product_id is the identifier used in the product URL and is NOT the same string as the sku returned by hermes-category and hermes-search, which also encodes size.",
+ "operationId": "hermes-products",
+ "parameters": [
{
- "description": "Result sort order, defaults to relevance",
+ "default": "us_en",
+ "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
"enum": [
- "relevance",
- "newest",
- "price_asc",
- "price_desc",
- "discount"
- ],
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "relevance"
- },
- {
- "description": "Scope results to a GOAT curated collection (see GET /goat/collection), combinable with query, every other filter, and sort",
- "in": "query",
- "name": "collection_slug",
- "type": "string",
- "x-example": "top-trending-uk"
- },
- {
- "description": "Only include products released on or after this date (YYYY-MM-DD, UTC)",
+ "at_de",
+ "au_en",
+ "be_en",
+ "be_fr",
+ "br_pt",
+ "ca_en",
+ "ca_fr",
+ "ch_de",
+ "ch_fr",
+ "cz_en",
+ "de_de",
+ "dh_en",
+ "dk_en",
+ "es_es",
+ "fi_en",
+ "fr_fr",
+ "gr_en",
+ "hk_en",
+ "ie_en",
+ "it_it",
+ "jp_ja",
+ "kr_ko",
+ "lu_fr",
+ "mo_en",
+ "mx_es",
+ "my_en",
+ "nl_en",
+ "no_en",
+ "pl_en",
+ "pt_en",
+ "ri_en",
+ "se_en",
+ "sg_en",
+ "th_en",
+ "tw_zh",
+ "uk_en",
+ "us_en"
+ ],
"in": "query",
- "name": "released_after",
- "type": "string",
- "x-example": "2025-08-01"
+ "name": "locale",
+ "type": "string"
},
{
- "description": "Only include products released on or before this date (YYYY-MM-DD, UTC)",
+ "default": 1,
+ "description": "One-based result page",
"in": "query",
- "name": "released_before",
- "type": "string",
- "x-example": "2025-08-31"
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
},
{
- "description": "1-indexed result page, defaults to 1",
+ "default": 100,
+ "description": "Results per page, 1-500",
"in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "maximum": 500,
+ "minimum": 1,
+ "name": "limit",
+ "type": "integer"
},
{
- "description": "Results per page, defaults to 12, maximum 100",
+ "description": "Return only products last modified on or after this YYYY-MM-DD date",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 12
+ "name": "changed_since",
+ "type": "string",
+ "x-example": "2026-09-01"
}
],
"produces": [
@@ -279448,7 +309456,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.searchResponseDoc"
+ "$ref": "#/definitions/hermes.productsResponseDoc"
}
},
"400": {
@@ -279457,8 +309465,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279475,19 +309483,83 @@
"ApiKeyAuth": []
}
],
- "summary": "Search GOAT products",
+ "summary": "List the Hermès catalogue index",
"tags": [
- "GOAT"
+ "Hermes"
]
}
},
- "/goat/search/facets": {
+ "/hermes/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the accepted values for goat_search's filter parameters: categories, colors, genders, conditions, brands, and years are read live from GOAT's own search API so a value GOAT adds is discoverable without any client-side change, while product_types and activities are served from a maintained list because GOAT exposes no live facet for them. brands is GOAT's top brands ordered by product count, not the complete brand list -- when brands_truncated is true, brands beyond the ones listed exist and remain valid goat_search values. Credential-free public data.",
- "operationId": "goat-search-facets",
+ "description": "Searches the Hermès catalogue by keyword and returns a page of normalized products in the same shape as hermes-category. A query Hermès has no match for returns total 0 with an empty products array: Hermès itself renders unrelated fallback recommendations on a no-results page, and those are deliberately not returned as results. When Hermès applies its own spelling correction the corrected term is reported in results_for. Page size is fixed at 48 by Hermès and cannot be changed.",
+ "operationId": "hermes-search",
+ "parameters": [
+ {
+ "description": "Search keyword",
+ "in": "query",
+ "name": "query",
+ "required": true,
+ "type": "string",
+ "x-example": "scarf"
+ },
+ {
+ "default": "us_en",
+ "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
+ "enum": [
+ "at_de",
+ "au_en",
+ "be_en",
+ "be_fr",
+ "br_pt",
+ "ca_en",
+ "ca_fr",
+ "ch_de",
+ "ch_fr",
+ "cz_en",
+ "de_de",
+ "dh_en",
+ "dk_en",
+ "es_es",
+ "fi_en",
+ "fr_fr",
+ "gr_en",
+ "hk_en",
+ "ie_en",
+ "it_it",
+ "jp_ja",
+ "kr_ko",
+ "lu_fr",
+ "mo_en",
+ "mx_es",
+ "my_en",
+ "nl_en",
+ "no_en",
+ "pl_en",
+ "pt_en",
+ "ri_en",
+ "se_en",
+ "sg_en",
+ "th_en",
+ "tw_zh",
+ "uk_en",
+ "us_en"
+ ],
+ "in": "query",
+ "name": "locale",
+ "type": "string"
+ },
+ {
+ "default": 1,
+ "description": "One-based result page; page size is fixed at 48. Page 1 is fully validated; pages beyond 1 are best-effort and provisional",
+ "in": "query",
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
+ }
+ ],
"produces": [
"application/json"
],
@@ -279495,11 +309567,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.facetsResponseDoc"
+ "$ref": "#/definitions/hermes.searchResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279516,19 +309594,81 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GOAT search facet values",
+ "summary": "Search the Hermès catalogue",
"tags": [
- "GOAT"
+ "Hermes"
]
}
},
- "/goat/searches/trending": {
+ "/hermes/stores": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the search terms GOAT is currently surfacing as popular, in GOAT's own ranking order -- the same list its own search box shows. Each term is free text ready to pass to GET /goat/search's query parameter. Credential-free public data.",
- "operationId": "goat-trending-searches",
+ "description": "Returns Hermès' worldwide store directory: name, street address, city, postal code, country, geographic coordinates, phone, displayed opening hours, whether in-store appointments are offered, and store photos. Optionally narrowed to one country (by name or ISO-2 code) or city. Hermès publishes the same worldwide directory for every market, so locale selects the language names are returned in rather than which stores are listed.",
+ "operationId": "hermes-stores",
+ "parameters": [
+ {
+ "default": "us_en",
+ "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
+ "enum": [
+ "at_de",
+ "au_en",
+ "be_en",
+ "be_fr",
+ "br_pt",
+ "ca_en",
+ "ca_fr",
+ "ch_de",
+ "ch_fr",
+ "cz_en",
+ "de_de",
+ "dh_en",
+ "dk_en",
+ "es_es",
+ "fi_en",
+ "fr_fr",
+ "gr_en",
+ "hk_en",
+ "ie_en",
+ "it_it",
+ "jp_ja",
+ "kr_ko",
+ "lu_fr",
+ "mo_en",
+ "mx_es",
+ "my_en",
+ "nl_en",
+ "no_en",
+ "pl_en",
+ "pt_en",
+ "ri_en",
+ "se_en",
+ "sg_en",
+ "th_en",
+ "tw_zh",
+ "uk_en",
+ "us_en"
+ ],
+ "in": "query",
+ "name": "locale",
+ "type": "string"
+ },
+ {
+ "description": "Case-insensitive country filter, matched against the country name or its ISO-2 code",
+ "in": "query",
+ "name": "country",
+ "type": "string",
+ "x-example": "France"
+ },
+ {
+ "description": "Case-insensitive city filter",
+ "in": "query",
+ "name": "city",
+ "type": "string",
+ "x-example": "Paris"
+ }
+ ],
"produces": [
"application/json"
],
@@ -279536,11 +309676,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.trendingSearchesResponseDoc"
+ "$ref": "#/definitions/hermes.storesResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279557,34 +309703,72 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GOAT trending searches",
+ "summary": "List Hermès stores",
"tags": [
- "GOAT"
+ "Hermes"
]
}
},
- "/goat/suggest": {
+ "/hermes/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns GOAT's own search-box autocomplete for a partial query: matching curated collections and matching products. The collections carry the slug values accepted by GET /goat/collection and by GET /goat/search's collection_slug parameter, making this the way to discover collection slugs. Credential-free public data.",
- "operationId": "goat-suggest",
+ "description": "Returns Hermès' own search-box autocomplete for a partial term: matching categories with the number of items behind each, and matching products. The category codes returned are the same codes hermes-category accepts, so a suggestion feeds straight into a category browse. An empty query is supported and returns Hermès' default suggestions rather than an error.",
+ "operationId": "hermes-suggest",
"parameters": [
{
- "description": "Partial search text to autocomplete",
+ "description": "Partial search term; may be empty for Hermès' default suggestions",
"in": "query",
"name": "query",
- "required": true,
"type": "string",
- "x-example": "jord"
+ "x-example": "bel"
},
{
- "description": "Maximum curated collections to return. Defaults to 8, maximum 20. Does not affect the product count, which upstream fixes at 25",
+ "default": "us_en",
+ "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
+ "enum": [
+ "at_de",
+ "au_en",
+ "be_en",
+ "be_fr",
+ "br_pt",
+ "ca_en",
+ "ca_fr",
+ "ch_de",
+ "ch_fr",
+ "cz_en",
+ "de_de",
+ "dh_en",
+ "dk_en",
+ "es_es",
+ "fi_en",
+ "fr_fr",
+ "gr_en",
+ "hk_en",
+ "ie_en",
+ "it_it",
+ "jp_ja",
+ "kr_ko",
+ "lu_fr",
+ "mo_en",
+ "mx_es",
+ "my_en",
+ "nl_en",
+ "no_en",
+ "pl_en",
+ "pt_en",
+ "ri_en",
+ "se_en",
+ "sg_en",
+ "th_en",
+ "tw_zh",
+ "uk_en",
+ "us_en"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 8
+ "name": "locale",
+ "type": "string"
}
],
"produces": [
@@ -279594,7 +309778,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goat.suggestResponseDoc"
+ "$ref": "#/definitions/hermes.suggestResponseDoc"
}
},
"400": {
@@ -279603,8 +309787,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279621,29 +309805,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Autocomplete a GOAT search",
+ "summary": "Hermès search suggestions",
"tags": [
- "GOAT"
+ "Hermes"
]
}
},
- "/goldin/auctions": {
+ "/hindustantimes/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Goldin's complete auction event history, back to 2012 -- title, type, status, start/end window, and buyer's premium for every auction Goldin has run. Pass an auction's own id as auction_id to goldin-search to browse its lots.",
- "operationId": "goldin-auctions",
+ "description": "Returns public Hindustan Times article metadata and body paragraphs from a canonical article URL. A story Hindustan Times marks subscriber-only (chiefly syndicated Wall Street Journal / The Economist partner content) returns a permission error instead of a body.",
+ "operationId": "hindustantimes-article",
"parameters": [
{
- "description": "asc (oldest first) or desc (newest first, default)",
- "enum": [
- "asc",
- "desc"
- ],
+ "description": "Canonical Hindustan Times article URL",
"in": "query",
- "name": "order",
- "type": "string"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.hindustantimes.com/india-news/example-article-slug-101790241314039.html"
}
],
"produces": [
@@ -279653,7 +309832,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goldin.auctionsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -279662,8 +309841,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "403": {
+ "description": "Forbidden",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279680,29 +309865,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Goldin's full auction history",
+ "summary": "Get Hindustan Times article content",
"tags": [
- "Goldin"
+ "Hindustan Times"
]
}
},
- "/goldin/categories": {
+ "/hindustantimes/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Goldin's full filter-enum surface for goldin-search, scoped to one lot pool -- category, sub_category, certification, item_type, and the live auction list (each with its own id, name, and current lot count), plus the sort enum valid for that pool. category/sub_category/certification/item_type are read live from Goldin's own current inventory, not a fixed taxonomy, so results can shift over time. The Auction pool (default) and the Fixed Price \"Private Sales\" marketplace are disjoint item pools with different certification/item_type values and different sort enums -- pass the same auction_type here and to goldin-search.",
- "operationId": "goldin-categories",
+ "description": "Returns a Hindustan Times author's byline metadata, biography, contact/social links, and their most recent articles (the first page only) from a canonical author URL.",
+ "operationId": "hindustantimes-author",
"parameters": [
{
- "description": "Auction (default) or Fixed_Price -- selects which lot pool to discover enums for",
- "enum": [
- "Auction",
- "Fixed_Price"
- ],
+ "description": "Canonical Hindustan Times author URL",
"in": "query",
- "name": "auction_type",
- "type": "string"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.hindustantimes.com/author/ht-news-desk-101650005059496"
}
],
"produces": [
@@ -279712,7 +309892,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goldin.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.hindustanTimesAuthorResponseDoc"
}
},
"400": {
@@ -279721,8 +309901,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279733,26 +309919,50 @@
"ApiKeyAuth": []
}
],
- "summary": "List Goldin's search filter enums",
+ "summary": "Get a Hindustan Times author profile",
"tags": [
- "Goldin"
+ "Hindustan Times"
]
}
},
- "/goldin/listing": {
+ "/hindustantimes/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "One lot's full public detail: title, description, current bid/starting price, auction window and status, grading info, images, and prev/next lot pointers within the same auction. slug is the meta_slug from a goldin-search result (or the trailing path segment of the lot's own goldin.co/item/{slug} page URL).",
- "operationId": "goldin-listing",
+ "description": "Returns fresh headlines from one public Hindustan Times section.",
+ "operationId": "hindustantimes-headlines",
"parameters": [
{
- "description": "The lot's meta_slug, from a goldin-search result",
+ "description": "Hindustan Times section slug",
+ "enum": [
+ "india-news",
+ "world-news",
+ "cities",
+ "business",
+ "sports",
+ "cricket",
+ "entertainment",
+ "lifestyle",
+ "astrology",
+ "education",
+ "technology",
+ "opinion",
+ "science",
+ "books",
+ "real-estate",
+ "car-bike",
+ "nri",
+ "htcity",
+ "ht-insight",
+ "ht-explainers",
+ "editorials",
+ "trending",
+ "india-and-the-elections",
+ "editors-pick"
+ ],
"in": "query",
- "name": "slug",
+ "name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "india-news"
}
],
"produces": [
@@ -279762,7 +309972,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goldin.listingResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -279771,14 +309981,40 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Hindustan Times section headlines",
+ "tags": [
+ "Hindustan Times"
+ ]
+ }
+ },
+ "/hindustantimes/news": {
+ "get": {
+ "description": "Returns fresh Hindustan Times top stories from its public \"Latest News\" feed.",
+ "operationId": "hindustantimes-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279795,99 +310031,58 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Goldin lot's full public detail",
+ "summary": "Get Hindustan Times top stories",
"tags": [
- "Goldin"
+ "Hindustan Times"
]
}
},
- "/goldin/search": {
+ "/hindustantimes/sections": {
+ "get": {
+ "description": "Returns the public Hindustan Times section inventory used by the headlines endpoint.",
+ "operationId": "hindustantimes-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Hindustan Times sections",
+ "tags": [
+ "Hindustan Times"
+ ]
+ }
+ },
+ "/hm/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Browse or search Goldin's current lot inventory by free-text keyword, category, sub_category, certification, item_type, and auction_id, in a caller-selected sort order. Every filter is optional and combines with AND semantics. All enum values come from goldin-categories -- pass the matching auction_type to both. The Auction pool (default) and the Fixed Price \"Private Sales\" marketplace are disjoint item pools with different certification/item_type values and different sort enums.",
- "operationId": "goldin-search",
+ "description": "Returns H&M's own storefront category navigation, department by department: every direct nav item and subcategory currently shown in the site's own menu, with its display name and storefront URL. Where this build has separately verified the value against hm-listing's own category_id parameter, that id is included too; category_id is omitted for entries not yet verified rather than guessed, since the visible category label is confirmed NOT a reliable way to derive H&M's real listing category ids for every category. department, when given, filters the result to one department.",
+ "operationId": "hm-categories",
"parameters": [
{
- "description": "Auction (default) or Fixed_Price -- selects which lot pool to search",
- "enum": [
- "Auction",
- "Fixed_Price"
- ],
- "in": "query",
- "name": "auction_type",
- "type": "string"
- },
- {
- "description": "Free-text search across lot titles/descriptions",
- "in": "query",
- "name": "keyword",
- "type": "string"
- },
- {
- "description": "One value from goldin-categories' category field",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "Sport"
- },
- {
- "description": "One value from goldin-categories' sub_category field",
- "in": "query",
- "name": "sub_category",
- "type": "string",
- "x-example": "Baseball"
- },
- {
- "description": "One value from goldin-categories' certification field",
- "in": "query",
- "name": "certification",
- "type": "string",
- "x-example": "PSA"
- },
- {
- "description": "One value from goldin-categories' item_type field",
- "in": "query",
- "name": "item_type",
- "type": "string",
- "x-example": "Single Cards"
- },
- {
- "description": "One auction id from goldin-categories' auctions field -- only meaningful for auction_type Auction",
- "in": "query",
- "name": "auction_id",
- "type": "string"
- },
- {
- "description": "One value from goldin-categories' own sort field for the same auction_type. Auction pool: Featured (default), Ending_Soonest, Highest_Bids, Lowest_Bids, Most_Bids, Least_Bids, Most_Recent_Bids, Highest_Lot_Number, Recently_Started. Fixed Price pool: Recently_Created (default), Highest_Bids, Lowest_Bids",
+ "description": "Filter to one storefront department",
"enum": [
- "Featured",
- "Ending_Soonest",
- "Highest_Bids",
- "Lowest_Bids",
- "Most_Bids",
- "Least_Bids",
- "Most_Recent_Bids",
- "Highest_Lot_Number",
- "Recently_Started",
- "Recently_Created"
+ "women",
+ "men",
+ "kids",
+ "home",
+ "beauty"
],
"in": "query",
- "name": "sort",
+ "name": "department",
"type": "string"
- },
- {
- "description": "1-based page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer"
- },
- {
- "description": "Page size, defaults to 24, capped at 96",
- "in": "query",
- "name": "page_size",
- "type": "integer"
}
],
"produces": [
@@ -279897,7 +310092,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goldin.searchResponseDoc"
+ "$ref": "#/definitions/hm.categoriesResponseDoc"
}
},
"400": {
@@ -279906,8 +310101,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279924,31 +310119,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Goldin's lot auction inventory",
+ "summary": "Browse H&M's storefront category navigation",
"tags": [
- "Goldin"
+ "H&M"
]
}
},
- "/goldin/suggest": {
+ "/hm/listing": {
"get": {
"consumes": [
"application/json"
],
- "description": "Goldin's own search-suggestions/autocomplete for a partial keyword, matching the site's own search box typeahead. keyword is optional -- when omitted, returns Goldin's current trending/popular searches instead of an error.",
- "operationId": "goldin-suggest",
+ "description": "Returns one H&M category's product listing page: normalized products with pricing, images, colors, and per-size stock, sourced from H&M's own app-backend listing data. category_id is an H&M category slug (e.g. ladies_newarrivals_all, men_newarrivals_all, ladies_jeans) -- this build does not expose a category/nav-tree discovery endpoint, so category_id values are currently sourced from known H&M storefront paths rather than a lookup call. Pagination is page-based and real: requesting a page beyond the category's real last page returns a normal response with an empty products array rather than an error.",
+ "operationId": "hm-listing",
"parameters": [
{
- "description": "Partial search query, e.g. \\",
+ "description": "H&M category slug",
"in": "query",
- "name": "keyword",
+ "name": "category_id",
+ "required": true,
+ "type": "string",
+ "x-example": "ladies_newarrivals_all"
+ },
+ {
+ "description": "Page number, one-based, defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Results per page, 1 to 72, defaults to 36",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 36
+ },
+ {
+ "description": "Sort order, defaults to RELEVANCE",
+ "enum": [
+ "RELEVANCE",
+ "NEWEST_FIRST",
+ "PRICE_ASCENDING",
+ "PRICE_DESCENDING"
+ ],
+ "in": "query",
+ "name": "sort",
"type": "string"
},
{
- "description": "Max suggestions to return, defaults to 8, capped at 20",
+ "description": "Optional filter for newly added items only",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "is_new",
+ "type": "boolean"
}
],
"produces": [
@@ -279958,7 +310181,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goldin.suggestResponseDoc"
+ "$ref": "#/definitions/hm.listingResponseDoc"
}
},
"400": {
@@ -279967,8 +310190,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -279985,27 +310208,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Goldin's search suggestions for a keyword",
+ "summary": "Browse an H&M category's product listing",
"tags": [
- "Goldin"
+ "H&M"
]
}
},
- "/goodreads/author/{id}": {
+ "/hm/product/{product_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Goodreads author profile: bio, birth/death dates, website, genres, photo, and aggregate rating stats. Credential-free public Goodreads data.",
- "operationId": "goodreads-author",
+ "description": "Returns one H&M product's full detail: every purchasable color grouped with its own per-size price and live availability, plus an aggregate rating and real customer reviews (author label, date, body, rating, and any fit-feedback tags the reviewer left, such as \"True to Size\") when the product has any. This data is not available from hm-listing or hm-search, which only carry one representative price and a per-color stock count. product_id is the numeric id from a listing/search result's id field or its url field's productpage..html segment. An unrecognized product_id returns 404.",
+ "operationId": "hm-product",
"parameters": [
{
- "description": "Goodreads author id",
+ "description": "Numeric H&M product id, from a listing/search result's id field",
"in": "path",
- "name": "id",
+ "name": "product_id",
"required": true,
"type": "string",
- "x-example": "153394"
+ "x-example": "1268470004"
}
],
"produces": [
@@ -280015,7 +310238,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goodreads.authorResponseDoc"
+ "$ref": "#/definitions/hm.productDetailResponseDoc"
}
},
"400": {
@@ -280030,8 +310253,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -280048,33 +310271,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Goodreads author",
+ "summary": "Get an H&M product's full detail",
"tags": [
- "Goodreads"
+ "H&M"
]
}
},
- "/goodreads/author/{id}/books": {
+ "/hm/product/{product_id}/related": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns an author's paginated works list (title, author, average rating, ratings count). Credential-free public Goodreads data.",
- "operationId": "goodreads-author-books",
+ "description": "Returns every product-detail recommendation list H&M's own app shows for one product (which lists are present genuinely varies by product -- for example \"more from series\" and \"style with\" appear only when the product has one, while \"alternatives\" and \"upsell\" are more consistently present). An unrecognized product_id returns a well-formed empty result rather than an error.",
+ "operationId": "hm-product-related",
"parameters": [
{
- "description": "Goodreads author id",
+ "description": "Numeric H&M product id, from a listing/search result's id field",
"in": "path",
- "name": "id",
+ "name": "product_id",
"required": true,
"type": "string",
- "x-example": "153394"
- },
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "x-example": "1268470004"
}
],
"produces": [
@@ -280084,7 +310301,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goodreads.authorBooksResponseDoc"
+ "$ref": "#/definitions/hm.relatedResponseDoc"
}
},
"400": {
@@ -280093,14 +310310,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -280117,33 +310328,41 @@
"ApiKeyAuth": []
}
],
- "summary": "List a Goodreads author's books",
+ "summary": "Get an H&M product's related items",
"tags": [
- "Goodreads"
+ "H&M"
]
}
},
- "/goodreads/author/{id}/quotes": {
+ "/hm/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns an author's paginated attributed-quotes list (quote text, tags, like count, and — when the quote is credited to a specific book — that book's title, id, and work id). Credential-free public Goodreads data.",
- "operationId": "goodreads-author-quotes",
+ "description": "Runs a free-text keyword search against H&M's own app-backend search data and returns normalized products with pricing, images, colors, and per-size stock, plus search-quality metadata (a spelling-correction suggestion, related searches, and a content-filter flag). Unlike category browsing, an obscure or nonsense keyword returns a genuine empty result (zero products) rather than a fallback set. Pagination is page-based and real: requesting a page beyond the real last page returns a normal response with an empty products array rather than an error.",
+ "operationId": "hm-search",
"parameters": [
{
- "description": "Goodreads author id",
- "in": "path",
- "name": "id",
+ "description": "Free-text search keyword",
+ "in": "query",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "153394"
+ "x-example": "jeans"
},
{
- "description": "1-based page number, default 1",
+ "description": "Page number, one-based, defaults to 1",
"in": "query",
"name": "page",
- "type": "integer"
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Results per page, 1 to 72, defaults to 36",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 36
}
],
"produces": [
@@ -280153,7 +310372,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goodreads.authorQuotesResponseDoc"
+ "$ref": "#/definitions/hm.searchResponseDoc"
}
},
"400": {
@@ -280162,14 +310381,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -280186,27 +310399,26 @@
"ApiKeyAuth": []
}
],
- "summary": "List a Goodreads author's attributed quotes",
+ "summary": "Search H&M product listings by free-text keyword",
"tags": [
- "Goodreads"
+ "H&M"
]
}
},
- "/goodreads/book/{id}": {
+ "/hm/search/suggestions": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a normalized Goodreads book: description, authors, series, genres, format, pages, publisher, publication date, ISBNs, and aggregate rating with the full 1-5 star distribution. Credential-free public Goodreads data (goodreads.com), parsed from the book page's embedded GraphQL cache.",
- "operationId": "goodreads-book",
+ "description": "Returns H&M's own search-box typeahead suggestions, sourced from the same credential-free app-backend host as hm-listing/hm-search. When query is given, returns spelling-complete phrase suggestions and merchandised content results. When query is omitted or empty, instead returns trending searches and popular-search shortcuts (phrase/content suggestions are both empty in that mode). search_history is part of the real upstream response but confirmed NOT session-scoped -- it returned the identical list across separate cookie-free requests, so treat it as fixed default content rather than a real per-caller history.",
+ "operationId": "hm-search-suggestions",
"parameters": [
{
- "description": "Goodreads book id",
- "in": "path",
- "name": "id",
- "required": true,
+ "description": "Free-text search-box input; omit or leave empty for trending/popular searches instead",
+ "in": "query",
+ "name": "query",
"type": "string",
- "x-example": "2767052"
+ "x-example": "jean"
}
],
"produces": [
@@ -280216,23 +310428,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goodreads.bookResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/hm.suggestResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -280249,33 +310449,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Goodreads book",
+ "summary": "Get H&M search-box suggestions",
"tags": [
- "Goodreads"
+ "H&M"
]
}
},
- "/goodreads/book/{id}/editions": {
+ "/hm/stores": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a work's paginated edition list (per-edition book id, format, page count, publication date, publisher, ISBN/ISBN13/ASIN, language, and rating) — every other translation, printing, and format of the requested book id. Goodreads keys editions by a separate \"work id\", not the book id in the path, so this makes one extra internal request to resolve it; requests against a book with no editions data return an upstream error.",
- "operationId": "goodreads-book-editions",
+ "description": "Returns H&M physical retail store locations near a point: name, phone, full address, and coordinates. Either search, or both lat and lng, is required. search is a free-text zip code or place name that is first resolved to coordinates; if it does not resolve to any location, a well-formed empty result is returned rather than an error. lat and lng, when given directly, skip that resolution step. radius_meters is optional (1000 to 50000, defaults to 10000). A location with no stores within the radius returns a well-formed empty result rather than an error.",
+ "operationId": "hm-stores",
"parameters": [
{
- "description": "Goodreads book id",
- "in": "path",
- "name": "id",
- "required": true,
+ "description": "Free-text zip code or place name to resolve to coordinates",
+ "in": "query",
+ "name": "search",
"type": "string",
- "x-example": "2767052"
+ "x-example": "10001"
},
{
- "description": "1-based page number, default 1",
+ "description": "Latitude, requires lng",
"in": "query",
- "name": "page",
- "type": "integer"
+ "name": "lat",
+ "type": "number",
+ "x-example": 40.7128
+ },
+ {
+ "description": "Longitude, requires lat",
+ "in": "query",
+ "name": "lng",
+ "type": "number",
+ "x-example": -74.006
+ },
+ {
+ "description": "Search radius in meters, 1000 to 50000, defaults to 10000",
+ "in": "query",
+ "name": "radius_meters",
+ "type": "integer",
+ "x-example": 10000
}
],
"produces": [
@@ -280285,7 +310499,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goodreads.editionsResponseDoc"
+ "$ref": "#/definitions/hm.storesResponseDoc"
}
},
"400": {
@@ -280294,14 +310508,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -280318,33 +310526,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List a Goodreads book's editions",
+ "summary": "Find nearby H&M physical stores",
"tags": [
- "Goodreads"
+ "H&M"
]
}
},
- "/goodreads/book/{id}/reviews": {
+ "/hollywoodreporter/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a book's featured reviews (reviewer, rating, text, date, like/comment counts, spoiler flag), sorted by like count. Credential-free public Goodreads data.",
- "operationId": "goodreads-book-reviews",
+ "description": "Returns public The Hollywood Reporter article metadata (title, author(s), published/updated dates, section, lead image) and body paragraphs from a canonical article URL.",
+ "operationId": "hollywoodreporter-article",
"parameters": [
{
- "description": "Goodreads book id",
- "in": "path",
- "name": "id",
+ "description": "Canonical Hollywood Reporter article URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "2767052"
- },
- {
- "description": "Max reviews, default 10, max 50",
- "in": "query",
- "name": "limit",
- "type": "integer"
+ "x-example": "https://www.hollywoodreporter.com/movies/movie-news/example-story-1236709066/"
}
],
"produces": [
@@ -280354,7 +310553,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goodreads.reviewsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -280369,12 +310568,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -280387,27 +310580,31 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Goodreads book's featured reviews",
+ "summary": "Get The Hollywood Reporter article content",
"tags": [
- "Goodreads"
+ "Hollywood Reporter"
]
}
},
- "/goodreads/genre/{name}": {
+ "/hollywoodreporter/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns up to 50 books on a Goodreads genre/shelf tag page (e.g. fantasy, romance, science-fiction), Goodreads' credential-free per-tag \"top books\" view: title, author, average rating, ratings count, publication year, and how many times the book was shelved under this specific tag. Goodreads' genre/shelf taxonomy is an open, user-generated folksonomy of thousands of tags, not a small fixed list, so there is no directory endpoint — pass any known tag slug, e.g. from a book's genres[] field or a value seen on goodreads.com. There is no pagination beyond the first 50.",
- "operationId": "goodreads-genre",
+ "description": "Returns one Hollywood Reporter staff writer or contributor's public profile: name, job title, headshot, biography, social/contact links, and one page of their recent articles.",
+ "operationId": "hollywoodreporter-author",
"parameters": [
{
- "description": "Goodreads genre/shelf tag",
- "in": "path",
- "name": "name",
+ "description": "Canonical hollywoodreporter.com/author/ URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "fantasy"
+ "x-example": "https://www.hollywoodreporter.com/author/borys-kit/"
+ },
+ {
+ "description": "1-based page of recent articles to return; defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -280417,7 +310614,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goodreads.genreResponseDoc"
+ "$ref": "#/definitions/publicnews.hollywoodReporterAuthorResponseDoc"
}
},
"400": {
@@ -280432,12 +310629,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -280450,33 +310641,63 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Goodreads genre shelf",
+ "summary": "Get a Hollywood Reporter author profile",
"tags": [
- "Goodreads"
+ "Hollywood Reporter"
]
}
},
- "/goodreads/list/{id}": {
+ "/hollywoodreporter/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a Goodreads Listopia list (ranked book list) by id, paginated. Credential-free public Goodreads data; page 1 of well-known lists may be served from a faster live source, with the public list page itself as fallback for every other case.",
- "operationId": "goodreads-list",
+ "description": "Returns fresh headlines from one public The Hollywood Reporter section or editorial-vertical feed.",
+ "operationId": "hollywoodreporter-headlines",
"parameters": [
{
- "description": "Goodreads list id",
- "in": "path",
- "name": "id",
+ "description": "Hollywood Reporter section slug",
+ "enum": [
+ "arts",
+ "business",
+ "business-news",
+ "digital",
+ "film-tv-music-news",
+ "general-news",
+ "lifestyle",
+ "lifestyle-news",
+ "local-news",
+ "movie-features",
+ "movie-news",
+ "movie-reviews",
+ "movie-videos",
+ "movies",
+ "music",
+ "music-features",
+ "music-industry-news",
+ "music-news",
+ "news",
+ "politics-news",
+ "real-estate",
+ "shopping",
+ "style",
+ "tv",
+ "tv-features",
+ "tv-news",
+ "tv-reviews",
+ "tv-videos",
+ "awards",
+ "behind-the-screen",
+ "heat-vision",
+ "international",
+ "live-feed",
+ "rambling-reporter",
+ "the-fien-print",
+ "the-race",
+ "thr-esq"
+ ],
+ "in": "query",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "1"
- },
- {
- "description": "1-based page number, default 1",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "x-example": "arts"
}
],
"produces": [
@@ -280486,7 +310707,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goodreads.listResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -280495,18 +310716,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -280519,19 +310728,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Goodreads Listopia list",
+ "summary": "Get The Hollywood Reporter section headlines",
"tags": [
- "Goodreads"
+ "Hollywood Reporter"
]
}
},
- "/goodreads/lists": {
+ "/hollywoodreporter/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a catalog of well-known Goodreads Listopia lists (id, name, category). Goodreads has no directory or search endpoint for the tens of thousands of user-created lists, so this is served from a live popular-lists source when available, falling back to a curated, hand-picked catalog otherwise. Pass a returned id to GET /goodreads/list/{id} for that list's ranked book contents. Category enum: `general`, `genre`, `era`, `young_adult`, `children`, `holiday`.",
- "operationId": "goodreads-lists",
+ "description": "Returns fresh The Hollywood Reporter entertainment-industry top stories from its public RSS feed.",
+ "operationId": "hollywoodreporter-news",
"produces": [
"application/json"
],
@@ -280539,7 +310745,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/goodreads.listsResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -280548,8 +310754,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -280560,61 +310766,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List curated Goodreads Listopia lists",
+ "summary": "Get The Hollywood Reporter top stories",
"tags": [
- "Goodreads"
+ "Hollywood Reporter"
]
}
},
- "/goodreads/search": {
+ "/hollywoodreporter/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Goodreads books by title/author. Credential-free public Goodreads data via the autocomplete endpoint (book results only).",
- "operationId": "goodreads-search",
- "parameters": [
- {
- "description": "Search query",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string",
- "x-example": "hunger games"
- },
- {
- "description": "Max results, default 10, max 50",
- "in": "query",
- "name": "limit",
- "type": "integer"
- }
- ],
+ "description": "Returns the complete public section inventory accepted by /api/v1/hollywoodreporter/headlines (both The Hollywood Reporter's editorial categories and its named editorial verticals).",
+ "operationId": "hollywoodreporter-sections",
"produces": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/goodreads.searchResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
+ "responses": {
+ "200": {
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -280623,29 +310792,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Goodreads books",
+ "summary": "Get The Hollywood Reporter sections",
"tags": [
- "Goodreads"
+ "Hollywood Reporter"
]
}
},
- "/google-jobs/job": {
+ "/homedepot/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Google Careers posting by its numeric job id (the `id` field returned by search). Parsed from careers.google.com's server-rendered job detail page.",
- "operationId": "google-jobs-job",
- "parameters": [
- {
- "description": "Numeric Google job id",
- "in": "query",
- "name": "id",
- "required": true,
- "type": "string",
- "x-example": "85207000467546822"
- }
- ],
+ "description": "Returns Home Depot's top-level department taxonomy (name, path, url) from the homepage's own \"All Departments\" navigation. Each department's path is directly usable as GET /homedepot/category's path parameter.",
+ "operationId": "homedepot-categories",
"produces": [
"application/json"
],
@@ -280653,19 +310812,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googlejobs.jobResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/homedepot.categoriesResponseDoc"
}
},
"429": {
@@ -280686,37 +310833,46 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Jobs single posting",
+ "summary": "Home Depot department taxonomy",
"tags": [
- "Google Jobs"
+ "Home Depot"
]
}
},
- "/google-jobs/search": {
+ "/homedepot/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Google's public careers site (careers.google.com) via its server-rendered search page's embedded job data. Each result includes the description, responsibilities, and qualifications inline. Page size is fixed by Google at 20 results.",
- "operationId": "google-jobs-search",
+ "description": "Returns one page of a Home Depot category or brand browse page's product grid: normalized products with title, image, model, current/original price, and rating/review count, plus the category's total result count and the refinement facets the page offers. path is the segment of a /b/ URL after \"/b/\", e.g. \"Tools-Power-Tools-Drills-Impact-Drivers/N-5yc1vZc29x\"; a full https://www.homedepot.com/b/... URL or a \"/b/...\" path is also accepted. sort selects the result ordering and is one of best_match, top_sellers, top_rated, price_low_to_high, price_high_to_low, most_popular, delivery_date; omit it to keep the site's default ordering. page is a 1-indexed page number (default 1, maximum 42), 24 products per page. Each returned facet's path is directly usable as this endpoint's own path parameter to drill down. An unrecognized or blocked path returns an upstream error rather than an empty result.",
+ "operationId": "homedepot-category",
"parameters": [
{
- "description": "Search query",
+ "description": "Home Depot category/brand browse path, e.g. \\",
"in": "query",
- "name": "q",
+ "name": "path",
"required": true,
"type": "string",
- "x-example": "software engineer"
+ "x-example": "Tools-Power-Tools-Drills-Impact-Drivers/N-5yc1vZc29x"
},
{
- "description": "Location filter (free text)",
+ "description": "Result ordering. One of: best_match, top_sellers, top_rated, price_low_to_high, price_high_to_low, most_popular, delivery_date. Omit for the site's default ordering",
+ "enum": [
+ "best_match",
+ "top_sellers",
+ "top_rated",
+ "price_low_to_high",
+ "price_high_to_low",
+ "most_popular",
+ "delivery_date"
+ ],
"in": "query",
- "name": "location",
+ "name": "sort",
"type": "string",
- "x-example": "Singapore"
+ "x-example": "top_sellers"
},
{
- "description": "Page number, 1-based",
+ "description": "1-indexed page number, default 1, maximum 42 (12 products per page)",
"in": "query",
"name": "page",
"type": "integer",
@@ -280730,7 +310886,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googlejobs.searchResponseDoc"
+ "$ref": "#/definitions/homedepot.categoryResponseDoc"
}
},
"400": {
@@ -280739,6 +310895,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -280757,26 +310919,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Jobs search",
+ "summary": "Browse a Home Depot category or brand page",
"tags": [
- "Google Jobs"
+ "Home Depot"
]
}
},
- "/google/finance/analyst-articles/{quote}": {
+ "/homedepot/product/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized analyst article results for a quote.",
- "operationId": "google-finance-analyst-articles",
+ "description": "Returns one Home Depot product's full detail: name, description, brand, model, store SKU, GTIN, price, images, aggregate rating and review count, and the featured customer reviews embedded on the product page. id is the numeric product/internet id (the trailing number of a /p/{slug}/{id} URL). The product page does not distinguish an unknown id from a known one in a consistent way, so an unrecognized id may return an upstream error rather than a not-found.",
+ "operationId": "homedepot-product",
"parameters": [
{
- "description": "Quote identifier such as AAPL:NASDAQ",
+ "description": "Home Depot product/internet id, e.g. 320326875",
"in": "path",
- "name": "quote",
+ "name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "320326875"
}
],
"produces": [
@@ -280786,7 +310949,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.articlesResponseDoc"
+ "$ref": "#/definitions/homedepot.productResponseDoc"
}
},
"400": {
@@ -280801,8 +310964,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -280819,32 +310982,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance analyst articles",
+ "summary": "Home Depot product detail",
"tags": [
- "Google"
+ "Home Depot"
]
}
},
- "/google/finance/chart/{quote}": {
+ "/homedepot/product/{id}/questions": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized chart points for a quote and window.",
- "operationId": "google-finance-chart",
+ "description": "Returns the first page (8 questions) of a Home Depot product's customer questions and answers, plus the product's total Q&A count. id is the numeric product/internet id. A product with no Q&A returns a genuine zero-result response rather than an error.",
+ "operationId": "homedepot-product-questions",
"parameters": [
{
- "description": "Quote identifier such as AAPL:NASDAQ",
+ "description": "Home Depot product/internet id, e.g. 328425526",
"in": "path",
- "name": "quote",
+ "name": "id",
"required": true,
- "type": "string"
- },
- {
- "description": "Window: 1d, 5d, 1m, 6m, ytd, 1y, 5y, max",
- "in": "query",
- "name": "window",
- "type": "string"
+ "type": "string",
+ "x-example": "328425526"
}
],
"produces": [
@@ -280854,7 +311012,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.chartResponseDoc"
+ "$ref": "#/definitions/homedepot.productQuestionsResponseDoc"
}
},
"400": {
@@ -280863,14 +311021,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -280887,26 +311039,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance chart data",
+ "summary": "Home Depot product questions and answers",
"tags": [
- "Google"
+ "Home Depot"
]
}
},
- "/google/finance/classification/{quote}": {
+ "/homedepot/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized classification strings for a quote.",
- "operationId": "google-finance-classification",
+ "description": "Returns one page (up to 12 products) of a Home Depot keyword search's product listing: normalized products with title, image, model, current/original price, and rating/review count, plus the search's total result count. q is free-text search keywords, e.g. \"impact driver\". page is a 1-indexed page number (default 1). An unrecognized/blocked query returns an upstream error rather than an empty result.",
+ "operationId": "homedepot-search",
"parameters": [
{
- "description": "Quote identifier such as AAPL:NASDAQ",
- "in": "path",
- "name": "quote",
+ "description": "Free-text search keywords, e.g. \\",
+ "in": "query",
+ "name": "q",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "impact driver"
+ },
+ {
+ "description": "1-indexed page number, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -280916,7 +311076,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.classificationResponseDoc"
+ "$ref": "#/definitions/homedepot.searchResponseDoc"
}
},
"400": {
@@ -280925,14 +311085,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -280949,26 +311103,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance classification data",
+ "summary": "Home Depot keyword search",
"tags": [
- "Google"
+ "Home Depot"
]
}
},
- "/google/finance/company/{quote}": {
+ "/homedepot/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized company information from Google Finance.",
- "operationId": "google-finance-company",
+ "description": "Returns Home Depot's own search-box typeahead suggestions for a partial query, in the site's own ranking order. term is the partial search text, e.g. \"drill\". Each suggestion's term is directly usable as GET /homedepot/search's q parameter. A term that matches nothing returns an empty suggestion list rather than an error.",
+ "operationId": "homedepot-suggest",
"parameters": [
{
- "description": "Quote identifier such as AAPL:NASDAQ",
- "in": "path",
- "name": "quote",
+ "description": "Partial search text, e.g. \\",
+ "in": "query",
+ "name": "term",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "drill"
}
],
"produces": [
@@ -280978,7 +311133,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.companyResponseDoc"
+ "$ref": "#/definitions/homedepot.suggestResponseDoc"
}
},
"400": {
@@ -280987,14 +311142,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -281011,26 +311160,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance company data",
+ "summary": "Home Depot search suggestions",
"tags": [
- "Google"
+ "Home Depot"
]
}
},
- "/google/finance/context": {
+ "/hotels/autocomplete": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Google Finance for instruments matching a company name or ticker query and returns normalized results with ticker, exchange, name, price, currency, and change data. Use a returned ticker with quote, company, chart, or news endpoints.",
- "operationId": "google-finance-context",
+ "description": "Returns anonymous Hotels.com search-box suggestions for a partial destination or property name. Availability and prices are not included.",
+ "operationId": "hotels-autocomplete",
"parameters": [
{
- "description": "Search query",
+ "description": "Partial destination or property name",
"in": "query",
"name": "q",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "New York"
}
],
"produces": [
@@ -281040,7 +311187,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.contextResponseDoc"
+ "$ref": "#/definitions/hotels.autocompleteResponseDoc"
}
},
"400": {
@@ -281049,8 +311196,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -281073,26 +311220,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Find Google Finance instruments by query",
+ "summary": "Get Hotels.com destination suggestions",
"tags": [
- "Google"
+ "Hotels.com"
]
}
},
- "/google/finance/financials/{quote}": {
- "get": {
+ "/hotels/offers": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized annual and quarterly financial rows when Google Finance has statement data for the quote.",
- "operationId": "google-finance-financials",
+ "description": "Returns the public room/unit offer summaries shown for one Hotels.com property and date range, including room labels and non-transactional offer messages. Booking, checkout, payment, and reservation tokens are never returned. property_id is the numeric global property id from a Search response.",
+ "operationId": "hotels-offers",
"parameters": [
{
- "description": "Quote identifier such as AAPL:NASDAQ",
- "in": "path",
- "name": "quote",
+ "description": "Room offers request",
+ "in": "body",
+ "name": "request",
"required": true,
- "type": "string"
+ "schema": {
+ "$ref": "#/definitions/hotels.OffersOption"
+ }
}
],
"produces": [
@@ -281102,7 +311251,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.financialsResponseDoc"
+ "$ref": "#/definitions/hotels.offersResponseDoc"
}
},
"400": {
@@ -281117,6 +311266,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -281135,32 +311290,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance financial statements",
+ "summary": "Get Hotels.com room offers",
"tags": [
- "Google"
+ "Hotels.com"
]
}
},
- "/google/finance/markets/categories/{category}/news": {
- "get": {
+ "/hotels/property": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized news for a Google Finance category.",
- "operationId": "google-finance-markets-category-news",
+ "description": "Returns public static metadata from one canonical Hotels.com property page, including name, address, rating, images, and amenities. Date-bound availability, prices, booking, and review content are excluded.",
+ "operationId": "hotels-property",
"parameters": [
{
- "description": "Google Finance category id",
- "in": "path",
- "name": "category",
+ "description": "Canonical Hotels.com property URL",
+ "in": "body",
+ "name": "request",
"required": true,
- "type": "string"
- },
- {
- "description": "Result offset",
- "in": "query",
- "name": "offset",
- "type": "integer"
+ "schema": {
+ "$ref": "#/definitions/hotels.PropertyOption"
+ }
}
],
"produces": [
@@ -281170,7 +311321,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.categoryNewsResponseDoc"
+ "$ref": "#/definitions/hotels.propertyResponseDoc"
}
},
"400": {
@@ -281179,8 +311330,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -281203,32 +311354,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance category news",
+ "summary": "Get Hotels.com property details",
"tags": [
- "Google"
+ "Hotels.com"
]
}
},
- "/google/finance/markets/categories/{category}/stocks": {
- "get": {
+ "/hotels/rates": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized instruments for a Google Finance category.",
- "operationId": "google-finance-markets-category-stocks",
+ "description": "Returns one Hotels.com property's date-bound rates and availability: the same normalized property card Search returns, with the live per-night and per-stay prices Hotels.com shows for the requested dates. property_id is the numeric global property id from a Search response's properties[].id; it is distinct from the legacy /ho/ URL id.",
+ "operationId": "hotels-rates",
"parameters": [
{
- "description": "Google Finance category id",
- "in": "path",
- "name": "category",
+ "description": "Rates request",
+ "in": "body",
+ "name": "request",
"required": true,
- "type": "string"
- },
- {
- "description": "Result offset",
- "in": "query",
- "name": "offset",
- "type": "integer"
+ "schema": {
+ "$ref": "#/definitions/hotels.RatesOption"
+ }
}
],
"produces": [
@@ -281238,7 +311385,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.categoryStocksResponseDoc"
+ "$ref": "#/definitions/hotels.ratesResponseDoc"
}
},
"400": {
@@ -281253,6 +311400,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"500": {
"description": "Internal Server Error",
"schema": {
@@ -281271,19 +311424,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance category stocks",
+ "summary": "Get Hotels.com rates for one property",
"tags": [
- "Google"
+ "Hotels.com"
]
}
},
- "/google/finance/markets/earnings": {
- "get": {
+ "/hotels/reviews": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized earnings calendar instruments.",
- "operationId": "google-finance-markets-earnings",
+ "description": "Returns one Hotels.com property's review overview: the overall rating (0-10) with its descriptive label, the per-category sub-ratings (cleanliness, service, amenities, and so on), and a bounded set of highlighted guest reviews with reviewer, date, rating label, text, and verified-stay flag. property_id is the numeric global property id from a Search response's properties[].id. This mirrors the property page's Guest reviews section; the full paginated review archive is not exposed.",
+ "operationId": "hotels-reviews",
+ "parameters": [
+ {
+ "description": "Reviews request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/hotels.ReviewsOption"
+ }
+ }
+ ],
"produces": [
"application/json"
],
@@ -281291,48 +311455,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.earningsResponseDoc"
+ "$ref": "#/definitions/hotels.reviewsResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Google Finance earnings calendar",
- "tags": [
- "Google"
- ]
- }
- },
- "/google/finance/markets/featured": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized featured instruments.",
- "operationId": "google-finance-markets-featured",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
- "$ref": "#/definitions/finance.instrumentsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"500": {
@@ -281353,19 +311494,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance featured stocks",
+ "summary": "Get Hotels.com guest reviews",
"tags": [
- "Google"
+ "Hotels.com"
]
}
},
- "/google/finance/markets/headline": {
- "get": {
+ "/hotels/reviews/archive": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns the top Google Finance headline.",
- "operationId": "google-finance-markets-headline",
+ "description": "Returns one page of public guest reviews for a Hotels.com property, including reviewer, date, traveler type, rating label, title, and message. Use page and page_size to walk the archive; the response reports whether another page is available. property_id is the numeric global property id from a Search response's properties[].id. Booking, account, and private review data are not included.",
+ "operationId": "hotels-reviews-archive",
+ "parameters": [
+ {
+ "description": "Review archive request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/hotels.ReviewsArchiveOption"
+ }
+ }
+ ],
"produces": [
"application/json"
],
@@ -281373,48 +311525,25 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.headlineResponseDoc"
+ "$ref": "#/definitions/hotels.reviewsArchiveResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Google Finance top headline",
- "tags": [
- "Google"
- ]
- }
- },
- "/google/finance/markets/indices": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized market index instruments.",
- "operationId": "google-finance-markets-indices",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "429": {
+ "description": "Too Many Requests",
"schema": {
- "$ref": "#/definitions/finance.instrumentsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"500": {
@@ -281435,37 +311564,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance market indices",
+ "summary": "List Hotels.com guest reviews",
"tags": [
- "Google"
+ "Hotels.com"
]
}
},
- "/google/finance/markets/movers": {
- "get": {
+ "/hotels/search": {
+ "post": {
"consumes": [
"application/json"
],
- "description": "Returns normalized market mover instruments.",
- "operationId": "google-finance-markets-movers",
+ "description": "Returns a page of date-bound Hotels.com hotel search results for either a free-text destination or a numeric Hotels.com region_id: normalized property cards with per-night and per-stay prices, review score and count, location, thumbnail, amenities, and promotional badges. Provide exactly one of query or region_id; region_id skips destination typeahead resolution. Prices are the live rates Hotels.com shows for the requested check-in and check-out dates.",
+ "operationId": "hotels-search",
"parameters": [
{
- "description": "Comma-separated numeric categories",
- "in": "query",
- "name": "categories",
- "type": "string"
- },
- {
- "description": "Result count",
- "in": "query",
- "name": "count",
- "type": "integer"
- },
- {
- "description": "Result offset",
- "in": "query",
- "name": "offset",
- "type": "integer"
+ "description": "Search request",
+ "in": "body",
+ "name": "request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/hotels.SearchOption"
+ }
}
],
"produces": [
@@ -281475,7 +311595,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.marketMoversResponseDoc"
+ "$ref": "#/definitions/hotels.searchResponseDoc"
}
},
"400": {
@@ -281490,60 +311610,11 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Google Finance market movers",
- "tags": [
- "Google"
- ]
- }
- },
- "/google/finance/markets/top": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized top instruments for a Google Finance metric.",
- "operationId": "google-finance-markets-top",
- "parameters": [
- {
- "description": "Google Finance metric id",
- "in": "query",
- "name": "metric",
- "type": "integer"
- },
- {
- "description": "Page number",
- "in": "query",
- "name": "page",
- "type": "integer"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/finance.topStocksResponseDoc"
- }
},
"500": {
"description": "Internal Server Error",
@@ -281563,25 +311634,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance top stocks by metric",
+ "summary": "Search Hotels.com hotels",
"tags": [
- "Google"
+ "Hotels.com"
]
}
},
- "/google/finance/markets/trending": {
+ "/houston-chronicle/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized trending instruments.",
- "operationId": "google-finance-markets-trending",
+ "description": "Returns public Houston Chronicle article metadata and the body available in the anonymous response. Premium stories are flagged from the publisher's content-tier and JSON-LD markers; the service does not authenticate or bypass access controls.",
+ "operationId": "houston-chronicle-article",
"parameters": [
{
- "description": "Result limit",
+ "description": "Canonical Houston Chronicle article URL",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.houstonchronicle.com/news/article/example-story-22400001.php"
}
],
"produces": [
@@ -281591,11 +311661,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.instrumentsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -281612,32 +311688,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance trending stocks",
+ "summary": "Get Houston Chronicle article content",
"tags": [
- "Google"
+ "Houston Chronicle"
]
}
},
- "/google/finance/news/{quote}": {
+ "/houston-chronicle/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized news articles for a quote.",
- "operationId": "google-finance-news",
+ "description": "Returns an author's public profile and recent story cards from a canonical Houston Chronicle author URL.",
+ "operationId": "houston-chronicle-author",
"parameters": [
{
- "description": "Quote identifier such as AAPL:NASDAQ",
- "in": "path",
- "name": "quote",
- "required": true,
- "type": "string"
- },
- {
- "description": "Article limit",
+ "description": "Canonical Houston Chronicle author URL",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.houstonchronicle.com/author/example-writer/"
}
],
"produces": [
@@ -281647,7 +311715,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.articlesResponseDoc"
+ "$ref": "#/definitions/publicnews.houstonChronicleAuthorResponseDoc"
}
},
"400": {
@@ -281662,12 +311730,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -281680,26 +311742,61 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance quote news",
+ "summary": "Get a Houston Chronicle author profile",
"tags": [
- "Google"
+ "Houston Chronicle"
]
}
},
- "/google/finance/quote/{quote}": {
+ "/houston-chronicle/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Fetches the latest quote data for a provided stock symbol from Google Finance https://www.google.com/finance/quote/AAPL:NASDAQ?hl=en.",
- "operationId": "google-finance-quote",
+ "description": "Returns current public headlines from a verified Houston Chronicle editorial section. Pages that return Hearst's Client Challenge are retried through configured rendering backends; the service does not solve or bypass access controls.",
+ "operationId": "houston-chronicle-headlines",
"parameters": [
{
- "description": "Stock symbol to fetch the latest quote for (e.g., AAPL:NASDAQ, BTC-USD)",
- "in": "path",
- "name": "quote",
+ "description": "Houston Chronicle public section slug",
+ "enum": [
+ "news-houston-texas",
+ "news-houston-texas-trending",
+ "neighborhood",
+ "news-houston-texas-education",
+ "news-houston-texas-environment",
+ "health",
+ "news-houston-weather",
+ "politics",
+ "politics-houston",
+ "politics-texas",
+ "politics-us-world",
+ "business",
+ "business-energy",
+ "business-real-estate",
+ "business-tech",
+ "sports",
+ "sports-texans",
+ "sports-astros",
+ "sports-rockets",
+ "sports-college",
+ "sports-high-school",
+ "sports-dynamo",
+ "entertainment",
+ "lifestyle",
+ "food-restaurants",
+ "food-restaurants-reviews",
+ "food-restaurants-bbq",
+ "opinion",
+ "opinion-editorials",
+ "opinion-letters",
+ "opinion-columnists",
+ "news-interactives",
+ "news-investigations",
+ "la-voz",
+ "visuals"
+ ],
+ "in": "query",
+ "name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "news-houston-texas"
}
],
"produces": [
@@ -281707,19 +311804,19 @@
],
"responses": {
"200": {
- "description": "Latest stock quote data",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/finance.quoteResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
- "description": "Invalid input parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -281730,28 +311827,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance Quote API",
+ "summary": "Get Houston Chronicle section headlines",
"tags": [
- "Google"
+ "Houston Chronicle"
]
}
},
- "/google/finance/related/{quote}": {
+ "/houston-chronicle/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized related instruments for a quote.",
- "operationId": "google-finance-related",
- "parameters": [
- {
- "description": "Quote identifier such as AAPL:NASDAQ",
- "in": "path",
- "name": "quote",
- "required": true,
- "type": "string"
- }
- ],
+ "description": "Returns current public Houston Chronicle homepage stories. The public RSS endpoint returned no usable items; this uses the credential-free homepage and preserves publisher premium markers on article responses.",
+ "operationId": "houston-chronicle-news",
"produces": [
"application/json"
],
@@ -281759,23 +311844,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/finance.relatedResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -281792,54 +311865,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance related instruments",
+ "summary": "Get Houston Chronicle top stories",
"tags": [
- "Google"
+ "Houston Chronicle"
]
}
},
- "/google/finance/search": {
+ "/houston-chronicle/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Fetches normalized search results for a provided keyword from Google Finance.",
- "operationId": "google-finance-search",
- "parameters": [
- {
- "description": "Keyword to search for (e.g., Apple)",
- "in": "query",
- "name": "q",
- "required": true,
- "type": "string"
- }
- ],
+ "description": "Returns every live-verified public editorial section accepted by the Houston Chronicle headlines endpoint. Newsletter, games, audio-only, external marketplace and interactive project/tool links are excluded.",
+ "operationId": "houston-chronicle-sections",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "Search results",
- "schema": {
- "$ref": "#/definitions/finance.searchResponseDoc"
- }
- },
- "400": {
- "description": "Invalid input parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Google Finance upstream request failed",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -281848,58 +311891,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance Search API",
+ "summary": "Get Houston Chronicle sections",
"tags": [
- "Google"
+ "Houston Chronicle"
]
}
},
- "/google/finance/ticker/{ticker}": {
+ "/howtogeek/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Fetches chart ticker data from Google Finance based on a provided ticker and window period.",
- "operationId": "google-finance-ticker",
- "parameters": [
- {
- "description": "Ticker symbol to fetch data for example:AAPL:NASDAQ, BTC-USD ",
- "in": "path",
- "name": "ticker",
- "required": true,
- "type": "string"
- },
- {
- "description": "Time window for the ticker data (default: 1d), options: 1d, 5d, 1m, 6m, 1y, 5y, max",
- "in": "query",
- "name": "window",
- "type": "string"
- }
- ],
+ "description": "Returns current stories from How-To Geek's public RSS feed. Summaries are publisher teasers, not full article text. This feed-only route does not claim a complete section taxonomy or retrieve article bodies.",
+ "operationId": "howtogeek-news",
"produces": [
"application/json"
],
"responses": {
"200": {
- "description": "Ticker time series",
- "schema": {
- "$ref": "#/definitions/finance.tickerResponseDoc"
- }
- },
- "400": {
- "description": "Invalid input parameters",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "500": {
- "description": "Internal server error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google Finance upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -281910,28 +311929,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Finance Ticker API",
+ "summary": "Get How-To Geek top stories",
"tags": [
- "Google"
+ "How-To Geek"
]
}
},
- "/google/jobs": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Google Jobs results parsed from public Google web responses.",
- "operationId": "google-jobs",
+ "/huffpost/article": {
+ "get": {
+ "description": "Returns public HuffPost article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "huffpost-article",
"parameters": [
{
- "description": "Google Jobs search payload",
- "in": "body",
- "name": "option",
+ "description": "Canonical HuffPost article URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "schema": {
- "$ref": "#/definitions/google.JobsOption"
- }
+ "type": "string",
+ "x-example": "https://www.huffpost.com/entry/example-story_n_1234567890abcdef12345678"
}
],
"produces": [
@@ -281941,7 +311956,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/google.JobsResponse"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -281950,8 +311965,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -281968,26 +311983,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Google Jobs",
+ "summary": "Get HuffPost article content",
"tags": [
- "Google"
+ "HuffPost"
]
}
},
- "/google/map/place/{place_id}": {
+ "/huffpost/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns detailed information for a specified place_id. Rate limit is enforced at 1 request per second.",
- "operationId": "google-map-place",
+ "description": "Returns one HuffPost author or contributor's public profile: name, job title, headshot, biography, social links, and their recent articles.",
+ "operationId": "huffpost-author",
"parameters": [
{
- "description": "Google Place ID",
- "in": "path",
- "name": "place_id",
+ "description": "Canonical huffpost.com/author/ URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "https://www.huffpost.com/author/lee-moran"
}
],
"produces": [
@@ -281996,30 +312009,24 @@
"responses": {
"200": {
"description": "OK",
- "headers": {
- "X-RateLimit-Per-Second-Remaining": {
- "description": "Number of remaining requests per second",
- "type": "string"
- }
- },
"schema": {
- "$ref": "#/definitions/google.mapPlaceResponseDoc"
+ "$ref": "#/definitions/publicnews.huffPostAuthorResponseDoc"
}
},
"400": {
- "description": "Invalid input",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282030,32 +312037,66 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Maps place details API",
+ "summary": "Get a HuffPost author profile",
"tags": [
- "Google"
+ "HuffPost"
]
}
},
- "/google/map/place/{place_id}/photos": {
+ "/huffpost/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the photos Google publishes for a specified place_id — the imagery shown on\nthe place's Google Maps page, typically dozens of images for a well-covered business.\nEach entry carries the image URL as served plus its pixel dimensions when reported;\nswap the trailing size suffix on the URL (e.g. `=w203-h100-k-no`) to request other\ndimensions. Contributor avatars and review-attached photos are excluded. This is the\nplace page's image set, not a paginated archive feed. Rate limit is enforced at 1\nrequest per second.",
- "operationId": "google-map-place-photos",
+ "description": "Returns fresh headlines from one public HuffPost topic hub.",
+ "operationId": "huffpost-headlines",
"parameters": [
{
- "description": "Google Place ID",
- "in": "path",
- "name": "place_id",
- "required": true,
- "type": "string"
- },
- {
- "description": "Maximum number of photos to return. Omit or 0 for all captured.",
+ "description": "HuffPost section slug",
+ "enum": [
+ "news",
+ "news/us-news",
+ "news/world-news",
+ "impact/business",
+ "impact/green",
+ "section/health",
+ "impact/topic/social-justice",
+ "news/crime",
+ "news/politics",
+ "news/topic/us-congress",
+ "news/topic/extremism",
+ "section/opinion",
+ "entertainment",
+ "entertainment/arts",
+ "news/media",
+ "entertainment/celebrity",
+ "entertainment/tv",
+ "section/sports",
+ "life",
+ "life/healthy-living",
+ "life/travel",
+ "life/technology",
+ "life/taste",
+ "life/style",
+ "life/family",
+ "life/relationships",
+ "life/money",
+ "life/huffpost-home",
+ "life/worklife",
+ "life/huffpost-shopping",
+ "voices",
+ "voices/black-voices",
+ "voices/queer-voices",
+ "voices/latino-voices",
+ "voices/indigenous-voices",
+ "voices/asian-voices",
+ "voices/womens-voices",
+ "voices/voices-of-disabled-people",
+ "section/huffpost-personal",
+ "section/video"
+ ],
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "news"
}
],
"produces": [
@@ -282064,30 +312105,18 @@
"responses": {
"200": {
"description": "OK",
- "headers": {
- "X-RateLimit-Per-Second-Remaining": {
- "description": "Number of remaining requests per second",
- "type": "string"
- }
- },
"schema": {
- "$ref": "#/definitions/google.mapPlacePhotosResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
- "description": "Invalid input",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282098,64 +312127,28 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Maps place photos API",
+ "summary": "Get HuffPost section headlines",
"tags": [
- "Google"
+ "HuffPost"
]
}
},
- "/google/map/place/{place_id}/reviews": {
+ "/huffpost/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the reviews Google shows on a specified place_id's Google Maps page —\ntypically the 8 most relevant, each with its rating, text, reviewer, timestamp, and\nany photos the reviewer attached. Photo-only reviews return an empty `text`.\nThis is the place page's first page of reviews, not the full review archive.\nRate limit is enforced at 1 request per second.",
- "operationId": "google-map-place-reviews",
- "parameters": [
- {
- "description": "Google Place ID",
- "in": "path",
- "name": "place_id",
- "required": true,
- "type": "string"
- },
- {
- "description": "Maximum number of reviews to return. Omit or 0 for all captured.",
- "in": "query",
- "name": "limit",
- "type": "integer"
- }
- ],
+ "description": "Returns fresh HuffPost top stories from its public homepage.",
+ "operationId": "huffpost-news",
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "OK",
- "headers": {
- "X-RateLimit-Per-Second-Remaining": {
- "description": "Number of remaining requests per second",
- "type": "string"
- }
- },
- "schema": {
- "$ref": "#/definitions/google.mapPlaceReviewsResponseDoc"
- }
- },
- "400": {
- "description": "Invalid input",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282166,62 +312159,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Maps place reviews API",
+ "summary": "Get HuffPost top stories",
"tags": [
- "Google"
+ "HuffPost"
]
}
},
- "/google/map/search": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns results from Google Maps based on search options. Rate limit is enforced at 1 request per second.",
- "operationId": "google-map-search",
- "parameters": [
- {
- "description": "Search options",
- "in": "body",
- "name": "mapSearchOption",
- "required": true,
- "schema": {
- "$ref": "#/definitions/google.MapSearchOption"
- }
- }
- ],
+ "/huffpost/sections": {
+ "get": {
+ "description": "Returns the live-verified public HuffPost topic-hub inventory used by the headlines endpoint.",
+ "operationId": "huffpost-sections",
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "OK",
- "headers": {
- "X-RateLimit-Per-Second-Remaining": {
- "description": "Number of remaining requests per second",
- "type": "string"
- }
- },
- "schema": {
- "$ref": "#/definitions/google.mapSearchResponseDoc"
- }
- },
- "400": {
- "description": "Invalid input",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -282230,58 +312185,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Maps search API",
+ "summary": "Get HuffPost sections",
"tags": [
- "Google"
+ "HuffPost"
]
}
},
- "/google/news": {
+ "/ign/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns current Google News search results using anonymous HTTP requests with fresh proxy profiles, without browser rendering. Pages slice the finite result snapshot; they do not traverse the Google Search index. Results include title, source, publisher article URL, age, and thumbnail when available. Valid no-results searches and exhausted pages return an empty array. Locale defaults to country=us and lang=en. Returns 503 for blocked or malformed upstream responses.",
- "operationId": "google-news",
+ "description": "Returns public IGN article or review metadata and body paragraphs from a canonical article URL. Only canonical https://www.ign.com/articles/ URLs are accepted; wiki, video, and game/movie/TV hub pages return an invalid-parameter error.",
+ "operationId": "ign-article",
"parameters": [
{
- "description": "Search query",
+ "description": "Canonical IGN article or review URL",
"in": "query",
- "name": "q",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "1-based page within the current finite result snapshot; defaults to 1",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Results per page; defaults to 10, clamped to 1..50",
- "in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Two-letter country code; defaults to us",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Google UI language; defaults to en",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "x-example": "https://www.ign.com/articles/brothers-season-1-review"
}
],
"produces": [
@@ -282291,29 +312212,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/google.newsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query parameters",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282324,26 +312239,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Google News",
+ "summary": "Get IGN article or review content",
"tags": [
- "Google"
+ "IGN"
]
- },
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Restored JSON compatibility endpoint. Returns current Google News articles using anonymous HTTP requests with fresh proxy profiles, without browser rendering. Pages slice the finite current result snapshot. Uses the legacy result array and field names; no-results searches and exhausted pages return an empty result array.",
- "operationId": "google-news-search",
+ }
+ },
+ "/ign/author": {
+ "get": {
+ "description": "Returns one IGN author's public profile: name, job title, location, biography, social links, and their recent articles.",
+ "operationId": "ign-author",
"parameters": [
{
- "description": "Search options; keyword, language and country are required. limit defaults to 10 and is clamped to 10..100; page defaults to 1.",
- "in": "body",
- "name": "searchOption",
+ "description": "Canonical www.ign.com/person/ URL",
+ "in": "query",
+ "name": "url",
"required": true,
- "schema": {
- "$ref": "#/definitions/google.SearchOption"
- }
+ "type": "string",
+ "x-example": "https://www.ign.com/person/tomphillipsIGN"
}
],
"produces": [
@@ -282353,29 +312266,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/google.newsSearchResponseDoc"
+ "$ref": "#/definitions/publicnews.ignAuthorResponseDoc"
}
},
"400": {
- "description": "Invalid input",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282386,50 +312293,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Google News with JSON",
+ "summary": "Get an IGN author profile",
"tags": [
- "Google"
+ "IGN"
]
}
},
- "/google/suggest": {
+ "/ign/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Google autosuggest query completions from the public unauthenticated suggest JSON endpoint.",
- "operationId": "google-suggest",
+ "description": "Returns fresh IGN headlines from one public section feed.",
+ "operationId": "ign-headlines",
"parameters": [
{
- "description": "Search query prefix",
+ "description": "IGN section slug",
+ "enum": [
+ "news",
+ "reviews",
+ "games",
+ "movies",
+ "tv",
+ "tech",
+ "nintendo",
+ "playstation",
+ "xbox",
+ "pc",
+ "mobile",
+ "comics"
+ ],
"in": "query",
- "name": "q",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "Suggestions to return; defaults to 10, clamped to 1..12",
- "in": "query",
- "maximum": 12,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Google result country; defaults to us",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Google UI language; defaults to en",
- "in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "x-example": "news"
}
],
"produces": [
@@ -282439,29 +312334,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/google.suggestResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282472,16 +312355,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Suggest Google search queries",
+ "summary": "Get IGN section headlines",
"tags": [
- "Google"
+ "IGN"
]
}
},
- "/google/trends/categories": {
+ "/ign/news": {
"get": {
- "description": "Returns supported top-level Google Trends category ids and labels for Trending Now category filters.",
- "operationId": "google-trends-categories",
+ "description": "Returns fresh IGN top stories (gaming and entertainment news) from the public RSS feed.",
+ "operationId": "ign-news",
"produces": [
"application/json"
],
@@ -282489,17 +312372,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.trendsCategoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
- "description": "Rate limit exceeded",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282510,16 +312393,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends categories",
+ "summary": "Get IGN top stories",
"tags": [
- "Google"
+ "IGN"
]
}
},
- "/google/trends/enums": {
+ "/ign/sections": {
"get": {
- "description": "Returns supported Google Trends enum values for explore/trending filters, including locations, date ranges, search types, categories, statuses, and sort modes.",
- "operationId": "google-trends-enums",
+ "description": "Returns the public IGN section taxonomy used by the headlines endpoint.",
+ "operationId": "ign-sections",
"produces": [
"application/json"
],
@@ -282527,19 +312410,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.trendsEnumsResponseDoc"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -282548,28 +312419,31 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends enum metadata",
+ "summary": "Get IGN sections",
"tags": [
- "Google"
+ "IGN"
]
}
},
- "/google/trends/explore": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Google Trends keyword analytics from internal Trends widget requests: interest over time, interest by region, related queries, and related topics when available.",
- "operationId": "google-trends-explore",
+ "/ikea/availability": {
+ "get": {
+ "description": "Returns one IKEA item's real-time home-delivery and click-and-collect stock signal for the requested country. item_no is IKEA's own item number.",
+ "operationId": "ikea-availability",
"parameters": [
{
- "description": "Explore request",
- "in": "body",
- "name": "request",
+ "description": "IKEA item number",
+ "in": "query",
+ "name": "item_no",
"required": true,
- "schema": {
- "$ref": "#/definitions/trends.ExploreRequest"
- }
+ "type": "string",
+ "x-example": "80213074"
+ },
+ {
+ "default": "us",
+ "description": "Lowercase 2-letter IKEA site country code",
+ "in": "query",
+ "name": "country",
+ "type": "string"
}
],
"produces": [
@@ -282579,29 +312453,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.exploreResponseDoc"
+ "$ref": "#/definitions/ikea.availabilityResponseDoc"
}
},
"400": {
- "description": "Invalid input",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google Trends upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282612,28 +312486,54 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends explore data",
+ "summary": "Get an IKEA item's real-time stock availability",
"tags": [
- "Google"
+ "IKEA"
]
}
},
- "/google/trends/explore/interest-by-region": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns only the interest-by-region widget from the Google Trends Explore widget flow. Supports multiple comparison terms and returns an empty interest_by_region array when Google returns no rows.",
- "operationId": "google-trends-explore-interest-by-region",
+ "/ikea/categories": {
+ "get": {
+ "description": "Returns a page of IKEA's full category taxonomy, sourced from IKEA's own site navigation data: every top-level department and nested subcategory, with the key each one uses as ikea_category's own category input. key is IKEA's own category key (numeric, e.g. 20649, or a short alphanumeric department code, e.g. st001). parent_key is the immediate parent category's own key (empty for a top-level department); level is depth in the taxonomy tree, starting at 1. q optionally filters by a case-insensitive substring of name.",
+ "operationId": "ikea-categories",
"parameters": [
{
- "description": "Explore request",
- "in": "body",
- "name": "request",
- "required": true,
- "schema": {
- "$ref": "#/definitions/trends.ExploreRequest"
- }
+ "description": "Case-insensitive substring filter on category name",
+ "in": "query",
+ "name": "q",
+ "type": "string",
+ "x-example": "desk"
+ },
+ {
+ "default": "us",
+ "description": "Lowercase 2-letter IKEA site country code",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "default": "en",
+ "description": "Lowercase 2-letter IKEA site language code",
+ "in": "query",
+ "name": "language",
+ "type": "string"
+ },
+ {
+ "default": 1,
+ "description": "1-based page number",
+ "in": "query",
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "default": 100,
+ "description": "Result count per page (1-1000)",
+ "in": "query",
+ "maximum": 1000,
+ "minimum": 1,
+ "name": "page_size",
+ "type": "integer"
}
],
"produces": [
@@ -282643,29 +312543,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.interestByRegionResponseDoc"
+ "$ref": "#/definitions/ikea.categoriesResponseDoc"
}
},
"400": {
- "description": "Invalid input",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google Trends upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282676,28 +312570,76 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends interest by region",
+ "summary": "Discover IKEA category keys",
"tags": [
- "Google"
+ "IKEA"
]
}
},
- "/google/trends/explore/interest-over-time": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns only the interest-over-time timeline from the Google Trends Explore widget flow. Supports multiple comparison terms.",
- "operationId": "google-trends-explore-interest-over-time",
+ "/ikea/category": {
+ "get": {
+ "description": "Returns one page of an IKEA category's product listing, with real offset/size pagination and sort. category is IKEA's own category key (e.g. 20649), taken from a category URL's trailing -{key}/ segment, a product's own category_path field, or GET /ikea/categories, which discovers every valid category value.",
+ "operationId": "ikea-category",
"parameters": [
{
- "description": "Explore request",
- "in": "body",
- "name": "request",
+ "description": "IKEA category key",
+ "in": "query",
+ "name": "category",
"required": true,
- "schema": {
- "$ref": "#/definitions/trends.ExploreRequest"
- }
+ "type": "string",
+ "x-example": "20649"
+ },
+ {
+ "default": "us",
+ "description": "Lowercase 2-letter IKEA site country code",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "default": "en",
+ "description": "Lowercase 2-letter IKEA site language code",
+ "in": "query",
+ "name": "language",
+ "type": "string"
+ },
+ {
+ "default": 0,
+ "description": "Zero-based result offset",
+ "in": "query",
+ "maximum": 9999,
+ "minimum": 0,
+ "name": "offset",
+ "type": "integer"
+ },
+ {
+ "default": 24,
+ "description": "Result count (1-100)",
+ "in": "query",
+ "maximum": 100,
+ "minimum": 1,
+ "name": "size",
+ "type": "integer"
+ },
+ {
+ "default": "relevance",
+ "description": "Result order",
+ "enum": [
+ "relevance",
+ "price-low",
+ "price-high",
+ "newest",
+ "rating",
+ "name",
+ "popular",
+ "width",
+ "height",
+ "depth",
+ "length"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
}
],
"produces": [
@@ -282707,29 +312649,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.interestOverTimeResponseDoc"
+ "$ref": "#/definitions/ikea.categoryResponseDoc"
}
},
"400": {
- "description": "Invalid input",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google Trends upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282740,28 +312682,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends interest over time",
+ "summary": "Browse an IKEA category",
"tags": [
- "Google"
+ "IKEA"
]
}
},
- "/google/trends/explore/related-topics": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns only the related topics widget from the Google Trends Explore widget flow. Returns an empty related_topics array when Google returns no topic rows for the requested term/filter combination.",
- "operationId": "google-trends-explore-related-topics",
+ "/ikea/product": {
+ "get": {
+ "description": "Returns one IKEA item's full normalized detail: name, price, rating, every product image, quick facts, and category breadcrumb path. item_no is IKEA's own item number (8 digits, optionally prefixed with \"s\" for a combination/set article), taken from a search result's item_no field or an ikea.com product page's own URL.",
+ "operationId": "ikea-product",
"parameters": [
{
- "description": "Explore request",
- "in": "body",
- "name": "request",
+ "description": "IKEA item number",
+ "in": "query",
+ "name": "item_no",
"required": true,
- "schema": {
- "$ref": "#/definitions/trends.ExploreRequest"
- }
+ "type": "string",
+ "x-example": "80213074"
+ },
+ {
+ "default": "us",
+ "description": "Lowercase 2-letter IKEA site country code",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "default": "en",
+ "description": "Lowercase 2-letter IKEA site language code",
+ "in": "query",
+ "name": "language",
+ "type": "string"
}
],
"produces": [
@@ -282771,29 +312723,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.relatedTopicsResponseDoc"
+ "$ref": "#/definitions/ikea.productResponseDoc"
}
},
"400": {
- "description": "Invalid input",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google Trends upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282804,28 +312756,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends related topics",
+ "summary": "Get an IKEA product's detail",
"tags": [
- "Google"
+ "IKEA"
]
}
},
- "/google/trends/explore/rising-queries": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the Rising related queries widget for one or more Google Trends explore terms. Returns an empty queries array when Google returns no rows for the requested term/filter combination.",
- "operationId": "google-trends-explore-rising-queries",
+ "/ikea/reviews": {
+ "get": {
+ "description": "Returns one IKEA item's own highlighted customer reviews (title, rating, text, author) plus its aggregate rating, sourced from the product page's own curated reviews carousel. This is a small, representative set of reviews (a handful per item), not the full paginated review list.",
+ "operationId": "ikea-reviews",
"parameters": [
{
- "description": "Explore request",
- "in": "body",
- "name": "request",
+ "description": "IKEA item number",
+ "in": "query",
+ "name": "item_no",
"required": true,
- "schema": {
- "$ref": "#/definitions/trends.ExploreRequest"
- }
+ "type": "string",
+ "x-example": "80213074"
+ },
+ {
+ "default": "us",
+ "description": "Lowercase 2-letter IKEA site country code",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "default": "en",
+ "description": "Lowercase 2-letter IKEA site language code",
+ "in": "query",
+ "name": "language",
+ "type": "string"
}
],
"produces": [
@@ -282835,29 +312797,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.exploreQueriesResponseDoc"
+ "$ref": "#/definitions/ikea.reviewsResponseDoc"
}
},
"400": {
- "description": "Invalid input",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google Trends upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282868,28 +312830,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends explore rising queries",
+ "summary": "Get an IKEA item's highlighted customer reviews",
"tags": [
- "Google"
+ "IKEA"
]
}
},
- "/google/trends/explore/top-queries": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the Top related queries widget for one or more Google Trends explore terms. Returns an empty queries array when Google returns no rows for the requested term/filter combination.",
- "operationId": "google-trends-explore-top-queries",
+ "/ikea/search": {
+ "get": {
+ "description": "Searches IKEA products and returns normalized name, price, rating, images, colors, and variant data. q is a free-text query; an IKEA item number also resolves as its own single result. country and language select IKEA's per-country site (default us/en). A zero total with an empty products list is a valid no-results response.",
+ "operationId": "ikea-search",
"parameters": [
{
- "description": "Explore request",
- "in": "body",
- "name": "request",
+ "description": "Free-text product search query",
+ "in": "query",
+ "name": "q",
"required": true,
- "schema": {
- "$ref": "#/definitions/trends.ExploreRequest"
- }
+ "type": "string",
+ "x-example": "desk"
+ },
+ {
+ "default": "us",
+ "description": "Lowercase 2-letter IKEA site country code",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "default": "en",
+ "description": "Lowercase 2-letter IKEA site language code",
+ "in": "query",
+ "name": "language",
+ "type": "string"
+ },
+ {
+ "default": 24,
+ "description": "Result count (1-100)",
+ "in": "query",
+ "maximum": 100,
+ "minimum": 1,
+ "name": "size",
+ "type": "integer"
}
],
"produces": [
@@ -282899,67 +312880,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.exploreQueriesResponseDoc"
+ "$ref": "#/definitions/ikea.searchResponseDoc"
}
},
"400": {
- "description": "Invalid input",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google Trends upstream request failed",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Google Trends explore top queries",
- "tags": [
- "Google"
- ]
- }
- },
- "/google/trends/locations": {
- "get": {
- "description": "Returns supported Google Trends location codes. Explore endpoints also accept WORLDWIDE.",
- "operationId": "google-trends-locations",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/trends.trendsLocationsResponseDoc"
- }
- },
- "429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -282970,384 +312907,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends locations",
+ "summary": "Search IKEA products",
"tags": [
- "Google"
+ "IKEA"
]
}
},
- "/google/trends/trending": {
+ "/ikea/store": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Google Trends Trending Now rows from the internal TrendsUi batch RPC replay.",
- "operationId": "google-trends-trending",
+ "description": "Returns one IKEA physical location's full detail: address, geo coordinates, opening hours, and price range. slug is IKEA's own store URL slug, taken from an ikea_stores result's own slug field. Geo, hours, and price range are only present for full/small stores; order points and pick-up-only points return address only.",
+ "operationId": "ikea-store",
"parameters": [
{
- "default": "US",
- "description": "Country/territory location code",
- "enum": [
- "AF",
- "AX",
- "AL",
- "DZ",
- "AS",
- "AD",
- "AO",
- "AI",
- "AQ",
- "AG",
- "AR",
- "AM",
- "AW",
- "AU",
- "AT",
- "AZ",
- "BS",
- "BH",
- "BD",
- "BB",
- "BY",
- "BE",
- "BZ",
- "BJ",
- "BM",
- "BT",
- "BO",
- "BA",
- "BW",
- "BV",
- "BR",
- "IO",
- "VG",
- "BN",
- "BG",
- "BF",
- "BI",
- "KH",
- "CM",
- "CA",
- "CV",
- "BQ",
- "KY",
- "CF",
- "TD",
- "CL",
- "CN",
- "CX",
- "CC",
- "CO",
- "KM",
- "CG",
- "CD",
- "CK",
- "CR",
- "CI",
- "HR",
- "CU",
- "CW",
- "CY",
- "CZ",
- "DK",
- "DJ",
- "DM",
- "DO",
- "EC",
- "EG",
- "SV",
- "GQ",
- "ER",
- "EE",
- "SZ",
- "ET",
- "FK",
- "FO",
- "FJ",
- "FI",
- "FR",
- "GF",
- "PF",
- "TF",
- "GA",
- "GM",
- "GE",
- "DE",
- "GH",
- "GI",
- "GR",
- "GL",
- "GD",
- "GP",
- "GU",
- "GT",
- "GG",
- "GN",
- "GW",
- "GY",
- "HT",
- "HM",
- "HN",
- "HK",
- "HU",
- "IS",
- "IN",
- "ID",
- "IR",
- "IQ",
- "IE",
- "IM",
- "IL",
- "IT",
- "JM",
- "JP",
- "JE",
- "JO",
- "KZ",
- "KE",
- "KI",
- "XK",
- "KW",
- "KG",
- "LA",
- "LV",
- "LB",
- "LS",
- "LR",
- "LY",
- "LI",
- "LT",
- "LU",
- "MO",
- "MG",
- "MW",
- "MY",
- "MV",
- "ML",
- "MT",
- "MH",
- "MQ",
- "MR",
- "MU",
- "YT",
- "MX",
- "FM",
- "MD",
- "MC",
- "MN",
- "ME",
- "MS",
- "MA",
- "MZ",
- "MM",
- "NA",
- "NR",
- "NP",
- "NL",
- "NC",
- "NZ",
- "NI",
- "NE",
- "NG",
- "NU",
- "NF",
- "KP",
- "MK",
- "MP",
- "NO",
- "OM",
- "PK",
- "PW",
- "PS",
- "PA",
- "PG",
- "PY",
- "PE",
- "PH",
- "PN",
- "PL",
- "PT",
- "PR",
- "QA",
- "RE",
- "RO",
- "RU",
- "RW",
- "WS",
- "SM",
- "ST",
- "SA",
- "SN",
- "RS",
- "SC",
- "SL",
- "SG",
- "SX",
- "SK",
- "SI",
- "SB",
- "SO",
- "ZA",
- "GS",
- "KR",
- "SS",
- "ES",
- "LK",
- "BL",
- "SH",
- "KN",
- "LC",
- "MF",
- "PM",
- "VC",
- "SD",
- "SR",
- "SJ",
- "SE",
- "CH",
- "SY",
- "TW",
- "TJ",
- "TZ",
- "TH",
- "TL",
- "TG",
- "TK",
- "TO",
- "TT",
- "TN",
- "TR",
- "TM",
- "TC",
- "TV",
- "UM",
- "VI",
- "UG",
- "UA",
- "AE",
- "GB",
- "US",
- "UY",
- "UZ",
- "VU",
- "VA",
- "VE",
- "VN",
- "WF",
- "EH",
- "YE",
- "ZM",
- "ZW"
- ],
- "in": "query",
- "name": "geo",
- "type": "string"
- },
- {
- "default": "en-US",
- "description": "Google Trends UI locale",
- "in": "query",
- "name": "hl",
- "type": "string"
- },
- {
- "default": 0,
- "description": "Timezone offset minutes",
- "in": "query",
- "name": "tz",
- "type": "integer"
- },
- {
- "default": "24h",
- "description": "Trend window",
- "enum": [
- "4h",
- "24h",
- "48h",
- "7d"
- ],
- "in": "query",
- "name": "window",
- "type": "string"
- },
- {
- "description": "Alias for window",
- "enum": [
- "4h",
- "24h",
- "48h",
- "7d"
- ],
- "in": "query",
- "name": "time_range",
- "type": "string"
- },
- {
- "default": 0,
- "description": "Trending category id",
- "enum": [
- 0,
- 3,
- 47,
- 44,
- 22,
- 12,
- 5,
- 7,
- 71,
- 8,
- 45,
- 65,
- 11,
- 13,
- 958,
- 19,
- 16,
- 299,
- 14,
- 66,
- 29,
- 533,
- 174,
- 18,
- 20,
- 67
- ],
- "in": "query",
- "name": "category",
- "type": "integer"
- },
- {
- "default": "all",
- "description": "Trend status filter",
- "enum": [
- "all",
- "active",
- "ended"
- ],
+ "description": "IKEA store URL slug",
"in": "query",
- "name": "status",
- "type": "string"
+ "name": "slug",
+ "required": true,
+ "type": "string",
+ "x-example": "burbank"
},
{
- "default": "relevance",
- "description": "Sort mode",
- "enum": [
- "relevance",
- "title",
- "recency",
- "search_volume"
- ],
+ "default": "us",
+ "description": "Lowercase 2-letter IKEA site country code",
"in": "query",
- "name": "sort_by",
+ "name": "country",
"type": "string"
},
{
- "default": 20,
- "description": "Maximum rows to return",
+ "default": "en",
+ "description": "Lowercase 2-letter IKEA site language code",
"in": "query",
- "name": "limit",
- "type": "integer"
+ "name": "language",
+ "type": "string"
}
],
"produces": [
@@ -283357,29 +312948,29 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.trendingResponseDoc"
+ "$ref": "#/definitions/ikea.storeResponseDoc"
}
},
"400": {
- "description": "Invalid input",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Rate limit exceeded",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal server error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google Trends upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -283390,28 +312981,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends trending now data",
+ "summary": "Get an IKEA store's detail",
"tags": [
- "Google"
+ "IKEA"
]
}
},
- "/google/trends/trending/detail": {
- "post": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the Explore detail widgets for a single trending term, including interest over time, regional interest, top/rising related queries, and related topics when Google returns them.",
- "operationId": "google-trends-trending-detail",
+ "/ikea/stores": {
+ "get": {
+ "description": "Returns IKEA's own directory of physical locations for the requested country: name, URL slug, region grouping, and location type (Store, Small store, Plan & order point with pick-up, etc). Each slug is usable directly as ikea_store's own slug input.",
+ "operationId": "ikea-stores",
"parameters": [
{
- "description": "Trending detail request",
- "in": "body",
- "name": "request",
- "required": true,
- "schema": {
- "$ref": "#/definitions/trends.TrendingDetailRequest"
- }
+ "default": "us",
+ "description": "Lowercase 2-letter IKEA site country code",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "default": "en",
+ "description": "Lowercase 2-letter IKEA site language code",
+ "in": "query",
+ "name": "language",
+ "type": "string"
}
],
"produces": [
@@ -283421,29 +313014,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/trends.exploreResponseDoc"
+ "$ref": "#/definitions/ikea.storesResponseDoc"
}
},
"400": {
- "description": "Invalid input",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google Trends upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -283454,58 +313041,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Trends trending term detail",
+ "summary": "List IKEA physical store locations",
"tags": [
- "Google"
+ "IKEA"
]
}
},
- "/google/videos": {
+ "/ikea/suggest": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized Google video vertical results (title, platform, link, duration, age) parsed from the public Google video results page. Locale defaults to country=us and lang=en. Returns 503 when Google serves a challenge page or unusable HTML.",
- "operationId": "google-videos",
+ "description": "Returns IKEA's own search-box typeahead result for a partial or full query: suggested query completions with their own match counts, plus a small number of top matching products. A query with no matches returns a clean empty response.",
+ "operationId": "ikea-suggest",
"parameters": [
{
- "description": "Search query",
+ "description": "Partial or full search term",
"in": "query",
"name": "q",
"required": true,
"type": "string",
- "x-example": "openai"
- },
- {
- "description": "1-based page number; defaults to 1",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "des"
},
{
- "description": "Results per page; defaults to 10, clamped to 1..50",
+ "default": "us",
+ "description": "Lowercase 2-letter IKEA site country code",
"in": "query",
- "maximum": 50,
- "minimum": 1,
- "name": "count",
- "type": "integer",
- "x-example": 10
+ "name": "country",
+ "type": "string"
},
{
- "description": "Two-letter country code; defaults to us",
+ "default": "en",
+ "description": "Lowercase 2-letter IKEA site language code",
"in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
+ "name": "language",
+ "type": "string"
},
{
- "description": "Google UI language; defaults to en",
+ "default": 5,
+ "description": "Top-product count (1-20)",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "maximum": 20,
+ "minimum": 1,
+ "name": "size",
+ "type": "integer"
}
],
"produces": [
@@ -283515,29 +313091,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/google.videosResponseDoc"
+ "$ref": "#/definitions/ikea.suggestResponseDoc"
}
},
"400": {
- "description": "Missing or invalid query parameters",
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Rate limit exceeded",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal server error",
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Google upstream request failed",
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -283548,27 +313118,41 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Google video results",
+ "summary": "Get IKEA search-box typeahead suggestions",
"tags": [
- "Google"
+ "IKEA"
]
}
},
- "/googlepatents/classification": {
+ "/imdb/charts": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a CPC classification symbol's official title, its position in the classification tree (parent/child symbols), related symbols, and its full scope-note description. Accepts a symbol at any level, e.g. a section (\"A\"), a class (\"A61\"), a subclass (\"A61K\"), or a full group/subgroup (\"A61K31/00\"). Public data, sourced from Google Patents' own search API.",
- "operationId": "googlepatents-classification",
+ "description": "Returns normalized rows from public IMDb title charts. Chart values: `top_rated_movies`, `top_rated_tv_shows`, `most_popular_movies`, `most_popular_tv_shows`, `top_rated_english_movies`, `lowest_rated_movies`.",
+ "operationId": "imdb-charts",
"parameters": [
{
- "description": "CPC classification symbol",
+ "default": "top_rated_movies",
+ "description": "IMDb chart",
+ "enum": [
+ "top_rated_movies",
+ "top_rated_tv_shows",
+ "most_popular_movies",
+ "most_popular_tv_shows",
+ "top_rated_english_movies",
+ "lowest_rated_movies"
+ ],
"in": "query",
- "name": "code",
- "required": true,
- "type": "string",
- "x-example": "A61K31/00"
+ "name": "chart",
+ "type": "string"
+ },
+ {
+ "default": 25,
+ "description": "Rows to return, default 25, max 250",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -283578,7 +313162,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googlepatents.classificationResponseDoc"
+ "$ref": "#/definitions/imdb.chartsResponseDoc"
}
},
"400": {
@@ -283587,8 +313171,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "401": {
+ "description": "Unauthorized",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -283617,19 +313201,19 @@
"ApiKeyAuth": []
}
],
- "summary": "Look up a Cooperative Patent Classification (CPC) symbol",
+ "summary": "IMDb title charts",
"tags": [
- "Google Patents"
+ "IMDb"
]
}
},
- "/googlepatents/coverage": {
+ "/imdb/image-types": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns how many patent grants and applications Google Patents has indexed, per patent office/country, per year, across every authority it covers. Public data, sourced from Google Patents' own search API.",
- "operationId": "googlepatents-coverage",
+ "description": "Lists every value the `type` parameter of the IMDb image endpoints accepts: `behind_the_scenes`, `event`, `poster`, `product`, `production_art`, `publicity`, `still_frame`, `unknown`. Each row carries a display label and a short description.",
+ "operationId": "imdb-image-types",
"produces": [
"application/json"
],
@@ -283637,7 +313221,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googlepatents.coverageResponseDoc"
+ "$ref": "#/definitions/imdb.imageTypesResponseDoc"
}
},
"429": {
@@ -283651,12 +313235,6 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
}
},
"security": [
@@ -283664,34 +313242,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Google Patents database coverage: grants and applications indexed per country per year",
+ "summary": "IMDb image types",
"tags": [
- "Google Patents"
+ "IMDb"
]
}
},
- "/googlepatents/detail": {
+ "/imdb/name": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a single patent's normalized detail: title, abstract, inventors, assignees, dates, legal status, CPC/IPC classifications, claims, description, patent citations, cited-by patents, family members, and similar documents. `number` is a publication number such as `US10758101B2`, `EP1000000A1`, or `WO2020123456A1`. Public data, sourced from Google Patents' server-rendered detail pages. To search or browse by keyword, inventor, or assignee instead of a known publication number, use `/googlepatents/search`.",
- "operationId": "googlepatents-detail",
+ "description": "Returns normalized public IMDb person metadata and known-for rows. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-name",
"parameters": [
{
- "description": "Publication number, e.g. US10758101B2",
+ "description": "IMDb name id",
"in": "query",
- "name": "number",
- "required": true,
+ "name": "id",
"type": "string",
- "x-example": "US10758101B2"
+ "x-example": "nm0634240"
},
{
- "description": "Language code for the translated page, default en",
+ "description": "Absolute https://www.imdb.com/name// URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en"
+ "x-example": "https://www.imdb.com/name/nm0634240/"
}
],
"produces": [
@@ -283701,7 +313278,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googlepatents.detailResponseDoc"
+ "$ref": "#/definitions/imdb.nameResponseDoc"
}
},
"400": {
@@ -283740,27 +313317,33 @@
"ApiKeyAuth": []
}
],
- "summary": "A single patent's bibliographic data, abstract, claims, description, citations, and family",
+ "summary": "IMDb name detail",
"tags": [
- "Google Patents"
+ "IMDb"
]
}
},
- "/googlepatents/recent": {
+ "/imdb/name/awards": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the patent publications Google Patents' bulk sitemap indexes for one ISO 8601 week (format YYYY-Www, e.g. \"2026-W20\"): publication number, title, and detail-page URL for each. Useful for browsing recently published patents without a search query. Public data, sourced from Google Patents' own sitemap.",
- "operationId": "googlepatents-recent",
+ "description": "Returns normalized public IMDb award rows for a person. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-name-awards",
"parameters": [
{
- "description": "ISO 8601 week, format YYYY-Www",
+ "description": "IMDb name id",
"in": "query",
- "name": "week",
- "required": true,
+ "name": "id",
"type": "string",
- "x-example": "2026-W20"
+ "x-example": "nm0634240"
+ },
+ {
+ "description": "Absolute https://www.imdb.com/name// URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/name/nm0634240/"
}
],
"produces": [
@@ -283770,7 +313353,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googlepatents.recentResponseDoc"
+ "$ref": "#/definitions/imdb.nameAwardsResponseDoc"
}
},
"400": {
@@ -283809,147 +313392,214 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse patent publications indexed by Google Patents for one ISO week",
+ "summary": "IMDb name awards",
"tags": [
- "Google Patents"
+ "IMDb"
]
}
},
- "/googlepatents/search": {
+ "/imdb/name/credits": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Google Patents' full index by free-text query, with optional inventor, assignee, patent office, status, type, language, and date filters. Returns a page of normalized hits plus top-assignee/top-inventor/top-classification breakdowns over the full result set. Public data, sourced from Google Patents' own search API.",
- "operationId": "googlepatents-search",
+ "description": "Returns normalized public IMDb filmography sections for a person. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-name-credits",
"parameters": [
{
- "description": "Free-text search query",
+ "description": "IMDb name id",
"in": "query",
- "name": "q",
- "required": true,
+ "name": "id",
"type": "string",
- "x-example": "battery"
+ "x-example": "nm0634240"
},
{
- "description": "Filter by inventor name",
+ "description": "Absolute https://www.imdb.com/name// URL",
"in": "query",
- "name": "inventor",
+ "name": "url",
"type": "string",
- "x-example": "Thomas Fogarty"
+ "x-example": "https://www.imdb.com/name/nm0634240/"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/imdb.nameCreditsResponseDoc"
+ }
},
- {
- "description": "Filter by assignee/applicant name",
- "in": "query",
- "name": "assignee",
- "type": "string",
- "x-example": "Emerson Electric"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Filter by patent office/authority code, e.g. US, EP, WO, CN, JP",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "IMDb name credits",
+ "tags": [
+ "IMDb"
+ ]
+ }
+ },
+ "/imdb/name/images": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns image metadata from a person's media index, including the original image URL, dimensions, caption and credited people. Filter by image type with `type`, which accepts a single value or a comma-separated list of: `behind_the_scenes`, `event`, `poster`, `product`, `production_art`, `publicity`, `still_frame`, `unknown`. Omit `type` to return every type. Limit defaults to 50 and clamps to 1000. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-name-images",
+ "parameters": [
+ {
+ "description": "IMDb name id",
"in": "query",
- "name": "country",
+ "name": "id",
"type": "string",
- "x-example": "US"
+ "x-example": "nm0000151"
},
{
- "description": "Filter by legal status. Allowed values: GRANT, APPLICATION",
- "enum": [
- "GRANT",
- "APPLICATION"
- ],
+ "description": "Absolute https://www.imdb.com/name// URL",
"in": "query",
- "name": "status",
+ "name": "url",
"type": "string",
- "x-example": "GRANT"
+ "x-example": "https://www.imdb.com/name/nm0000151/"
},
{
- "description": "Filter by document type. Allowed values: PATENT, DESIGN",
+ "description": "Image type filter, single value or comma-separated list",
"enum": [
- "PATENT",
- "DESIGN"
+ "behind_the_scenes",
+ "event",
+ "poster",
+ "product",
+ "production_art",
+ "publicity",
+ "still_frame",
+ "unknown"
],
"in": "query",
"name": "type",
"type": "string",
- "x-example": "PATENT"
+ "x-example": "still_frame"
},
{
- "description": "Filter by document language. Allowed values: ENGLISH, GERMAN, CHINESE, FRENCH, SPANISH, ARABIC, JAPANESE, KOREAN, PORTUGUESE, RUSSIAN, ITALIAN, DUTCH, SWEDISH, FINNISH, NORWEGIAN, DANISH",
- "enum": [
- "ENGLISH",
- "GERMAN",
- "CHINESE",
- "FRENCH",
- "SPANISH",
- "ARABIC",
- "JAPANESE",
- "KOREAN",
- "PORTUGUESE",
- "RUSSIAN",
- "ITALIAN",
- "DUTCH",
- "SWEDISH",
- "FINNISH",
- "NORWEGIAN",
- "DANISH"
- ],
+ "description": "Rows to return, default 50, max 1000",
"in": "query",
- "name": "language",
- "type": "string",
- "x-example": "ENGLISH"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/imdb.nameImagesResponseDoc"
+ }
},
- {
- "description": "Which date before/after filter. Allowed values: priority, filing, publication. Defaults to priority when before/after is set",
- "enum": [
- "priority",
- "filing",
- "publication"
- ],
- "in": "query",
- "name": "date_field",
- "type": "string",
- "x-example": "priority"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Only results dated on or before this date (YYYY-MM-DD)",
- "in": "query",
- "name": "before",
- "type": "string",
- "x-example": "2021-12-31"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Only results dated on or after this date (YYYY-MM-DD)",
- "in": "query",
- "name": "after",
- "type": "string",
- "x-example": "2020-01-01"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Sort order. Allowed values: relevance, new, old. Defaults to relevance",
- "enum": [
- "relevance",
- "new",
- "old"
- ],
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "IMDb name images",
+ "tags": [
+ "IMDb"
+ ]
+ }
+ },
+ "/imdb/name/videos": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns public person video metadata and thumbnail URLs only; playback URLs and media manifests are never returned. IMDb caps the upstream slice at 100 and provides no usable continuation cursor, so `total` can exceed returned rows and `has_more` reports that condition. Limit defaults to 50 and clamps to 100. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-name-videos",
+ "parameters": [
+ {
+ "description": "IMDb name id",
"in": "query",
- "name": "sort",
+ "name": "id",
"type": "string",
- "x-example": "relevance"
+ "x-example": "nm0000151"
},
{
- "description": "Results per page, default 10, max 100",
+ "description": "Absolute https://www.imdb.com/name// URL",
"in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 10
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/name/nm0000151/"
},
{
- "description": "Page number, 0-indexed, default 0",
+ "description": "Rows to return, default 50, max 100",
"in": "query",
- "name": "page",
+ "name": "limit",
"type": "integer",
- "x-example": 0
+ "x-example": 50
}
],
"produces": [
@@ -283959,7 +313609,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googlepatents.searchResponseDoc"
+ "$ref": "#/definitions/imdb.nameVideosResponseDoc"
}
},
"400": {
@@ -283968,6 +313618,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -283992,39 +313648,34 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Google Patents by keyword, inventor, assignee, and other filters",
+ "summary": "IMDb name video metadata",
"tags": [
- "Google Patents"
+ "IMDb"
]
}
},
- "/googlepatents/suggest": {
+ "/imdb/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Google Patents' own autocomplete suggestions for an inventor or assignee name as the user types, the same suggestions shown by the Inventor/Assignee fields on Google Patents' advanced search page. Public data, sourced from Google Patents' own search API.",
- "operationId": "googlepatents-suggest",
+ "description": "Returns normalized IMDb title search rows from credential-free public IMDb pages. Limit defaults to 10 and clamps to 20.",
+ "operationId": "imdb-search",
"parameters": [
{
- "description": "Which field to autocomplete. Allowed values: inventor, assignee",
- "enum": [
- "inventor",
- "assignee"
- ],
+ "description": "Search query",
"in": "query",
- "name": "field",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "inventor"
+ "x-example": "inception"
},
{
- "description": "Partial name typed so far",
+ "description": "Rows to return, default 10, max 20",
"in": "query",
- "name": "value",
- "required": true,
- "type": "string",
- "x-example": "John"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -284034,7 +313685,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googlepatents.suggestResponseDoc"
+ "$ref": "#/definitions/imdb.searchResponseDoc"
}
},
"400": {
@@ -284043,6 +313694,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -284067,41 +313724,207 @@
"ApiKeyAuth": []
}
],
- "summary": "Autocomplete an inventor or assignee name for Google Patents search",
+ "summary": "IMDb title search",
"tags": [
- "Google Patents"
+ "IMDb"
]
}
},
- "/googleplay/app": {
+ "/imdb/search/title": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized app metadata from a Google Play details page, including installs, ratings, pricing, version info, developer metadata, media assets, release state, selected user comments, and \"More by this developer\" and \"Similar apps\" recommendation rails. For a per-device (phone/tablet/Chromebook) ratings-and-reviews breakdown, see `/googleplay/ratings`. Defaults: `country=us`, `lang=en`.",
- "operationId": "googleplay-app",
+ "description": "Returns normalized IMDb advanced title-search results (imdb.com/search/title/) from a credential-free public IMDb page. At least one filter is required; sort/limit alone are not enough. Limit defaults to 25 and clamps to 50; only IMDb's first rendered page of results is returned (see `total`/`has_more`), there is no deeper cursor pagination. Genre/company/certificate/country/language/keyword/characters/role are include-only lists; there is no exclude support. Unsupported: genre exclude, three curated `groups` values (best-picture-nominee, best-director-nominee, national-film-registry), and the non-plot \"page topic\" search fields.",
+ "operationId": "imdb-search-title",
"parameters": [
{
- "description": "Google Play package name",
+ "description": "Title-name substring match",
"in": "query",
- "name": "app_id",
- "required": true,
+ "name": "title",
"type": "string",
- "x-example": "com.openai.chatgpt"
+ "x-example": "matrix"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Comma-separated title types: `feature`, `tvSeries`, `short`, `tvEpisode`, `tvMiniSeries`, `tvMovie`, `tvSpecial`, `tvShort`, `videoGame`, `video`, `musicVideo`, `podcastSeries`, `podcastEpisode`",
"in": "query",
- "name": "country",
+ "name": "title_type",
"type": "string",
- "x-example": "us"
+ "x-example": "feature"
},
{
- "description": "Two-letter language code",
+ "description": "Comma-separated genres (include-only): `Action`, `Adventure`, `Animation`, `Biography`, `Comedy`, `Crime`, `Documentary`, `Drama`, `Family`, `Fantasy`, `Film-Noir`, `Game-Show`, `History`, `Horror`, `Music`, `Musical`, `Mystery`, `News`, `Reality-TV`, `Romance`, `Sci-Fi`, `Short`, `Sport`, `Talk-Show`, `Thriller`, `War`, `Western`",
"in": "query",
- "name": "lang",
+ "name": "genres",
+ "type": "string",
+ "x-example": "Action,Adventure"
+ },
+ {
+ "description": "Release date lower bound: YYYY, YYYY-MM, or YYYY-MM-DD",
+ "in": "query",
+ "name": "release_date_from",
+ "type": "string",
+ "x-example": "2020-01-01"
+ },
+ {
+ "description": "Release date upper bound: YYYY, YYYY-MM, or YYYY-MM-DD",
+ "in": "query",
+ "name": "release_date_to",
+ "type": "string",
+ "x-example": "2021-12-31"
+ },
+ {
+ "description": "Minimum IMDb user rating, 0-10",
+ "in": "query",
+ "name": "min_user_rating",
+ "type": "number",
+ "x-example": 7
+ },
+ {
+ "description": "Maximum IMDb user rating, 0-10",
+ "in": "query",
+ "name": "max_user_rating",
+ "type": "number",
+ "x-example": 9.5
+ },
+ {
+ "description": "Minimum number of user rating votes",
+ "in": "query",
+ "name": "min_votes",
+ "type": "integer",
+ "x-example": 25000
+ },
+ {
+ "description": "Maximum number of user rating votes",
+ "in": "query",
+ "name": "max_votes",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum IMDb popularity rank (1 is most popular)",
+ "in": "query",
+ "name": "min_popularity",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum IMDb popularity rank",
+ "in": "query",
+ "name": "max_popularity",
+ "type": "integer"
+ },
+ {
+ "description": "Minimum runtime in minutes",
+ "in": "query",
+ "name": "min_runtime",
+ "type": "integer"
+ },
+ {
+ "description": "Maximum runtime in minutes",
+ "in": "query",
+ "name": "max_runtime",
+ "type": "integer"
+ },
+ {
+ "description": "Comma-separated awards/curated-list groups: `oscar_winner`, `oscar_nominee`, `emmy_winner`, `emmy_nominee`, `golden_globe_winner`, `golden_globe_nominee`, `best_picture_winner`, `best_director_winner`, `razzie_winner`, `razzie_nominee`, `top_100`, `top_250`, `top_1000`, `bottom_100`, `bottom_250`, `bottom_1000`",
+ "in": "query",
+ "name": "groups",
+ "type": "string"
+ },
+ {
+ "description": "Comma-separated plot keywords",
+ "in": "query",
+ "name": "keywords",
+ "type": "string",
+ "x-example": "superhero"
+ },
+ {
+ "description": "Comma-separated IMDb company ids, format `co########`",
+ "in": "query",
+ "name": "companies",
+ "type": "string",
+ "x-example": "co0000756"
+ },
+ {
+ "description": "Comma-separated `COUNTRY:RATING` certificate pairs, e.g. `US:PG-13`",
+ "in": "query",
+ "name": "certificates",
+ "type": "string",
+ "x-example": "US:PG-13"
+ },
+ {
+ "description": "Comma-separated color info: `color`, `black_and_white`, `colorized`, `aces`",
+ "in": "query",
+ "name": "colors",
+ "type": "string"
+ },
+ {
+ "description": "Comma-separated ISO country codes",
+ "in": "query",
+ "name": "countries",
+ "type": "string",
+ "x-example": "US"
+ },
+ {
+ "description": "Comma-separated ISO language codes",
+ "in": "query",
+ "name": "languages",
"type": "string",
"x-example": "en"
+ },
+ {
+ "description": "Comma-separated sound mix names: `12-Track Digital Sound`, `3 Channel Stereo`, `4-Track Stereo`, `6-Track Stereo`, `70 mm 6-Track`, `AGA Sound System`, `Auro 11.1`, `CDS`, `Chronophone`, `Cinematophone`, `Cinephone`, `Cinerama 7-Track`, `Cinesound`, `D-Cinema 48kHz 5.1`, `Datasat`, `De Forest Phonofilm`, `Digitrac Digital Audio System`, `Dolby`, `Dolby Atmos`, `Dolby Digital`, `Dolby Digital EX`, `Dolby SR`, `Dolby Stereo`, `Dolby Surround 7.1`, `DTS`, `DTS 70 mm`, `DTS Stereo`, `DTS-ES`, `IMAX 6-Track`, `Kinoplasticon`, `LC-Concept Digital Sound`, `Matrix Surround`, `Mono`, `Perspecta Stereo`, `Phono-Kinema`, `SDDS`, `Sensurround`, `Silent`, `Sonics-DDP`, `Sonix`, `Stereo`, `Ultra Stereo`, `Vitaphone`",
+ "in": "query",
+ "name": "sound_mixes",
+ "type": "string"
+ },
+ {
+ "description": "Comma-separated cast/crew IMDb name ids, format `nm########`",
+ "in": "query",
+ "name": "role",
+ "type": "string",
+ "x-example": "nm0634240"
+ },
+ {
+ "description": "Comma-separated character names",
+ "in": "query",
+ "name": "characters",
+ "type": "string",
+ "x-example": "Neo"
+ },
+ {
+ "description": "Plot text search term",
+ "in": "query",
+ "name": "plot",
+ "type": "string",
+ "x-example": "hacker"
+ },
+ {
+ "default": false,
+ "description": "Include adult titles. Defaults to excluded",
+ "in": "query",
+ "name": "include_adult",
+ "type": "boolean"
+ },
+ {
+ "description": "One of `moviemeter`, `alpha`, `user_rating`, `num_votes`, `boxoffice_gross_us`, `runtime`, `year`, `release_date`",
+ "in": "query",
+ "name": "sort",
+ "type": "string",
+ "x-example": "user_rating"
+ },
+ {
+ "description": "`asc` or `desc`. Defaults to `asc` when sort is set",
+ "in": "query",
+ "name": "sort_order",
+ "type": "string",
+ "x-example": "desc"
+ },
+ {
+ "description": "Rows to return, default 25, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 25
}
],
"produces": [
@@ -284109,9 +313932,9 @@
],
"responses": {
"200": {
- "description": "Wrapped app details payload",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.AppDetailsResponse"
+ "$ref": "#/definitions/imdb.searchTitleResponseDoc"
}
},
"400": {
@@ -284137,6 +313960,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284144,33 +313973,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve full Google Play app details",
+ "summary": "IMDb advanced title search",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/categories": {
+ "/imdb/title": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns category ids found in the Google Play apps navigation.",
- "operationId": "googleplay-categories",
+ "description": "Returns normalized IMDb title metadata from a credential-free public IMDb title page. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title",
"parameters": [
{
- "description": "Two-letter country code",
+ "description": "IMDb title id",
"in": "query",
- "name": "country",
+ "name": "id",
"type": "string",
- "x-example": "us"
+ "x-example": "tt1375666"
},
{
- "description": "Two-letter language code",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en"
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -284180,7 +314009,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.categoriesResponseDoc"
+ "$ref": "#/definitions/imdb.titleResponseDoc"
}
},
"400": {
@@ -284206,6 +314035,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284213,34 +314048,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Google Play app categories",
+ "summary": "IMDb title detail",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/datasafety": {
+ "/imdb/title/awards": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the data safety information displayed on Google Play.",
- "operationId": "googleplay-datasafety",
+ "description": "Returns normalized public IMDb award rows for a title. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-awards",
"parameters": [
{
- "description": "Google Play app id",
+ "description": "IMDb title id",
"in": "query",
- "name": "app_id",
- "required": true,
+ "name": "id",
"type": "string",
- "x-example": "com.openai.chatgpt"
+ "x-example": "tt1375666"
},
{
- "description": "Two-letter language code",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en"
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -284250,7 +314084,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.dataSafetyResponseDoc"
+ "$ref": "#/definitions/imdb.titleAwardsResponseDoc"
}
},
"400": {
@@ -284276,6 +314110,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284283,55 +314123,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Google Play data safety details",
+ "summary": "IMDb title awards",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/developer/{dev_id}": {
+ "/imdb/title/box-office": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns apps published by a developer id or developer name.",
- "operationId": "googleplay-developer",
+ "description": "Returns a title's public box-office summary: lifetime gross by market (domestic, international, worldwide), the domestic opening weekend, and the production budget. IMDb reports each figure independently, so a real title with no box office data (most TV series, many non-theatrical titles) returns `has_box_office: false` with every figure omitted rather than an error. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-box-office",
"parameters": [
{
- "description": "Developer id or name",
- "in": "path",
- "name": "dev_id",
- "required": true,
- "type": "string",
- "x-example": "OpenAI"
- },
- {
- "description": "Number of apps",
- "in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 60
- },
- {
- "description": "Two-letter country code",
+ "description": "IMDb title id",
"in": "query",
- "name": "country",
+ "name": "id",
"type": "string",
- "x-example": "us"
+ "x-example": "tt0111161"
},
{
- "description": "Two-letter language code",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en"
- },
- {
- "default": false,
- "description": "Resolve each app to full detail",
- "in": "query",
- "name": "full_detail",
- "type": "boolean"
+ "x-example": "https://www.imdb.com/title/tt0111161/"
}
],
"produces": [
@@ -284341,7 +314159,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.developerResultsResponseDoc"
+ "$ref": "#/definitions/imdb.titleBoxOfficeResponseDoc"
}
},
"400": {
@@ -284367,6 +314185,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284374,91 +314198,115 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve apps by Google Play developer",
+ "summary": "IMDb title box office summary",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/list": {
+ "/imdb/title/company-credits": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns apps from a Google Play collection and category.",
- "operationId": "googleplay-list",
+ "description": "Returns normalized public IMDb company-credit sections for a title. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-company-credits",
"parameters": [
{
- "description": "Collection: TOP_FREE, TOP_PAID, GROSSING, NEW_FREE, NEW_PAID",
- "enum": [
- "TOP_FREE",
- "TOP_PAID",
- "GROSSING",
- "NEW_FREE",
- "NEW_PAID"
- ],
+ "description": "IMDb title id",
"in": "query",
- "name": "collection",
+ "name": "id",
"type": "string",
- "x-example": "TOP_FREE"
+ "x-example": "tt1375666"
},
{
- "description": "Category id",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "category",
+ "name": "url",
"type": "string",
- "x-example": "TOOLS"
+ "x-example": "https://www.imdb.com/title/tt1375666/"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
+ }
},
- {
- "description": "Google Play device tab: phone, tablet, tv, chromebook, watch, xr, car",
- "enum": [
- "phone",
- "tablet",
- "tv",
- "chromebook",
- "watch",
- "xr",
- "car"
- ],
- "in": "query",
- "name": "device",
- "type": "string",
- "x-example": "tablet"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Family age range",
- "in": "query",
- "name": "age",
- "type": "string",
- "x-example": "AGE_RANGE1"
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Number of apps",
- "in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 50
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Two-letter country code",
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "IMDb title company credits",
+ "tags": [
+ "IMDb"
+ ]
+ }
+ },
+ "/imdb/title/connections": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a bounded slice of a title's public connections: other titles it references or is referenced by, such as remakes, spin-offs, \"featured in\" clips, and \"edited into\" compilations. `category` is upstream-supplied free text, not a closed enum. IMDb's connections list can run to hundreds or thousands of rows, so `total` can exceed the returned rows and `has_more` reports that condition. Limit defaults to 50 and clamps to 250. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-connections",
+ "parameters": [
+ {
+ "description": "IMDb title id",
"in": "query",
- "name": "country",
+ "name": "id",
"type": "string",
- "x-example": "us"
+ "x-example": "tt0111161"
},
{
- "description": "Two-letter language code",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en"
+ "x-example": "https://www.imdb.com/title/tt0111161/"
},
{
- "default": false,
- "description": "Resolve each app to full detail",
+ "description": "Rows to return, default 50, max 250",
"in": "query",
- "name": "full_detail",
- "type": "boolean"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -284468,7 +314316,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.listResultsResponseDoc"
+ "$ref": "#/definitions/imdb.titleConnectionsResponseDoc"
}
},
"400": {
@@ -284494,6 +314342,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284501,48 +314355,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve apps from a Google Play top collection",
+ "summary": "IMDb title connections",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/permissions": {
+ "/imdb/title/credits": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Google Play permission groups or a short permission name list.",
- "operationId": "googleplay-permissions",
+ "description": "Returns normalized public IMDb full cast and crew sections. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-credits",
"parameters": [
{
- "description": "Google Play app id",
- "in": "query",
- "name": "app_id",
- "required": true,
- "type": "string",
- "x-example": "com.openai.chatgpt"
- },
- {
- "description": "Two-letter country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Two-letter language code",
+ "description": "IMDb title id",
"in": "query",
- "name": "lang",
+ "name": "id",
"type": "string",
- "x-example": "en"
+ "x-example": "tt1375666"
},
{
- "default": false,
- "description": "Return only permission names",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "short",
- "type": "boolean"
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -284552,7 +314391,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.permissionsResultsResponseDoc"
+ "$ref": "#/definitions/imdb.creditsResponseDoc"
}
},
"400": {
@@ -284578,6 +314417,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284585,41 +314430,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Google Play app permissions",
+ "summary": "IMDb title credits",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/ratings": {
+ "/imdb/title/episodes": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the ratings-and-reviews breakdown Google Play shows under the details page's device tabs, one entry each for phone, tablet, and Chromebook. Defaults: `country=us`, `lang=en`.",
- "operationId": "googleplay-ratings",
+ "description": "Returns normalized public IMDb episode rows for a series title. Limit defaults to 10 and clamps to 20. Optional `season` filters the upstream episodes page. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-episodes",
"parameters": [
{
- "description": "Google Play package name",
+ "description": "IMDb title id",
"in": "query",
- "name": "app_id",
- "required": true,
+ "name": "id",
"type": "string",
- "x-example": "com.openai.chatgpt"
+ "x-example": "tt0944947"
},
{
- "description": "Two-letter storefront country code",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "country",
+ "name": "url",
"type": "string",
- "x-example": "us"
+ "x-example": "https://www.imdb.com/title/tt0944947/"
},
{
- "description": "Two-letter language code",
+ "description": "Season number to request",
"in": "query",
- "name": "lang",
- "type": "string",
- "x-example": "en"
+ "name": "season",
+ "type": "integer",
+ "x-example": 1
+ },
+ {
+ "description": "Rows to return, default 10, max 20",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -284629,7 +314480,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.ratingsResponseDoc"
+ "$ref": "#/definitions/imdb.episodesResponseDoc"
}
},
"400": {
@@ -284655,6 +314506,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284662,73 +314519,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Google Play ratings by device",
+ "summary": "IMDb title episodes",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/reviews": {
+ "/imdb/title/filming-locations": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one or more pages of app reviews. Set `paginate=true` to fetch only the requested page.",
- "operationId": "googleplay-reviews",
+ "description": "Returns normalized public IMDb filming-location rows for a title. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-filming-locations",
"parameters": [
{
- "description": "Google Play app id",
- "in": "query",
- "name": "app_id",
- "required": true,
- "type": "string",
- "x-example": "com.openai.chatgpt"
- },
- {
- "description": "Sort: helpfulness, newest, rating",
- "enum": [
- "helpfulness",
- "newest",
- "rating"
- ],
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "newest"
- },
- {
- "description": "Number of reviews",
- "in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 100
- },
- {
- "description": "Two-letter country code",
+ "description": "IMDb title id",
"in": "query",
- "name": "country",
+ "name": "id",
"type": "string",
- "x-example": "us"
+ "x-example": "tt1375666"
},
{
- "description": "Two-letter language code",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en"
- },
- {
- "default": false,
- "description": "Only fetch the requested page",
- "in": "query",
- "name": "paginate",
- "type": "boolean"
- },
- {
- "description": "Token from a previous response",
- "in": "query",
- "name": "next_pagination_token",
- "type": "string"
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -284738,7 +314555,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.reviewsResponseDoc"
+ "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
}
},
"400": {
@@ -284764,6 +314581,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284771,67 +314594,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Google Play reviews",
+ "summary": "IMDb title filming locations",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/search": {
+ "/imdb/title/goofs": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Google Play search results for a term.",
- "operationId": "googleplay-search",
+ "description": "Returns normalized public IMDb goof rows for a title. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-goofs",
"parameters": [
{
- "description": "Search term",
- "in": "query",
- "name": "term",
- "required": true,
- "type": "string",
- "x-example": "chatgpt"
- },
- {
- "description": "Number of apps",
- "in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 20
- },
- {
- "description": "Two-letter country code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "us"
- },
- {
- "description": "Two-letter language code",
+ "description": "IMDb title id",
"in": "query",
- "name": "lang",
+ "name": "id",
"type": "string",
- "x-example": "en"
- },
- {
- "default": false,
- "description": "Resolve each app to full detail",
- "in": "query",
- "name": "full_detail",
- "type": "boolean"
+ "x-example": "tt1375666"
},
{
- "description": "Price filter: all, free, paid",
- "enum": [
- "all",
- "free",
- "paid"
- ],
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "price",
+ "name": "url",
"type": "string",
- "x-example": "all"
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -284841,7 +314630,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.searchResultsResponseDoc"
+ "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
}
},
"400": {
@@ -284867,6 +314656,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284874,55 +314669,57 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Google Play",
+ "summary": "IMDb title goofs",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/similar": {
+ "/imdb/title/images": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns apps from the \"Similar apps\" cluster on an app details page.",
- "operationId": "googleplay-similar",
+ "description": "Returns image metadata from a title's media index, including the original image URL, dimensions, caption and credited people. Filter by image type with `type`, which accepts a single value or a comma-separated list of: `behind_the_scenes`, `event`, `poster`, `product`, `production_art`, `publicity`, `still_frame`, `unknown`. Omit `type` to return every type. Limit defaults to 50 and clamps to 1000. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-images",
"parameters": [
{
- "description": "Google Play app id",
+ "description": "IMDb title id",
"in": "query",
- "name": "app_id",
- "required": true,
+ "name": "id",
"type": "string",
- "x-example": "com.openai.chatgpt"
- },
- {
- "description": "Number of apps",
- "in": "query",
- "name": "num",
- "type": "integer",
- "x-example": 24
+ "x-example": "tt0089753"
},
{
- "description": "Two-letter country code",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "country",
+ "name": "url",
"type": "string",
- "x-example": "us"
+ "x-example": "https://www.imdb.com/title/tt0089753/"
},
{
- "description": "Two-letter language code",
+ "description": "Image type filter, single value or comma-separated list",
+ "enum": [
+ "behind_the_scenes",
+ "event",
+ "poster",
+ "product",
+ "production_art",
+ "publicity",
+ "still_frame",
+ "unknown"
+ ],
"in": "query",
- "name": "lang",
+ "name": "type",
"type": "string",
- "x-example": "en"
+ "x-example": "still_frame"
},
{
- "default": false,
- "description": "Resolve each app to full detail",
+ "description": "Rows to return, default 50, max 1000",
"in": "query",
- "name": "full_detail",
- "type": "boolean"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 50
}
],
"produces": [
@@ -284932,7 +314729,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.similarResultsResponseDoc"
+ "$ref": "#/definitions/imdb.titleImagesResponseDoc"
}
},
"400": {
@@ -284958,6 +314755,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -284965,41 +314768,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve similar Google Play apps",
+ "summary": "IMDb title images",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/googleplay/suggest/{term}": {
+ "/imdb/title/keywords": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns up to 10 suggestions for a search term.",
- "operationId": "googleplay-suggest",
+ "description": "Returns normalized public IMDb keyword rows for a title. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-keywords",
"parameters": [
{
- "description": "Search term prefix",
- "in": "path",
- "name": "term",
- "required": true,
- "type": "string",
- "x-example": "chatg"
- },
- {
- "description": "Two-letter country code",
+ "description": "IMDb title id",
"in": "query",
- "name": "country",
+ "name": "id",
"type": "string",
- "x-example": "us"
+ "x-example": "tt1375666"
},
{
- "description": "Two-letter language code",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "lang",
+ "name": "url",
"type": "string",
- "x-example": "en"
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -285009,7 +314804,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/googleplay.suggestResponseDoc"
+ "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
}
},
"400": {
@@ -285035,6 +314830,12 @@
"schema": {
"$ref": "#/definitions/app.Response"
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
}
},
"security": [
@@ -285042,24 +314843,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Retrieve Google Play query suggestions",
+ "summary": "IMDb title keywords",
"tags": [
- "GooglePlay"
+ "IMDb"
]
}
},
- "/gq/article": {
+ "/imdb/title/parental-guide": {
"get": {
- "description": "Returns public GQ article metadata and body paragraphs from a canonical story URL. A story GQ marks as subscriber-only returns a 403 permission error instead of partial text.",
- "operationId": "gq-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized public IMDb parental-guide categories and severity signals. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-parental-guide",
"parameters": [
{
- "description": "Canonical GQ story URL",
+ "description": "IMDb title id",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "tt1375666"
+ },
+ {
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
"name": "url",
- "required": true,
"type": "string",
- "x-example": "https://www.gq.com/story/how-to-unclog-your-ear"
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -285069,7 +314879,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/imdb.parentalGuideResponseDoc"
}
},
"400": {
@@ -285078,14 +314888,20 @@
"$ref": "#/definitions/app.Response"
}
},
- "403": {
- "description": "Forbidden",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -285102,37 +314918,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GQ article content",
+ "summary": "IMDb title parental guide",
"tags": [
- "GQ"
+ "IMDb"
]
}
},
- "/gq/author": {
+ "/imdb/title/public-facts-analysis": {
"get": {
- "description": "Returns one GQ contributor's public profile: name, biography, headshot, social links, and one page of their recent articles.",
- "operationId": "gq-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns derived public-page summary metrics for IMDb trivia, goofs, quotes, keywords, filming locations, and company credits. This endpoint is not viewing advice. Pass exactly one of `id` or `url`. The six sections are gathered from six independent sources, so a section that cannot be fetched is omitted and named in `missing_sections` with `partial` set to `true`, rather than failing the whole response; an error is returned only when no section could be fetched. Callers that require a complete analysis should check `partial`.",
+ "operationId": "imdb-title-public-facts-analysis",
"parameters": [
{
- "description": "Contributor slug, e.g. tom-ward; provide slug or url",
+ "description": "IMDb title id",
"in": "query",
- "name": "slug",
+ "name": "id",
"type": "string",
- "x-example": "tom-ward"
+ "x-example": "tt1375666"
},
{
- "description": "Canonical www.gq.com/contributor/ URL; alternative to slug",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
"name": "url",
"type": "string",
- "x-example": "https://www.gq.com/contributor/tom-ward"
- },
- {
- "default": 1,
- "description": "1-based page of the contributor's article list (1-100)",
- "in": "query",
- "name": "page",
- "type": "integer"
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -285142,7 +314954,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.gqAuthorResponseDoc"
+ "$ref": "#/definitions/imdb.titlePublicFactsAnalysisResponseDoc"
}
},
"400": {
@@ -285157,6 +314969,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -285169,36 +314993,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a GQ contributor profile",
+ "summary": "IMDb title public facts analysis",
"tags": [
- "GQ"
+ "IMDb"
]
}
},
- "/gq/headlines": {
+ "/imdb/title/quotes": {
"get": {
- "description": "Returns the current story cards from one GQ section page: headline, standfirst, byline, publish date, and image.",
- "operationId": "gq-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized public IMDb quote rows for a title. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-quotes",
"parameters": [
{
- "description": "GQ section slug",
- "enum": [
- "culture",
- "entertainment",
- "fitness",
- "gq-hype",
- "gq-recommends",
- "gqsports",
- "grooming",
- "politics",
- "style",
- "watches",
- "wellness"
- ],
+ "description": "IMDb title id",
"in": "query",
- "name": "section",
- "required": true,
- "type": "string"
+ "name": "id",
+ "type": "string",
+ "x-example": "tt1375666"
+ },
+ {
+ "description": "Absolute https://www.imdb.com/title// URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -285208,7 +315029,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
}
},
"400": {
@@ -285217,6 +315038,24 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -285229,16 +315068,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GQ section headlines",
+ "summary": "IMDb title quotes",
"tags": [
- "GQ"
+ "IMDb"
]
}
},
- "/gq/news": {
+ "/imdb/title/ratings": {
"get": {
- "description": "Returns fresh GQ top stories from the public RSS feed.",
- "operationId": "gq-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns IMDb's aggregate rating, vote count, ten rating buckets, and country rating summaries. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-ratings",
+ "parameters": [
+ {
+ "description": "IMDb title id",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "tt0111161"
+ },
+ {
+ "description": "Absolute IMDb title URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/title/tt0111161/"
+ }
+ ],
"produces": [
"application/json"
],
@@ -285246,11 +315104,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/imdb.ratingsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -285267,45 +315125,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get GQ top stories",
+ "summary": "IMDb title ratings breakdown",
"tags": [
- "GQ"
+ "IMDb"
]
}
},
- "/gq/sections": {
+ "/imdb/title/release-info": {
"get": {
- "description": "Returns the GQ section (channel) slugs accepted by the headlines endpoint, each verified to list live stories.",
- "operationId": "gq-sections",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
+ "description": "Returns normalized public IMDb release date rows and alternate titles. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-release-info",
+ "parameters": [
{
- "ApiKeyAuth": []
+ "description": "IMDb title id",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "tt1375666"
+ },
+ {
+ "description": "Absolute https://www.imdb.com/title// URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
- "summary": "Get GQ sections",
- "tags": [
- "GQ"
- ]
- }
- },
- "/grailed/categories": {
- "get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Grailed's full facet taxonomy for the enum-like parameters grailed-search/grailed-sold-listings accept: department, category, category_path (a more granular subcategory slug), condition, color, and size, each with its own live listing count. department and condition are exhaustive closed sets (2 and 5 values respectively); category/category_path/color/size are the full, exhaustive value space as of the request. Designer is NOT included here (7,363 values, far too large for a facet-count response) -- see grailed-designers for that discovery endpoint.",
- "operationId": "grailed-categories",
"produces": [
"application/json"
],
@@ -285313,7 +315161,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.categoriesResponseDoc"
+ "$ref": "#/definitions/imdb.releaseInfoResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -285322,6 +315182,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -285334,27 +315200,40 @@
"ApiKeyAuth": []
}
],
- "summary": "List Grailed's facet taxonomy",
+ "summary": "IMDb title release info",
"tags": [
- "Grailed"
+ "IMDb"
]
}
},
- "/grailed/collection": {
+ "/imdb/title/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Grailed curated homepage collection's full listing set. id is the collection's numeric id, from grailed-collections' own collections[].id field. An unknown id returns a typed not-found error.",
- "operationId": "grailed-collection",
+ "description": "Returns normalized public IMDb user review rows. Limit defaults to 10 and clamps to 20. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-reviews",
"parameters": [
{
- "description": "Collection id, from grailed-collections' own collections[].id field",
+ "description": "IMDb title id",
"in": "query",
"name": "id",
- "required": true,
+ "type": "string",
+ "x-example": "tt1375666"
+ },
+ {
+ "description": "Absolute https://www.imdb.com/title// URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/title/tt1375666/"
+ },
+ {
+ "description": "Rows to return, default 10, max 20",
+ "in": "query",
+ "name": "limit",
"type": "integer",
- "x-example": 20
+ "x-example": 10
}
],
"produces": [
@@ -285364,7 +315243,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.collectionResponseDoc"
+ "$ref": "#/definitions/imdb.reviewsResponseDoc"
}
},
"400": {
@@ -285385,6 +315264,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -285397,19 +315282,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Grailed curated collection's listings",
+ "summary": "IMDb title user reviews",
"tags": [
- "Grailed"
+ "IMDb"
]
}
},
- "/grailed/collections": {
+ "/imdb/title/similar": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Grailed's own curated homepage merchandising collections (e.g. \"Trending: Apparel\", \"Dark Luxury\", \"Chromed Out\") -- editorial/trending shelves distinct from a plain search or facet browse. Each collection's numeric id is the value grailed-collection's own id parameter accepts.",
- "operationId": "grailed-collections",
+ "description": "Returns normalized titles from IMDb's public More like this recommendations. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-similar",
+ "parameters": [
+ {
+ "description": "IMDb title id",
+ "in": "query",
+ "name": "id",
+ "type": "string",
+ "x-example": "tt0111161"
+ },
+ {
+ "description": "Absolute IMDb title URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/title/tt0111161/"
+ }
+ ],
"produces": [
"application/json"
],
@@ -285417,11 +315318,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.collectionsResponseDoc"
+ "$ref": "#/definitions/imdb.similarResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -285438,40 +315339,33 @@
"ApiKeyAuth": []
}
],
- "summary": "List Grailed's curated homepage collections",
+ "summary": "IMDb similar titles",
"tags": [
- "Grailed"
+ "IMDb"
]
}
},
- "/grailed/designers": {
+ "/imdb/title/technical-specs": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of Grailed's full designer/brand taxonomy (7,363 designers as of 2026-09-09) -- the value space grailed-search/grailed-sold-listings' own designer parameter accepts (by name). q is an optional free-text filter (typo-tolerant, e.g. a partial name for typeahead-style lookup); an empty q lists the full taxonomy ordered by Grailed's own default ranking (most-listed designers first).",
- "operationId": "grailed-designers",
+ "description": "Returns normalized public IMDb technical specifications such as runtime, sound mix, color, and aspect ratio. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-technical-specs",
"parameters": [
{
- "description": "Free-text designer name filter",
+ "description": "IMDb title id",
"in": "query",
- "name": "q",
+ "name": "id",
"type": "string",
- "x-example": "gucci"
- },
- {
- "description": "One-based page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "tt1375666"
},
{
- "description": "Results per page, defaults to 24, maximum 100",
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 24
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -285481,7 +315375,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.designersResponseDoc"
+ "$ref": "#/definitions/imdb.technicalSpecsResponseDoc"
}
},
"400": {
@@ -285490,12 +315384,24 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -285508,27 +315414,33 @@
"ApiKeyAuth": []
}
],
- "summary": "List or search Grailed's designer/brand taxonomy",
+ "summary": "IMDb title technical specs",
"tags": [
- "Grailed"
+ "IMDb"
]
}
},
- "/grailed/listing": {
+ "/imdb/title/trivia": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns full normalized listing-detail data for one Grailed listing: description, every photo, measurements, designers, and the seller's full profile -- richer than the flattened summary grailed-search/grailed-sold-listings return per listing. id is the listing's numeric id, from a search or sold-listings result's own listings[].id field.",
- "operationId": "grailed-listing",
+ "description": "Returns normalized public IMDb trivia rows for a title. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-trivia",
"parameters": [
{
- "description": "Listing id, from a search or sold-listings result's own listings[].id field",
+ "description": "IMDb title id",
"in": "query",
"name": "id",
- "required": true,
- "type": "integer",
- "x-example": 105379689
+ "type": "string",
+ "x-example": "tt1375666"
+ },
+ {
+ "description": "Absolute https://www.imdb.com/title// URL",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.imdb.com/title/tt1375666/"
}
],
"produces": [
@@ -285538,7 +315450,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.listingResponseDoc"
+ "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
}
},
"400": {
@@ -285559,6 +315471,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -285571,124 +315489,40 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Grailed listing",
+ "summary": "IMDb title trivia",
"tags": [
- "Grailed"
+ "IMDb"
]
}
},
- "/grailed/search": {
+ "/imdb/title/videos": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches or browses Grailed's (grailed.com) peer-to-peer resale marketplace for currently-active listings. q, designer, department, category, size, color, condition, min_price, and max_price are all optional and combine as an AND -- a free-text q can be combined with any of the facet filters in the same request, or every field can be omitted to browse the full active catalog by Grailed's own \"heat\" relevance ranking. designer accepts one of the values grailed-designers' own designers[].name field returns; department, category, size, and color accept values from grailed-categories' own departments[].value/categories[].value/sizes[].value/colors[].value fields. condition and sort are fixed, closed enums (listed below). Keyword search is Algolia's own typo-tolerant relevance ranking, not a guaranteed exact match. A query with genuinely zero matches returns a well-formed empty result rather than an error.",
- "operationId": "grailed-search",
+ "description": "Returns public title video metadata and thumbnail URLs only; playback URLs and media manifests are never returned. IMDb server-truncates this connection and exposes no usable continuation cursor, so `total` can exceed returned rows and `has_more` reports that condition. Limit defaults to 50 and clamps to 100. Pass exactly one of `id` or `url`.",
+ "operationId": "imdb-title-videos",
"parameters": [
{
- "description": "Free-text search query",
- "in": "query",
- "name": "q",
- "type": "string",
- "x-example": "gucci"
- },
- {
- "description": "Designer/brand name filter, from grailed-designers' own designers[].name field",
- "in": "query",
- "name": "designer",
- "type": "string",
- "x-example": "Gucci"
- },
- {
- "description": "Department filter",
- "enum": [
- "menswear",
- "womenswear"
- ],
- "in": "query",
- "name": "department",
- "type": "string",
- "x-example": "menswear"
- },
- {
- "description": "Category facet filter, from grailed-categories' own categories[].value field",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "tops"
- },
- {
- "description": "Size facet filter, from grailed-categories' own sizes[].value field",
- "in": "query",
- "name": "size",
- "type": "string",
- "x-example": "m"
- },
- {
- "description": "Color facet filter, from grailed-categories' own colors[].value field",
- "in": "query",
- "name": "color",
- "type": "string",
- "x-example": "black"
- },
- {
- "description": "Condition filter",
- "enum": [
- "is_new",
- "is_gently_used",
- "is_used",
- "is_worn",
- "is_not_specified"
- ],
+ "description": "IMDb title id",
"in": "query",
- "name": "condition",
+ "name": "id",
"type": "string",
- "x-example": "is_gently_used"
- },
- {
- "description": "Minimum price (inclusive), in USD",
- "in": "query",
- "name": "min_price",
- "type": "number",
- "x-example": 50
- },
- {
- "description": "Maximum price (inclusive), in USD",
- "in": "query",
- "name": "max_price",
- "type": "number",
- "x-example": 500
+ "x-example": "tt1375666"
},
{
- "description": "Sort order, defaults to heat",
- "enum": [
- "heat",
- "heat_recency",
- "followers",
- "newest",
- "price_asc",
- "price_desc",
- "recently_updated",
- "quality"
- ],
+ "description": "Absolute https://www.imdb.com/title// URL",
"in": "query",
- "name": "sort",
+ "name": "url",
"type": "string",
- "x-example": "heat"
- },
- {
- "description": "One-based page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "https://www.imdb.com/title/tt1375666/"
},
{
- "description": "Results per page, defaults to 24, maximum 100",
+ "description": "Rows to return, default 50, max 100",
"in": "query",
"name": "limit",
"type": "integer",
- "x-example": 24
+ "x-example": 50
}
],
"produces": [
@@ -285698,7 +315532,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.searchResponseDoc"
+ "$ref": "#/definitions/imdb.titleVideosResponseDoc"
}
},
"400": {
@@ -285707,12 +315541,24 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -285725,41 +315571,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search or browse Grailed active listings",
+ "summary": "IMDb title video metadata",
"tags": [
- "Grailed"
+ "IMDb"
]
}
},
- "/grailed/seller": {
+ "/importyeti/company": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a Grailed seller's public profile plus a page of their current active listings (Grailed's own \"shop\" view of a seller). username is the seller's Grailed username, from a listing's own seller.username field or grailed.com/{username}. Listings only ever contains that seller's ACTIVE listings; use grailed-sold-listings with a designer/query filter for a broader sales-history lookup, since sold listings are not filterable by seller through this endpoint. An unknown username returns a typed not-found error.",
- "operationId": "grailed-seller",
+ "description": "Returns a normalized ImportYeti company report: identity, headline US customs shipment-volume metrics (total shipments, average TEU, last shipment date, estimated shipping spend), its supplier list, and recent bill-of-lading shipment activity. Credential-free public data, rendered from the company report page through proxied browser renderers.",
+ "operationId": "importyeti-company",
"parameters": [
{
- "description": "Grailed username",
+ "description": "ImportYeti company slug, the last path segment of a /company/{slug} URL",
"in": "query",
- "name": "username",
+ "name": "slug",
"required": true,
"type": "string",
- "x-example": "woodlandstepps"
- },
- {
- "description": "One-based page number for the seller's listings, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Listings per page, defaults to 24, maximum 100",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 24
+ "x-example": "target"
}
],
"produces": [
@@ -285769,7 +315601,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.sellerResponseDoc"
+ "$ref": "#/definitions/importyeti.companyResponseDoc"
}
},
"400": {
@@ -285784,8 +315616,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -285802,30 +315634,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Grailed seller's profile and active listings",
+ "summary": "Get an ImportYeti company report",
"tags": [
- "Grailed"
+ "ImportYeti"
]
}
},
- "/grailed/seller-reviews": {
+ "/importyeti/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of a Grailed seller's individual buyer feedback entries (rating, note, feedback tags, and the listing each review was left for) -- reputation detail grailed-seller does not carry (grailed-seller only exposes the aggregate rating_average/rating_count). username is the seller's Grailed username, from a listing's own seller.username field or grailed.com/{username}. An unknown username returns a typed not-found error.",
- "operationId": "grailed-seller-reviews",
+ "description": "Searches ImportYeti for companies and suppliers matching a name, returning each match's kind (company or supplier), slug, country, address, and headline shipment stats. A \"company\" result's slug chains into GET /importyeti/company. Credential-free public data, sourced from ImportYeti's own JSON search API (distinct from its human-facing /search results page, which does not render due to a client-side bug in ImportYeti's own app).",
+ "operationId": "importyeti-search",
"parameters": [
{
- "description": "Grailed username",
+ "description": "Company or supplier name to search for",
"in": "query",
- "name": "username",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "woodlandstepps"
+ "x-example": "nike"
},
{
- "description": "One-based page number, defaults to 1",
+ "description": "1-indexed result page, defaults to 1",
"in": "query",
"name": "page",
"type": "integer",
@@ -285839,7 +315671,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.sellerReviewsResponseDoc"
+ "$ref": "#/definitions/importyeti.searchResponseDoc"
}
},
"400": {
@@ -285848,14 +315680,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -285872,34 +315698,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Grailed seller's buyer feedback",
+ "summary": "Search ImportYeti companies and suppliers by name",
"tags": [
- "Grailed"
+ "ImportYeti"
]
}
},
- "/grailed/similar-listings": {
+ "/indeed/job": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the listings Grailed's own product page recommends as \"similar\" to one listing -- the same related-items shelf shown on grailed.com's own listing-detail page. id is the listing's numeric id, from a search, sold-listings, or collection result's own id field. An id for a listing that does not exist (deleted, sold and removed, or never valid) returns a typed not-found error.",
- "operationId": "grailed-similar-listings",
+ "description": "Returns one Indeed job posting by its job key (the `job_key` field returned by search). Primary transport is Indeed's own credential-free GraphQL API; falls back to the original web-page transport if that fails.",
+ "operationId": "indeed-job",
"parameters": [
{
- "description": "Listing id to find similar listings for",
+ "description": "Indeed job key (16-character hex)",
"in": "query",
- "name": "id",
+ "name": "jk",
"required": true,
- "type": "integer",
- "x-example": 105379689
- },
- {
- "description": "Results to return, defaults to 30, maximum 99",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 30
+ "type": "string",
+ "x-example": "a055dc6ab3a91a3b"
}
],
"produces": [
@@ -285909,7 +315728,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.similarListingsResponseDoc"
+ "$ref": "#/definitions/indeed.jobResponseDoc"
}
},
"400": {
@@ -285942,119 +315761,129 @@
"ApiKeyAuth": []
}
],
- "summary": "Get listings similar to a Grailed listing",
+ "summary": "Indeed job detail",
"tags": [
- "Grailed"
+ "Indeed"
]
}
},
- "/grailed/sold-listings": {
+ "/indeed/locations/suggest": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Grailed's SOLD-listing index -- a separate dataset from active listings, carrying each item's final sale price and sale date. Same filter shape as grailed-search (q, designer, department, category, size, color, condition), but min_price/max_price filter the SOLD price, not the original asking price. Useful for sale-price-history/comparable-sales lookups (e.g. \"what did this designer/category actually sell for recently\"). A query with genuinely zero matches returns a well-formed empty result rather than an error.",
- "operationId": "grailed-sold-listings",
+ "description": "Returns Indeed's own location-search autocomplete suggestions for a partial location string -- the same suggestions the app's search bar offers -- for building a valid `l` value for search. Credential-free GraphQL only; there is no page-based fallback for this endpoint.",
+ "operationId": "indeed-locations-suggest",
"parameters": [
{
- "description": "Free-text search query",
+ "description": "Partial location text",
"in": "query",
"name": "q",
+ "required": true,
"type": "string",
- "x-example": "gucci"
- },
- {
- "description": "Designer/brand name filter, from grailed-designers' own designers[].name field",
- "in": "query",
- "name": "designer",
- "type": "string",
- "x-example": "Gucci"
+ "x-example": "Austin"
},
{
- "description": "Department filter",
- "enum": [
- "menswear",
- "womenswear"
- ],
+ "description": "Max suggestions to return, defaults to 10, maxes at 25",
"in": "query",
- "name": "department",
- "type": "string",
- "x-example": "menswear"
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/indeed.locationSuggestResponseDoc"
+ }
},
- {
- "description": "Category facet filter, from grailed-categories' own categories[].value field",
- "in": "query",
- "name": "category",
- "type": "string",
- "x-example": "footwear"
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
- {
- "description": "Size facet filter, from grailed-categories' own sizes[].value field",
- "in": "query",
- "name": "size",
- "type": "string",
- "x-example": "9"
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
},
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
{
- "description": "Color facet filter, from grailed-categories' own colors[].value field",
- "in": "query",
- "name": "color",
- "type": "string",
- "x-example": "white"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Indeed location suggestions",
+ "tags": [
+ "Indeed"
+ ]
+ }
+ },
+ "/indeed/search": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Indeed job postings by keyword and location. Primary transport is Indeed's own credential-free GraphQL API; a page 1, unfiltered-by-date request uses it directly. Requesting page 2+ or the `fromage` filter (not yet expressible over the primary transport) uses the original web-page transport instead, with the same normalized response shape either way. `sort` enum: `relevance` (default), `date`.",
+ "operationId": "indeed-search",
+ "parameters": [
{
- "description": "Condition filter",
- "enum": [
- "is_new",
- "is_gently_used",
- "is_used",
- "is_worn",
- "is_not_specified"
- ],
+ "description": "Search keywords",
"in": "query",
- "name": "condition",
+ "name": "q",
+ "required": true,
"type": "string",
- "x-example": "is_used"
+ "x-example": "software engineer"
},
{
- "description": "Minimum SOLD price (inclusive), in USD",
+ "description": "Location (city, state, or zip)",
"in": "query",
- "name": "min_price",
- "type": "number",
- "x-example": 100
+ "name": "l",
+ "type": "string",
+ "x-example": "New York, NY"
},
{
- "description": "Maximum SOLD price (inclusive), in USD",
+ "description": "Page number, 1-based, defaults to 1",
"in": "query",
- "name": "max_price",
- "type": "number",
- "x-example": 500
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
{
- "description": "Sort order, defaults to recent",
+ "description": "Sort order: relevance, date",
"enum": [
- "recent",
- "price_asc",
- "price_desc"
+ "relevance",
+ "date"
],
"in": "query",
"name": "sort",
- "type": "string",
- "x-example": "recent"
+ "type": "string"
},
{
- "description": "One-based page number, defaults to 1",
+ "description": "Search radius in miles",
"in": "query",
- "name": "page",
+ "name": "radius",
"type": "integer",
- "x-example": 1
+ "x-example": 25
},
{
- "description": "Results per page, defaults to 24, maximum 100",
+ "description": "Only jobs posted within this many days",
"in": "query",
- "name": "limit",
+ "name": "fromage",
"type": "integer",
- "x-example": 24
+ "x-example": 7
}
],
"produces": [
@@ -286064,7 +315893,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.soldListingsResponseDoc"
+ "$ref": "#/definitions/indeed.searchResponseDoc"
}
},
"400": {
@@ -286091,27 +315920,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Grailed sold listings (sale price history)",
+ "summary": "Indeed job search",
"tags": [
- "Grailed"
+ "Indeed"
]
}
},
- "/grailed/suggest": {
+ "/independent/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Grailed's own search-box typeahead suggestions for a partial query -- a flat list of suggested search phrases with a popularity score and live active-listing match count, no listing data. Pass a suggestion straight through to grailed-search/grailed-sold-listings' own q parameter. A query with no genuine matches returns a well-formed empty result rather than an error.",
- "operationId": "grailed-suggest",
+ "description": "Returns public The Independent article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "independent-article",
"parameters": [
{
- "description": "Partial search query",
+ "description": "Canonical The Independent article URL",
"in": "query",
- "name": "q",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "guc"
+ "x-example": "https://www.independent.co.uk/news/world/example-b1234567.html"
}
],
"produces": [
@@ -286121,7 +315947,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grailed.suggestResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -286130,8 +315956,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -286148,43 +315974,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Grailed search-box typeahead suggestions",
+ "summary": "Get The Independent article content",
"tags": [
- "Grailed"
+ "The Independent"
]
}
},
- "/grubhub/availability": {
+ "/independent/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns current ordering state for up to 20 restaurants in one call, relative to a diner location. Each entry reports whether the restaurant is open overall and per channel (these can differ), whether delivery and pickup are offered at all as distinct from open right now, whether it delivers to the supplied coordinate, blackout and overloaded flags, distance, delivery and pickup time estimates, delivery fee, order minimum, cuisines, and the next time an order can be sent per channel -- useful when a restaurant is currently closed. The response echoes the requested ids so a caller can tell which ones Grubhub returned nothing for.",
- "operationId": "grubhub-availability",
+ "description": "Returns one Independent author's public profile: name, job title, bio, X/Twitter handle, and their recent articles.",
+ "operationId": "independent-author",
"parameters": [
{
- "description": "Comma-separated Grubhub restaurant ids, up to 20",
+ "description": "Author slug, e.g. lizzie-dearden",
"in": "query",
- "name": "restaurant_ids",
- "required": true,
+ "name": "slug",
"type": "string",
- "x-example": "6238960,14344720"
- },
- {
- "description": "Diner location latitude -- availability is relative to it",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 40.7128
+ "x-example": "lizzie-dearden"
},
{
- "description": "Diner location longitude",
+ "description": "Canonical independent.co.uk/author/ URL; alternative to slug",
"in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -74.006
+ "name": "url",
+ "type": "string",
+ "x-example": "https://www.independent.co.uk/author/lizzie-dearden"
}
],
"produces": [
@@ -286194,7 +316007,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grubhub.availabilityResponseDoc"
+ "$ref": "#/definitions/publicnews.independentAuthorResponseDoc"
}
},
"400": {
@@ -286209,12 +316022,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -286227,43 +316034,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Check ordering availability for a batch of Grubhub restaurants",
+ "summary": "Get an Independent author profile",
"tags": [
- "Grubhub"
+ "The Independent"
]
}
},
- "/grubhub/offers": {
+ "/independent/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the promotional offers a Grubhub restaurant is currently running -- free items, BOGO deals, spend-and-save discounts -- the same data that drives the \"2 offers available\" badge on the site's own restaurant cards. An empty list is the common, legitimate case: most restaurants have no active promotion at any given moment. `amount.value` is 0 for a free-item offer since the item itself is the value, not a monetary discount; `amount.amount_maximum` then caps the item's dollar value, and `amount.order_minimum` is the spend threshold required to unlock it.",
- "operationId": "grubhub-offers",
+ "description": "Returns fresh headlines from one public The Independent RSS section.",
+ "operationId": "independent-headlines",
"parameters": [
{
- "description": "Grubhub restaurant id",
+ "description": "The Independent RSS section slug",
+ "enum": [
+ "news",
+ "news/uk",
+ "news/world",
+ "news/business",
+ "news/people",
+ "news/science",
+ "news/media",
+ "news/education",
+ "news/obituaries",
+ "environment",
+ "sport",
+ "arts-entertainment",
+ "life-style",
+ "travel",
+ "voices",
+ "money",
+ "bulletin"
+ ],
"in": "query",
- "name": "restaurant_id",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "1338141"
- },
- {
- "description": "Diner location latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 40.7128
- },
- {
- "description": "Diner location longitude",
- "in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -74.006
+ "x-example": "news"
}
],
"produces": [
@@ -286273,7 +316080,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grubhub.offersResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -286282,11 +316089,37 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get The Independent section headlines",
+ "tags": [
+ "The Independent"
+ ]
+ }
+ },
+ "/independent/news": {
+ "get": {
+ "description": "Returns fresh The Independent top stories from its public RSS feed.",
+ "operationId": "independent-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
"429": {
"description": "Too Many Requests",
@@ -286306,27 +316139,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Grubhub restaurant's currently active promotions",
+ "summary": "Get The Independent top stories",
"tags": [
- "Grubhub"
+ "The Independent"
]
}
},
- "/grubhub/restaurant": {
+ "/independent/sections": {
"get": {
- "consumes": [
+ "description": "Returns the live-verified public RSS section inventory for The Independent.",
+ "operationId": "independent-sections",
+ "produces": [
"application/json"
],
- "description": "Returns one Grubhub restaurant: name, address with coordinates, timezone, phone, cuisines, star rating, price tier, whether online ordering is available, whether it offers delivery and pickup, delivery fee, coupon availability, restaurant tags and the full published week of service hours. Note this endpoint publishes fewer economics than GET /grubhub/search -- delivery minimum and the delivery/pickup time estimates come back empty here, so use the search endpoint when you need those.",
- "operationId": "grubhub-restaurant",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get The Independent RSS sections",
+ "tags": [
+ "The Independent"
+ ]
+ }
+ },
+ "/indianexpress/article": {
+ "get": {
+ "description": "Returns public The Indian Express article metadata and body paragraphs from a canonical article URL. A story gated behind an Express Premium subscription returns a permission error instead of a truncated or paid body.",
+ "operationId": "indianexpress-article",
"parameters": [
{
- "description": "Grubhub's numeric restaurant id, from /grubhub/search",
+ "description": "Canonical The Indian Express article URL",
"in": "query",
- "name": "restaurant_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "6238960"
+ "x-example": "https://indianexpress.com/article/cities/delhi/example-article-slug-10892304/"
}
],
"produces": [
@@ -286336,7 +316192,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grubhub.restaurantResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -286345,14 +316201,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "403": {
+ "description": "Forbidden",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -286369,34 +316225,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Grubhub restaurant's detail",
+ "summary": "Get The Indian Express article content",
"tags": [
- "Grubhub"
+ "The Indian Express"
]
}
},
- "/grubhub/restaurant/menu": {
+ "/indianexpress/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one restaurant's full menu grouped into categories. Every item carries a base price, a delivery price and a pickup price, which genuinely differ, plus a min and max price bounding items whose price varies with the options chosen. Items also carry a description, a popularity flag, availability, tags and an image. Amounts are given both in minor units (cents) and as a decimal value.",
- "operationId": "grubhub-restaurant-menu",
+ "description": "Returns a The Indian Express author's byline metadata, biography, and recent articles from a canonical author URL.",
+ "operationId": "indianexpress-author",
"parameters": [
{
- "description": "Grubhub's numeric restaurant id, from /grubhub/search",
+ "description": "Canonical The Indian Express author URL",
"in": "query",
- "name": "restaurant_id",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "6238960"
- },
- {
- "description": "Include items the restaurant currently has unavailable (default false)",
- "in": "query",
- "name": "include_unavailable",
- "type": "boolean",
- "x-example": true
+ "x-example": "https://indianexpress.com/profile/author/jane-doe/"
}
],
"produces": [
@@ -286406,7 +316252,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grubhub.menuResponseDoc"
+ "$ref": "#/definitions/publicnews.indianExpressAuthorResponseDoc"
}
},
"400": {
@@ -286421,12 +316267,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -286439,52 +316279,82 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Grubhub restaurant's menu with prices",
+ "summary": "Get a The Indian Express author profile",
"tags": [
- "Grubhub"
+ "The Indian Express"
]
}
},
- "/grubhub/restaurant/reviews": {
+ "/indianexpress/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one restaurant's customer reviews plus its 1-5 star rating histogram. Each review carries the star rating, the written body, the reviewer's display name and how many reviews they have written, the review date, Grubhub's own sentiment classification, the diner type, and the specific menu items the review is attached to -- Grubhub ties each review to what the diner actually ordered. sort accepts `timeCreated_desc` (most recent, the default) and `ratingValue_desc` (highest rated). Note the written-review corpus and the headline rating shown in search are separate systems upstream, so a restaurant can report a large rating count in search while returning few or no written reviews here.",
- "operationId": "grubhub-restaurant-reviews",
+ "description": "Returns fresh headlines from one public The Indian Express RSS section.",
+ "operationId": "indianexpress-headlines",
"parameters": [
{
- "description": "Grubhub's numeric restaurant id, from /grubhub/search",
- "in": "query",
- "name": "restaurant_id",
- "required": true,
- "type": "string",
- "x-example": "6238960"
- },
- {
- "description": "Reviews per page, 1-50 (default 20)",
- "in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 20
- },
- {
- "description": "1-based page number (default 1)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "One of timeCreated_desc, ratingValue_desc. Default timeCreated_desc.",
+ "description": "The Indian Express RSS section slug",
"enum": [
- "timeCreated_desc",
- "ratingValue_desc"
+ "politics",
+ "india",
+ "world",
+ "explained",
+ "express-exclusive",
+ "opinion",
+ "opinion-columns",
+ "business",
+ "cities",
+ "cities-delhi",
+ "cities-mumbai",
+ "cities-kolkata",
+ "cities-pune",
+ "cities-chandigarh",
+ "cities-ahmedabad",
+ "cities-lucknow",
+ "cities-chennai",
+ "cities-hyderabad",
+ "cities-bangalore",
+ "upsc-current-affairs",
+ "entertainment",
+ "entertainment-bollywood",
+ "entertainment-hollywood",
+ "entertainment-malayalam",
+ "entertainment-movie-review",
+ "entertainment-regional",
+ "entertainment-tamil",
+ "entertainment-television",
+ "entertainment-telugu",
+ "entertainment-web-series",
+ "lifestyle",
+ "lifestyle-art-and-culture",
+ "lifestyle-destination-of-the-week",
+ "lifestyle-fashion",
+ "lifestyle-feelings",
+ "lifestyle-fitness",
+ "lifestyle-food-wine",
+ "lifestyle-health",
+ "lifestyle-pets-animals",
+ "lifestyle-workplace",
+ "technology",
+ "technology-tech-news",
+ "technology-tech-reviews",
+ "sports",
+ "sports-cricket",
+ "sports-football",
+ "sports-chess",
+ "sports-asian-games",
+ "health-wellness",
+ "education",
+ "research",
+ "books-and-literature",
+ "long-reads",
+ "fresh-take",
+ "political-pulse",
+ "smart-stocks"
],
"in": "query",
- "name": "sort",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "timeCreated_desc"
+ "x-example": "politics"
}
],
"produces": [
@@ -286494,7 +316364,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grubhub.reviewsResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -286503,11 +316373,37 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get The Indian Express section headlines",
+ "tags": [
+ "The Indian Express"
+ ]
+ }
+ },
+ "/indianexpress/news": {
+ "get": {
+ "description": "Returns fresh The Indian Express top stories from its public RSS feed.",
+ "operationId": "indianexpress-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
"429": {
"description": "Too Many Requests",
@@ -286527,67 +316423,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Grubhub restaurant's reviews and rating histogram",
+ "summary": "Get The Indian Express top stories",
"tags": [
- "Grubhub"
+ "The Indian Express"
]
}
},
- "/grubhub/search": {
+ "/indianexpress/sections": {
"get": {
- "consumes": [
+ "description": "Returns the public The Indian Express RSS section inventory used by the headlines endpoint.",
+ "operationId": "indianexpress-sections",
+ "produces": [
"application/json"
],
- "description": "Returns restaurants delivering to (or offering pickup at) a latitude/longitude, optionally filtered by keyword over restaurant names, cuisines and dishes. Each restaurant carries its id (the value every other Grubhub endpoint takes), name, full address with coordinates, phone, cuisines, star rating and rating count, Grubhub's 1-4 price tier, distance, open state, delivery and pickup fees and minimums, service fee, delivery and pickup time estimates, coupon availability and total menu item count. A location Grubhub does not serve returns an empty list rather than an error.",
- "operationId": "grubhub-search",
- "parameters": [
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
{
- "description": "Search center latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 40.7128
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get The Indian Express RSS sections",
+ "tags": [
+ "The Indian Express"
+ ]
+ }
+ },
+ "/indiatoday/article": {
+ "get": {
+ "description": "Returns public India Today article metadata and body paragraphs from a canonical story URL. Subscriber-only magazine stories return only the public teaser with paywalled set to true.",
+ "operationId": "indiatoday-article",
+ "parameters": [
{
- "description": "Search center longitude",
+ "description": "Canonical India Today story URL",
"in": "query",
- "name": "longitude",
+ "name": "url",
"required": true,
- "type": "number",
- "x-example": -74.006
- },
- {
- "description": "Keyword over restaurant names, cuisines and dishes",
- "in": "query",
- "name": "search",
- "type": "string",
- "x-example": "pizza"
- },
- {
- "description": "One of delivery, pickup. Default delivery.",
- "enum": [
- "delivery",
- "pickup"
- ],
- "in": "query",
- "name": "order_method",
"type": "string",
- "x-example": "delivery"
- },
- {
- "description": "Restaurants per page, 1-50 (default 20)",
- "in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 20
- },
- {
- "description": "1-based page number (default 1)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "https://www.indiatoday.in/world/story/example-story-slug-3002364-2026-09-24"
}
],
"produces": [
@@ -286597,7 +316476,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grubhub.searchResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -286612,12 +316491,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -286630,62 +316503,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Grubhub restaurants near a location",
+ "summary": "Get India Today article content",
"tags": [
- "Grubhub"
+ "India Today"
]
}
},
- "/grubhub/timepicker": {
+ "/indiatoday/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns every future delivery or pickup time slot Grubhub will accept an order for, up to 7 days ahead. This is what powers the site's own \"schedule my order\" picker: `/grubhub/availability` tells you whether a restaurant is orderable right now plus one \"next\" time, while this returns the full future slot calendar a caller would need to build an actual date-and-time picker. Slots are grouped by date and given as full timestamps carrying the restaurant's real UTC offset for that instant, so a caller never has to resolve daylight-saving transitions themselves. Requesting `location_mode=DELIVERY` returns delivery slots only; `PICKUP` returns pickup slots only -- the upstream only computes one side per call.",
- "operationId": "grubhub-timepicker",
+ "description": "Returns an India Today author's name, job title, headshot, biography, and recent stories from a canonical author URL.",
+ "operationId": "indiatoday-author",
"parameters": [
{
- "description": "Grubhub restaurant id",
- "in": "query",
- "name": "restaurant_id",
- "required": true,
- "type": "string",
- "x-example": "698307"
- },
- {
- "description": "Diner location latitude",
- "in": "query",
- "name": "latitude",
- "required": true,
- "type": "number",
- "x-example": 40.7128
- },
- {
- "description": "Diner location longitude",
- "in": "query",
- "name": "longitude",
- "required": true,
- "type": "number",
- "x-example": -74.006
- },
- {
- "description": "Which slot grid to return",
- "enum": [
- "DELIVERY",
- "PICKUP"
- ],
+ "description": "Canonical India Today author URL",
"in": "query",
- "name": "location_mode",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "DELIVERY"
- },
- {
- "description": "How many days ahead to fetch, 1-7 (default 7)",
- "in": "query",
- "name": "days",
- "type": "integer",
- "x-example": 7
+ "x-example": "https://www.indiatoday.in/author/jane-doe"
}
],
"produces": [
@@ -286695,7 +316530,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/grubhub.timepickerResponseDoc"
+ "$ref": "#/definitions/publicnews.indiaTodayAuthorResponseDoc"
}
},
"400": {
@@ -286710,12 +316545,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -286728,24 +316557,61 @@
"ApiKeyAuth": []
}
],
- "summary": "Get one Grubhub restaurant's future orderable time-slot calendar",
+ "summary": "Get an India Today author profile",
"tags": [
- "Grubhub"
+ "India Today"
]
}
},
- "/guardian/article": {
+ "/indiatoday/headlines": {
"get": {
- "description": "Returns a Guardian article's public metadata and body paragraphs from a canonical article URL. Live-blog timelines are not supported.",
- "operationId": "guardian-article",
+ "description": "Returns current headlines from one India Today section hub page.",
+ "operationId": "indiatoday-headlines",
"parameters": [
{
- "description": "Canonical www.theguardian.com article URL",
+ "description": "India Today section slug",
+ "enum": [
+ "top-news",
+ "india",
+ "south-india",
+ "law",
+ "business",
+ "markets",
+ "world",
+ "us-news",
+ "sports",
+ "cricket",
+ "football",
+ "technology",
+ "science",
+ "health",
+ "environment",
+ "lifestyle",
+ "movies",
+ "bollywood",
+ "hollywood",
+ "movie-reviews",
+ "ott",
+ "television",
+ "education",
+ "elections",
+ "fact-check",
+ "opinion",
+ "trending",
+ "sunday-special",
+ "cities",
+ "auto",
+ "jobs",
+ "horoscopes",
+ "insight",
+ "data-intelligence",
+ "history-of-it"
+ ],
"in": "query",
- "name": "url",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "https://www.theguardian.com/world/2026/aug/26/us-military-kills-four-boat-strike-caribbean"
+ "x-example": "top-news"
}
],
"produces": [
@@ -286755,7 +316621,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/guardian.articleResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -286764,11 +316630,37 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get India Today section headlines",
+ "tags": [
+ "India Today"
+ ]
+ }
+ },
+ "/indiatoday/news": {
+ "get": {
+ "description": "Returns fresh India Today top stories from its public RSS feed (text stories only; video and photo items are omitted).",
+ "operationId": "indiatoday-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
"429": {
"description": "Too Many Requests",
@@ -286788,39 +316680,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Guardian article content",
+ "summary": "Get India Today top stories",
"tags": [
- "Guardian"
+ "India Today"
]
}
},
- "/guardian/author": {
+ "/indiatoday/sections": {
"get": {
- "description": "Returns one Guardian contributor's public profile: name, bio, Twitter handle, byline image, and one page of their recent articles. Provide either the contributor's profile slug or the full profile page URL.",
- "operationId": "guardian-author",
- "parameters": [
+ "description": "Returns the live-verified India Today section inventory used by the headlines endpoint.",
+ "operationId": "indiatoday-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
{
- "description": "Guardian contributor profile slug, e.g. hannah-devlin",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "hannah-devlin"
- },
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get India Today sections",
+ "tags": [
+ "India Today"
+ ]
+ }
+ },
+ "/indiewire/article": {
+ "get": {
+ "description": "Returns public IndieWire article metadata (title, author(s), published/updated dates, section, lead image) and the body paragraphs an anonymous visitor sees, from a canonical article URL. Paywalled content is never bypassed; a gated story would return only its public portion.",
+ "operationId": "indiewire-article",
+ "parameters": [
{
- "description": "Canonical https://www.theguardian.com/profile/ page URL, as an alternative to slug",
+ "description": "Canonical IndieWire article URL",
"in": "query",
"name": "url",
+ "required": true,
"type": "string",
- "x-example": "https://www.theguardian.com/profile/hannah-devlin"
- },
- {
- "default": 1,
- "description": "1-based article-history page, 1 to 100, defaults to 1",
- "in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "x-example": "https://www.indiewire.com/features/interviews/handle-with-care-dvd-traveling-indie-film-physical-media-1235216158/"
}
],
"produces": [
@@ -286830,7 +316733,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/guardian.authorResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -286845,12 +316748,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -286863,36 +316760,31 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Guardian contributor profile",
+ "summary": "Get IndieWire article content",
"tags": [
- "Guardian"
+ "IndieWire"
]
}
},
- "/guardian/headlines": {
+ "/indiewire/author": {
"get": {
- "description": "Returns fresh headlines from a public Guardian RSS section. section defaults to world.",
- "operationId": "guardian-headlines",
+ "description": "Returns one IndieWire staff writer or contributor's public profile: name, headshot, biography, any listed social/contact links, and one page of their recent articles.",
+ "operationId": "indiewire-author",
"parameters": [
{
- "description": "Guardian RSS section, defaults to world",
- "enum": [
- "world",
- "uk-news",
- "us-news",
- "politics",
- "business",
- "technology",
- "environment",
- "science",
- "sport",
- "culture",
- "lifeandstyle",
- "commentisfree"
- ],
+ "description": "Canonical indiewire.com/author/ URL",
"in": "query",
- "name": "section",
- "type": "string"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.indiewire.com/author/alison-foreman/"
+ },
+ {
+ "description": "1-based page of recent articles to return; defaults to 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
}
],
"produces": [
@@ -286902,7 +316794,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/guardian.headlinesResponseDoc"
+ "$ref": "#/definitions/publicnews.indiewireAuthorResponseDoc"
}
},
"400": {
@@ -286917,12 +316809,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -286935,24 +316821,58 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Guardian section headlines",
+ "summary": "Get an IndieWire author profile",
"tags": [
- "Guardian"
+ "IndieWire"
]
}
},
- "/guardian/live": {
+ "/indiewire/headlines": {
"get": {
- "description": "Returns a bounded text snapshot of one public Guardian live blog: the headline, the key-events timeline, and the update blocks with timestamps, headings, bylines, and body paragraphs. This is a single page fetch of the public page at a canonical live-blog URL — not a live stream or polling feed. URLs must use the dated www.theguardian.com section /live/ path, e.g. https://www.theguardian.com/sport/live/2026/aug/08//.",
- "operationId": "guardian-live",
+ "description": "Returns fresh headlines from one public IndieWire section feed. Gallery and list pages are omitted because they are not text articles.",
+ "operationId": "indiewire-headlines",
"parameters": [
{
- "description": "Canonical www.theguardian.com live-blog URL",
+ "description": "IndieWire section slug",
+ "enum": [
+ "analysis",
+ "animation",
+ "awards",
+ "awards-premium",
+ "best-of",
+ "box-office",
+ "brand-content",
+ "breaking-news",
+ "business",
+ "commentary",
+ "consider-this",
+ "craft",
+ "criticism",
+ "culture",
+ "events",
+ "features",
+ "festivals",
+ "film",
+ "general",
+ "general-news",
+ "industry",
+ "interviews",
+ "movies",
+ "news",
+ "obituary",
+ "podcast",
+ "predictions",
+ "results",
+ "shop",
+ "shows",
+ "special-projects",
+ "trailers"
+ ],
"in": "query",
- "name": "url",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "https://www.theguardian.com/sport/live/2026/aug/08/japan-vs-australia-live-updates-wallabies-nations-championship-rugby-union"
+ "x-example": "analysis"
}
],
"produces": [
@@ -286962,7 +316882,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/guardian.liveResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -286971,11 +316891,37 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get IndieWire section headlines",
+ "tags": [
+ "IndieWire"
+ ]
+ }
+ },
+ "/indiewire/news": {
+ "get": {
+ "description": "Returns fresh IndieWire independent film, TV and awards top stories from its public RSS feed.",
+ "operationId": "indiewire-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
+ }
},
"429": {
"description": "Too Many Requests",
@@ -286995,33 +316941,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Guardian live blog snapshot",
+ "summary": "Get IndieWire top stories",
"tags": [
- "Guardian"
+ "IndieWire"
]
}
},
- "/guardian/topic": {
+ "/indiewire/sections": {
"get": {
- "description": "Returns the stories on a public Guardian tag archive (20 per page, newest first, with total pages and results) or section front (a single curated page, is_front true). topic is a Guardian tag or section slug and page defaults to 1. resolved_topic reports the path actually served, which differs for edition-scoped fronts.",
- "operationId": "guardian-topic",
+ "description": "Returns the complete public section inventory accepted by /api/v1/indiewire/headlines (IndieWire's 32 editorial categories).",
+ "operationId": "indiewire-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get IndieWire sections",
+ "tags": [
+ "IndieWire"
+ ]
+ }
+ },
+ "/inews/article": {
+ "get": {
+ "description": "Returns public i article metadata (headline, description, section, authors, publish/update times, lead image) and body paragraphs from a canonical article URL.",
+ "operationId": "inews-article",
"parameters": [
{
- "description": "Guardian tag or section slug",
+ "description": "Canonical i article URL",
"in": "query",
- "name": "topic",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "world"
- },
- {
- "default": 1,
- "description": "1-based archive page, 1 to 100, defaults to 1",
- "in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "x-example": "https://inews.co.uk/news/world/withering-remark-humiliated-trump-court-failure-4786703"
}
],
"produces": [
@@ -287031,7 +316994,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/guardian.topicResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -287040,14 +317003,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "403": {
+ "description": "Forbidden",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -287064,26 +317027,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Guardian topic archive",
+ "summary": "Get i article content",
"tags": [
- "Guardian"
+ "i"
]
}
},
- "/gucci/categories": {
+ "/inews/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Gucci's full department/category/subcategory taxonomy, sourced directly from the site's own header navigation menu. Each entry's category value is exactly what gucci-category's own category parameter accepts. Filter to one department with department (e.g. women, men); omit for every department -- see the response's own departments field for the live list of top-level department labels to filter by.",
- "operationId": "gucci-categories",
+ "description": "Returns an i author's name, biography, social links, and most recent articles from a canonical author URL.",
+ "operationId": "inews-author",
"parameters": [
{
- "description": "Department label to filter to (case-insensitive substring match against the response's own departments field), e.g. women, men. Omit for every department.",
+ "description": "Canonical i author URL",
"in": "query",
- "name": "department",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "women"
+ "x-example": "https://inews.co.uk/author/simon-kelner"
}
],
"produces": [
@@ -287093,7 +317054,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.inewsAuthorResponseDoc"
}
},
"400": {
@@ -287102,8 +317063,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -287120,34 +317081,71 @@
"ApiKeyAuth": []
}
],
- "summary": "List Gucci's category and subcategory taxonomy",
+ "summary": "Get an i author profile",
"tags": [
- "Gucci"
+ "i"
]
}
},
- "/gucci/category": {
+ "/inews/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Gucci category/browse listing: normalized products (name, price, colors, images, stock) plus the upstream's own product count, page count, sibling-category counts, and sort options. category comes from gucci-categories' own category field. page selects how many of the upstream's own batches to accumulate -- Gucci's own category pages page this way: requesting page=N returns every product from page 1 through page N combined (its own \"Load All\" button simply requests the last page), not a single page's worth. Defaults to 1 (the upstream's own first batch, 36 products); request page equal to the response's own pages_count to fetch a category's complete listing in one call.",
- "operationId": "gucci-category",
+ "description": "Returns fresh headlines from one public i section feed. The section must be a slug returned by the sections endpoint.",
+ "operationId": "inews-headlines",
"parameters": [
{
- "description": "Category path from gucci-categories' own category field",
+ "description": "i section slug",
+ "enum": [
+ "home",
+ "news",
+ "world",
+ "technology",
+ "politics",
+ "science",
+ "business",
+ "education",
+ "environment",
+ "health",
+ "media",
+ "housing",
+ "crime",
+ "sport",
+ "tennis",
+ "football",
+ "rugby-union",
+ "golf",
+ "cricket",
+ "boxing",
+ "olympics",
+ "rugby-league",
+ "opinion",
+ "editor",
+ "columnists",
+ "comment",
+ "culture",
+ "television",
+ "music",
+ "film",
+ "books",
+ "arts",
+ "radio",
+ "comedy",
+ "inews-lifestyle",
+ "money",
+ "property-and-mortgages",
+ "saving-and-banking",
+ "pensions-and-retirement",
+ "investing",
+ "small-business",
+ "travel",
+ "food-and-drink",
+ "homes-and-gardens",
+ "relationships"
+ ],
"in": "query",
- "name": "category",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "women/handbags-c-women-handbags"
- },
- {
- "description": "How many of the upstream's own batches to accumulate, defaults to 1 (see description)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "home"
}
],
"produces": [
@@ -287157,7 +317155,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.categoryResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -287166,16 +317164,36 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
- },
- "429": {
- "description": "Too Many Requests",
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get i section headlines",
+ "tags": [
+ "i"
+ ]
+ }
+ },
+ "/inews/news": {
+ "get": {
+ "description": "Returns fresh i (inews.co.uk) top stories from the site's public RSS feed, with summary, author, publish time, and lead image when present.",
+ "operationId": "inews-news",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"503": {
@@ -287190,27 +317208,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a Gucci category listing",
+ "summary": "Get i top stories",
"tags": [
- "Gucci"
+ "i"
]
}
},
- "/gucci/product": {
+ "/inews/sections": {
"get": {
- "consumes": [
+ "description": "Returns every i section slug accepted by the headlines endpoint, with its display name and public RSS feed URL.",
+ "operationId": "inews-sections",
+ "produces": [
"application/json"
],
- "description": "Returns full normalized product detail for one style: name, marketing description, breadcrumb trail, brand line, gender, colors, materials, sizes, price, images, and stock -- combining Gucci's own structured product record with the product page's own marketing copy. style_code comes from gucci-search's or gucci-category's own style_code field.",
- "operationId": "gucci-product",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get i sections",
+ "tags": [
+ "i"
+ ]
+ }
+ },
+ "/inquirer/article": {
+ "get": {
+ "description": "Returns public Philippine Daily Inquirer article metadata and body paragraphs from a canonical article URL on any of its ten public news subdomains.",
+ "operationId": "inquirer-article",
"parameters": [
{
- "description": "Product style code, from gucci-search's or gucci-category's own style_code field",
+ "description": "Canonical Philippine Daily Inquirer article URL",
"in": "query",
- "name": "style_code",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "A005Y8AAG231096"
+ "x-example": "https://newsinfo.inquirer.net/2311358/18-mindanawons-top-2026-nursing-licensure-exam"
}
],
"produces": [
@@ -287220,7 +317261,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.productResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -287235,12 +317276,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -287253,33 +317288,30 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Gucci product",
+ "summary": "Get Philippine Daily Inquirer article content",
"tags": [
- "Gucci"
+ "Philippine Daily Inquirer"
]
}
},
- "/gucci/recommendations": {
+ "/inquirer/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Gucci recommendations shelf: normalized product summaries (name, price, image, stock) from either a given product's own \"You May Also Like\" carousel (style_code set) or the site's general trending-items shelf (style_code omitted). style_code comes from gucci-search's or gucci-category's own style_code field.",
- "operationId": "gucci-recommendations",
+ "description": "Returns one Philippine Daily Inquirer byline's public archive page: the contributor's name and their recent articles on that subdomain, from a canonical byline URL. Byline pages are per-subdomain, so an author's articles from a different section require calling this endpoint again with that section's own byline URL.",
+ "operationId": "inquirer-author",
"parameters": [
{
- "description": "Product style code to get related items for; omit for the site's general trending-items shelf instead",
+ "description": "Canonical Philippine Daily Inquirer byline URL",
"in": "query",
- "name": "style_code",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "A005Y8AAG231096"
+ "x-example": "https://newsinfo.inquirer.net/byline/ivana-janlee-a-otoc"
},
{
- "description": "Maximum products to return, defaults to 10, maximum 20",
+ "description": "1-based page number of articles to return; defaults to 1 and overrides any page number already present in url",
"in": "query",
- "name": "max",
- "type": "integer",
- "x-example": 10
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -287289,7 +317321,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.recommendationsResponseDoc"
+ "$ref": "#/definitions/publicnews.inquirerAuthorResponseDoc"
}
},
"400": {
@@ -287298,8 +317330,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -287316,48 +317348,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Gucci product recommendations",
+ "summary": "Get a Philippine Daily Inquirer author profile",
"tags": [
- "Gucci"
+ "Philippine Daily Inquirer"
]
}
},
- "/gucci/search": {
+ "/inquirer/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches Gucci's product catalog by keyword: normalized product summaries (name, price, colors, materials, sizes, gender, stock) with the search index's own live total result count. A genuinely empty result (e.g. a nonsense query) returns a well-formed empty products list, not an error. The response's own size_facets field lists every size value present in the result set (with live counts) -- pass one of those values as size on a follow-up call to filter to just that size.",
- "operationId": "gucci-search",
+ "description": "Returns fresh headlines from one Philippine Daily Inquirer section's public RSS feed.",
+ "operationId": "inquirer-headlines",
"parameters": [
{
- "description": "Search keyword",
+ "description": "Philippine Daily Inquirer section slug",
+ "enum": [
+ "newsinfo",
+ "globalnation",
+ "business",
+ "sports",
+ "entertainment",
+ "lifestyle",
+ "technology",
+ "opinion",
+ "usa",
+ "cebudailynews"
+ ],
"in": "query",
- "name": "q",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "belt"
- },
- {
- "description": "One-based page number, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Results per page, defaults to 24, maximum 100",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 24
- },
- {
- "description": "Filter to products listing this exact size as available (e.g. \\",
- "in": "query",
- "name": "size",
- "type": "string",
- "x-example": "9 = 9.5 US"
+ "x-example": "newsinfo"
}
],
"produces": [
@@ -287367,7 +317387,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.searchResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -287376,12 +317396,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -287394,29 +317408,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Gucci's product catalog",
+ "summary": "Get Philippine Daily Inquirer section headlines",
"tags": [
- "Gucci"
+ "Philippine Daily Inquirer"
]
}
},
- "/gucci/size-guide": {
+ "/inquirer/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Gucci's own size-conversion chart for one product style, as a plain header row plus data rows. Not every style carries one -- a one-size accessory (a bag, a scarf) returns available: false with no headers/rows, a well-formed signal rather than an error. style_code comes from gucci-search's or gucci-category's own style_code field.",
- "operationId": "gucci-size-guide",
- "parameters": [
- {
- "description": "Product style code",
- "in": "query",
- "name": "style_code",
- "required": true,
- "type": "string",
- "x-example": "757892AACAG9055"
- }
- ],
+ "description": "Returns fresh Philippine Daily Inquirer top stories from its public news RSS feed.",
+ "operationId": "inquirer-news",
"produces": [
"application/json"
],
@@ -287424,13 +317425,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.sizeGuideResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -287451,29 +317446,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Gucci product size chart",
+ "summary": "Get Philippine Daily Inquirer top stories",
"tags": [
- "Gucci"
+ "Philippine Daily Inquirer"
]
}
},
- "/gucci/store": {
+ "/inquirer/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Gucci store's full detail: name, phone, address, opening hours, and photos. slug comes from gucci-stores' own slug field.",
- "operationId": "gucci-store",
- "parameters": [
- {
- "description": "Store slug, from gucci-stores' own slug field",
- "in": "query",
- "name": "slug",
- "required": true,
- "type": "string",
- "x-example": "900-north-michigan-avenue"
- }
- ],
+ "description": "Returns the Philippine Daily Inquirer section inventory: the ten public news subdomains accepted by inquirer-headlines.",
+ "operationId": "inquirer-sections",
"produces": [
"application/json"
],
@@ -287481,31 +317463,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.storeResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -287514,26 +317472,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Gucci store's detail",
+ "summary": "Get Philippine Daily Inquirer sections",
"tags": [
- "Gucci"
+ "Philippine Daily Inquirer"
]
}
},
- "/gucci/stores": {
+ "/instacart/departments": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Gucci's full US store-locator listing: name, address, phone, coordinates, product departments carried, and a link to book an in-store appointment for each location. Filter to stores carrying one department with department (e.g. jewelry, mens_shoes); omit for every store -- see the response's own departments field for the live list of department tags to filter by.",
- "operationId": "gucci-stores",
+ "description": "Returns a store's department/category taxonomy (Produce, Dairy & Eggs, Bakery, ...) two levels deep -- department and subcategory. Metadata only, does not return products. Public data sourced from Instacart's own storefront navigation.",
+ "operationId": "instacart-departments",
"parameters": [
{
- "description": "Department tag to filter to (case-insensitive substring match against the response's own departments field), e.g. jewelry, mens_shoes. Omit for every store.",
+ "description": "Store's opaque shop id, from GET /instacart/stores",
"in": "query",
- "name": "department",
+ "name": "shop_id",
+ "required": true,
"type": "string",
- "x-example": "jewelry"
+ "x-example": "9501"
+ },
+ {
+ "description": "Store's retailer slug, from GET /instacart/stores",
+ "in": "query",
+ "name": "store_slug",
+ "required": true,
+ "type": "string",
+ "x-example": "safeway"
+ },
+ {
+ "description": "Postal code to localize the taxonomy for",
+ "in": "query",
+ "name": "postal_code",
+ "required": true,
+ "type": "string",
+ "x-example": "94105"
}
],
"produces": [
@@ -287543,7 +317518,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.storesResponseDoc"
+ "$ref": "#/definitions/instacart.departmentsResponseDoc"
}
},
"400": {
@@ -287552,8 +317527,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -287570,82 +317545,59 @@
"ApiKeyAuth": []
}
],
- "summary": "List Gucci store locations",
+ "summary": "Get Instacart store department taxonomy",
"tags": [
- "Gucci"
+ "Instacart"
]
}
},
- "/gucci/stores/search": {
+ "/instacart/item": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Gucci's public store-map GeoJSON feed for locations inside the requested viewport. market selects the storefront locale and localized labels; it does not filter results by country. The supported, live-verified market values are ca (English), fr (French), jp (Japanese), uk (English), and us (English). Coordinates and viewport bounds determine the returned stores. The Gucci site's text field geocodes in the browser and its name parameter does not filter this feed, so callers must provide bounds and a center (geocode a place before calling). Dateline-crossing bounds are not supported.",
- "operationId": "gucci-store-search",
+ "description": "Returns a single product's detail at a specific Instacart store: name, size, brand, image, current pricing (with any sale/offer badge), availability, stock level, dietary labels, and nutrition facts. Public data sourced from Instacart's own storefront pages.",
+ "operationId": "instacart-item",
"parameters": [
{
- "description": "Gucci storefront locale; controls localization only, not geographic filtering",
- "enum": [
- "ca",
- "fr",
- "jp",
- "uk",
- "us"
- ],
+ "description": "Store's opaque shop id, from GET /instacart/stores",
"in": "query",
- "name": "market",
+ "name": "shop_id",
"required": true,
"type": "string",
- "x-example": "us"
- },
- {
- "description": "Viewport northern latitude",
- "in": "query",
- "name": "north",
- "required": true,
- "type": "number",
- "x-example": 40.917705
- },
- {
- "description": "Viewport western longitude",
- "in": "query",
- "name": "west",
- "required": true,
- "type": "number",
- "x-example": -74.258843
+ "x-example": "9501"
},
{
- "description": "Viewport southern latitude",
+ "description": "Store's retailer slug, from GET /instacart/stores",
"in": "query",
- "name": "south",
+ "name": "store_slug",
"required": true,
- "type": "number",
- "x-example": 40.476578
+ "type": "string",
+ "x-example": "safeway"
},
{
- "description": "Viewport eastern longitude",
+ "description": "Store's opaque retailer location id, from GET /instacart/stores",
"in": "query",
- "name": "east",
+ "name": "retailer_location_id",
"required": true,
- "type": "number",
- "x-example": -73.700169
+ "type": "string",
+ "x-example": "53"
},
{
- "description": "Viewport center latitude",
+ "description": "Instacart's opaque product id",
"in": "query",
- "name": "latitude",
+ "name": "product_id",
"required": true,
- "type": "number",
- "x-example": 40.7127753
+ "type": "string",
+ "x-example": "17830663"
},
{
- "description": "Viewport center longitude",
+ "description": "Postal code to price/localize the lookup for",
"in": "query",
- "name": "longitude",
+ "name": "postal_code",
"required": true,
- "type": "number",
- "x-example": -74.0059728
+ "type": "string",
+ "x-example": "94105"
}
],
"produces": [
@@ -287655,7 +317607,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.storeSearchResponseDoc"
+ "$ref": "#/definitions/instacart.itemResponseDoc"
}
},
"400": {
@@ -287664,8 +317616,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -287682,34 +317640,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Gucci stores in a map viewport",
+ "summary": "Get Instacart product detail at a store",
"tags": [
- "Gucci"
+ "Instacart"
]
}
},
- "/gucci/suggest": {
+ "/instacart/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Gucci's own search-box typeahead suggestions for a partial query, each with its own live total result count on the search index. Not product data -- pass a suggestion's own query value straight into gucci-search for results.",
- "operationId": "gucci-suggest",
+ "description": "Returns Instacart's own search-term autosuggestions for a keyword within one store -- the same suggestion list shown in the site's own search box dropdown. This is term-level (matching search phrases plus a representative thumbnail), not a paginated product-results list. Public data sourced from Instacart's own storefront search.",
+ "operationId": "instacart-search",
"parameters": [
{
- "description": "Partial search query",
+ "description": "Store's opaque shop id, from GET /instacart/stores",
"in": "query",
- "name": "q",
+ "name": "shop_id",
"required": true,
"type": "string",
- "x-example": "bel"
+ "x-example": "9501"
},
{
- "description": "Maximum suggestions to return, defaults to 5, maximum 20",
+ "description": "Store's retailer slug, from GET /instacart/stores",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 5
+ "name": "store_slug",
+ "required": true,
+ "type": "string",
+ "x-example": "safeway"
+ },
+ {
+ "description": "Free-text search term",
+ "in": "query",
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "milk"
}
],
"produces": [
@@ -287719,7 +317686,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/gucci.suggestResponseDoc"
+ "$ref": "#/definitions/instacart.searchResponseDoc"
}
},
"400": {
@@ -287728,8 +317695,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "500": {
+ "description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -287746,24 +317713,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Gucci search-box suggestions",
+ "summary": "Search Instacart product terms at a store",
"tags": [
- "Gucci"
+ "Instacart"
]
}
},
- "/gulfnews/article": {
+ "/instacart/search-nearby": {
"get": {
- "description": "Returns public Gulf News article metadata and body paragraphs from a canonical article URL.",
- "operationId": "gulfnews-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Instacart's own search-term autosuggestions for a keyword across every retailer serving a postal code at once, rather than one specific store. Public data sourced from Instacart's own cross-retailer search.",
+ "operationId": "instacart-search-nearby",
"parameters": [
{
- "description": "Canonical Gulf News article URL",
+ "description": "US postal/ZIP code to search near",
"in": "query",
- "name": "url",
+ "name": "postal_code",
"required": true,
"type": "string",
- "x-example": "https://gulfnews.com/business/aviation/air-india-flydubai-tie-up-opens-52-more-destinations-via-dubai-1.500686930"
+ "x-example": "94105"
+ },
+ {
+ "description": "Free-text search term",
+ "in": "query",
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "milk"
}
],
"produces": [
@@ -287773,7 +317751,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/instacart.searchNearbyResponseDoc"
}
},
"400": {
@@ -287788,6 +317766,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -287800,30 +317784,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Gulf News article content",
+ "summary": "Search Instacart product terms near a postal code",
"tags": [
- "Gulf News"
+ "Instacart"
]
}
},
- "/gulfnews/author": {
+ "/instacart/stores": {
"get": {
- "description": "Returns one Gulf News author's public profile: name, job title, bio, and their recent articles.",
- "operationId": "gulfnews-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Finds Instacart retailer storefronts (grocery stores, warehouse clubs, and other partner retailers) serving a US postal code, each with the identifiers needed to look up its items and search suggestions. Public data sourced from Instacart's own store-discovery API.",
+ "operationId": "instacart-stores",
"parameters": [
{
- "description": "Author slug, e.g. nathaniel-lacsina",
- "in": "query",
- "name": "slug",
- "type": "string",
- "x-example": "nathaniel-lacsina"
- },
- {
- "description": "Canonical gulfnews.com/author/ URL; alternative to slug",
+ "description": "US postal/ZIP code to search near",
"in": "query",
- "name": "url",
+ "name": "postal_code",
+ "required": true,
"type": "string",
- "x-example": "https://gulfnews.com/author/nathaniel-lacsina"
+ "x-example": "94105"
}
],
"produces": [
@@ -287833,7 +317814,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.gulfNewsAuthorResponseDoc"
+ "$ref": "#/definitions/instacart.storesResponseDoc"
}
},
"400": {
@@ -287848,6 +317829,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -287860,44 +317847,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Gulf News author profile",
+ "summary": "Find Instacart stores near a postal code",
"tags": [
- "Gulf News"
+ "Instacart"
]
}
},
- "/gulfnews/headlines": {
+ "/instacart/trending": {
"get": {
- "description": "Returns fresh headlines from one public Gulf News section.",
- "operationId": "gulfnews-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns Instacart's own popular/trending search terms across every retailer serving a postal code -- the same blank-state suggestions shown before a user types anything into the search box. Public data sourced from Instacart's own cross-retailer search.",
+ "operationId": "instacart-trending",
"parameters": [
{
- "description": "Gulf News section slug",
- "enum": [
- "latest-news",
- "business",
- "best-buys",
- "uae",
- "entertainment",
- "world",
- "sport",
- "living-in-uae",
- "lifestyle",
- "opinion",
- "travel",
- "podcasts",
- "special-reports",
- "things-to-do",
- "friday",
- "the-kurator",
- "uae-success-stories",
- "photos",
- "your-money"
- ],
+ "description": "US postal/ZIP code to search near",
"in": "query",
- "name": "section",
+ "name": "postal_code",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "94105"
}
],
"produces": [
@@ -287907,7 +317877,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/instacart.trendingResponseDoc"
}
},
"400": {
@@ -287916,36 +317886,16 @@
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Gulf News section headlines",
- "tags": [
- "Gulf News"
- ]
- }
- },
- "/gulfnews/news": {
- "get": {
- "description": "Returns fresh Gulf News stories from the public site-wide RSS feed.",
- "operationId": "gulfnews-news",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "500": {
+ "description": "Internal Server Error",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -287960,59 +317910,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Gulf News top stories",
- "tags": [
- "Gulf News"
- ]
- }
- },
- "/gulfnews/sections": {
- "get": {
- "description": "Returns the public Gulf News editorial section inventory.",
- "operationId": "gulfnews-sections",
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get Gulf News sections",
+ "summary": "Get Instacart trending search terms near a postal code",
"tags": [
- "Gulf News"
+ "Instacart"
]
}
},
- "/gymshark/collections": {
+ "/instagram/post/{id}/{post_id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized collections from Gymshark (https://row.gymshark.com). The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty collections array.",
- "operationId": "gymshark-collections",
+ "description": "Returns media details for an Instagram URL shortcode. Use media.code from the reels response or shortcode from a public post URL; numeric media IDs are rejected.",
+ "operationId": "instagram-post",
"parameters": [
{
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "description": "Instagram user ID retained for route compatibility; ownership is not verified",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "1067259270"
},
{
- "description": "Maximum collections, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "description": "Instagram URL shortcode (media.code), not a numeric media ID",
+ "in": "path",
+ "name": "post_id",
+ "required": true,
+ "type": "string",
+ "x-example": "DNBxHTZRigP"
}
],
"produces": [
@@ -288020,25 +317946,31 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Wrapped media item payload",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionsResponseDoc"
+ "$ref": "#/definitions/instagram.postResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "No post found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -288049,41 +317981,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List Gymshark collections",
+ "summary": "Retrieve a specific Instagram post by URL shortcode",
"tags": [
- "Gymshark"
+ "Instagram"
]
}
},
- "/gymshark/collections/{handle}/products": {
+ "/instagram/profile/{username}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized products from one Gymshark (https://row.gymshark.com) collection. The storefront URL is fixed server-side; `handle` is the collection's URL slug.",
- "operationId": "gymshark-collection-products",
+ "description": "Returns public profile details for a specified Instagram username.",
+ "operationId": "instagram-profile",
"parameters": [
{
- "description": "Collection handle",
+ "description": "Instagram username",
"in": "path",
- "name": "handle",
+ "name": "username",
"required": true,
"type": "string",
- "x-example": "collection-handle"
- },
- {
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum products, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "x-example": "google"
}
],
"produces": [
@@ -288091,31 +318009,31 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Wrapped profile payload",
"schema": {
- "$ref": "#/definitions/shopifybrands.collectionProductsResponseDoc"
+ "$ref": "#/definitions/instagram.profileResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid parameters",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"404": {
- "description": "Not Found",
+ "description": "Profile not found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "503": {
- "description": "Service Unavailable",
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -288126,33 +318044,33 @@
"ApiKeyAuth": []
}
],
- "summary": "List Gymshark collection products",
+ "summary": "Retrieve an Instagram user profile by username",
"tags": [
- "Gymshark"
+ "Instagram"
]
}
},
- "/gymshark/pages": {
+ "/instagram/reels/{id}": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized static pages from Gymshark (https://row.gymshark.com). The storefront URL is fixed server-side.",
- "operationId": "gymshark-pages",
+ "description": "Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.",
+ "operationId": "instagram-reels",
"parameters": [
{
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "description": "Numeric Instagram user ID (not a username)",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "45374573700"
},
{
- "description": "Maximum static pages, defaults to 50 and supports up to 250",
+ "description": "Pagination cursor for fetching the next page of Reels",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "max_id",
+ "type": "string"
}
],
"produces": [
@@ -288160,25 +318078,37 @@
],
"responses": {
"200": {
- "description": "OK",
+ "description": "Wrapped Reels feed payload",
"schema": {
- "$ref": "#/definitions/shopifybrands.pagesResponseDoc"
+ "$ref": "#/definitions/instagram.reelsResponseDoc"
}
},
"400": {
- "description": "Bad Request",
+ "description": "Missing or invalid parameters",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "No Reels found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"429": {
- "description": "Too Many Requests",
+ "description": "Rate limit exceeded",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "500": {
+ "description": "Internal server error",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
"503": {
- "description": "Service Unavailable",
+ "description": "Anonymous upstream access denied or unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -288189,27 +318119,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List Gymshark static pages",
+ "summary": "Retrieve Instagram Reels for a user",
"tags": [
- "Gymshark"
+ "Instagram"
]
}
},
- "/gymshark/pages/{handle}": {
+ "/investopedia/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized static page detail for one Gymshark (https://row.gymshark.com) page handle. The storefront URL is fixed server-side.",
- "operationId": "gymshark-page",
+ "description": "Returns metadata (title, description, dates, section, authors, image) and body paragraphs for a public Investopedia page that uses the article template: news stories, dictionary terms (/terms/...), explainers and Q&A pages (/articles/..., /ask/answers/..., and similar), and product roundups. Section listing pages and author profiles are rejected with a 400 that names the endpoint to use instead.",
+ "operationId": "investopedia-article",
"parameters": [
{
- "description": "Page handle",
- "in": "path",
- "name": "handle",
+ "description": "Canonical Investopedia article, term, or explainer URL",
+ "in": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "page-handle"
+ "x-example": "https://www.investopedia.com/terms/c/compoundinterest.asp"
}
],
"produces": [
@@ -288219,7 +318146,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.pageResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -288234,12 +318161,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -288252,33 +318173,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Gymshark static page",
+ "summary": "Get Investopedia article content",
"tags": [
- "Gymshark"
+ "Investopedia"
]
}
},
- "/gymshark/products": {
+ "/investopedia/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized products from Gymshark's (https://row.gymshark.com) public product catalog. The storefront URL is fixed server-side. Valid empty result pages return `200` with an empty products array.",
- "operationId": "gymshark-products",
+ "description": "Returns an Investopedia writer, editor, reviewer, or expert contributor's public profile (name, job title, summary, photo, credentials such as education, location, and expertise, personal social links, biography, favorite quote) and their recent articles.",
+ "operationId": "investopedia-author",
"parameters": [
{
- "description": "1-based page, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Maximum products, defaults to 50 and supports up to 250",
+ "description": "Canonical Investopedia author URL (/- or /contributors//)",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.investopedia.com/diccon-hyatt-7100294"
}
],
"produces": [
@@ -288288,7 +318200,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productsResponseDoc"
+ "$ref": "#/definitions/publicnews.investopediaAuthorResponseDoc"
}
},
"400": {
@@ -288297,8 +318209,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -288315,27 +318227,69 @@
"ApiKeyAuth": []
}
],
- "summary": "List Gymshark products",
+ "summary": "Get an Investopedia author or expert profile",
"tags": [
- "Gymshark"
+ "Investopedia"
]
}
},
- "/gymshark/products/{handle}": {
+ "/investopedia/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized product detail for one Gymshark (https://row.gymshark.com) product handle. The storefront URL is fixed server-side; `handle` is the product's URL slug.",
- "operationId": "gymshark-product",
+ "description": "Returns the current story list from one Investopedia section, with title, URL, byline, and image. section accepts any slug returned by GET /investopedia/sections.",
+ "operationId": "investopedia-headlines",
"parameters": [
{
- "description": "Product handle",
- "in": "path",
- "name": "handle",
+ "description": "Investopedia section slug, from GET /investopedia/sections",
+ "enum": [
+ "news",
+ "markets-news",
+ "company-news",
+ "earnings-reports",
+ "certificates-deposit-news",
+ "mortgage-rates",
+ "economic-news",
+ "political-news",
+ "cryptocurrency-news",
+ "live-markets-news",
+ "personal-finance-news",
+ "investing",
+ "stocks",
+ "cryptocurrency",
+ "bonds",
+ "etfs",
+ "options-and-derivatives-trading",
+ "commodities",
+ "trading",
+ "financial-technology-and-automated-investing",
+ "brokers",
+ "fundamental-analysis",
+ "banking",
+ "savings-accounts",
+ "certificate-of-deposits",
+ "money-market-account",
+ "checking-accounts",
+ "personal-finance",
+ "retirement-planning",
+ "student-loans",
+ "personal-loans",
+ "budgeting-and-savings",
+ "mortgage",
+ "credit-and-debt",
+ "taxes",
+ "insurance",
+ "financial-literacy-resource-center",
+ "economy",
+ "government-and-policy",
+ "monetary-policy",
+ "fiscal-policy",
+ "economics",
+ "financial-product-reviews"
+ ],
+ "in": "query",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "product-handle"
+ "x-example": "news"
}
],
"produces": [
@@ -288345,7 +318299,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -288360,12 +318314,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -288378,47 +318326,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Gymshark product",
+ "summary": "Get Investopedia section headlines",
"tags": [
- "Gymshark"
+ "Investopedia"
]
}
},
- "/gymshark/products/{handle}/recommendations": {
+ "/investopedia/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns normalized recommended products for one Gymshark (https://row.gymshark.com) product handle. The route handle is resolved to a Shopify product id before fetching recommendations. The storefront URL is fixed server-side.",
- "operationId": "gymshark-product-recommendations",
- "parameters": [
- {
- "description": "Product handle",
- "in": "path",
- "name": "handle",
- "required": true,
- "type": "string",
- "x-example": "product-handle"
- },
- {
- "description": "Maximum products, defaults to 10 and supports up to 20",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
- },
- {
- "description": "Recommendation intent. Allowed values: related, complementary",
- "enum": [
- "related",
- "complementary"
- ],
- "in": "query",
- "name": "intent",
- "type": "string",
- "x-example": "related"
- }
- ],
+ "description": "Returns the newest Investopedia news stories (markets, companies, earnings, economy, government, crypto, rates, and personal finance news), with title, URL, byline, and image.",
+ "operationId": "investopedia-news",
"produces": [
"application/json"
],
@@ -288426,19 +318343,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.productRecommendationsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -288459,44 +318364,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List Gymshark product recommendations",
+ "summary": "Get Investopedia latest news",
"tags": [
- "Gymshark"
+ "Investopedia"
]
}
},
- "/gymshark/sitemap/urls": {
+ "/investopedia/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns capped URL entries from Gymshark's (https://row.gymshark.com) child sitemaps matching the requested type. The storefront URL is fixed server-side.",
- "operationId": "gymshark-sitemap-urls",
- "parameters": [
- {
- "description": "Sitemap type. Allowed values: all, products, collections, pages, blogs, agentic_discovery, other",
- "enum": [
- "all",
- "products",
- "collections",
- "pages",
- "blogs",
- "agentic_discovery",
- "other"
- ],
- "in": "query",
- "name": "type",
- "type": "string",
- "x-example": "products"
- },
- {
- "description": "Maximum URL entries, defaults to 50 and supports up to 250",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
- }
- ],
+ "description": "Returns the full Investopedia section inventory (43 news, investing, banking, personal finance, economy, and reviews sections), each with a slug, display name, and public listing URL. Use a returned slug as the section parameter on GET /investopedia/headlines.",
+ "operationId": "investopedia-sections",
"produces": [
"application/json"
],
@@ -288504,25 +318381,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapURLsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -288531,19 +318390,26 @@
"ApiKeyAuth": []
}
],
- "summary": "List Gymshark sitemap URLs",
+ "summary": "Get Investopedia sections",
"tags": [
- "Gymshark"
+ "Investopedia"
]
}
},
- "/gymshark/sitemaps": {
+ "/iol/article": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns public IOL article metadata and body paragraphs from a canonical article URL.",
+ "operationId": "iol-article",
+ "parameters": [
+ {
+ "description": "Canonical IOL article URL",
+ "in": "query",
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://iol.co.za/news/crime-and-courts/2026-09-24-homii-lift-tragedy-durban-father-demands-ethekwini-report-nearly-a-year-after-twins-fall/"
+ }
],
- "description": "Returns child sitemap URLs from Gymshark's (https://row.gymshark.com) `/sitemap.xml` index with inferred sitemap types. The storefront URL is fixed server-side.",
- "operationId": "gymshark-sitemaps",
"produces": [
"application/json"
],
@@ -288551,7 +318417,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.sitemapIndexResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -288560,8 +318426,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -288578,19 +318444,32 @@
"ApiKeyAuth": []
}
],
- "summary": "List Gymshark sitemaps",
+ "summary": "Get IOL article content",
"tags": [
- "Gymshark"
+ "IOL"
]
}
},
- "/gymshark/store": {
+ "/iol/author": {
"get": {
- "consumes": [
- "application/json"
+ "description": "Returns one IOL author's public profile: name, role, photo, and the recent articles listed on their page.",
+ "operationId": "iol-author",
+ "parameters": [
+ {
+ "description": "Author slug, e.g. xolile-mtembu",
+ "in": "query",
+ "name": "slug",
+ "type": "string",
+ "x-example": "xolile-mtembu"
+ },
+ {
+ "description": "Canonical iol.co.za/authors// URL; alternative to slug",
+ "in": "query",
+ "name": "url",
+ "type": "string",
+ "x-example": "https://iol.co.za/authors/xolile-mtembu/"
+ }
],
- "description": "Returns normalized storefront metadata for Gymshark (https://row.gymshark.com), sourced from credential-free storefront JSON. This endpoint is a brand-pinned wrapper around the generic Shopify store family: the storefront URL is fixed server-side, so no `url` parameter is accepted. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page, or to the storefront's own embedded page data for storefronts that expose neither.",
- "operationId": "gymshark-store",
"produces": [
"application/json"
],
@@ -288598,7 +318477,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/shopifybrands.storeResponseDoc"
+ "$ref": "#/definitions/publicnews.iolAuthorResponseDoc"
}
},
"400": {
@@ -288607,8 +318486,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -288625,24 +318504,149 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Gymshark store metadata",
+ "summary": "Get an IOL author profile",
"tags": [
- "Gymshark"
+ "IOL"
]
}
},
- "/hbr/article": {
+ "/iol/headlines": {
"get": {
- "description": "Returns a public Harvard Business Review article's metadata and full body text from a canonical article URL. from_magazine flags articles originally published in the print magazine.",
- "operationId": "hbr-article",
+ "description": "Returns fresh headlines from one public IOL section feed.",
+ "operationId": "iol-headlines",
"parameters": [
{
- "description": "Canonical hbr.org article URL",
+ "description": "IOL section path",
+ "enum": [
+ "news",
+ "news/africa",
+ "news/brics",
+ "news/crime-and-courts",
+ "news/education",
+ "news/energy",
+ "news/environment",
+ "news/feel-good",
+ "news/opinion",
+ "news/partnered",
+ "news/politics",
+ "news/politics/opinion",
+ "news/south-africa",
+ "news/south-africa/eastern-cape",
+ "news/south-africa/free-state",
+ "news/south-africa/gauteng",
+ "news/south-africa/kwazulu-natal",
+ "news/south-africa/limpopo",
+ "news/south-africa/mpumalanga",
+ "news/south-africa/north-west",
+ "news/south-africa/northern-cape",
+ "news/south-africa/western-cape",
+ "news/world",
+ "sport",
+ "sport/athletics",
+ "sport/betting",
+ "sport/boxing",
+ "sport/cricket",
+ "sport/cricket/domestic",
+ "sport/cricket/international",
+ "sport/cricket/proteas",
+ "sport/cricket/proteas-women",
+ "sport/golf",
+ "sport/horse-racing",
+ "sport/mma",
+ "sport/opinion",
+ "sport/rugby",
+ "sport/rugby/imbokodo",
+ "sport/rugby/international",
+ "sport/rugby/springboks",
+ "sport/rugby/super-rugby",
+ "sport/rugby/urc",
+ "sport/soccer",
+ "sport/soccer/bafana",
+ "sport/soccer/la-liga",
+ "sport/soccer/premier-league",
+ "sport/soccer/psl",
+ "sport/soccer/uefa-champions-league",
+ "sport/swimming",
+ "sport/tennis",
+ "business",
+ "business/economy",
+ "business/jobs",
+ "business/property",
+ "business/window-on-china",
+ "personal-finance",
+ "opinion",
+ "opinion/letters",
+ "entertainment",
+ "entertainment/books",
+ "entertainment/celebrity-news",
+ "entertainment/events",
+ "entertainment/movies",
+ "entertainment/music",
+ "entertainment/opinion",
+ "entertainment/royals",
+ "entertainment/streaming",
+ "entertainment/tv",
+ "entertainment/whats-on",
+ "entertainment/whats-on/cape-town",
+ "entertainment/whats-on/durban",
+ "entertainment/whats-on/joburg",
+ "entertainment/whats-on/pretoria",
+ "lifestyle",
+ "lifestyle/competitions",
+ "lifestyle/family",
+ "lifestyle/family/parenting",
+ "lifestyle/food-drink",
+ "lifestyle/food-drink/recipes",
+ "lifestyle/health",
+ "lifestyle/love-sex",
+ "lifestyle/love-sex/relationships",
+ "lifestyle/opinion",
+ "lifestyle/style-beauty",
+ "lifestyle/style-beauty/beauty",
+ "lifestyle/style-beauty/fashion",
+ "technology",
+ "technology/esports",
+ "technology/gadgets",
+ "technology/gaming",
+ "technology/mobile-apps",
+ "technology/opinion",
+ "technology/software-and-internet",
+ "motoring",
+ "motoring/f1-grand-prix",
+ "motoring/industry-news",
+ "motoring/latest-launches",
+ "motoring/motorsport",
+ "motoring/partnered",
+ "motoring/road-tests",
+ "travel",
+ "travel/africa",
+ "travel/partnered",
+ "travel/south-africa",
+ "travel/travel-tips",
+ "travel/world",
+ "matric",
+ "g20",
+ "government-at-work",
+ "capeargus",
+ "capeargus/news",
+ "capeargus/opinion",
+ "weekend-argus",
+ "weekend-argus/news",
+ "dailynews",
+ "dailynews/news",
+ "the-star",
+ "the-star/news",
+ "sunday-tribune",
+ "saturday-star",
+ "pretoria-news",
+ "pretoria-news/news",
+ "pretoria-news/opinion"
+ ],
"in": "query",
- "name": "url",
+ "name": "section",
"required": true,
"type": "string",
- "x-example": "https://hbr.org/2026/09/is-your-strategic-plan-too-ambitious-or-not-ambitious-enough"
+ "x-example": "news"
}
],
"produces": [
@@ -288652,7 +318656,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hbr.articleResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -288661,18 +318665,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -288685,16 +318677,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Harvard Business Review article content",
+ "summary": "Get IOL section headlines",
"tags": [
- "Harvard Business Review"
+ "IOL"
]
}
},
- "/hbr/categories": {
+ "/iol/news": {
"get": {
- "description": "Returns Harvard Business Review's full public topic taxonomy, grouped into Subject, Industry, and Geography. Use a topic's slug directly as the topic parameter on hbr-topic.",
- "operationId": "hbr-categories",
+ "description": "Returns fresh IOL (Independent Online, South Africa) stories from the public news feed.",
+ "operationId": "iol-news",
"produces": [
"application/json"
],
@@ -288702,13 +318694,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hbr.categoriesResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"503": {
@@ -288723,16 +318709,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Harvard Business Review topic taxonomy",
+ "summary": "Get IOL top stories",
"tags": [
- "Harvard Business Review"
+ "IOL"
]
}
},
- "/hbr/headlines": {
+ "/iol/sections": {
"get": {
- "description": "Returns fresh entries from Harvard Business Review's public, site-wide \"The Latest\" content stream.",
- "operationId": "hbr-headlines",
+ "description": "Returns the verified IOL section inventory accepted by the headlines endpoint: news, sport, business, lifestyle, entertainment, technology, motoring, travel and opinion, their sub-sections, provincial news and the sister-title feeds.",
+ "operationId": "iol-sections",
"produces": [
"application/json"
],
@@ -288740,19 +318726,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hbr.headlinesResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -288761,24 +318735,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Harvard Business Review latest headlines",
+ "summary": "Get IOL sections",
"tags": [
- "Harvard Business Review"
+ "IOL"
]
}
},
- "/hbr/topic": {
+ "/irishindependent/article": {
"get": {
- "description": "Returns the newest public Harvard Business Review articles on one topic archive page. topic is a \"/\" value -- see hbr-categories for the full known value space.",
- "operationId": "hbr-topic",
+ "description": "Returns public Irish Independent article metadata (headline, description, section, authors, publish/update times, lead image) and body paragraphs from a canonical article URL. Premium articles are served to anonymous readers as a one-paragraph teaser; those are returned with paywalled set to true and only the teaser paragraph.",
+ "operationId": "irishindependent-article",
"parameters": [
{
- "description": "Harvard Business Review topic slug",
+ "description": "Canonical Irish Independent article URL",
"in": "query",
- "name": "topic",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "subject/strategy"
+ "x-example": "https://www.independent.ie/sport/golf/dream-start-for-defending-champion-michael-kim-at-open-de-france/a/162124102.html"
}
],
"produces": [
@@ -288788,7 +318762,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hbr.topicResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -288803,12 +318777,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -288821,65 +318789,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Harvard Business Review topic archive",
+ "summary": "Get Irish Independent article content",
"tags": [
- "Harvard Business Review"
+ "Irish Independent"
]
}
},
- "/hermes/categories": {
+ "/irishindependent/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns every browsable Hermès category for a market: the category code hermes-category accepts, its display name, its page path and absolute URL, its parent code and its depth in the tree. This is the discovery endpoint for hermes-category's category parameter, so every accepted value is obtainable from this API rather than by reading the website. Editorial and story tiles that carry no browsable category page are excluded, so every code returned is one hermes-category will accept.",
- "operationId": "hermes-categories",
+ "description": "Returns an Irish Independent author's name, biography, published email and social links, headshot, and their most recent articles (the first page of the profile's article list) from a canonical author URL.",
+ "operationId": "irishindependent-author",
"parameters": [
{
- "default": "us_en",
- "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
- "enum": [
- "at_de",
- "au_en",
- "be_en",
- "be_fr",
- "br_pt",
- "ca_en",
- "ca_fr",
- "ch_de",
- "ch_fr",
- "cz_en",
- "de_de",
- "dh_en",
- "dk_en",
- "es_es",
- "fi_en",
- "fr_fr",
- "gr_en",
- "hk_en",
- "ie_en",
- "it_it",
- "jp_ja",
- "kr_ko",
- "lu_fr",
- "mo_en",
- "mx_es",
- "my_en",
- "nl_en",
- "no_en",
- "pl_en",
- "pt_en",
- "ri_en",
- "se_en",
- "sg_en",
- "th_en",
- "tw_zh",
- "uk_en",
- "us_en"
- ],
+ "description": "Canonical Irish Independent author URL",
"in": "query",
- "name": "locale",
- "type": "string"
+ "name": "url",
+ "required": true,
+ "type": "string",
+ "x-example": "https://www.independent.ie/authors/139084244-brian-keogh/"
}
],
"produces": [
@@ -288889,7 +318816,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hermes.categoriesResponseDoc"
+ "$ref": "#/definitions/publicnews.irishindependentAuthorResponseDoc"
}
},
"400": {
@@ -288898,8 +318825,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -288916,93 +318843,154 @@
"ApiKeyAuth": []
}
],
- "summary": "List Hermès category codes",
+ "summary": "Get an Irish Independent author profile",
"tags": [
- "Hermes"
+ "Irish Independent"
]
}
},
- "/hermes/category": {
+ "/irishindependent/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Browses one Hermès product category and returns a page of normalized products (SKU, title, price with currency, colour, size, stock, images) plus the facet groups Hermès offers for that category, and the category's own title and description. The category parameter takes a category code from hermes-categories, which is the discovery endpoint for every accepted value. Page size is fixed at 48 by Hermès and cannot be changed. Prices are returned with the ISO-4217 currency for the selected market, since Hermès itself publishes bare numbers.",
- "operationId": "hermes-category",
+ "description": "Returns fresh headlines from one public Irish Independent section feed. The section must be a slug returned by the sections endpoint.",
+ "operationId": "irishindependent-headlines",
"parameters": [
{
- "description": "Hermès category code, from hermes-categories",
- "in": "query",
- "name": "category",
- "required": true,
- "type": "string",
- "x-example": "WOMEN_SHOES_SNEAKERS"
- },
- {
- "default": "relevance",
- "description": "Result order. One of: relevance, priceasc, pricedsc. Non-default sorts are best-effort",
- "enum": [
- "relevance",
- "priceasc",
- "pricedsc"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
- },
- {
- "default": "us_en",
- "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
+ "description": "Irish Independent section slug",
"enum": [
- "at_de",
- "au_en",
- "be_en",
- "be_fr",
- "br_pt",
- "ca_en",
- "ca_fr",
- "ch_de",
- "ch_fr",
- "cz_en",
- "de_de",
- "dh_en",
- "dk_en",
- "es_es",
- "fi_en",
- "fr_fr",
- "gr_en",
- "hk_en",
- "ie_en",
- "it_it",
- "jp_ja",
- "kr_ko",
- "lu_fr",
- "mo_en",
- "mx_es",
- "my_en",
- "nl_en",
- "no_en",
- "pl_en",
- "pt_en",
- "ri_en",
- "se_en",
- "sg_en",
- "th_en",
- "tw_zh",
- "uk_en",
- "us_en"
+ "home",
+ "business",
+ "business-commercial-property",
+ "business-in-the-workplace",
+ "business-irish-business",
+ "business-jobs",
+ "business-money",
+ "business-small-business",
+ "business-technology",
+ "business-world",
+ "comment",
+ "comment-analysis",
+ "comment-editorial",
+ "comment-letters",
+ "comment-opinion",
+ "county",
+ "county-cork",
+ "county-cork-sport",
+ "county-dublin",
+ "county-galway",
+ "county-kerry",
+ "county-kerry-north-west-kerry-news",
+ "county-kerry-south-kerry-news",
+ "county-kerry-sport",
+ "county-kerry-tralee-news",
+ "county-louth",
+ "county-louth-drogheda-news",
+ "county-louth-dundalk-news",
+ "county-louth-sport",
+ "county-sligo",
+ "county-sligo-sport",
+ "county-wexford",
+ "county-wexford-enniscorthy-news",
+ "county-wexford-gorey-news",
+ "county-wexford-new-ross-news",
+ "county-wexford-sport",
+ "county-wexford-wexford-district",
+ "county-wicklow",
+ "county-wicklow-arklow-news",
+ "county-wicklow-bray-news",
+ "county-wicklow-sport",
+ "county-wicklow-west-wicklow-news",
+ "county-wicklow-wicklow-district",
+ "entertainment",
+ "entertainment-books",
+ "entertainment-celebrity",
+ "entertainment-movies",
+ "entertainment-music",
+ "entertainment-radio",
+ "entertainment-television",
+ "entertainment-theatre-arts",
+ "farming",
+ "irish-news",
+ "irish-news-courts",
+ "irish-news-crime",
+ "irish-news-education",
+ "irish-news-health",
+ "irish-news-politics",
+ "latest",
+ "lifestyle",
+ "lifestyle-family",
+ "lifestyle-family-learning",
+ "lifestyle-family-mothers-babies",
+ "lifestyle-family-parenting",
+ "lifestyle-fashion-beauty",
+ "lifestyle-food-drink",
+ "lifestyle-food-drink-food-reviews",
+ "lifestyle-food-drink-recipes",
+ "lifestyle-food-drink-wine",
+ "lifestyle-health-wellbeing",
+ "lifestyle-health-wellbeing-baby-loss",
+ "lifestyle-health-wellbeing-fitness",
+ "lifestyle-health-wellbeing-healthy-eating",
+ "lifestyle-health-wellbeing-mental-health",
+ "lifestyle-home-garden",
+ "lifestyle-home-garden-gardens",
+ "lifestyle-home-garden-homes",
+ "lifestyle-home-garden-interiors",
+ "lifestyle-home-garden-new-homes",
+ "lifestyle-motoring",
+ "lifestyle-motoring-car-news",
+ "lifestyle-motoring-car-reviews",
+ "lifestyle-motoring-car-talk",
+ "lifestyle-sex-relationships",
+ "lifestyle-travel",
+ "lifestyle-weddings",
+ "seachtain",
+ "sport",
+ "sport-gaa",
+ "sport-gaa-camogie",
+ "sport-gaa-gaelic-football",
+ "sport-gaa-hurling",
+ "sport-gaa-ladies-football",
+ "sport-gaa-u-20-gaelic-football",
+ "sport-gaa-u-20-hurling",
+ "sport-golf",
+ "sport-horse-racing",
+ "sport-other-sports",
+ "sport-other-sports-american-football",
+ "sport-other-sports-athletics",
+ "sport-other-sports-basketball",
+ "sport-other-sports-boxing",
+ "sport-other-sports-cricket",
+ "sport-other-sports-cycling",
+ "sport-other-sports-darts",
+ "sport-other-sports-hockey",
+ "sport-other-sports-motor-sport",
+ "sport-other-sports-rowing",
+ "sport-other-sports-snooker",
+ "sport-other-sports-swimming",
+ "sport-other-sports-tennis",
+ "sport-rugby",
+ "sport-rugby-champions-cup",
+ "sport-rugby-connacht-rugby",
+ "sport-rugby-leinster-rugby",
+ "sport-rugby-munster-rugby",
+ "sport-rugby-six-nations",
+ "sport-rugby-ulster-rugby",
+ "sport-rugby-united-rugby-championship",
+ "sport-soccer",
+ "sport-soccer-champions-league",
+ "sport-soccer-international-soccer",
+ "sport-soccer-league-of-ireland",
+ "sport-soccer-other-soccer",
+ "sport-soccer-premier-league",
+ "sport-womens-sport",
+ "subscriber-exclusives",
+ "world-news"
],
"in": "query",
- "name": "locale",
- "type": "string"
- },
- {
- "default": 1,
- "description": "One-based result page; page size is fixed at 48. Page 1 is fully validated; pages beyond 1 are best-effort and provisional",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "home"
}
],
"produces": [
@@ -289012,7 +319000,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hermes.categoryResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -289021,12 +319009,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -289039,75 +319021,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a Hermès category",
+ "summary": "Get Irish Independent section headlines",
"tags": [
- "Hermes"
+ "Irish Independent"
]
}
},
- "/hermes/product": {
+ "/irishindependent/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one Hermès product's full detail: title, description, dimensions, the Hermès colour name, country of manufacture, price with its market currency, stock, every product image, and the complete colour and size variant matrix with per-variant sku, price, stock and image. Care, gift and delivery text are returned as Hermès' own HTML fragments. sku accepts the reference-plus-colour form (H252013Z BM), the fuller listing sku that also carries size (H252013Z BM360), or the URL identifier returned by hermes-products (H252013ZvBM).",
- "operationId": "hermes-product",
- "parameters": [
- {
- "description": "Hermès product sku, in any of the accepted forms",
- "in": "query",
- "name": "sku",
- "required": true,
- "type": "string",
- "x-example": "H252013Z BM"
- },
- {
- "default": "us_en",
- "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
- "enum": [
- "at_de",
- "au_en",
- "be_en",
- "be_fr",
- "br_pt",
- "ca_en",
- "ca_fr",
- "ch_de",
- "ch_fr",
- "cz_en",
- "de_de",
- "dh_en",
- "dk_en",
- "es_es",
- "fi_en",
- "fr_fr",
- "gr_en",
- "hk_en",
- "ie_en",
- "it_it",
- "jp_ja",
- "kr_ko",
- "lu_fr",
- "mo_en",
- "mx_es",
- "my_en",
- "nl_en",
- "no_en",
- "pl_en",
- "pt_en",
- "ri_en",
- "se_en",
- "sg_en",
- "th_en",
- "tw_zh",
- "uk_en",
- "us_en"
- ],
- "in": "query",
- "name": "locale",
- "type": "string"
- }
- ],
+ "description": "Returns fresh Irish Independent (independent.ie) top stories from the site's public RSS feed, with summary, author, publish time, and lead image when present. Some stories are premium (subscriber) content; open them with the article endpoint to see the paywalled flag.",
+ "operationId": "irishindependent-news",
"produces": [
"application/json"
],
@@ -289115,25 +319038,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hermes.productResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"503": {
@@ -289148,75 +319053,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Hermès product",
+ "summary": "Get Irish Independent top stories",
"tags": [
- "Hermes"
+ "Irish Independent"
]
}
},
- "/hermes/product/recommendations": {
+ "/irishindependent/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns the cross-sell shelves Hermès shows on a product page: \"keep exploring\" (similar items) and \"perfect partner\" (items styled with it), each a list of normalized products with price, stock and image. Takes the same sku forms as hermes-product. A product Hermès offers no recommendations for returns an empty shelves list rather than an error.",
- "operationId": "hermes-product-recommendations",
- "parameters": [
- {
- "description": "Hermès product sku, in any of the forms hermes-product accepts",
- "in": "query",
- "name": "sku",
- "required": true,
- "type": "string",
- "x-example": "H252013Z BM"
- },
- {
- "default": "us_en",
- "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
- "enum": [
- "at_de",
- "au_en",
- "be_en",
- "be_fr",
- "br_pt",
- "ca_en",
- "ca_fr",
- "ch_de",
- "ch_fr",
- "cz_en",
- "de_de",
- "dh_en",
- "dk_en",
- "es_es",
- "fi_en",
- "fr_fr",
- "gr_en",
- "hk_en",
- "ie_en",
- "it_it",
- "jp_ja",
- "kr_ko",
- "lu_fr",
- "mo_en",
- "mx_es",
- "my_en",
- "nl_en",
- "no_en",
- "pl_en",
- "pt_en",
- "ri_en",
- "se_en",
- "sg_en",
- "th_en",
- "tw_zh",
- "uk_en",
- "us_en"
- ],
- "in": "query",
- "name": "locale",
- "type": "string"
- }
- ],
+ "description": "Returns every Irish Independent section slug accepted by the headlines endpoint (national, regional and county news, sport, business, comment, lifestyle and entertainment), with its display name and public RSS feed URL.",
+ "operationId": "irishindependent-sections",
"produces": [
"application/json"
],
@@ -289224,31 +319070,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hermes.recommendationsResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -289257,89 +319079,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Hermès product's recommended items",
+ "summary": "Get Irish Independent sections",
"tags": [
- "Hermes"
+ "Irish Independent"
]
}
},
- "/hermes/products": {
+ "/irishtimes/article": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns a page of Hermès' full catalogue index for one market: each product's URL, slug, URL identifier and the date Hermès last modified it. Built from Hermès' own product sitemap, so it enumerates the entire catalogue for that market including items no category listing surfaces. Use changed_since to return only products added or updated on or after a date, which makes this a new-arrivals feed. The product_id is the identifier used in the product URL and is NOT the same string as the sku returned by hermes-category and hermes-search, which also encodes size.",
- "operationId": "hermes-products",
+ "description": "Returns public Irish Times article metadata and body paragraphs from a canonical article URL. A subscriber-only (premium) article returns a permission error instead of its body; metered articles are returned in full.",
+ "operationId": "irishtimes-article",
"parameters": [
{
- "default": "us_en",
- "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
- "enum": [
- "at_de",
- "au_en",
- "be_en",
- "be_fr",
- "br_pt",
- "ca_en",
- "ca_fr",
- "ch_de",
- "ch_fr",
- "cz_en",
- "de_de",
- "dh_en",
- "dk_en",
- "es_es",
- "fi_en",
- "fr_fr",
- "gr_en",
- "hk_en",
- "ie_en",
- "it_it",
- "jp_ja",
- "kr_ko",
- "lu_fr",
- "mo_en",
- "mx_es",
- "my_en",
- "nl_en",
- "no_en",
- "pl_en",
- "pt_en",
- "ri_en",
- "se_en",
- "sg_en",
- "th_en",
- "tw_zh",
- "uk_en",
- "us_en"
- ],
- "in": "query",
- "name": "locale",
- "type": "string"
- },
- {
- "default": 1,
- "description": "One-based result page",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer"
- },
- {
- "default": 100,
- "description": "Results per page, 1-500",
- "in": "query",
- "maximum": 500,
- "minimum": 1,
- "name": "limit",
- "type": "integer"
- },
- {
- "description": "Return only products last modified on or after this YYYY-MM-DD date",
+ "description": "Canonical Irish Times article URL",
"in": "query",
- "name": "changed_since",
+ "name": "url",
+ "required": true,
"type": "string",
- "x-example": "2026-09-01"
+ "x-example": "https://www.irishtimes.com/technology/2026/09/24/example-article-slug/"
}
],
"produces": [
@@ -289349,7 +319106,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hermes.productsResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -289358,8 +319115,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "403": {
+ "description": "Forbidden",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -289376,81 +319139,24 @@
"ApiKeyAuth": []
}
],
- "summary": "List the Hermès catalogue index",
+ "summary": "Get Irish Times article content",
"tags": [
- "Hermes"
+ "Irish Times"
]
}
},
- "/hermes/search": {
+ "/irishtimes/author": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Searches the Hermès catalogue by keyword and returns a page of normalized products in the same shape as hermes-category. A query Hermès has no match for returns total 0 with an empty products array: Hermès itself renders unrelated fallback recommendations on a no-results page, and those are deliberately not returned as results. When Hermès applies its own spelling correction the corrected term is reported in results_for. Page size is fixed at 48 by Hermès and cannot be changed.",
- "operationId": "hermes-search",
+ "description": "Returns an Irish Times author's name, job title, biography, headshot, contact details, and recent articles from a canonical author URL.",
+ "operationId": "irishtimes-author",
"parameters": [
{
- "description": "Search keyword",
+ "description": "Canonical Irish Times author URL",
"in": "query",
- "name": "query",
+ "name": "url",
"required": true,
"type": "string",
- "x-example": "scarf"
- },
- {
- "default": "us_en",
- "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
- "enum": [
- "at_de",
- "au_en",
- "be_en",
- "be_fr",
- "br_pt",
- "ca_en",
- "ca_fr",
- "ch_de",
- "ch_fr",
- "cz_en",
- "de_de",
- "dh_en",
- "dk_en",
- "es_es",
- "fi_en",
- "fr_fr",
- "gr_en",
- "hk_en",
- "ie_en",
- "it_it",
- "jp_ja",
- "kr_ko",
- "lu_fr",
- "mo_en",
- "mx_es",
- "my_en",
- "nl_en",
- "no_en",
- "pl_en",
- "pt_en",
- "ri_en",
- "se_en",
- "sg_en",
- "th_en",
- "tw_zh",
- "uk_en",
- "us_en"
- ],
- "in": "query",
- "name": "locale",
- "type": "string"
- },
- {
- "default": 1,
- "description": "One-based result page; page size is fixed at 48. Page 1 is fully validated; pages beyond 1 are best-effort and provisional",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer"
+ "x-example": "https://www.irishtimes.com/author/jane-doe/"
}
],
"produces": [
@@ -289460,7 +319166,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hermes.searchResponseDoc"
+ "$ref": "#/definitions/publicnews.irishtimesAuthorResponseDoc"
}
},
"400": {
@@ -289469,8 +319175,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -289487,79 +319193,42 @@
"ApiKeyAuth": []
}
],
- "summary": "Search the Hermès catalogue",
+ "summary": "Get an Irish Times author profile",
"tags": [
- "Hermes"
+ "Irish Times"
]
}
},
- "/hermes/stores": {
+ "/irishtimes/headlines": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Hermès' worldwide store directory: name, street address, city, postal code, country, geographic coordinates, phone, displayed opening hours, whether in-store appointments are offered, and store photos. Optionally narrowed to one country (by name or ISO-2 code) or city. Hermès publishes the same worldwide directory for every market, so locale selects the language names are returned in rather than which stores are listed.",
- "operationId": "hermes-stores",
+ "description": "Returns fresh headlines from one public Irish Times section.",
+ "operationId": "irishtimes-headlines",
"parameters": [
{
- "default": "us_en",
- "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
+ "description": "Irish Times section slug",
"enum": [
- "at_de",
- "au_en",
- "be_en",
- "be_fr",
- "br_pt",
- "ca_en",
- "ca_fr",
- "ch_de",
- "ch_fr",
- "cz_en",
- "de_de",
- "dh_en",
- "dk_en",
- "es_es",
- "fi_en",
- "fr_fr",
- "gr_en",
- "hk_en",
- "ie_en",
- "it_it",
- "jp_ja",
- "kr_ko",
- "lu_fr",
- "mo_en",
- "mx_es",
- "my_en",
- "nl_en",
- "no_en",
- "pl_en",
- "pt_en",
- "ri_en",
- "se_en",
- "sg_en",
- "th_en",
- "tw_zh",
- "uk_en",
- "us_en"
+ "ireland",
+ "opinion",
+ "politics",
+ "business",
+ "your-money",
+ "world",
+ "sport",
+ "life-style",
+ "health",
+ "technology",
+ "culture",
+ "property",
+ "food",
+ "motors",
+ "history",
+ "abroad"
],
"in": "query",
- "name": "locale",
- "type": "string"
- },
- {
- "description": "Case-insensitive country filter, matched against the country name or its ISO-2 code",
- "in": "query",
- "name": "country",
- "type": "string",
- "x-example": "France"
- },
- {
- "description": "Case-insensitive city filter",
- "in": "query",
- "name": "city",
+ "name": "section",
+ "required": true,
"type": "string",
- "x-example": "Paris"
+ "x-example": "ireland"
}
],
"produces": [
@@ -289569,7 +319238,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hermes.storesResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
}
},
"400": {
@@ -289578,12 +319247,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -289596,74 +319259,16 @@
"ApiKeyAuth": []
}
],
- "summary": "List Hermès stores",
+ "summary": "Get Irish Times section headlines",
"tags": [
- "Hermes"
+ "Irish Times"
]
}
},
- "/hermes/suggest": {
+ "/irishtimes/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Hermès' own search-box autocomplete for a partial term: matching categories with the number of items behind each, and matching products. The category codes returned are the same codes hermes-category accepts, so a suggestion feeds straight into a category browse. An empty query is supported and returns Hermès' default suggestions rather than an error.",
- "operationId": "hermes-suggest",
- "parameters": [
- {
- "description": "Partial search term; may be empty for Hermès' default suggestions",
- "in": "query",
- "name": "query",
- "type": "string",
- "x-example": "bel"
- },
- {
- "default": "us_en",
- "description": "Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en",
- "enum": [
- "at_de",
- "au_en",
- "be_en",
- "be_fr",
- "br_pt",
- "ca_en",
- "ca_fr",
- "ch_de",
- "ch_fr",
- "cz_en",
- "de_de",
- "dh_en",
- "dk_en",
- "es_es",
- "fi_en",
- "fr_fr",
- "gr_en",
- "hk_en",
- "ie_en",
- "it_it",
- "jp_ja",
- "kr_ko",
- "lu_fr",
- "mo_en",
- "mx_es",
- "my_en",
- "nl_en",
- "no_en",
- "pl_en",
- "pt_en",
- "ri_en",
- "se_en",
- "sg_en",
- "th_en",
- "tw_zh",
- "uk_en",
- "us_en"
- ],
- "in": "query",
- "name": "locale",
- "type": "string"
- }
- ],
+ "description": "Returns fresh Irish Times top stories from its public Irish news feed.",
+ "operationId": "irishtimes-news",
"produces": [
"application/json"
],
@@ -289671,13 +319276,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hermes.suggestResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"429": {
@@ -289698,24 +319297,50 @@
"ApiKeyAuth": []
}
],
- "summary": "Hermès search suggestions",
+ "summary": "Get Irish Times top stories",
"tags": [
- "Hermes"
+ "Irish Times"
]
}
},
- "/hindustantimes/article": {
+ "/irishtimes/sections": {
"get": {
- "description": "Returns public Hindustan Times article metadata and body paragraphs from a canonical article URL. A story Hindustan Times marks subscriber-only (chiefly syndicated Wall Street Journal / The Economist partner content) returns a permission error instead of a body.",
- "operationId": "hindustantimes-article",
+ "description": "Returns the public Irish Times section inventory used by the headlines endpoint.",
+ "operationId": "irishtimes-sections",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get Irish Times sections",
+ "tags": [
+ "Irish Times"
+ ]
+ }
+ },
+ "/japantimes/article": {
+ "get": {
+ "description": "Returns public article metadata. If the page marks its body as blurred for anonymous visitors, paywalled is true and hidden subscriber text is omitted.",
+ "operationId": "japantimes-article",
"parameters": [
{
- "description": "Canonical Hindustan Times article URL",
+ "description": "Canonical HTTPS The Japan Times article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.hindustantimes.com/india-news/example-article-slug-101790241314039.html"
+ "x-example": "https://www.japantimes.co.jp/news/2026/09/28/japan/explainer/etc-explainer/"
}
],
"produces": [
@@ -289734,12 +319359,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "403": {
- "description": "Forbidden",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"404": {
"description": "Not Found",
"schema": {
@@ -289758,24 +319377,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Hindustan Times article content",
+ "summary": "Get a The Japan Times article",
"tags": [
- "Hindustan Times"
+ "The Japan Times"
]
}
},
- "/hindustantimes/author": {
+ "/japantimes/author": {
"get": {
- "description": "Returns a Hindustan Times author's byline metadata, biography, contact/social links, and their most recent articles (the first page only) from a canonical author URL.",
- "operationId": "hindustantimes-author",
+ "description": "Returns a public author name and linked article cards. Pagination paths are excluded because robots.txt disallows */page/*.",
+ "operationId": "japantimes-author",
"parameters": [
{
- "description": "Canonical Hindustan Times author URL",
+ "description": "Canonical HTTPS /author/// profile URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.hindustantimes.com/author/ht-news-desk-101650005059496"
+ "x-example": "https://www.japantimes.co.jp/author/162/kanako-takahara/"
}
],
"produces": [
@@ -289785,7 +319404,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.hindustanTimesAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.japantimesAuthorResponseDoc"
}
},
"400": {
@@ -289812,49 +319431,86 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Hindustan Times author profile",
+ "summary": "Get a The Japan Times author profile",
"tags": [
- "Hindustan Times"
+ "The Japan Times"
]
}
},
- "/hindustantimes/headlines": {
+ "/japantimes/headlines": {
"get": {
- "description": "Returns fresh headlines from one public Hindustan Times section.",
- "operationId": "hindustantimes-headlines",
+ "description": "Returns public article cards from one canonical section page. This site's section pages are HTML; only the top stories surface has a verified RSS feed.",
+ "operationId": "japantimes-headlines",
"parameters": [
{
- "description": "Hindustan Times section slug",
+ "description": "Canonical section slug from japantimes-sections",
"enum": [
- "india-news",
- "world-news",
- "cities",
+ "news-japan",
+ "news-japan-politics",
+ "news-japan-society",
+ "news-japan-crime-legal",
+ "news-japan-science-health",
+ "news-japan-explainer",
+ "news-japan-history",
+ "news-world",
+ "news-world-politics",
+ "news-world-crime-legal",
+ "news-world-science-health",
+ "news-world-society",
+ "news-asia-pacific",
+ "news-asia-pacific-politics",
+ "news-asia-pacific-crime-legal",
+ "news-asia-pacific-science-health",
+ "news-asia-pacific-society",
"business",
+ "business-companies",
+ "business-economy",
+ "business-markets",
+ "business-tech",
"sports",
- "cricket",
- "entertainment",
- "lifestyle",
- "astrology",
- "education",
- "technology",
+ "sports-sumo",
+ "sports-soccer",
+ "sports-baseball",
+ "sports-basketball",
+ "sports-tennis",
+ "sports-olympics",
+ "sports-more-sports",
"opinion",
- "science",
- "books",
- "real-estate",
- "car-bike",
- "nri",
- "htcity",
- "ht-insight",
- "ht-explainers",
- "editorials",
- "trending",
- "india-and-the-elections",
- "editors-pick"
+ "opinion-editorials",
+ "opinion-commentary",
+ "tag-geoeconomic-briefing",
+ "environment",
+ "environment-climate-change",
+ "environment-energy",
+ "environment-sustainability",
+ "environment-wildlife",
+ "environment-earth-science",
+ "life",
+ "life-travel",
+ "life-digital",
+ "life-food-drink",
+ "life-style-design",
+ "life-language",
+ "life-lifestyle",
+ "culture",
+ "culture-film",
+ "culture-books",
+ "culture-music",
+ "culture-art",
+ "culture-tv-streaming",
+ "culture-stage",
+ "culture-entertainment-news",
+ "community",
+ "community-voices",
+ "community-issues",
+ "community-how-tos",
+ "community-our-lives"
],
"in": "query",
"name": "section",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "news-japan"
}
],
"produces": [
@@ -289885,16 +319541,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Hindustan Times section headlines",
+ "summary": "Get The Japan Times section headlines",
"tags": [
- "Hindustan Times"
+ "The Japan Times"
]
}
},
- "/hindustantimes/news": {
+ "/japantimes/news": {
"get": {
- "description": "Returns fresh Hindustan Times top stories from its public \"Latest News\" feed.",
- "operationId": "hindustantimes-news",
+ "description": "Returns current top stories from the public RSS feed. RSS descriptions are short publisher-provided teasers.",
+ "operationId": "japantimes-news",
"produces": [
"application/json"
],
@@ -289905,12 +319561,6 @@
"$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -289923,16 +319573,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Hindustan Times top stories",
+ "summary": "Get The Japan Times top stories",
"tags": [
- "Hindustan Times"
+ "The Japan Times"
]
}
},
- "/hindustantimes/sections": {
+ "/japantimes/sections": {
"get": {
- "description": "Returns the public Hindustan Times section inventory used by the headlines endpoint.",
- "operationId": "hindustantimes-sections",
+ "description": "Returns the complete 60-link editorial navigation inventory used by japantimes-headlines.",
+ "operationId": "japantimes-sections",
"produces": [
"application/json"
],
@@ -289949,32 +319599,37 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Hindustan Times sections",
+ "summary": "Get The Japan Times sections",
"tags": [
- "Hindustan Times"
+ "The Japan Times"
]
}
},
- "/hm/categories": {
+ "/jcrew/categories": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns H&M's own storefront category navigation, department by department: every direct nav item and subcategory currently shown in the site's own menu, with its display name and storefront URL. Where this build has separately verified the value against hm-listing's own category_id parameter, that id is included too; category_id is omitted for entries not yet verified rather than guessed, since the visible category label is confirmed NOT a reliable way to derive H&M's real listing category ids for every category. department, when given, filters the result to one department.",
- "operationId": "hm-categories",
+ "description": "Lists every category and subcategory from the storefront's own header navigation, flattened into department/section/category triples -- resolves the category-discovery gap jcrew-category's own category parameter otherwise leaves as \"find one from a storefront URL\". Each entry's category value is exactly what jcrew-category's own category parameter accepts. Filter to one department with department (e.g. women, men); omit for every department. Departments vary slightly by site (jcrew.com has an extra \"home\" department factory.jcrew.com doesn't) -- see the response's own departments field for the live list.",
+ "operationId": "jcrew-categories",
"parameters": [
{
- "description": "Filter to one storefront department",
+ "default": "jcrew",
+ "description": "Storefront to list",
"enum": [
- "women",
- "men",
- "kids",
- "home",
- "beauty"
+ "jcrew",
+ "factory"
],
"in": "query",
- "name": "department",
+ "name": "site",
"type": "string"
+ },
+ {
+ "description": "Department to filter to, e.g. women, men, boys, girls, accessories, shoes, home (jcrew only) -- omit for every department",
+ "in": "query",
+ "name": "department",
+ "type": "string",
+ "x-example": "women"
}
],
"produces": [
@@ -289984,7 +319639,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hm.categoriesResponseDoc"
+ "$ref": "#/definitions/jcrew.categoriesResponseDoc"
}
},
"400": {
@@ -290011,59 +319666,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse H&M's storefront category navigation",
+ "summary": "List J.Crew or J.Crew Factory categories",
"tags": [
- "H&M"
+ "J.Crew"
]
}
},
- "/hm/listing": {
+ "/jcrew/category": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one H&M category's product listing page: normalized products with pricing, images, colors, and per-size stock, sourced from H&M's own app-backend listing data. category_id is an H&M category slug (e.g. ladies_newarrivals_all, men_newarrivals_all, ladies_jeans) -- this build does not expose a category/nav-tree discovery endpoint, so category_id values are currently sourced from known H&M storefront paths rather than a lookup call. Pagination is page-based and real: requesting a page beyond the category's real last page returns a normal response with an empty products array rather than an error.",
- "operationId": "hm-listing",
+ "description": "Returns one page (up to 60 products) of a category/browse listing for a category path. category is the slash-separated path segment after the storefront's own /plp/ (e.g. womens/categories/clothing/sweaters) -- use jcrew-categories to discover every valid value instead of guessing from storefront URLs. site selects the storefront (default jcrew). page selects the SFCC-native page (default 1); result_count reports the upstream's true total regardless of page size. A hub-level (non-leaf) category path returns a well-formed empty result rather than an error.",
+ "operationId": "jcrew-category",
"parameters": [
{
- "description": "H&M category slug",
+ "description": "Slash-separated category path -- see jcrew-categories",
"in": "query",
- "name": "category_id",
+ "name": "category",
"required": true,
"type": "string",
- "x-example": "ladies_newarrivals_all"
- },
- {
- "description": "Page number, one-based, defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- },
- {
- "description": "Results per page, 1 to 72, defaults to 36",
- "in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 36
+ "x-example": "womens/categories/clothing/sweaters"
},
{
- "description": "Sort order, defaults to RELEVANCE",
+ "default": "jcrew",
+ "description": "Storefront to browse",
"enum": [
- "RELEVANCE",
- "NEWEST_FIRST",
- "PRICE_ASCENDING",
- "PRICE_DESCENDING"
+ "jcrew",
+ "factory"
],
"in": "query",
- "name": "sort",
+ "name": "site",
"type": "string"
},
{
- "description": "Optional filter for newly added items only",
+ "default": 1,
+ "description": "One-based page",
"in": "query",
- "name": "is_new",
- "type": "boolean"
+ "maximum": 50,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -290073,7 +319716,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hm.listingResponseDoc"
+ "$ref": "#/definitions/jcrew.categoryResponseDoc"
}
},
"400": {
@@ -290082,6 +319725,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -290100,27 +319749,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse an H&M category's product listing",
+ "summary": "Browse a J.Crew or J.Crew Factory category",
"tags": [
- "H&M"
+ "J.Crew"
]
}
},
- "/hm/product/{product_id}": {
+ "/jcrew/product": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one H&M product's full detail: every purchasable color grouped with its own per-size price and live availability, plus an aggregate rating and real customer reviews (author label, date, body, rating, and any fit-feedback tags the reviewer left, such as \"True to Size\") when the product has any. This data is not available from hm-listing or hm-search, which only carry one representative price and a per-color stock count. product_id is the numeric id from a listing/search result's id field or its url field's productpage..html segment. An unrecognized product_id returns 404.",
- "operationId": "hm-product",
+ "description": "Returns full product detail for one style: name, brand, description, category, list price, aggregate rating, every purchasable color, and every color+size combination as a separate priced/stocked SKU. pid is a style id (e.g. CX415), as returned by jcrew-search's products[].id field. site must match the storefront the pid belongs to (default jcrew). A single call covers every color and size of the style -- no per-color lookup needed.",
+ "operationId": "jcrew-product",
"parameters": [
{
- "description": "Numeric H&M product id, from a listing/search result's id field",
- "in": "path",
- "name": "product_id",
+ "description": "Style id, from a search result's id field",
+ "in": "query",
+ "name": "pid",
"required": true,
"type": "string",
- "x-example": "1268470004"
+ "x-example": "CX415"
+ },
+ {
+ "default": "jcrew",
+ "description": "Storefront the pid belongs to",
+ "enum": [
+ "jcrew",
+ "factory"
+ ],
+ "in": "query",
+ "name": "site",
+ "type": "string"
}
],
"produces": [
@@ -290130,7 +319790,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hm.productDetailResponseDoc"
+ "$ref": "#/definitions/jcrew.productResponseDoc"
}
},
"400": {
@@ -290163,27 +319823,47 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an H&M product's full detail",
+ "summary": "Get a J.Crew or J.Crew Factory product",
"tags": [
- "H&M"
+ "J.Crew"
]
}
},
- "/hm/product/{product_id}/related": {
+ "/jcrew/product/reviews": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns every product-detail recommendation list H&M's own app shows for one product (which lists are present genuinely varies by product -- for example \"more from series\" and \"style with\" appear only when the product has one, while \"alternatives\" and \"upsell\" are more consistently present). An unrecognized product_id returns a well-formed empty result rather than an error.",
- "operationId": "hm-product-related",
+ "description": "Returns one page of a product's customer reviews (author, location, date, rating, headline, body, and verified-purchase flag), plus the product's overall rating summary (average rating, rating count, per-star histogram, and recommended ratio). pid is a style id (e.g. CX415), as returned by jcrew-search's products[].id field. site must match the storefront the pid belongs to (default jcrew). A product with no reviews yet, or a well-formed but unrecognized pid, returns a well-formed empty result, not an error.",
+ "operationId": "jcrew-product-reviews",
"parameters": [
{
- "description": "Numeric H&M product id, from a listing/search result's id field",
- "in": "path",
- "name": "product_id",
+ "description": "Style id, from a search result's id field",
+ "in": "query",
+ "name": "pid",
"required": true,
"type": "string",
- "x-example": "1268470004"
+ "x-example": "CX415"
+ },
+ {
+ "default": "jcrew",
+ "description": "Storefront the pid belongs to",
+ "enum": [
+ "jcrew",
+ "factory"
+ ],
+ "in": "query",
+ "name": "site",
+ "type": "string"
+ },
+ {
+ "default": 1,
+ "description": "One-based page, 10 reviews per page",
+ "in": "query",
+ "maximum": 1000,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -290193,7 +319873,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hm.relatedResponseDoc"
+ "$ref": "#/definitions/jcrew.productReviewsResponseDoc"
}
},
"400": {
@@ -290220,41 +319900,75 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an H&M product's related items",
+ "summary": "Get reviews for a J.Crew or J.Crew Factory product",
"tags": [
- "H&M"
+ "J.Crew"
]
}
},
- "/hm/search": {
+ "/jcrew/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Runs a free-text keyword search against H&M's own app-backend search data and returns normalized products with pricing, images, colors, and per-size stock, plus search-quality metadata (a spelling-correction suggestion, related searches, and a content-filter flag). Unlike category browsing, an obscure or nonsense keyword returns a genuine empty result (zero products) rather than a fallback set. Pagination is page-based and real: requesting a page beyond the real last page returns a normal response with an empty products array rather than an error.",
- "operationId": "hm-search",
+ "description": "Searches the product catalog for either storefront (select with site, default jcrew). Returns normalized product summaries with USD pricing, gender, and a description, plus the search index's own facets (gender, fabric, category, size, color, price range, and others) with live per-option counts. sort selects relevance (default), price_asc, or price_desc. filter narrows results by one or more facet name:value pairs (comma-separated, e.g. productGender:Men,styleFabric:Cashmere) taken from a prior response's own facets[].name/facets[].options[].value fields -- not curated against a fixed list, since the facet set is large and can change. This is best-effort relevance, not a guaranteed keyword match: for an obscure alphanumeric keyword the upstream search index falls back to its own semantically-related results instead of an empty list, and there is no reliable field in the response to distinguish a true keyword match from that fallback.",
+ "operationId": "jcrew-search",
"parameters": [
{
- "description": "Free-text search keyword",
+ "description": "Search keyword",
"in": "query",
- "name": "query",
+ "name": "keyword",
"required": true,
"type": "string",
- "x-example": "jeans"
+ "x-example": "sweater"
},
{
- "description": "Page number, one-based, defaults to 1",
+ "default": "jcrew",
+ "description": "Storefront to search",
+ "enum": [
+ "jcrew",
+ "factory"
+ ],
+ "in": "query",
+ "name": "site",
+ "type": "string"
+ },
+ {
+ "default": 1,
+ "description": "One-based page",
"in": "query",
+ "maximum": 500,
+ "minimum": 1,
"name": "page",
- "type": "integer",
- "x-example": 1
+ "type": "integer"
},
{
- "description": "Results per page, 1 to 72, defaults to 36",
+ "default": 24,
+ "description": "Results per page",
"in": "query",
- "name": "page_size",
- "type": "integer",
- "x-example": 36
+ "maximum": 100,
+ "minimum": 1,
+ "name": "per_page",
+ "type": "integer"
+ },
+ {
+ "default": "relevance",
+ "description": "Sort order",
+ "enum": [
+ "relevance",
+ "price_asc",
+ "price_desc"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Comma-separated facet name:value pairs, e.g. productGender:Men,styleFabric:Cashmere",
+ "in": "query",
+ "name": "filter",
+ "type": "string",
+ "x-example": "productGender:Men"
}
],
"produces": [
@@ -290264,7 +319978,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hm.searchResponseDoc"
+ "$ref": "#/definitions/jcrew.searchResponseDoc"
}
},
"400": {
@@ -290291,26 +320005,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Search H&M product listings by free-text keyword",
+ "summary": "Search J.Crew or J.Crew Factory products",
"tags": [
- "H&M"
+ "J.Crew"
]
}
},
- "/hm/search/suggestions": {
+ "/jcrew/size-chart": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns H&M's own search-box typeahead suggestions, sourced from the same credential-free app-backend host as hm-listing/hm-search. When query is given, returns spelling-complete phrase suggestions and merchandised content results. When query is omitted or empty, instead returns trending searches and popular-search shortcuts (phrase/content suggestions are both empty in that mode). search_history is part of the real upstream response but confirmed NOT session-scoped -- it returned the identical list across separate cookie-free requests, so treat it as fixed default content rather than a real per-caller history.",
- "operationId": "hm-search-suggestions",
+ "description": "Returns real body measurements per size (chest, waist, hip, sleeve, length, or a subset depending on the style/category), in both inches and centimeters. pid is a style id, as returned by jcrew-search's products[].id field. site must match the storefront the pid belongs to (default jcrew). A measurement value of 0 means that column doesn't apply to this style (e.g. hip on a top) -- the upstream itself doesn't distinguish that from a genuine zero, so this endpoint passes it through as-is.",
+ "operationId": "jcrew-size-chart",
"parameters": [
{
- "description": "Free-text search-box input; omit or leave empty for trending/popular searches instead",
+ "description": "Style id, from a search result's id field",
"in": "query",
- "name": "query",
+ "name": "pid",
+ "required": true,
"type": "string",
- "x-example": "jean"
+ "x-example": "CX415"
+ },
+ {
+ "default": "jcrew",
+ "description": "Storefront the pid belongs to",
+ "enum": [
+ "jcrew",
+ "factory"
+ ],
+ "in": "query",
+ "name": "site",
+ "type": "string"
}
],
"produces": [
@@ -290320,7 +320046,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hm.suggestResponseDoc"
+ "$ref": "#/definitions/jcrew.sizeChartResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"429": {
@@ -290341,47 +320079,44 @@
"ApiKeyAuth": []
}
],
- "summary": "Get H&M search-box suggestions",
+ "summary": "Get the size chart for a J.Crew or J.Crew Factory product",
"tags": [
- "H&M"
+ "J.Crew"
]
}
},
- "/hm/stores": {
+ "/jcrew/stores": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns H&M physical retail store locations near a point: name, phone, full address, and coordinates. Either search, or both lat and lng, is required. search is a free-text zip code or place name that is first resolved to coordinates; if it does not resolve to any location, a well-formed empty result is returned rather than an error. lat and lng, when given directly, skip that resolution step. radius_meters is optional (1000 to 50000, defaults to 10000). A location with no stores within the radius returns a well-formed empty result rather than an error.",
- "operationId": "hm-stores",
+ "description": "Returns one storefront's full open-store directory (address, phone, coordinates, services, weekly hours). site selects the storefront and accepts jcrew or factory; defaults to jcrew. Give lat and lng together to sort by distance from that point (each store's distance_miles is then populated); omit both for the upstream's own order.",
+ "operationId": "jcrew-stores",
"parameters": [
{
- "description": "Free-text zip code or place name to resolve to coordinates",
+ "default": "jcrew",
+ "description": "Storefront whose stores to return",
+ "enum": [
+ "jcrew",
+ "factory"
+ ],
"in": "query",
- "name": "search",
- "type": "string",
- "x-example": "10001"
+ "name": "site",
+ "type": "string"
},
{
- "description": "Latitude, requires lng",
+ "description": "Latitude to sort distance from (must be given together with lng)",
"in": "query",
"name": "lat",
"type": "number",
"x-example": 40.7128
},
{
- "description": "Longitude, requires lat",
+ "description": "Longitude to sort distance from (must be given together with lat)",
"in": "query",
"name": "lng",
"type": "number",
"x-example": -74.006
- },
- {
- "description": "Search radius in meters, 1000 to 50000, defaults to 10000",
- "in": "query",
- "name": "radius_meters",
- "type": "integer",
- "x-example": 10000
}
],
"produces": [
@@ -290391,7 +320126,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hm.storesResponseDoc"
+ "$ref": "#/definitions/jcrew.storesResponseDoc"
}
},
"400": {
@@ -290418,24 +320153,38 @@
"ApiKeyAuth": []
}
],
- "summary": "Find nearby H&M physical stores",
+ "summary": "Find J.Crew or J.Crew Factory store locations",
"tags": [
- "H&M"
+ "J.Crew"
]
}
},
- "/hollywoodreporter/article": {
+ "/jcrew/suggest": {
"get": {
- "description": "Returns public The Hollywood Reporter article metadata (title, author(s), published/updated dates, section, lead image) and body paragraphs from a canonical article URL.",
- "operationId": "hollywoodreporter-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the storefront's own search-box suggestions (typeahead) for a partial query -- a flat list of suggested search phrases, each with its own live total result count on the search index. Select the storefront with site (default jcrew). Not product data.",
+ "operationId": "jcrew-suggest",
"parameters": [
{
- "description": "Canonical Hollywood Reporter article URL",
+ "description": "Partial search query",
"in": "query",
- "name": "url",
+ "name": "query",
"required": true,
"type": "string",
- "x-example": "https://www.hollywoodreporter.com/movies/movie-news/example-story-1236709066/"
+ "x-example": "dress"
+ },
+ {
+ "default": "jcrew",
+ "description": "Storefront to search",
+ "enum": [
+ "jcrew",
+ "factory"
+ ],
+ "in": "query",
+ "name": "site",
+ "type": "string"
}
],
"produces": [
@@ -290445,7 +320194,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/jcrew.suggestResponseDoc"
}
},
"400": {
@@ -290454,8 +320203,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -290472,31 +320221,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Hollywood Reporter article content",
+ "summary": "Get J.Crew or J.Crew Factory search-box suggestions",
"tags": [
- "Hollywood Reporter"
+ "J.Crew"
]
}
},
- "/hollywoodreporter/author": {
+ "/jerusalempost/article": {
"get": {
- "description": "Returns one Hollywood Reporter staff writer or contributor's public profile: name, job title, headshot, biography, social/contact links, and one page of their recent articles.",
- "operationId": "hollywoodreporter-author",
+ "description": "Returns public Jerusalem Post article metadata and free body paragraphs. If isAccessibleForFree is false, paywalled is true and body paragraphs are omitted; paid article text is not represented by feed snippets.",
+ "operationId": "jerusalempost-article",
"parameters": [
{
- "description": "Canonical hollywoodreporter.com/author/ URL",
+ "description": "Canonical Jerusalem Post article URL",
"in": "query",
"name": "url",
"required": true,
"type": "string",
- "x-example": "https://www.hollywoodreporter.com/author/borys-kit/"
- },
- {
- "description": "1-based page of recent articles to return; defaults to 1",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
+ "x-example": "https://www.jpost.com/middle-east/article-909945"
}
],
"produces": [
@@ -290506,7 +320248,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.hollywoodReporterAuthorResponseDoc"
+ "$ref": "#/definitions/publicnews.articleResponseDoc"
}
},
"400": {
@@ -290533,62 +320275,24 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Hollywood Reporter author profile",
+ "summary": "Get Jerusalem Post article content",
"tags": [
- "Hollywood Reporter"
+ "Jerusalem Post"
]
}
},
- "/hollywoodreporter/headlines": {
+ "/jerusalempost/author": {
"get": {
- "description": "Returns fresh headlines from one public The Hollywood Reporter section or editorial-vertical feed.",
- "operationId": "hollywoodreporter-headlines",
+ "description": "Returns a public author or blogger profile and article cards from its first-party profile page.",
+ "operationId": "jerusalempost-author",
"parameters": [
{
- "description": "Hollywood Reporter section slug",
- "enum": [
- "arts",
- "business",
- "business-news",
- "digital",
- "film-tv-music-news",
- "general-news",
- "lifestyle",
- "lifestyle-news",
- "local-news",
- "movie-features",
- "movie-news",
- "movie-reviews",
- "movie-videos",
- "movies",
- "music",
- "music-features",
- "music-industry-news",
- "music-news",
- "news",
- "politics-news",
- "real-estate",
- "shopping",
- "style",
- "tv",
- "tv-features",
- "tv-news",
- "tv-reviews",
- "tv-videos",
- "awards",
- "behind-the-screen",
- "heat-vision",
- "international",
- "live-feed",
- "rambling-reporter",
- "the-fien-print",
- "the-race",
- "thr-esq"
- ],
+ "description": "Canonical Jerusalem Post /author/ or /blogger/ profile URL",
"in": "query",
- "name": "section",
+ "name": "url",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "https://www.jpost.com/author/cameron-s-brown"
}
],
"produces": [
@@ -290598,7 +320302,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/publicnews.jerusalemPostAuthorResponseDoc"
}
},
"400": {
@@ -290607,6 +320311,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -290619,16 +320329,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Hollywood Reporter section headlines",
+ "summary": "Get Jerusalem Post author profile",
"tags": [
- "Hollywood Reporter"
+ "Jerusalem Post"
]
}
},
- "/hollywoodreporter/news": {
+ "/jerusalempost/authors": {
"get": {
- "description": "Returns fresh The Hollywood Reporter entertainment-industry top stories from its public RSS feed.",
- "operationId": "hollywoodreporter-news",
+ "description": "Returns the current author and blogger profile URLs discovered from the site's public Experts sitemap. This dynamic roster is intentionally exposed as a discovery endpoint.",
+ "operationId": "jerusalempost-authors",
"produces": [
"application/json"
],
@@ -290636,13 +320346,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.jerusalemPostAuthorsResponseDoc"
}
},
"503": {
@@ -290657,16 +320361,68 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Hollywood Reporter top stories",
+ "summary": "List Jerusalem Post author profiles",
"tags": [
- "Hollywood Reporter"
+ "Jerusalem Post"
]
}
},
- "/hollywoodreporter/sections": {
+ "/jerusalempost/headlines": {
"get": {
- "description": "Returns the complete public section inventory accepted by /api/v1/hollywoodreporter/headlines (both The Hollywood Reporter's editorial categories and its named editorial verticals).",
- "operationId": "hollywoodreporter-sections",
+ "description": "Returns fresh non-premium stories from one public Jerusalem Post RSS section. Premium feed snippets are omitted.",
+ "operationId": "jerusalempost-headlines",
+ "parameters": [
+ {
+ "description": "Jerusalem Post section slug",
+ "enum": [
+ "aliyah",
+ "american-politics",
+ "arab-israeli-conflict",
+ "archaeology",
+ "bds-movement",
+ "all-news",
+ "banking-and-finance",
+ "business-and-innovation",
+ "business-opinion",
+ "christian-world",
+ "consumerism",
+ "culture",
+ "defense-and-tech",
+ "diaspora",
+ "environment",
+ "food-and-recipes",
+ "health-and-wellness",
+ "health-around-the-world",
+ "history",
+ "home",
+ "iran-news",
+ "israel-election-2026",
+ "israel-news",
+ "israel-politics",
+ "israeli-sports",
+ "j-spot",
+ "jewish-holidays",
+ "judaism",
+ "kabbalah",
+ "middle-east",
+ "must",
+ "nutrition",
+ "omg",
+ "opinion",
+ "science",
+ "tech-and-startups",
+ "terrorism",
+ "torah-portion",
+ "ukraine-russia-war",
+ "world-news"
+ ],
+ "in": "query",
+ "name": "section",
+ "required": true,
+ "type": "string",
+ "x-example": "aliyah"
+ }
+ ],
"produces": [
"application/json"
],
@@ -290674,7 +320430,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
+ "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
}
},
@@ -290683,19 +320451,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Get The Hollywood Reporter sections",
+ "summary": "Get Jerusalem Post section headlines",
"tags": [
- "Hollywood Reporter"
+ "Jerusalem Post"
]
}
},
- "/homedepot/categories": {
+ "/jerusalempost/news": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns Home Depot's top-level department taxonomy (name, path, url) from the homepage's own \"All Departments\" navigation. Each department's path is directly usable as GET /homedepot/category's path parameter.",
- "operationId": "homedepot-categories",
+ "description": "Returns fresh non-premium Jerusalem Post stories from its public front-page RSS feed. Premium feed snippets are omitted.",
+ "operationId": "jerusalempost-news",
"produces": [
"application/json"
],
@@ -290703,13 +320468,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/homedepot.categoriesResponseDoc"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.newsResponseDoc"
}
},
"503": {
@@ -290724,52 +320483,16 @@
"ApiKeyAuth": []
}
],
- "summary": "Home Depot department taxonomy",
+ "summary": "Get Jerusalem Post top stories",
"tags": [
- "Home Depot"
+ "Jerusalem Post"
]
}
},
- "/homedepot/category": {
+ "/jerusalempost/sections": {
"get": {
- "consumes": [
- "application/json"
- ],
- "description": "Returns one page of a Home Depot category or brand browse page's product grid: normalized products with title, image, model, current/original price, and rating/review count, plus the category's total result count and the refinement facets the page offers. path is the segment of a /b/ URL after \"/b/\", e.g. \"Tools-Power-Tools-Drills-Impact-Drivers/N-5yc1vZc29x\"; a full https://www.homedepot.com/b/... URL or a \"/b/...\" path is also accepted. sort selects the result ordering and is one of best_match, top_sellers, top_rated, price_low_to_high, price_high_to_low, most_popular, delivery_date; omit it to keep the site's default ordering. page is a 1-indexed page number (default 1, maximum 42), 24 products per page. Each returned facet's path is directly usable as this endpoint's own path parameter to drill down. An unrecognized or blocked path returns an upstream error rather than an empty result.",
- "operationId": "homedepot-category",
- "parameters": [
- {
- "description": "Home Depot category/brand browse path, e.g. \\",
- "in": "query",
- "name": "path",
- "required": true,
- "type": "string",
- "x-example": "Tools-Power-Tools-Drills-Impact-Drivers/N-5yc1vZc29x"
- },
- {
- "description": "Result ordering. One of: best_match, top_sellers, top_rated, price_low_to_high, price_high_to_low, most_popular, delivery_date. Omit for the site's default ordering",
- "enum": [
- "best_match",
- "top_sellers",
- "top_rated",
- "price_low_to_high",
- "price_high_to_low",
- "most_popular",
- "delivery_date"
- ],
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "top_sellers"
- },
- {
- "description": "1-indexed page number, default 1, maximum 42 (12 products per page)",
- "in": "query",
- "name": "page",
- "type": "integer",
- "x-example": 1
- }
- ],
+ "description": "Returns the live-verified public RSS sections accepted by jerusalempost-headlines.",
+ "operationId": "jerusalempost-sections",
"produces": [
"application/json"
],
@@ -290777,31 +320500,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/homedepot.categoryResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/publicnews.sectionsResponseDoc"
}
}
},
@@ -290810,27 +320509,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse a Home Depot category or brand page",
+ "summary": "Get Jerusalem Post section inventory",
"tags": [
- "Home Depot"
+ "Jerusalem Post"
]
}
},
- "/homedepot/product/{id}": {
+ "/jimmy-johns/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one Home Depot product's full detail: name, description, brand, model, store SKU, GTIN, price, images, aggregate rating and review count, and the featured customer reviews embedded on the product page. id is the numeric product/internet id (the trailing number of a /p/{slug}/{id} URL). The product page does not distinguish an unknown id from a known one in a consistent way, so an unrecognized id may return an upstream error rather than a not-found.",
- "operationId": "homedepot-product",
+ "description": "Returns one Jimmy John's restaurant's full menu as a category tree: every category and its products, with name, description, calorie range, base cost and image. restaurant_id comes from GET /jimmy-johns/nearby. Many sandwiches price entirely through a size selection rather than a base cost, so cost is commonly 0 for those items -- see GET /jimmy-johns/modifiers for the real per-size price.",
+ "operationId": "jimmy-johns-menu",
"parameters": [
{
- "description": "Home Depot product/internet id, e.g. 320326875",
- "in": "path",
- "name": "id",
+ "description": "Olo restaurant id from /jimmy-johns/nearby",
+ "in": "query",
+ "name": "restaurant_id",
"required": true,
- "type": "string",
- "x-example": "320326875"
+ "type": "integer",
+ "x-example": 67182
}
],
"produces": [
@@ -290840,7 +320539,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/homedepot.productResponseDoc"
+ "$ref": "#/definitions/jimmyjohns.menuResponseDoc"
}
},
"400": {
@@ -290873,27 +320572,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Home Depot product detail",
+ "summary": "Get one Jimmy John's restaurant's full menu",
"tags": [
- "Home Depot"
+ "JimmyJohns"
]
}
},
- "/homedepot/product/{id}/questions": {
+ "/jimmy-johns/modifiers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns the first page (8 questions) of a Home Depot product's customer questions and answers, plus the product's total Q&A count. id is the numeric product/internet id. A product with no Q&A returns a genuine zero-result response rather than an error.",
- "operationId": "homedepot-product-questions",
+ "description": "Returns one menu product's full customization tree: size, bread, and per-ingredient choices (extra/regular/light/none), each with its real price and calorie delta. Groups nest -- picking a size choice can reveal a bread group, which can reveal one group per ingredient -- so a size step, a bread step, and every \"Customize Sandwich\" ingredient all live in one recursive tree. product_id comes from GET /jimmy-johns/menu.",
+ "operationId": "jimmy-johns-modifiers",
"parameters": [
{
- "description": "Home Depot product/internet id, e.g. 328425526",
- "in": "path",
- "name": "id",
+ "description": "Product id from a /jimmy-johns/menu product",
+ "in": "query",
+ "name": "product_id",
"required": true,
- "type": "string",
- "x-example": "328425526"
+ "type": "integer",
+ "x-example": 33276056
}
],
"produces": [
@@ -290903,7 +320602,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/homedepot.productQuestionsResponseDoc"
+ "$ref": "#/definitions/jimmyjohns.modifiersResponseDoc"
}
},
"400": {
@@ -290912,6 +320611,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"429": {
"description": "Too Many Requests",
"schema": {
@@ -290930,34 +320635,49 @@
"ApiKeyAuth": []
}
],
- "summary": "Home Depot product questions and answers",
+ "summary": "Get one Jimmy John's menu product's customization options",
"tags": [
- "Home Depot"
+ "JimmyJohns"
]
}
},
- "/homedepot/search": {
+ "/jimmy-johns/nearby": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns one page (up to 12 products) of a Home Depot keyword search's product listing: normalized products with title, image, model, current/original price, and rating/review count, plus the search's total result count. q is free-text search keywords, e.g. \"impact driver\". page is a 1-indexed page number (default 1). An unrecognized/blocked query returns an upstream error rather than an empty result.",
- "operationId": "homedepot-search",
+ "description": "Returns Jimmy John's restaurants within a radius of a coordinate, nearest first, using Jimmy John's own Olo-backed ordering API (a separate host from the locator this family's sitemap and store endpoints read). Each result carries restaurant_id -- pass it to GET /jimmy-johns/menu for that restaurant's full menu. The upstream's own radius parameter does not narrow its result set, so distance filtering and sorting happen here.",
+ "operationId": "jimmy-johns-nearby",
"parameters": [
{
- "description": "Free-text search keywords, e.g. \\",
+ "description": "Search center latitude",
"in": "query",
- "name": "q",
+ "name": "latitude",
"required": true,
- "type": "string",
- "x-example": "impact driver"
+ "type": "number",
+ "x-example": 39.9612
},
{
- "description": "1-indexed page number, default 1",
+ "description": "Search center longitude",
"in": "query",
- "name": "page",
+ "name": "longitude",
+ "required": true,
+ "type": "number",
+ "x-example": -82.9988
+ },
+ {
+ "description": "Search radius in miles, 1-100 (default 15)",
+ "in": "query",
+ "name": "radius",
"type": "integer",
- "x-example": 1
+ "x-example": 15
+ },
+ {
+ "description": "Maximum restaurants to return, 1-50 (default 10)",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -290967,7 +320687,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/homedepot.searchResponseDoc"
+ "$ref": "#/definitions/jimmyjohns.nearbyResponseDoc"
}
},
"400": {
@@ -290994,81 +320714,52 @@
"ApiKeyAuth": []
}
],
- "summary": "Home Depot keyword search",
+ "summary": "Find Jimmy John's restaurants near a coordinate",
"tags": [
- "Home Depot"
+ "JimmyJohns"
]
}
},
- "/homedepot/suggest": {
+ "/jimmy-johns/sitemap": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns Home Depot's own search-box typeahead suggestions for a partial query, in the site's own ranking order. term is the partial search text, e.g. \"drill\". Each suggestion's term is directly usable as GET /homedepot/search's q parameter. A term that matches nothing returns an empty suggestion list rather than an error.",
- "operationId": "homedepot-suggest",
+ "description": "Returns one page of Jimmy John's sitemap-declared store index -- 9,700+ URLs at time of writing. Jimmy John's publishes three page variants per store (sandwiches, delivery, catering) and all three appear in the sitemap, so each entry carries a kind and the store number they share; filter with the kind parameter to enumerate one variant per restaurant. `sandwiches` is the canonical variant. A page past the end returns an empty list rather than an error, so a caller can walk to exhaustion.",
+ "operationId": "jimmy-johns-sitemap",
"parameters": [
{
- "description": "Partial search text, e.g. \\",
+ "description": "Sitemap shard index (default 0)",
"in": "query",
- "name": "term",
- "required": true,
- "type": "string",
- "x-example": "drill"
- }
- ],
- "produces": [
- "application/json"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/homedepot.suggestResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ "name": "shard",
+ "type": "integer",
+ "x-example": 0
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
+ {
+ "description": "1-based page within the shard (default 1)",
+ "in": "query",
+ "name": "page",
+ "type": "integer",
+ "x-example": 1
},
- "503": {
- "description": "Service Unavailable",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- }
- },
- "security": [
{
- "ApiKeyAuth": []
- }
- ],
- "summary": "Home Depot search suggestions",
- "tags": [
- "Home Depot"
- ]
- }
- },
- "/hotels/autocomplete": {
- "get": {
- "description": "Returns anonymous Hotels.com search-box suggestions for a partial destination or property name. Availability and prices are not included.",
- "operationId": "hotels-autocomplete",
- "parameters": [
+ "description": "Entries per page, 1-500 (default 100)",
+ "in": "query",
+ "name": "page_size",
+ "type": "integer",
+ "x-example": 100
+ },
{
- "description": "Partial destination or property name",
+ "description": "Filter by page variant. One of sandwiches, delivery, catering. Default all.",
+ "enum": [
+ "sandwiches",
+ "delivery",
+ "catering"
+ ],
"in": "query",
- "name": "q",
- "required": true,
+ "name": "kind",
"type": "string",
- "x-example": "New York"
+ "x-example": "sandwiches"
}
],
"produces": [
@@ -291078,7 +320769,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hotels.autocompleteResponseDoc"
+ "$ref": "#/definitions/jimmyjohns.sitemapResponseDoc"
}
},
"400": {
@@ -291087,14 +320778,14 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -291111,28 +320802,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Hotels.com destination suggestions",
+ "summary": "Browse Jimmy John's store-URL index",
"tags": [
- "Hotels.com"
+ "JimmyJohns"
]
}
},
- "/hotels/offers": {
- "post": {
+ "/jimmy-johns/store": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Returns the public room/unit offer summaries shown for one Hotels.com property and date range, including room labels and non-transactional offer messages. Booking, checkout, payment, and reservation tokens are never returned. property_id is the numeric global property id from a Search response.",
- "operationId": "hotels-offers",
+ "description": "Returns one Jimmy John's store: name, postal address, phone, coordinates, cuisine description and the published week of opening hours. Store paths come from GET /jimmy-johns/sitemap. Note Jimmy John's main site is behind a bot challenge that serves a page with HTTP 200, so this family reads the separate locator subdomain instead. For menu data, see GET /jimmy-johns/nearby and GET /jimmy-johns/menu, which read a separate ordering API.",
+ "operationId": "jimmy-johns-store",
"parameters": [
{
- "description": "Room offers request",
- "in": "body",
- "name": "request",
+ "description": "Store path from a /jimmy-johns/sitemap entry",
+ "in": "query",
+ "name": "path",
"required": true,
- "schema": {
- "$ref": "#/definitions/hotels.OffersOption"
- }
+ "type": "string",
+ "x-example": "in/columbus/sandwiches-1414.html"
}
],
"produces": [
@@ -291142,7 +320832,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hotels.offersResponseDoc"
+ "$ref": "#/definitions/jimmyjohns.storeResponseDoc"
}
},
"400": {
@@ -291163,12 +320853,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -291181,28 +320865,33 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Hotels.com room offers",
+ "summary": "Get one Jimmy John's store's detail",
"tags": [
- "Hotels.com"
+ "JimmyJohns"
]
}
},
- "/hotels/property": {
- "post": {
+ "/jobs/ashby/board": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Returns public static metadata from one canonical Hotels.com property page, including name, address, rating, images, and amenities. Date-bound availability, prices, booking, and review content are excluded.",
- "operationId": "hotels-property",
+ "description": "Lists an organization's public Ashby board postings with inline detail (description, compensation when include_compensation=true). The org is the Ashby slug from its careers URL. An unknown org returns an empty board (Ashby does not 404). Credential-free public ATS JSON.",
+ "operationId": "jobs-ashby-board",
"parameters": [
{
- "description": "Canonical Hotels.com property URL",
- "in": "body",
- "name": "request",
+ "description": "Ashby org slug (careers URL)",
+ "in": "query",
+ "name": "org",
"required": true,
- "schema": {
- "$ref": "#/definitions/hotels.PropertyOption"
- }
+ "type": "string",
+ "x-example": "openai"
+ },
+ {
+ "description": "Include compensation summary",
+ "in": "query",
+ "name": "include_compensation",
+ "type": "boolean"
}
],
"produces": [
@@ -291212,7 +320901,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hotels.propertyResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -291221,18 +320910,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -291245,28 +320922,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Hotels.com property details",
+ "summary": "List an organization's Ashby job board",
"tags": [
- "Hotels.com"
+ "Jobs"
]
}
},
- "/hotels/rates": {
- "post": {
+ "/jobs/company-search": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Returns one Hotels.com property's date-bound rates and availability: the same normalized property card Search returns, with the live per-night and per-stay prices Hotels.com shows for the requested dates. property_id is the numeric global property id from a Search response's properties[].id; it is distinct from the legacy /ho/ URL id.",
- "operationId": "hotels-rates",
+ "description": "Probes Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Recruitee, Rippling, Teamtailor, and Pinpoint in parallel for a slug and reports the providers where it resolves to a non-empty board (with the open-role count and board URL). Workday is excluded (its board needs tenant + datacenter + site). Credential-free public ATS JSON.",
+ "operationId": "jobs-company-search",
"parameters": [
{
- "description": "Rates request",
- "in": "body",
- "name": "request",
+ "description": "Company careers slug to probe",
+ "in": "query",
+ "name": "slug",
"required": true,
- "schema": {
- "$ref": "#/definitions/hotels.RatesOption"
- }
+ "type": "string",
+ "x-example": "stripe"
}
],
"produces": [
@@ -291274,31 +320950,13 @@
],
"responses": {
"200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/hotels.ratesResponseDoc"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
+ "description": "OK",
"schema": {
- "$ref": "#/definitions/app.Response"
+ "$ref": "#/definitions/jobs.searchResponseDoc"
}
},
- "500": {
- "description": "Internal Server Error",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -291315,28 +320973,59 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Hotels.com rates for one property",
+ "summary": "Find which ATS a company uses by slug",
"tags": [
- "Hotels.com"
+ "Jobs"
]
}
},
- "/hotels/reviews": {
- "post": {
+ "/jobs/eightfold/board": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Returns one Hotels.com property's review overview: the overall rating (0-10) with its descriptive label, the per-category sub-ratings (cleanliness, service, amenities, and so on), and a bounded set of highlighted guest reviews with reviewer, date, rating label, text, and verified-stay flag. property_id is the numeric global property id from a Search response's properties[].id. This mirrors the property page's Guest reviews section; the full paginated review archive is not exposed.",
- "operationId": "hotels-reviews",
+ "description": "Lists a company's public Eightfold AI job board, paged via limit/offset. tenant is the {tenant}.eightfold.ai subdomain from the careers URL; domain is the hiring organization's own domain (e.g. microsoft.com), also visible on the tenant's careers page. Tries the newer PCSX search first, falling back to the legacy SmartApply generation when PCSX is not enabled for the tenant. Credential-free public ATS JSON.",
+ "operationId": "jobs-eightfold-board",
"parameters": [
{
- "description": "Reviews request",
- "in": "body",
- "name": "request",
+ "description": "Eightfold tenant subdomain (careers URL)",
+ "in": "query",
+ "name": "tenant",
"required": true,
- "schema": {
- "$ref": "#/definitions/hotels.ReviewsOption"
- }
+ "type": "string",
+ "x-example": "microsoft"
+ },
+ {
+ "description": "Hiring organization domain",
+ "in": "query",
+ "name": "domain",
+ "required": true,
+ "type": "string",
+ "x-example": "microsoft.com"
+ },
+ {
+ "description": "Free-text search",
+ "in": "query",
+ "name": "query",
+ "type": "string"
+ },
+ {
+ "description": "Filter: location contains",
+ "in": "query",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "description": "Page size, default 10, max 10 (upstream caps results per page regardless of a larger value)",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Page offset, default 0",
+ "in": "query",
+ "name": "offset",
+ "type": "integer"
}
],
"produces": [
@@ -291346,7 +321035,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hotels.reviewsResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -291355,24 +321044,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -291385,28 +321056,43 @@
"ApiKeyAuth": []
}
],
- "summary": "Get Hotels.com guest reviews",
+ "summary": "List an Eightfold tenant's job board",
"tags": [
- "Hotels.com"
+ "Jobs"
]
}
},
- "/hotels/reviews/archive": {
- "post": {
+ "/jobs/eightfold/job": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Returns one page of public guest reviews for a Hotels.com property, including reviewer, date, traveler type, rating label, title, and message. Use page and page_size to walk the archive; the response reports whether another page is available. property_id is the numeric global property id from a Search response's properties[].id. Booking, account, and private review data are not included.",
- "operationId": "hotels-reviews-archive",
+ "description": "Returns a single Eightfold position with its full HTML/text description. id is the position id from a board listing; tenant/domain as in the board endpoint. Tries the newer PCSX detail first, falling back to the legacy SmartApply detail generation. Credential-free public ATS JSON.",
+ "operationId": "jobs-eightfold-job",
"parameters": [
{
- "description": "Review archive request",
- "in": "body",
- "name": "request",
+ "description": "Eightfold tenant subdomain",
+ "in": "query",
+ "name": "tenant",
"required": true,
- "schema": {
- "$ref": "#/definitions/hotels.ReviewsArchiveOption"
- }
+ "type": "string",
+ "x-example": "microsoft"
+ },
+ {
+ "description": "Hiring organization domain",
+ "in": "query",
+ "name": "domain",
+ "required": true,
+ "type": "string",
+ "x-example": "microsoft.com"
+ },
+ {
+ "description": "Eightfold position id from a board listing",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "1970393556928891"
}
],
"produces": [
@@ -291416,7 +321102,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hotels.reviewsArchiveResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
"400": {
@@ -291431,18 +321117,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -291455,28 +321129,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List Hotels.com guest reviews",
+ "summary": "Get a single Eightfold position",
"tags": [
- "Hotels.com"
+ "Jobs"
]
}
},
- "/hotels/search": {
- "post": {
+ "/jobs/gem/board": {
+ "get": {
"consumes": [
"application/json"
],
- "description": "Returns a page of date-bound Hotels.com hotel search results for either a free-text destination or a numeric Hotels.com region_id: normalized property cards with per-night and per-stay prices, review score and count, location, thumbnail, amenities, and promotional badges. Provide exactly one of query or region_id; region_id skips destination typeahead resolution. Prices are the live rates Hotels.com shows for the requested check-in and check-out dates.",
- "operationId": "hotels-search",
+ "description": "Lists a company's public Gem (gem.com) board postings with inline detail (full HTML description, and compensation when the company publishes a pay range). The company is the Gem vanity URL slug from its careers URL. Credential-free public GraphQL.",
+ "operationId": "jobs-gem-board",
"parameters": [
{
- "description": "Search request",
- "in": "body",
- "name": "request",
+ "description": "Gem vanity URL slug (careers URL)",
+ "in": "query",
+ "name": "company",
"required": true,
- "schema": {
- "$ref": "#/definitions/hotels.SearchOption"
- }
+ "type": "string",
+ "x-example": "agora"
}
],
"produces": [
@@ -291486,7 +321159,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/hotels.searchResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -291501,18 +321174,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -291525,16 +321186,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Hotels.com hotels",
+ "summary": "List a company's Gem job board",
"tags": [
- "Hotels.com"
+ "Jobs"
]
}
},
- "/howtogeek/news": {
+ "/jobs/greenhouse/board": {
"get": {
- "description": "Returns current stories from How-To Geek's public RSS feed. Summaries are publisher teasers, not full article text. This feed-only route does not claim a complete section taxonomy or retrieve article bodies.",
- "operationId": "howtogeek-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists a company's public Greenhouse board postings, normalized to the shared Job shape. Set content=true to include each job's full HTML description in one call. The token is the company's Greenhouse board slug from its careers URL. Credential-free public ATS JSON.",
+ "operationId": "jobs-greenhouse-board",
+ "parameters": [
+ {
+ "description": "Greenhouse board token (careers URL slug)",
+ "in": "query",
+ "name": "token",
+ "required": true,
+ "type": "string",
+ "x-example": "stripe"
+ },
+ {
+ "description": "Include full HTML description per job",
+ "in": "query",
+ "name": "content",
+ "type": "boolean"
+ }
+ ],
"produces": [
"application/json"
],
@@ -291542,11 +321222,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -291563,24 +321249,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get How-To Geek top stories",
+ "summary": "List a company's Greenhouse job board",
"tags": [
- "How-To Geek"
+ "Jobs"
]
}
},
- "/huffpost/article": {
+ "/jobs/greenhouse/job": {
"get": {
- "description": "Returns public HuffPost article metadata and body paragraphs from a canonical article URL.",
- "operationId": "huffpost-article",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a single Greenhouse job with its full HTML/text description, department, and offices. Credential-free public ATS JSON.",
+ "operationId": "jobs-greenhouse-job",
"parameters": [
{
- "description": "Canonical HuffPost article URL",
+ "description": "Greenhouse board token",
"in": "query",
- "name": "url",
+ "name": "token",
"required": true,
"type": "string",
- "x-example": "https://www.huffpost.com/entry/example-story_n_1234567890abcdef12345678"
+ "x-example": "stripe"
+ },
+ {
+ "description": "Greenhouse job id",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "8172508"
}
],
"produces": [
@@ -291590,7 +321287,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
"400": {
@@ -291617,24 +321314,99 @@
"ApiKeyAuth": []
}
],
- "summary": "Get HuffPost article content",
+ "summary": "Get a single Greenhouse job",
"tags": [
- "HuffPost"
+ "Jobs"
]
}
},
- "/huffpost/author": {
+ "/jobs/hiring-signals": {
"get": {
- "description": "Returns one HuffPost author or contributor's public profile: name, job title, headshot, biography, social links, and their recent articles.",
- "operationId": "huffpost-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Aggregates a company's ATS board into a hiring snapshot: total open roles, breakdowns by department/location/title, remote share, and how many roles are new in the last 7/30 days — a leading indicator of company growth. Supply provider plus that provider's slug params (token / company / org / tenant+datacenter+site / domain). Breakdowns are computed over the fetched postings. Credential-free public ATS JSON.",
+ "operationId": "jobs-hiring-signals",
"parameters": [
{
- "description": "Canonical huffpost.com/author/ URL",
+ "description": "ATS provider",
+ "enum": [
+ "greenhouse",
+ "lever",
+ "ashby",
+ "workday",
+ "smartrecruiters",
+ "workable",
+ "recruitee",
+ "rippling",
+ "personio",
+ "teamtailor",
+ "oracle",
+ "ukg",
+ "icims",
+ "eightfold",
+ "gem",
+ "pinpoint"
+ ],
"in": "query",
- "name": "url",
+ "name": "provider",
"required": true,
"type": "string",
- "x-example": "https://www.huffpost.com/author/lee-moran"
+ "x-example": "greenhouse"
+ },
+ {
+ "description": "greenhouse board token",
+ "in": "query",
+ "name": "token",
+ "type": "string"
+ },
+ {
+ "description": "lever / smartrecruiters / workable / recruitee / rippling / personio / teamtailor / gem / pinpoint company slug",
+ "in": "query",
+ "name": "company",
+ "type": "string"
+ },
+ {
+ "description": "ashby org slug",
+ "in": "query",
+ "name": "org",
+ "type": "string"
+ },
+ {
+ "description": "workday / eightfold tenant",
+ "in": "query",
+ "name": "tenant",
+ "type": "string"
+ },
+ {
+ "description": "workday datacenter shard",
+ "in": "query",
+ "name": "datacenter",
+ "type": "string"
+ },
+ {
+ "description": "workday / oracle career site",
+ "in": "query",
+ "name": "site",
+ "type": "string"
+ },
+ {
+ "description": "oracle cloud host (*.oraclecloud.com)",
+ "in": "query",
+ "name": "host",
+ "type": "string"
+ },
+ {
+ "description": "ukg job-board UUID",
+ "in": "query",
+ "name": "board",
+ "type": "string"
+ },
+ {
+ "description": "icims careers domain / eightfold organization domain",
+ "in": "query",
+ "name": "domain",
+ "type": "string"
}
],
"produces": [
@@ -291644,7 +321416,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.huffPostAuthorResponseDoc"
+ "$ref": "#/definitions/jobs.signalsResponseDoc"
}
},
"400": {
@@ -291671,65 +321443,51 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a HuffPost author profile",
+ "summary": "Aggregate hiring signals for a company's board",
"tags": [
- "HuffPost"
+ "Jobs"
]
}
},
- "/huffpost/headlines": {
+ "/jobs/icims/board": {
"get": {
- "description": "Returns fresh headlines from one public HuffPost topic hub.",
- "operationId": "huffpost-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists a company's public iCIMS job board (served through the tenant's white-labeled careers domain, e.g. careers.costco.com — not the bare {company}.icims.com subdomain, which is an OAuth-gated employee portal), paged via page/limit, with the full description inline per job. domain is the tenant's careers domain from its careers URL. Credential-free public ATS JSON.",
+ "operationId": "jobs-icims-board",
"parameters": [
{
- "description": "HuffPost section slug",
- "enum": [
- "news",
- "news/us-news",
- "news/world-news",
- "impact/business",
- "impact/green",
- "section/health",
- "impact/topic/social-justice",
- "news/crime",
- "news/politics",
- "news/topic/us-congress",
- "news/topic/extremism",
- "section/opinion",
- "entertainment",
- "entertainment/arts",
- "news/media",
- "entertainment/celebrity",
- "entertainment/tv",
- "section/sports",
- "life",
- "life/healthy-living",
- "life/travel",
- "life/technology",
- "life/taste",
- "life/style",
- "life/family",
- "life/relationships",
- "life/money",
- "life/huffpost-home",
- "life/worklife",
- "life/huffpost-shopping",
- "voices",
- "voices/black-voices",
- "voices/queer-voices",
- "voices/latino-voices",
- "voices/indigenous-voices",
- "voices/asian-voices",
- "voices/womens-voices",
- "voices/voices-of-disabled-people",
- "section/huffpost-personal",
- "section/video"
- ],
+ "description": "iCIMS tenant careers domain (careers URL)",
"in": "query",
- "name": "section",
+ "name": "domain",
"required": true,
+ "type": "string",
+ "x-example": "careers.costco.com"
+ },
+ {
+ "description": "Free-text keyword search",
+ "in": "query",
+ "name": "keywords",
+ "type": "string"
+ },
+ {
+ "description": "Filter: location contains",
+ "in": "query",
+ "name": "location",
"type": "string"
+ },
+ {
+ "description": "Page number, default 1",
+ "in": "query",
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "description": "Page size, default 20, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
}
],
"produces": [
@@ -291739,7 +321497,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -291760,16 +321518,44 @@
"ApiKeyAuth": []
}
],
- "summary": "Get HuffPost section headlines",
+ "summary": "List an iCIMS tenant's job board",
"tags": [
- "HuffPost"
+ "Jobs"
]
}
},
- "/huffpost/news": {
+ "/jobs/icims/job": {
"get": {
- "description": "Returns fresh HuffPost top stories from its public homepage.",
- "operationId": "huffpost-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a single iCIMS job with its full HTML/text description, department, and benefits. id is the req_id/slug from a board listing; lang defaults to en-us. Credential-free public ATS JSON.",
+ "operationId": "jobs-icims-job",
+ "parameters": [
+ {
+ "description": "iCIMS tenant careers domain",
+ "in": "query",
+ "name": "domain",
+ "required": true,
+ "type": "string",
+ "x-example": "careers.costco.com"
+ },
+ {
+ "description": "iCIMS job req_id/slug from a board listing",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "30341"
+ },
+ {
+ "description": "Language code, default en-us",
+ "in": "query",
+ "name": "lang",
+ "type": "string",
+ "x-example": "en-us"
+ }
+ ],
"produces": [
"application/json"
],
@@ -291777,7 +321563,19 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
}
},
"503": {
@@ -291792,50 +321590,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get HuffPost top stories",
+ "summary": "Get a single iCIMS job",
"tags": [
- "HuffPost"
+ "Jobs"
]
}
},
- "/huffpost/sections": {
+ "/jobs/lever/posting": {
"get": {
- "description": "Returns the live-verified public HuffPost topic-hub inventory used by the headlines endpoint.",
- "operationId": "huffpost-sections",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get HuffPost sections",
- "tags": [
- "HuffPost"
- ]
- }
- },
- "/ign/article": {
- "get": {
- "description": "Returns public IGN article or review metadata and body paragraphs from a canonical article URL. Only canonical https://www.ign.com/articles/ URLs are accepted; wiki, video, and game/movie/TV hub pages return an invalid-parameter error.",
- "operationId": "ign-article",
+ "description": "Returns a single Lever posting with its full HTML/text description. Credential-free public ATS JSON.",
+ "operationId": "jobs-lever-posting",
"parameters": [
{
- "description": "Canonical IGN article or review URL",
+ "description": "Lever company slug",
"in": "query",
- "name": "url",
+ "name": "company",
"required": true,
"type": "string",
- "x-example": "https://www.ign.com/articles/brothers-season-1-review"
+ "x-example": "spotify"
+ },
+ {
+ "description": "Lever posting id",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "2193db3f-77c5-43b8-b030-8f92c9882bf1"
}
],
"produces": [
@@ -291845,7 +321628,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.articleResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
"400": {
@@ -291872,24 +321655,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Get IGN article or review content",
+ "summary": "Get a single Lever posting",
"tags": [
- "IGN"
+ "Jobs"
]
}
},
- "/ign/author": {
+ "/jobs/lever/postings": {
"get": {
- "description": "Returns one IGN author's public profile: name, job title, location, biography, social links, and their recent articles.",
- "operationId": "ign-author",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists a company's public Lever postings (detail is inline), optionally filtered by department, location, or remote. The company is the Lever slug from its careers URL. Credential-free public ATS JSON.",
+ "operationId": "jobs-lever-postings",
"parameters": [
{
- "description": "Canonical www.ign.com/person/ URL",
+ "description": "Lever company slug (careers URL)",
"in": "query",
- "name": "url",
+ "name": "company",
"required": true,
"type": "string",
- "x-example": "https://www.ign.com/person/tomphillipsIGN"
+ "x-example": "spotify"
+ },
+ {
+ "description": "Filter: department contains",
+ "in": "query",
+ "name": "department",
+ "type": "string"
+ },
+ {
+ "description": "Filter: location contains",
+ "in": "query",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "description": "Filter by remote (true or false)",
+ "in": "query",
+ "name": "remote",
+ "type": "boolean"
}
],
"produces": [
@@ -291899,7 +321703,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.ignAuthorResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -291926,37 +321730,53 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an IGN author profile",
+ "summary": "List a company's Lever postings",
"tags": [
- "IGN"
+ "Jobs"
]
}
},
- "/ign/headlines": {
+ "/jobs/oracle/board": {
"get": {
- "description": "Returns fresh IGN headlines from one public section feed.",
- "operationId": "ign-headlines",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists an Oracle Recruiting Cloud tenant's public requisitions, paged via limit/offset. host and site both come from the careers URL https://{host}/hcmUI/CandidateExperience/en/sites/{site}/ (host must be an *.oraclecloud.com hostname; site looks like CX_1). The listing carries a short description; use the single-job endpoint for full detail. Credential-free public ATS JSON.",
+ "operationId": "jobs-oracle-board",
"parameters": [
{
- "description": "IGN section slug",
- "enum": [
- "news",
- "reviews",
- "games",
- "movies",
- "tv",
- "tech",
- "nintendo",
- "playstation",
- "xbox",
- "pc",
- "mobile",
- "comics"
- ],
+ "description": "Oracle Cloud host (careers URL, *.oraclecloud.com)",
"in": "query",
- "name": "section",
+ "name": "host",
+ "required": true,
+ "type": "string",
+ "x-example": "eeho.fa.us2.oraclecloud.com"
+ },
+ {
+ "description": "Oracle career site number",
+ "in": "query",
+ "name": "site",
"required": true,
+ "type": "string",
+ "x-example": "CX_1"
+ },
+ {
+ "description": "Free-text keyword search",
+ "in": "query",
+ "name": "search",
"type": "string"
+ },
+ {
+ "description": "Page size, default 25, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Page offset, default 0",
+ "in": "query",
+ "name": "offset",
+ "type": "integer"
}
],
"produces": [
@@ -291966,7 +321786,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.headlinesResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -291987,16 +321807,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Get IGN section headlines",
+ "summary": "List an Oracle Recruiting (ORC) tenant's job board",
"tags": [
- "IGN"
+ "Jobs"
]
}
},
- "/ign/news": {
+ "/jobs/oracle/job": {
"get": {
- "description": "Returns fresh IGN top stories (gaming and entertainment news) from the public RSS feed.",
- "operationId": "ign-news",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a single Oracle Recruiting requisition with its full HTML/text description (description, responsibilities, qualifications). id is the requisition Id from a board listing; host/site as in the board endpoint. Credential-free public ATS JSON.",
+ "operationId": "jobs-oracle-job",
+ "parameters": [
+ {
+ "description": "Oracle Cloud host (*.oraclecloud.com)",
+ "in": "query",
+ "name": "host",
+ "required": true,
+ "type": "string",
+ "x-example": "eeho.fa.us2.oraclecloud.com"
+ },
+ {
+ "description": "Oracle career site number",
+ "in": "query",
+ "name": "site",
+ "required": true,
+ "type": "string",
+ "x-example": "CX_1"
+ },
+ {
+ "description": "Oracle requisition Id from a board listing",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "331738"
+ }
+ ],
"produces": [
"application/json"
],
@@ -292004,11 +321853,17 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/publicnews.newsResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -292025,57 +321880,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Get IGN top stories",
+ "summary": "Get a single Oracle Recruiting (ORC) requisition",
"tags": [
- "IGN"
+ "Jobs"
]
}
},
- "/ign/sections": {
+ "/jobs/personio/feed": {
"get": {
- "description": "Returns the public IGN section taxonomy used by the headlines endpoint.",
- "operationId": "ign-sections",
- "produces": [
+ "consumes": [
"application/json"
],
- "responses": {
- "200": {
- "description": "OK",
- "schema": {
- "$ref": "#/definitions/publicnews.sectionsResponseDoc"
- }
- }
- },
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "summary": "Get IGN sections",
- "tags": [
- "IGN"
- ]
- }
- },
- "/ikea/availability": {
- "get": {
- "description": "Returns one IKEA item's real-time home-delivery and click-and-collect stock signal for the requested country. item_no is IKEA's own item number.",
- "operationId": "ikea-availability",
+ "description": "Lists a company's public Personio board feed (XML), normalized to the shared Job shape with detail inline, optionally filtered by department, location, or remote. The company is the Personio subdomain from its careers URL https://{company}.jobs.personio.de/. Credential-free public ATS feed.",
+ "operationId": "jobs-personio-feed",
"parameters": [
{
- "description": "IKEA item number",
+ "description": "Personio subdomain (careers URL)",
"in": "query",
- "name": "item_no",
+ "name": "company",
"required": true,
"type": "string",
- "x-example": "80213074"
+ "x-example": "getquin"
},
{
- "default": "us",
- "description": "Lowercase 2-letter IKEA site country code",
+ "description": "Filter: department contains",
"in": "query",
- "name": "country",
+ "name": "department",
+ "type": "string"
+ },
+ {
+ "description": "Filter: location contains",
+ "in": "query",
+ "name": "location",
"type": "string"
+ },
+ {
+ "description": "Filter by remote (true or false)",
+ "in": "query",
+ "name": "remote",
+ "type": "boolean"
}
],
"produces": [
@@ -292085,7 +321928,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ikea.availabilityResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -292100,12 +321943,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -292118,53 +321955,66 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an IKEA item's real-time stock availability",
+ "summary": "List a company's Personio job board",
"tags": [
- "IKEA"
+ "Jobs"
]
}
},
- "/ikea/categories": {
+ "/jobs/phenom/board": {
"get": {
- "description": "Returns a page of IKEA's full category taxonomy, sourced from IKEA's own site navigation data: every top-level department and nested subcategory, with the key each one uses as ikea_category's own category input. key is IKEA's own category key (numeric, e.g. 20649, or a short alphanumeric department code, e.g. st001). parent_key is the immediate parent category's own key (empty for a top-level department); level is depth in the taxonomy tree, starting at 1. q optionally filters by a case-insensitive substring of name.",
- "operationId": "ikea-categories",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches a company's public Phenom People career site (a white-labeled domain such as careers.whataburger.com or jobs.cvshealth.com — Phenom serves the search-results page as server-rendered HTML with the job data embedded inline, not a JSON API, but this is still credential-free public data with no auth, cookie, or session required). domain is the tenant's careers domain from its careers URL. Paged via offset/limit; limit is a best-effort page-size hint some tenants ignore, so count always reflects what actually came back.",
+ "operationId": "jobs-phenom-board",
"parameters": [
{
- "description": "Case-insensitive substring filter on category name",
+ "description": "Phenom tenant careers domain (careers URL)",
"in": "query",
- "name": "q",
+ "name": "domain",
+ "required": true,
"type": "string",
- "x-example": "desk"
+ "x-example": "careers.whataburger.com"
},
{
- "default": "us",
- "description": "Lowercase 2-letter IKEA site country code",
+ "description": "Free-text keyword search",
"in": "query",
- "name": "country",
+ "name": "keywords",
"type": "string"
},
{
- "default": "en",
- "description": "Lowercase 2-letter IKEA site language code",
+ "description": "Filter: location contains",
"in": "query",
- "name": "language",
+ "name": "location",
"type": "string"
},
{
- "default": 1,
- "description": "1-based page number",
+ "description": "Filter: category contains",
"in": "query",
- "minimum": 1,
- "name": "page",
+ "name": "category",
+ "type": "string"
+ },
+ {
+ "description": "Sort order, default relevant",
+ "enum": [
+ "relevant",
+ "recent"
+ ],
+ "in": "query",
+ "name": "sort",
+ "type": "string"
+ },
+ {
+ "description": "Page offset, default 0",
+ "in": "query",
+ "name": "offset",
"type": "integer"
},
{
- "default": 100,
- "description": "Result count per page (1-1000)",
+ "description": "Page size hint, default 10, max 100 (some tenants ignore this and return their own configured page size regardless)",
"in": "query",
- "maximum": 1000,
- "minimum": 1,
- "name": "page_size",
+ "name": "limit",
"type": "integer"
}
],
@@ -292175,7 +322025,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ikea.categoriesResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -292184,12 +322034,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -292202,76 +322046,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Discover IKEA category keys",
+ "summary": "Search a Phenom People tenant's job board",
"tags": [
- "IKEA"
+ "Jobs"
]
}
},
- "/ikea/category": {
+ "/jobs/phenom/job": {
"get": {
- "description": "Returns one page of an IKEA category's product listing, with real offset/size pagination and sort. category is IKEA's own category key (e.g. 20649), taken from a category URL's trailing -{key}/ segment, a product's own category_path field, or GET /ikea/categories, which discovers every valid category value.",
- "operationId": "ikea-category",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a single Phenom People job with its full HTML/text description, category, and apply URL. domain is the tenant's careers domain (as in the board endpoint); id is the jobId/reqId from a board listing (e.g. JR10002958).",
+ "operationId": "jobs-phenom-job",
"parameters": [
{
- "description": "IKEA category key",
+ "description": "Phenom tenant careers domain",
"in": "query",
- "name": "category",
+ "name": "domain",
"required": true,
"type": "string",
- "x-example": "20649"
- },
- {
- "default": "us",
- "description": "Lowercase 2-letter IKEA site country code",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "default": "en",
- "description": "Lowercase 2-letter IKEA site language code",
- "in": "query",
- "name": "language",
- "type": "string"
- },
- {
- "default": 0,
- "description": "Zero-based result offset",
- "in": "query",
- "maximum": 9999,
- "minimum": 0,
- "name": "offset",
- "type": "integer"
- },
- {
- "default": 24,
- "description": "Result count (1-100)",
- "in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "size",
- "type": "integer"
+ "x-example": "careers.whataburger.com"
},
{
- "default": "relevance",
- "description": "Result order",
- "enum": [
- "relevance",
- "price-low",
- "price-high",
- "newest",
- "rating",
- "name",
- "popular",
- "width",
- "height",
- "depth",
- "length"
- ],
+ "description": "Phenom job id from a board listing",
"in": "query",
- "name": "sort",
- "type": "string"
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "JR10002958"
}
],
"produces": [
@@ -292281,7 +322084,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ikea.categoryResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
"400": {
@@ -292296,12 +322099,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -292314,38 +322111,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Browse an IKEA category",
+ "summary": "Get a single Phenom People job",
"tags": [
- "IKEA"
+ "Jobs"
]
}
},
- "/ikea/product": {
+ "/jobs/pinpoint/board": {
"get": {
- "description": "Returns one IKEA item's full normalized detail: name, price, rating, every product image, quick facts, and category breadcrumb path. item_no is IKEA's own item number (8 digits, optionally prefixed with \"s\" for a combination/set article), taken from a search result's item_no field or an ikea.com product page's own URL.",
- "operationId": "ikea-product",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists a tenant's public Pinpoint (pinpointhq.com) board postings with inline detail (full HTML description, key responsibilities, skills, and benefits, plus structured compensation when the tenant publishes a pay range). The company is the tenant subdomain from its careers URL https://{company}.pinpointhq.com/. Credential-free public JSON.",
+ "operationId": "jobs-pinpoint-board",
"parameters": [
{
- "description": "IKEA item number",
+ "description": "Pinpoint tenant subdomain (careers URL)",
"in": "query",
- "name": "item_no",
+ "name": "company",
"required": true,
"type": "string",
- "x-example": "80213074"
- },
- {
- "default": "us",
- "description": "Lowercase 2-letter IKEA site country code",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "default": "en",
- "description": "Lowercase 2-letter IKEA site language code",
- "in": "query",
- "name": "language",
- "type": "string"
+ "x-example": "workwithus"
}
],
"produces": [
@@ -292355,7 +322141,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ikea.productResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -292370,12 +322156,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -292388,38 +322168,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an IKEA product's detail",
+ "summary": "List a tenant's Pinpoint job board",
"tags": [
- "IKEA"
+ "Jobs"
]
}
},
- "/ikea/reviews": {
+ "/jobs/recruitee/offer": {
"get": {
- "description": "Returns one IKEA item's own highlighted customer reviews (title, rating, text, author) plus its aggregate rating, sourced from the product page's own curated reviews carousel. This is a small, representative set of reviews (a handful per item), not the full paginated review list.",
- "operationId": "ikea-reviews",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a single Recruitee offer with its full HTML/text description and structured compensation when the board exposes it. Credential-free public ATS JSON.",
+ "operationId": "jobs-recruitee-offer",
"parameters": [
{
- "description": "IKEA item number",
+ "description": "Recruitee subdomain",
"in": "query",
- "name": "item_no",
+ "name": "company",
"required": true,
"type": "string",
- "x-example": "80213074"
- },
- {
- "default": "us",
- "description": "Lowercase 2-letter IKEA site country code",
- "in": "query",
- "name": "country",
- "type": "string"
+ "x-example": "bunq"
},
{
- "default": "en",
- "description": "Lowercase 2-letter IKEA site language code",
+ "description": "Recruitee offer id",
"in": "query",
- "name": "language",
- "type": "string"
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "2679762"
}
],
"produces": [
@@ -292429,7 +322206,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ikea.reviewsResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
"400": {
@@ -292444,12 +322221,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -292462,47 +322233,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an IKEA item's highlighted customer reviews",
+ "summary": "Get a single Recruitee offer",
"tags": [
- "IKEA"
+ "Jobs"
]
}
},
- "/ikea/search": {
+ "/jobs/recruitee/offers": {
"get": {
- "description": "Searches IKEA products and returns normalized name, price, rating, images, colors, and variant data. q is a free-text query; an IKEA item number also resolves as its own single result. country and language select IKEA's per-country site (default us/en). A zero total with an empty products list is a valid no-results response.",
- "operationId": "ikea-search",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists a company's public Recruitee offers (detail is inline), optionally filtered by department, location, or remote. The company is the Recruitee subdomain from its careers URL https://{company}.recruitee.com/. Credential-free public ATS JSON.",
+ "operationId": "jobs-recruitee-offers",
"parameters": [
{
- "description": "Free-text product search query",
+ "description": "Recruitee subdomain (careers URL)",
"in": "query",
- "name": "q",
+ "name": "company",
"required": true,
"type": "string",
- "x-example": "desk"
+ "x-example": "bunq"
},
{
- "default": "us",
- "description": "Lowercase 2-letter IKEA site country code",
+ "description": "Filter: department contains",
"in": "query",
- "name": "country",
+ "name": "department",
"type": "string"
},
{
- "default": "en",
- "description": "Lowercase 2-letter IKEA site language code",
+ "description": "Filter: location contains",
"in": "query",
- "name": "language",
+ "name": "location",
"type": "string"
},
{
- "default": 24,
- "description": "Result count (1-100)",
+ "description": "Filter by remote (true or false)",
"in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "size",
- "type": "integer"
+ "name": "remote",
+ "type": "boolean"
}
],
"produces": [
@@ -292512,7 +322281,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ikea.searchResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -292521,8 +322290,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -292539,38 +322308,45 @@
"ApiKeyAuth": []
}
],
- "summary": "Search IKEA products",
+ "summary": "List a company's Recruitee offers",
"tags": [
- "IKEA"
+ "Jobs"
]
}
},
- "/ikea/store": {
+ "/jobs/rippling/board": {
"get": {
- "description": "Returns one IKEA physical location's full detail: address, geo coordinates, opening hours, and price range. slug is IKEA's own store URL slug, taken from an ikea_stores result's own slug field. Geo, hours, and price range are only present for full/small stores; order points and pick-up-only points return address only.",
- "operationId": "ikea-store",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Lists a company's public Rippling board postings (thin listing — title, department, work location). The company is the Rippling board slug from its careers URL https://ats.rippling.com/{company}/jobs. Detail (full description, employment type) is fetched per job via the single-job endpoint. Credential-free public ATS JSON.",
+ "operationId": "jobs-rippling-board",
"parameters": [
{
- "description": "IKEA store URL slug",
+ "description": "Rippling board slug (careers URL)",
"in": "query",
- "name": "slug",
+ "name": "company",
"required": true,
"type": "string",
- "x-example": "burbank"
+ "x-example": "rippling"
},
{
- "default": "us",
- "description": "Lowercase 2-letter IKEA site country code",
+ "description": "Filter: department contains",
"in": "query",
- "name": "country",
+ "name": "department",
"type": "string"
},
{
- "default": "en",
- "description": "Lowercase 2-letter IKEA site language code",
+ "description": "Filter: location contains",
"in": "query",
- "name": "language",
+ "name": "location",
"type": "string"
+ },
+ {
+ "description": "Filter by remote (true or false)",
+ "in": "query",
+ "name": "remote",
+ "type": "boolean"
}
],
"produces": [
@@ -292580,7 +322356,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ikea.storeResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -292595,12 +322371,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -292613,30 +322383,35 @@
"ApiKeyAuth": []
}
],
- "summary": "Get an IKEA store's detail",
+ "summary": "List a company's Rippling job board",
"tags": [
- "IKEA"
+ "Jobs"
]
}
},
- "/ikea/stores": {
+ "/jobs/rippling/job": {
"get": {
- "description": "Returns IKEA's own directory of physical locations for the requested country: name, URL slug, region grouping, and location type (Store, Small store, Plan & order point with pick-up, etc). Each slug is usable directly as ikea_store's own slug input.",
- "operationId": "ikea-stores",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a single Rippling job with its full HTML/text description, employment type, and work locations. The id is the job uuid from a listing. Credential-free public ATS JSON.",
+ "operationId": "jobs-rippling-job",
"parameters": [
{
- "default": "us",
- "description": "Lowercase 2-letter IKEA site country code",
+ "description": "Rippling board slug",
"in": "query",
- "name": "country",
- "type": "string"
+ "name": "company",
+ "required": true,
+ "type": "string",
+ "x-example": "rippling"
},
{
- "default": "en",
- "description": "Lowercase 2-letter IKEA site language code",
+ "description": "Rippling job uuid",
"in": "query",
- "name": "language",
- "type": "string"
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "2f0674e6-f01f-4ecd-b459-e947241c211f"
}
],
"produces": [
@@ -292646,7 +322421,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ikea.storesResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
"400": {
@@ -292655,8 +322430,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -292673,47 +322448,35 @@
"ApiKeyAuth": []
}
],
- "summary": "List IKEA physical store locations",
+ "summary": "Get a single Rippling job",
"tags": [
- "IKEA"
+ "Jobs"
]
}
},
- "/ikea/suggest": {
+ "/jobs/smartrecruiters/posting": {
"get": {
- "description": "Returns IKEA's own search-box typeahead result for a partial or full query: suggested query completions with their own match counts, plus a small number of top matching products. A query with no matches returns a clean empty response.",
- "operationId": "ikea-suggest",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns a single SmartRecruiters posting with its jobAd description. Recruiter personal data is intentionally omitted. Credential-free public ATS JSON.",
+ "operationId": "jobs-smartrecruiters-posting",
"parameters": [
{
- "description": "Partial or full search term",
+ "description": "SmartRecruiters company id",
"in": "query",
- "name": "q",
+ "name": "company",
"required": true,
"type": "string",
- "x-example": "des"
- },
- {
- "default": "us",
- "description": "Lowercase 2-letter IKEA site country code",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "default": "en",
- "description": "Lowercase 2-letter IKEA site language code",
- "in": "query",
- "name": "language",
- "type": "string"
+ "x-example": "Visa"
},
{
- "default": 5,
- "description": "Top-product count (1-20)",
+ "description": "SmartRecruiters posting id",
"in": "query",
- "maximum": 20,
- "minimum": 1,
- "name": "size",
- "type": "integer"
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "744000133907678"
}
],
"produces": [
@@ -292723,7 +322486,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ikea.suggestResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
"400": {
@@ -292732,8 +322495,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -292750,41 +322513,39 @@
"ApiKeyAuth": []
}
],
- "summary": "Get IKEA search-box typeahead suggestions",
+ "summary": "Get a single SmartRecruiters posting",
"tags": [
- "IKEA"
+ "Jobs"
]
}
},
- "/imdb/charts": {
+ "/jobs/smartrecruiters/postings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized rows from public IMDb title charts. Chart values: `top_rated_movies`, `top_rated_tv_shows`, `most_popular_movies`, `most_popular_tv_shows`, `top_rated_english_movies`, `lowest_rated_movies`.",
- "operationId": "imdb-charts",
+ "description": "Lists a company's public SmartRecruiters postings, paged via limit/offset. The company is the SmartRecruiters identifier from its careers URL. Credential-free public ATS JSON.",
+ "operationId": "jobs-smartrecruiters-postings",
"parameters": [
{
- "default": "top_rated_movies",
- "description": "IMDb chart",
- "enum": [
- "top_rated_movies",
- "top_rated_tv_shows",
- "most_popular_movies",
- "most_popular_tv_shows",
- "top_rated_english_movies",
- "lowest_rated_movies"
- ],
+ "description": "SmartRecruiters company id (careers URL)",
"in": "query",
- "name": "chart",
- "type": "string"
+ "name": "company",
+ "required": true,
+ "type": "string",
+ "x-example": "Visa"
},
{
- "default": 25,
- "description": "Rows to return, default 25, max 250",
+ "description": "Page size, default 100, max 100",
"in": "query",
"name": "limit",
"type": "integer"
+ },
+ {
+ "description": "Page offset, default 0",
+ "in": "query",
+ "name": "offset",
+ "type": "integer"
}
],
"produces": [
@@ -292794,7 +322555,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.chartsResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -292803,20 +322564,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "401": {
- "description": "Unauthorized",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -292833,19 +322582,47 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title charts",
+ "summary": "List a company's SmartRecruiters postings",
"tags": [
- "IMDb"
+ "Jobs"
]
}
},
- "/imdb/image-types": {
+ "/jobs/teamtailor/jobs": {
"get": {
"consumes": [
"application/json"
],
- "description": "Lists every value the `type` parameter of the IMDb image endpoints accepts: `behind_the_scenes`, `event`, `poster`, `product`, `production_art`, `publicity`, `still_frame`, `unknown`. Each row carries a display label and a short description.",
- "operationId": "imdb-image-types",
+ "description": "Lists a company's public Teamtailor board feed (JSON Feed), normalized to the shared Job shape with detail inline, optionally filtered by department, location, or remote. The company is the Teamtailor subdomain from its careers URL https://{company}.teamtailor.com/. Credential-free public ATS feed.",
+ "operationId": "jobs-teamtailor-jobs",
+ "parameters": [
+ {
+ "description": "Teamtailor subdomain (careers URL)",
+ "in": "query",
+ "name": "company",
+ "required": true,
+ "type": "string",
+ "x-example": "oatly"
+ },
+ {
+ "description": "Filter: department contains",
+ "in": "query",
+ "name": "department",
+ "type": "string"
+ },
+ {
+ "description": "Filter: location contains",
+ "in": "query",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "description": "Filter by remote (true or false)",
+ "in": "query",
+ "name": "remote",
+ "type": "boolean"
+ }
+ ],
"produces": [
"application/json"
],
@@ -292853,17 +322630,23 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.imageTypesResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
- "429": {
- "description": "Too Many Requests",
+ "400": {
+ "description": "Bad Request",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -292874,33 +322657,53 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb image types",
+ "summary": "List a company's Teamtailor job board",
"tags": [
- "IMDb"
+ "Jobs"
]
}
},
- "/imdb/name": {
+ "/jobs/ukg/board": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb person metadata and known-for rows. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-name",
+ "description": "Lists a UKG Pro Recruiting (formerly UltiPro) tenant's public opportunities, paged via limit/offset. tenant and board both come from the careers URL https://recruiting.ultipro.com/{tenant}/JobBoard/{board}. Each posting carries a brief description inline (UKG's full detail page is HTML, not JSON). Credential-free public ATS JSON.",
+ "operationId": "jobs-ukg-board",
"parameters": [
{
- "description": "IMDb name id",
+ "description": "UKG tenant code (careers URL)",
"in": "query",
- "name": "id",
+ "name": "tenant",
+ "required": true,
"type": "string",
- "x-example": "nm0634240"
+ "x-example": "BUI1004BMDI"
},
{
- "description": "Absolute https://www.imdb.com/name// URL",
+ "description": "UKG job-board UUID (careers URL)",
"in": "query",
- "name": "url",
+ "name": "board",
+ "required": true,
"type": "string",
- "x-example": "https://www.imdb.com/name/nm0634240/"
+ "x-example": "6b442184-52a5-4635-8db5-5aa4bed2a563"
+ },
+ {
+ "description": "Free-text keyword search",
+ "in": "query",
+ "name": "search",
+ "type": "string"
+ },
+ {
+ "description": "Page size, default 25, max 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer"
+ },
+ {
+ "description": "Page offset, default 0",
+ "in": "query",
+ "name": "offset",
+ "type": "integer"
}
],
"produces": [
@@ -292910,7 +322713,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.nameResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -292919,24 +322722,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -292949,33 +322734,35 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb name detail",
+ "summary": "List a UKG Pro Recruiting tenant's job board",
"tags": [
- "IMDb"
+ "Jobs"
]
}
},
- "/imdb/name/awards": {
+ "/jobs/workable/posting": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb award rows for a person. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-name-awards",
+ "description": "Returns a single Workable posting with its full HTML/text description. The id is the posting shortcode from a listing. Credential-free public ATS JSON.",
+ "operationId": "jobs-workable-posting",
"parameters": [
{
- "description": "IMDb name id",
+ "description": "Workable account slug",
"in": "query",
- "name": "id",
+ "name": "company",
+ "required": true,
"type": "string",
- "x-example": "nm0634240"
+ "x-example": "zego"
},
{
- "description": "Absolute https://www.imdb.com/name// URL",
+ "description": "Workable posting shortcode",
"in": "query",
- "name": "url",
+ "name": "id",
+ "required": true,
"type": "string",
- "x-example": "https://www.imdb.com/name/nm0634240/"
+ "x-example": "DBB0F9D146"
}
],
"produces": [
@@ -292985,7 +322772,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.nameAwardsResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
"400": {
@@ -293000,18 +322787,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293024,33 +322799,51 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb name awards",
+ "summary": "Get a single Workable posting",
"tags": [
- "IMDb"
+ "Jobs"
]
}
},
- "/imdb/name/credits": {
+ "/jobs/workable/postings": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb filmography sections for a person. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-name-credits",
+ "description": "Lists a company's public Workable postings, normalized to the shared Job shape, optionally filtered by department, location, or remote. The company is the Workable account slug from its careers URL https://apply.workable.com/{company}/. Detail (full description) is fetched per job via the single-posting endpoint. Credential-free public ATS JSON.",
+ "operationId": "jobs-workable-postings",
"parameters": [
{
- "description": "IMDb name id",
+ "description": "Workable account slug (careers URL)",
"in": "query",
- "name": "id",
+ "name": "company",
+ "required": true,
"type": "string",
- "x-example": "nm0634240"
+ "x-example": "zego"
},
{
- "description": "Absolute https://www.imdb.com/name// URL",
+ "description": "Free-text search",
"in": "query",
- "name": "url",
- "type": "string",
- "x-example": "https://www.imdb.com/name/nm0634240/"
+ "name": "search",
+ "type": "string"
+ },
+ {
+ "description": "Filter: department contains",
+ "in": "query",
+ "name": "department",
+ "type": "string"
+ },
+ {
+ "description": "Filter: location contains",
+ "in": "query",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "description": "Filter by remote (true or false)",
+ "in": "query",
+ "name": "remote",
+ "type": "boolean"
}
],
"produces": [
@@ -293060,7 +322853,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.nameCreditsResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -293075,18 +322868,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293099,57 +322880,61 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb name credits",
+ "summary": "List a company's Workable postings",
"tags": [
- "IMDb"
+ "Jobs"
]
}
},
- "/imdb/name/images": {
+ "/jobs/workday/board": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns image metadata from a person's media index, including the original image URL, dimensions, caption and credited people. Filter by image type with `type`, which accepts a single value or a comma-separated list of: `behind_the_scenes`, `event`, `poster`, `product`, `production_art`, `publicity`, `still_frame`, `unknown`. Omit `type` to return every type. Limit defaults to 50 and clamps to 1000. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-name-images",
+ "description": "Lists a company's public Workday (CXS) postings, paged via limit/offset. tenant, datacenter (wd1/wd3/wd5/...), and site all come from the careers URL https://{tenant}.wd5.myworkdayjobs.com/{site}. Credential-free public ATS JSON.",
+ "operationId": "jobs-workday-board",
"parameters": [
{
- "description": "IMDb name id",
+ "description": "Workday tenant",
"in": "query",
- "name": "id",
+ "name": "tenant",
+ "required": true,
"type": "string",
- "x-example": "nm0000151"
+ "x-example": "nvidia"
},
{
- "description": "Absolute https://www.imdb.com/name// URL",
+ "description": "Workday datacenter shard (wd1, wd3, wd5, ...)",
"in": "query",
- "name": "url",
+ "name": "datacenter",
+ "required": true,
"type": "string",
- "x-example": "https://www.imdb.com/name/nm0000151/"
+ "x-example": "wd5"
},
{
- "description": "Image type filter, single value or comma-separated list",
- "enum": [
- "behind_the_scenes",
- "event",
- "poster",
- "product",
- "production_art",
- "publicity",
- "still_frame",
- "unknown"
- ],
+ "description": "Workday career site",
"in": "query",
- "name": "type",
+ "name": "site",
+ "required": true,
"type": "string",
- "x-example": "still_frame"
+ "x-example": "NVIDIAExternalCareerSite"
},
{
- "description": "Rows to return, default 50, max 1000",
+ "description": "Free-text search",
+ "in": "query",
+ "name": "search",
+ "type": "string"
+ },
+ {
+ "description": "Page size, default 20, max 20",
"in": "query",
"name": "limit",
- "type": "integer",
- "x-example": 50
+ "type": "integer"
+ },
+ {
+ "description": "Page offset, default 0",
+ "in": "query",
+ "name": "offset",
+ "type": "integer"
}
],
"produces": [
@@ -293159,7 +322944,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.nameImagesResponseDoc"
+ "$ref": "#/definitions/jobs.boardResponseDoc"
}
},
"400": {
@@ -293168,24 +322953,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293198,40 +322965,51 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb name images",
+ "summary": "List a Workday tenant's job board",
"tags": [
- "IMDb"
+ "Jobs"
]
}
},
- "/imdb/name/videos": {
+ "/jobs/workday/job": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public person video metadata and thumbnail URLs only; playback URLs and media manifests are never returned. IMDb caps the upstream slice at 100 and provides no usable continuation cursor, so `total` can exceed returned rows and `has_more` reports that condition. Limit defaults to 50 and clamps to 100. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-name-videos",
+ "description": "Returns a single Workday posting's full detail (description, location, req id). path is the externalPath from a board listing. tenant/datacenter/site as in the board endpoint. Credential-free public ATS JSON.",
+ "operationId": "jobs-workday-job",
"parameters": [
{
- "description": "IMDb name id",
+ "description": "Workday tenant",
"in": "query",
- "name": "id",
+ "name": "tenant",
+ "required": true,
"type": "string",
- "x-example": "nm0000151"
+ "x-example": "nvidia"
},
{
- "description": "Absolute https://www.imdb.com/name// URL",
+ "description": "Workday datacenter shard",
"in": "query",
- "name": "url",
+ "name": "datacenter",
+ "required": true,
"type": "string",
- "x-example": "https://www.imdb.com/name/nm0000151/"
+ "x-example": "wd5"
},
{
- "description": "Rows to return, default 50, max 100",
+ "description": "Workday career site",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "site",
+ "required": true,
+ "type": "string",
+ "x-example": "NVIDIAExternalCareerSite"
+ },
+ {
+ "description": "Job externalPath from a board listing",
+ "in": "query",
+ "name": "path",
+ "required": true,
+ "type": "string",
+ "x-example": "/job/Israel-Tel-Aviv/Chip-Design-Engineer_JR2016289"
}
],
"produces": [
@@ -293241,7 +323019,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.nameVideosResponseDoc"
+ "$ref": "#/definitions/jobs.jobResponseDoc"
}
},
"400": {
@@ -293256,18 +323034,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293280,34 +323046,27 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb name video metadata",
+ "summary": "Get a single Workday job",
"tags": [
- "IMDb"
+ "Jobs"
]
}
},
- "/imdb/search": {
+ "/justeat/restaurant": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized IMDb title search rows from credential-free public IMDb pages. Limit defaults to 10 and clamps to 20.",
- "operationId": "imdb-search",
+ "description": "Returns one Just Eat restaurant's detail by unique_name: name, address, primary cuisine, rating, and whether it currently accepts orders.",
+ "operationId": "justeat-restaurant",
"parameters": [
{
- "description": "Search query",
+ "description": "Restaurant slug, from a search response's unique_name field",
"in": "query",
- "name": "query",
+ "name": "unique_name",
"required": true,
"type": "string",
- "x-example": "inception"
- },
- {
- "description": "Rows to return, default 10, max 20",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
+ "x-example": "mcdonalds-victorialondon"
}
],
"produces": [
@@ -293317,7 +323076,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.searchResponseDoc"
+ "$ref": "#/definitions/justeat.restaurantResponseDoc"
}
},
"400": {
@@ -293332,18 +323091,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293356,207 +323103,27 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title search",
+ "summary": "Get one Just Eat restaurant's detail",
"tags": [
- "IMDb"
+ "Just Eat"
]
}
},
- "/imdb/search/title": {
+ "/justeat/restaurant/menu": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized IMDb advanced title-search results (imdb.com/search/title/) from a credential-free public IMDb page. At least one filter is required; sort/limit alone are not enough. Limit defaults to 25 and clamps to 50; only IMDb's first rendered page of results is returned (see `total`/`has_more`), there is no deeper cursor pagination. Genre/company/certificate/country/language/keyword/characters/role are include-only lists; there is no exclude support. Unsupported: genre exclude, three curated `groups` values (best-picture-nominee, best-director-nominee, national-film-registry), and the non-plot \"page topic\" search fields.",
- "operationId": "imdb-search-title",
+ "description": "Returns one restaurant's full menu grouped into categories. Every item carries a name, description, image, price, and calorie/energy text when the upstream provides it. Items with customization options (e.g. \"Dip 1/2\") carry a modifier_groups list with each option's own price. Non-restaurant stores (groceries, alcohol, pharmacy, electronics, and similar) return every item under a single \"All items\" category rather than the site's own finer-grained grouping.",
+ "operationId": "justeat-restaurant-menu",
"parameters": [
{
- "description": "Title-name substring match",
- "in": "query",
- "name": "title",
- "type": "string",
- "x-example": "matrix"
- },
- {
- "description": "Comma-separated title types: `feature`, `tvSeries`, `short`, `tvEpisode`, `tvMiniSeries`, `tvMovie`, `tvSpecial`, `tvShort`, `videoGame`, `video`, `musicVideo`, `podcastSeries`, `podcastEpisode`",
- "in": "query",
- "name": "title_type",
- "type": "string",
- "x-example": "feature"
- },
- {
- "description": "Comma-separated genres (include-only): `Action`, `Adventure`, `Animation`, `Biography`, `Comedy`, `Crime`, `Documentary`, `Drama`, `Family`, `Fantasy`, `Film-Noir`, `Game-Show`, `History`, `Horror`, `Music`, `Musical`, `Mystery`, `News`, `Reality-TV`, `Romance`, `Sci-Fi`, `Short`, `Sport`, `Talk-Show`, `Thriller`, `War`, `Western`",
- "in": "query",
- "name": "genres",
- "type": "string",
- "x-example": "Action,Adventure"
- },
- {
- "description": "Release date lower bound: YYYY, YYYY-MM, or YYYY-MM-DD",
- "in": "query",
- "name": "release_date_from",
- "type": "string",
- "x-example": "2020-01-01"
- },
- {
- "description": "Release date upper bound: YYYY, YYYY-MM, or YYYY-MM-DD",
- "in": "query",
- "name": "release_date_to",
- "type": "string",
- "x-example": "2021-12-31"
- },
- {
- "description": "Minimum IMDb user rating, 0-10",
- "in": "query",
- "name": "min_user_rating",
- "type": "number",
- "x-example": 7
- },
- {
- "description": "Maximum IMDb user rating, 0-10",
- "in": "query",
- "name": "max_user_rating",
- "type": "number",
- "x-example": 9.5
- },
- {
- "description": "Minimum number of user rating votes",
- "in": "query",
- "name": "min_votes",
- "type": "integer",
- "x-example": 25000
- },
- {
- "description": "Maximum number of user rating votes",
- "in": "query",
- "name": "max_votes",
- "type": "integer"
- },
- {
- "description": "Minimum IMDb popularity rank (1 is most popular)",
- "in": "query",
- "name": "min_popularity",
- "type": "integer"
- },
- {
- "description": "Maximum IMDb popularity rank",
- "in": "query",
- "name": "max_popularity",
- "type": "integer"
- },
- {
- "description": "Minimum runtime in minutes",
- "in": "query",
- "name": "min_runtime",
- "type": "integer"
- },
- {
- "description": "Maximum runtime in minutes",
- "in": "query",
- "name": "max_runtime",
- "type": "integer"
- },
- {
- "description": "Comma-separated awards/curated-list groups: `oscar_winner`, `oscar_nominee`, `emmy_winner`, `emmy_nominee`, `golden_globe_winner`, `golden_globe_nominee`, `best_picture_winner`, `best_director_winner`, `razzie_winner`, `razzie_nominee`, `top_100`, `top_250`, `top_1000`, `bottom_100`, `bottom_250`, `bottom_1000`",
- "in": "query",
- "name": "groups",
- "type": "string"
- },
- {
- "description": "Comma-separated plot keywords",
- "in": "query",
- "name": "keywords",
- "type": "string",
- "x-example": "superhero"
- },
- {
- "description": "Comma-separated IMDb company ids, format `co########`",
- "in": "query",
- "name": "companies",
- "type": "string",
- "x-example": "co0000756"
- },
- {
- "description": "Comma-separated `COUNTRY:RATING` certificate pairs, e.g. `US:PG-13`",
- "in": "query",
- "name": "certificates",
- "type": "string",
- "x-example": "US:PG-13"
- },
- {
- "description": "Comma-separated color info: `color`, `black_and_white`, `colorized`, `aces`",
- "in": "query",
- "name": "colors",
- "type": "string"
- },
- {
- "description": "Comma-separated ISO country codes",
- "in": "query",
- "name": "countries",
- "type": "string",
- "x-example": "US"
- },
- {
- "description": "Comma-separated ISO language codes",
- "in": "query",
- "name": "languages",
- "type": "string",
- "x-example": "en"
- },
- {
- "description": "Comma-separated sound mix names: `12-Track Digital Sound`, `3 Channel Stereo`, `4-Track Stereo`, `6-Track Stereo`, `70 mm 6-Track`, `AGA Sound System`, `Auro 11.1`, `CDS`, `Chronophone`, `Cinematophone`, `Cinephone`, `Cinerama 7-Track`, `Cinesound`, `D-Cinema 48kHz 5.1`, `Datasat`, `De Forest Phonofilm`, `Digitrac Digital Audio System`, `Dolby`, `Dolby Atmos`, `Dolby Digital`, `Dolby Digital EX`, `Dolby SR`, `Dolby Stereo`, `Dolby Surround 7.1`, `DTS`, `DTS 70 mm`, `DTS Stereo`, `DTS-ES`, `IMAX 6-Track`, `Kinoplasticon`, `LC-Concept Digital Sound`, `Matrix Surround`, `Mono`, `Perspecta Stereo`, `Phono-Kinema`, `SDDS`, `Sensurround`, `Silent`, `Sonics-DDP`, `Sonix`, `Stereo`, `Ultra Stereo`, `Vitaphone`",
- "in": "query",
- "name": "sound_mixes",
- "type": "string"
- },
- {
- "description": "Comma-separated cast/crew IMDb name ids, format `nm########`",
- "in": "query",
- "name": "role",
- "type": "string",
- "x-example": "nm0634240"
- },
- {
- "description": "Comma-separated character names",
- "in": "query",
- "name": "characters",
- "type": "string",
- "x-example": "Neo"
- },
- {
- "description": "Plot text search term",
- "in": "query",
- "name": "plot",
- "type": "string",
- "x-example": "hacker"
- },
- {
- "default": false,
- "description": "Include adult titles. Defaults to excluded",
- "in": "query",
- "name": "include_adult",
- "type": "boolean"
- },
- {
- "description": "One of `moviemeter`, `alpha`, `user_rating`, `num_votes`, `boxoffice_gross_us`, `runtime`, `year`, `release_date`",
- "in": "query",
- "name": "sort",
- "type": "string",
- "x-example": "user_rating"
- },
- {
- "description": "`asc` or `desc`. Defaults to `asc` when sort is set",
+ "description": "Restaurant slug, from a search response's unique_name field",
"in": "query",
- "name": "sort_order",
+ "name": "unique_name",
+ "required": true,
"type": "string",
- "x-example": "desc"
- },
- {
- "description": "Rows to return, default 25, max 50",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 25
+ "x-example": "mcdonalds-victorialondon"
}
],
"produces": [
@@ -293566,7 +323133,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.searchTitleResponseDoc"
+ "$ref": "#/definitions/justeat.menuResponseDoc"
}
},
"400": {
@@ -293581,18 +323148,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293605,33 +323160,60 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb advanced title search",
+ "summary": "Get one Just Eat restaurant's menu with prices",
"tags": [
- "IMDb"
+ "Just Eat"
]
}
},
- "/imdb/title": {
+ "/justeat/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized IMDb title metadata from a credential-free public IMDb title page. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title",
+ "description": "Returns Just Eat's full restaurant listing for a UK postcode -- every restaurant the site's own area page carries, ordered as Just Eat's default \"best match\" sort presents them (or by sort_by, if set), not a curated subset. Each restaurant carries its unique_name (the value the restaurant and menu endpoints take), name, image, rating, delivery time window, and open-now status. A postcode with no coverage returns an empty list rather than an error.",
+ "operationId": "justeat-search",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "UK postcode to search near",
"in": "query",
- "name": "id",
+ "name": "postcode",
+ "required": true,
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "SW1A 1AA"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "description": "Restaurants to return, clamped to 100 (default 20)",
"in": "query",
- "name": "url",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "collectionFormat": "multi",
+ "description": "Repeatable. Just Eat's own area-page filter slugs (e.g. open_now, or a cuisine tile's slug), passed through as-is and OR'd together. Also reaches non-restaurant categories -- groceries, alcohol, pharmacy, electronics, and more -- via the same mechanism, e.g. filter=groceries. The valid slug set is specific to the postcode you are searching -- call /justeat/search/filters with the same postcode for the current, complete, location-scoped list with live result counts. An unrecognized slug narrows to a smaller or empty result rather than erroring.",
+ "in": "query",
+ "items": {
+ "type": "string"
+ },
+ "name": "filter",
+ "type": "array",
+ "x-example": "pizza"
+ },
+ {
+ "description": "Result order, matching the area page's own Sort by control. Default best_match.",
+ "enum": [
+ "best_match",
+ "review_rating",
+ "distance",
+ "delivery_time",
+ "minimum_order_value",
+ "delivery_fee"
+ ],
+ "in": "query",
+ "name": "sort_by",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "distance"
}
],
"produces": [
@@ -293641,7 +323223,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titleResponseDoc"
+ "$ref": "#/definitions/justeat.searchResponseDoc"
}
},
"400": {
@@ -293650,24 +323232,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293680,33 +323244,27 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title detail",
+ "summary": "Search Just Eat restaurants near a UK postcode",
"tags": [
- "IMDb"
+ "Just Eat"
]
}
},
- "/imdb/title/awards": {
+ "/justeat/search/filters": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb award rows for a title. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-awards",
+ "description": "Returns the exact filter slugs Just Eat's own area page currently offers for a UK postcode -- star-rating thresholds, boolean toggles (open_now, new, free_delivery, halal, vegan, ...), cuisine tiles (pizza, chinese, italian, ...), and non-restaurant top-nav verticals (groceries, alcohol, pharmacy, electronics, flowers, gifts, and more) alike -- each with the live count of restaurants it currently narrows this postcode's listing to. Every filter value is the literal string /justeat/search's repeatable filter parameter accepts. The slug set is genuinely postcode-dependent: a rural postcode's own area page offers fewer cuisine tiles than central London's, because Just Eat's own frontend never advertises a filter with zero local coverage -- call this endpoint again for a different postcode rather than assume one location's slug set applies everywhere.",
+ "operationId": "justeat-search-filters",
"parameters": [
{
- "description": "IMDb title id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "tt1375666"
- },
- {
- "description": "Absolute https://www.imdb.com/title// URL",
+ "description": "UK postcode to look up",
"in": "query",
- "name": "url",
+ "name": "postcode",
+ "required": true,
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "SW1A 1AA"
}
],
"produces": [
@@ -293716,7 +323274,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titleAwardsResponseDoc"
+ "$ref": "#/definitions/justeat.filtersResponseDoc"
}
},
"400": {
@@ -293725,24 +323283,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293755,33 +323295,27 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title awards",
+ "summary": "Get Just Eat's live filter slug catalog for a UK postcode",
"tags": [
- "IMDb"
+ "Just Eat"
]
}
},
- "/imdb/title/box-office": {
+ "/justwatch/age-certifications": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a title's public box-office summary: lifetime gross by market (domestic, international, worldwide), the domestic opening weekend, and the production budget. IMDb reports each figure independently, so a real title with no box office data (most TV series, many non-theatrical titles) returns `has_box_office: false` with every figure omitted rather than an error. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-box-office",
+ "description": "Returns JustWatch age certification technical names for a country.",
+ "operationId": "justwatch-age-certifications",
"parameters": [
{
- "description": "IMDb title id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "tt0111161"
- },
- {
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt0111161/"
+ "x-example": "US"
}
],
"produces": [
@@ -293791,7 +323325,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titleBoxOfficeResponseDoc"
+ "$ref": "#/definitions/justwatch.ageCertificationsResponseDoc"
}
},
"400": {
@@ -293800,24 +323334,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293830,33 +323352,104 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title box office summary",
+ "summary": "Get JustWatch age certifications",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/company-credits": {
+ "/justwatch/discover": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb company-credit sections for a title. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-company-credits",
+ "description": "Returns popular movies and shows filtered by optional genre short names, provider short names, production countries, monetization types, and release year bounds. Combine `providers` with `production_countries` to build charts such as most popular Korean or Japanese titles on a given service. Type accepts only `all`, `movie`, or `show`; monetization_types accepts only `FLATRATE`, `FREE`, `ADS`, `RENT`, or `BUY`.",
+ "operationId": "justwatch-discover",
"parameters": [
{
- "description": "IMDb title id",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "id",
+ "name": "country",
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "US"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "en",
+ "description": "Two-letter language code",
"in": "query",
- "name": "url",
+ "name": "language",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "en"
+ },
+ {
+ "description": "Maximum results, defaults to 20 and clamps to 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "default": "all",
+ "description": "Title type: all, movie, show",
+ "enum": [
+ "all",
+ "movie",
+ "show"
+ ],
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "all"
+ },
+ {
+ "description": "Comma-separated JustWatch genre short names",
+ "in": "query",
+ "name": "genres",
+ "type": "string",
+ "x-example": "act,scf"
+ },
+ {
+ "description": "Comma-separated JustWatch provider short names",
+ "in": "query",
+ "name": "providers",
+ "type": "string",
+ "x-example": "nfx,amp"
+ },
+ {
+ "description": "Comma-separated two-letter ISO production-country codes",
+ "in": "query",
+ "name": "production_countries",
+ "type": "string",
+ "x-example": "KR,JP"
+ },
+ {
+ "description": "Comma-separated monetization types: FLATRATE, FREE, ADS, RENT, BUY",
+ "enum": [
+ "FLATRATE",
+ "FREE",
+ "ADS",
+ "RENT",
+ "BUY"
+ ],
+ "in": "query",
+ "name": "monetization_types",
+ "type": "string",
+ "x-example": "FLATRATE,FREE"
+ },
+ {
+ "description": "Minimum release year",
+ "in": "query",
+ "name": "year_min",
+ "type": "integer",
+ "x-example": 2020
+ },
+ {
+ "description": "Maximum release year",
+ "in": "query",
+ "name": "year_max",
+ "type": "integer",
+ "x-example": 2026
}
],
"produces": [
@@ -293866,7 +323459,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
+ "$ref": "#/definitions/justwatch.discoverResponseDoc"
}
},
"400": {
@@ -293875,24 +323468,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293905,40 +323486,43 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title company credits",
+ "summary": "Discover JustWatch titles",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/connections": {
+ "/justwatch/episode/by-id": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns a bounded slice of a title's public connections: other titles it references or is referenced by, such as remakes, spin-offs, \"featured in\" clips, and \"edited into\" compilations. `category` is upstream-supplied free text, not a closed enum. IMDb's connections list can run to hundreds or thousands of rows, so `total` can exceed the returned rows and `has_more` reports that condition. Limit defaults to 50 and clamps to 250. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-connections",
+ "description": "Looks up an episode by raw JustWatch GraphQL id such as `tse5550494` and returns normalized metadata and offers.",
+ "operationId": "justwatch-episode-by-id",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "Raw JustWatch episode id matching tse[0-9]+",
"in": "query",
"name": "id",
+ "required": true,
"type": "string",
- "x-example": "tt0111161"
+ "x-example": "tse5550494"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt0111161/"
+ "x-example": "US"
},
{
- "description": "Rows to return, default 50, max 250",
+ "default": "en",
+ "description": "Two-letter language code",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -293948,7 +323532,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titleConnectionsResponseDoc"
+ "$ref": "#/definitions/justwatch.episodeByIDResponseDoc"
}
},
"400": {
@@ -293969,12 +323553,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -293987,33 +323565,43 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title connections",
+ "summary": "Get JustWatch episode by raw id",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/credits": {
+ "/justwatch/episode/offers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb full cast and crew sections. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-credits",
+ "description": "Returns normalized offers for a raw JustWatch episode id across one to five comma-separated country codes.",
+ "operationId": "justwatch-episode-offers",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "Raw JustWatch episode id matching tse[0-9]+",
"in": "query",
"name": "id",
+ "required": true,
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "tse5550494"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "One to five comma-separated two-letter country codes",
"in": "query",
- "name": "url",
+ "name": "countries",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "US,GB"
+ },
+ {
+ "default": "en",
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -294023,7 +323611,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.creditsResponseDoc"
+ "$ref": "#/definitions/justwatch.episodeOffersResponseDoc"
}
},
"400": {
@@ -294044,12 +323632,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294062,47 +323644,63 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title credits",
+ "summary": "Get JustWatch episode offers",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/episodes": {
+ "/justwatch/genre/titles": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb episode rows for a series title. Limit defaults to 10 and clamps to 20. Optional `season` filters the upstream episodes page. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-episodes",
+ "description": "Returns popular titles for one JustWatch genre short name such as `act`. Type accepts only `all`, `movie`, or `show`.",
+ "operationId": "justwatch-genre-titles",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "JustWatch genre short name",
"in": "query",
- "name": "id",
+ "name": "genre",
+ "required": true,
"type": "string",
- "x-example": "tt0944947"
+ "x-example": "act"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt0944947/"
+ "x-example": "US"
},
{
- "description": "Season number to request",
+ "default": "en",
+ "description": "Two-letter language code",
"in": "query",
- "name": "season",
- "type": "integer",
- "x-example": 1
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
},
{
- "description": "Rows to return, default 10, max 20",
+ "description": "Maximum results, defaults to 20 and clamps to 50",
"in": "query",
"name": "limit",
"type": "integer",
- "x-example": 10
+ "x-example": 20
+ },
+ {
+ "default": "all",
+ "description": "Title type: all, movie, show",
+ "enum": [
+ "all",
+ "movie",
+ "show"
+ ],
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "all"
}
],
"produces": [
@@ -294112,7 +323710,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.episodesResponseDoc"
+ "$ref": "#/definitions/justwatch.genreTitlesResponseDoc"
}
},
"400": {
@@ -294121,24 +323719,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294151,33 +323737,27 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title episodes",
+ "summary": "Get JustWatch genre titles",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/filming-locations": {
+ "/justwatch/genres": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb filming-location rows for a title. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-filming-locations",
+ "description": "Returns JustWatch genre short names and localized translations.",
+ "operationId": "justwatch-genres",
"parameters": [
{
- "description": "IMDb title id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "tt1375666"
- },
- {
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "en",
+ "description": "Two-letter language code",
"in": "query",
- "name": "url",
+ "name": "language",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "en"
}
],
"produces": [
@@ -294187,7 +323767,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
+ "$ref": "#/definitions/justwatch.genresResponseDoc"
}
},
"400": {
@@ -294196,24 +323776,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294226,33 +323794,70 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title filming locations",
+ "summary": "Get JustWatch genres",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/goofs": {
+ "/justwatch/monetization/titles": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb goof rows for a title. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-goofs",
+ "description": "Returns popular titles for one monetization type. monetization_type accepts only `FLATRATE`, `FREE`, `ADS`, `RENT`, or `BUY`; type accepts only `all`, `movie`, or `show`.",
+ "operationId": "justwatch-monetization-titles",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "Monetization type: FLATRATE, FREE, ADS, RENT, BUY",
+ "enum": [
+ "FLATRATE",
+ "FREE",
+ "ADS",
+ "RENT",
+ "BUY"
+ ],
"in": "query",
- "name": "id",
+ "name": "monetization_type",
+ "required": true,
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "FLATRATE"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "US"
+ },
+ {
+ "default": "en",
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
+ },
+ {
+ "description": "Maximum results, defaults to 20 and clamps to 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "default": "all",
+ "description": "Title type: all, movie, show",
+ "enum": [
+ "all",
+ "movie",
+ "show"
+ ],
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "all"
}
],
"produces": [
@@ -294262,7 +323867,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
+ "$ref": "#/definitions/justwatch.monetizationTitlesResponseDoc"
}
},
"400": {
@@ -294271,24 +323876,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294301,57 +323894,55 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title goofs",
+ "summary": "Get JustWatch monetization titles",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/images": {
+ "/justwatch/new": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns image metadata from a title's media index, including the original image URL, dimensions, caption and credited people. Filter by image type with `type`, which accepts a single value or a comma-separated list of: `behind_the_scenes`, `event`, `poster`, `product`, `production_art`, `publicity`, `still_frame`, `unknown`. Omit `type` to return every type. Limit defaults to 50 and clamps to 1000. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-images",
+ "description": "Returns newly available movies and shows from the public JustWatch website GraphQL endpoint. Type accepts only `all`, `movie`, or `show`; limit defaults to 20 and clamps to 50.",
+ "operationId": "justwatch-new",
"parameters": [
{
- "description": "IMDb title id",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "id",
+ "name": "country",
"type": "string",
- "x-example": "tt0089753"
+ "x-example": "US"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "en",
+ "description": "Two-letter language code",
"in": "query",
- "name": "url",
+ "name": "language",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt0089753/"
+ "x-example": "en"
},
{
- "description": "Image type filter, single value or comma-separated list",
+ "description": "Maximum results, defaults to 20 and clamps to 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "default": "all",
+ "description": "Title type: all, movie, show",
"enum": [
- "behind_the_scenes",
- "event",
- "poster",
- "product",
- "production_art",
- "publicity",
- "still_frame",
- "unknown"
+ "all",
+ "movie",
+ "show"
],
"in": "query",
"name": "type",
"type": "string",
- "x-example": "still_frame"
- },
- {
- "description": "Rows to return, default 50, max 1000",
- "in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 50
+ "x-example": "all"
}
],
"produces": [
@@ -294361,7 +323952,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titleImagesResponseDoc"
+ "$ref": "#/definitions/justwatch.newTitlesResponseDoc"
}
},
"400": {
@@ -294370,24 +323961,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294400,33 +323979,62 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title images",
+ "summary": "Get new JustWatch titles",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/keywords": {
+ "/justwatch/popular": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb keyword rows for a title. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-keywords",
+ "description": "Returns popular movies and shows from the public JustWatch website GraphQL endpoint. Type accepts only `all`, `movie`, or `show`; limit defaults to 20 and clamps to 50.",
+ "operationId": "justwatch-popular",
"parameters": [
{
- "description": "IMDb title id",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "id",
+ "name": "country",
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "US"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "en",
+ "description": "Two-letter language code",
"in": "query",
- "name": "url",
+ "name": "language",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "en"
+ },
+ {
+ "description": "Maximum results, defaults to 20 and clamps to 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "default": "all",
+ "description": "Title type: all, movie, show",
+ "enum": [
+ "all",
+ "movie",
+ "show"
+ ],
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "all"
+ },
+ {
+ "description": "Opaque next_cursor from the prior response; omit for the first page",
+ "in": "query",
+ "name": "cursor",
+ "type": "string",
+ "x-example": "MQ=="
}
],
"produces": [
@@ -294436,7 +324044,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
+ "$ref": "#/definitions/justwatch.popularResponseDoc"
}
},
"400": {
@@ -294445,24 +324053,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294475,33 +324071,63 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title keywords",
+ "summary": "Get popular JustWatch titles",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/parental-guide": {
+ "/justwatch/provider/titles": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb parental-guide categories and severity signals. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-parental-guide",
+ "description": "Returns popular movie/show titles available through a JustWatch provider short name such as `nfx`.",
+ "operationId": "justwatch-provider-titles",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "JustWatch provider short name",
"in": "query",
- "name": "id",
+ "name": "provider",
+ "required": true,
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "nfx"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "US"
+ },
+ {
+ "default": "en",
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
+ },
+ {
+ "description": "Maximum results, defaults to 20 and clamps to 50",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 20
+ },
+ {
+ "default": "all",
+ "description": "Title type: all, movie, show",
+ "enum": [
+ "all",
+ "movie",
+ "show"
+ ],
+ "in": "query",
+ "name": "type",
+ "type": "string",
+ "x-example": "all"
}
],
"produces": [
@@ -294511,7 +324137,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.parentalGuideResponseDoc"
+ "$ref": "#/definitions/justwatch.providerTitlesResponseDoc"
}
},
"400": {
@@ -294520,24 +324146,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294550,33 +324164,27 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title parental guide",
+ "summary": "Get JustWatch provider titles",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/public-facts-analysis": {
+ "/justwatch/providers": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns derived public-page summary metrics for IMDb trivia, goofs, quotes, keywords, filming locations, and company credits. This endpoint is not viewing advice. Pass exactly one of `id` or `url`. The six sections are gathered from six independent sources, so a section that cannot be fetched is omitted and named in `missing_sections` with `partial` set to `true`, rather than failing the whole response; an error is returned only when no section could be fetched. Callers that require a complete analysis should check `partial`.",
- "operationId": "imdb-title-public-facts-analysis",
+ "description": "Returns the credential-free public JustWatch provider catalog for a country.",
+ "operationId": "justwatch-providers",
"parameters": [
{
- "description": "IMDb title id",
- "in": "query",
- "name": "id",
- "type": "string",
- "x-example": "tt1375666"
- },
- {
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "US"
}
],
"produces": [
@@ -294586,7 +324194,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titlePublicFactsAnalysisResponseDoc"
+ "$ref": "#/definitions/justwatch.providersResponseDoc"
}
},
"400": {
@@ -294595,24 +324203,12 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294625,33 +324221,50 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title public facts analysis",
+ "summary": "Get JustWatch providers",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/quotes": {
+ "/justwatch/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb quote rows for a title. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-quotes",
+ "description": "Searches JustWatch titles using the public credential-free website GraphQL endpoint. Country must be a two-letter ISO code such as `US`; language must be a two-letter code such as `en`.",
+ "operationId": "justwatch-search",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "Search query",
"in": "query",
- "name": "id",
+ "name": "query",
+ "required": true,
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "inception"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "US"
+ },
+ {
+ "default": "en",
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
+ },
+ {
+ "description": "Maximum results, defaults to 10 and clamps to 25",
+ "in": "query",
+ "name": "limit",
+ "type": "integer",
+ "x-example": 10
}
],
"produces": [
@@ -294661,7 +324274,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
+ "$ref": "#/definitions/justwatch.searchResponseDoc"
}
},
"400": {
@@ -294682,12 +324295,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294700,33 +324307,43 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title quotes",
+ "summary": "Search JustWatch titles",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/ratings": {
+ "/justwatch/season/by-id": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns IMDb's aggregate rating, vote count, ten rating buckets, and country rating summaries. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-ratings",
+ "description": "Looks up a season by raw JustWatch GraphQL id such as `tss297253`.",
+ "operationId": "justwatch-season-by-id",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "Raw JustWatch season id matching tss[0-9]+",
"in": "query",
"name": "id",
+ "required": true,
"type": "string",
- "x-example": "tt0111161"
+ "x-example": "tss297253"
},
{
- "description": "Absolute IMDb title URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt0111161/"
+ "x-example": "US"
+ },
+ {
+ "default": "en",
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -294736,7 +324353,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.ratingsResponseDoc"
+ "$ref": "#/definitions/justwatch.seasonByIDResponseDoc"
}
},
"400": {
@@ -294745,6 +324362,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294757,33 +324386,43 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title ratings breakdown",
+ "summary": "Get JustWatch season by raw id",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/release-info": {
+ "/justwatch/season/episodes": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb release date rows and alternate titles. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-release-info",
+ "description": "Returns episodes and normalized episode offers for a raw JustWatch season id such as `tss297253`.",
+ "operationId": "justwatch-season-episodes",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "Raw JustWatch season id matching tss[0-9]+",
"in": "query",
- "name": "id",
+ "name": "season_id",
+ "required": true,
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "tss297253"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "US"
+ },
+ {
+ "default": "en",
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -294793,7 +324432,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.releaseInfoResponseDoc"
+ "$ref": "#/definitions/justwatch.seasonEpisodesResponseDoc"
}
},
"400": {
@@ -294814,12 +324453,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294832,40 +324465,43 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title release info",
+ "summary": "Get JustWatch season episodes",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/reviews": {
+ "/justwatch/show/seasons": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb user review rows. Limit defaults to 10 and clamps to 20. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-reviews",
+ "description": "Returns seasons for a raw JustWatch show id such as `ts287292`.",
+ "operationId": "justwatch-show-seasons",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "Raw JustWatch show id matching ts[0-9]+",
"in": "query",
- "name": "id",
+ "name": "show_id",
+ "required": true,
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "ts287292"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "US"
},
{
- "description": "Rows to return, default 10, max 20",
+ "default": "en",
+ "description": "Two-letter language code",
"in": "query",
- "name": "limit",
- "type": "integer",
- "x-example": 10
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -294875,7 +324511,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.reviewsResponseDoc"
+ "$ref": "#/definitions/justwatch.showSeasonsResponseDoc"
}
},
"400": {
@@ -294896,12 +324532,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294914,33 +324544,33 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title user reviews",
+ "summary": "Get JustWatch show seasons",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/similar": {
+ "/justwatch/title": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized titles from IMDb's public More like this recommendations. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-similar",
+ "description": "Fetches a JustWatch title page and returns normalized metadata and current offers. Pass exactly one of `path` or `url`.",
+ "operationId": "justwatch-title",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "JustWatch title path",
"in": "query",
- "name": "id",
+ "name": "path",
"type": "string",
- "x-example": "tt0111161"
+ "x-example": "/us/movie/inception"
},
{
- "description": "Absolute IMDb title URL",
+ "description": "Absolute https://www.justwatch.com title URL",
"in": "query",
"name": "url",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt0111161/"
+ "x-example": "https://www.justwatch.com/us/movie/inception"
}
],
"produces": [
@@ -294950,7 +324580,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.similarResponseDoc"
+ "$ref": "#/definitions/justwatch.titleResponseDoc"
}
},
"400": {
@@ -294959,6 +324589,18 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -294971,33 +324613,33 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb similar titles",
+ "summary": "Get JustWatch title details",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/technical-specs": {
+ "/justwatch/title/analysis": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb technical specifications such as runtime, sound mix, color, and aspect ratio. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-technical-specs",
+ "description": "Fetches a JustWatch title page and summarizes provider availability, monetization buckets, formats, price ranges, and best rent/buy/free/subscription options. Pass exactly one of `path` or `url`.",
+ "operationId": "justwatch-title-analysis",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "JustWatch title path",
"in": "query",
- "name": "id",
+ "name": "path",
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "/us/movie/inception"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "description": "Absolute https://www.justwatch.com title URL",
"in": "query",
"name": "url",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "https://www.justwatch.com/us/movie/inception"
}
],
"produces": [
@@ -295007,7 +324649,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.technicalSpecsResponseDoc"
+ "$ref": "#/definitions/justwatch.analysisResponseDoc"
}
},
"400": {
@@ -295028,12 +324670,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -295046,33 +324682,43 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title technical specs",
+ "summary": "Analyze JustWatch title availability",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/trivia": {
+ "/justwatch/title/by-id": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized public IMDb trivia rows for a title. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-trivia",
+ "description": "Looks up a movie or show by raw JustWatch GraphQL id such as `tm92641` or `ts287292`.",
+ "operationId": "justwatch-title-by-id",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "Raw JustWatch movie/show id matching tm[0-9]+ or ts[0-9]+",
"in": "query",
"name": "id",
+ "required": true,
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "tm92641"
},
{
- "description": "Absolute https://www.imdb.com/title// URL",
+ "default": "US",
+ "description": "Two-letter country code",
"in": "query",
- "name": "url",
+ "name": "country",
"type": "string",
- "x-example": "https://www.imdb.com/title/tt1375666/"
+ "x-example": "US"
+ },
+ {
+ "default": "en",
+ "description": "Two-letter language code",
+ "in": "query",
+ "name": "language",
+ "type": "string",
+ "x-example": "en"
}
],
"produces": [
@@ -295082,7 +324728,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/imdb.titlePublicFactsResponseDoc"
+ "$ref": "#/definitions/justwatch.titleResponseDoc"
}
},
"400": {
@@ -295103,12 +324749,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "500": {
- "description": "Internal Server Error",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -295121,40 +324761,43 @@
"ApiKeyAuth": []
}
],
- "summary": "IMDb title trivia",
+ "summary": "Get JustWatch title by raw id",
"tags": [
- "IMDb"
+ "JustWatch"
]
}
},
- "/imdb/title/videos": {
+ "/justwatch/title/media": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns public title video metadata and thumbnail URLs only; playback URLs and media manifests are never returned. IMDb server-truncates this connection and exposes no usable continuation cursor, so `total` can exceed returned rows and `has_more` reports that condition. Limit defaults to 50 and clamps to 100. Pass exactly one of `id` or `url`.",
- "operationId": "imdb-title-videos",
+ "description": "Returns normalized credits, clips, and backdrops for a raw JustWatch movie/show id such as `tm92641`.",
+ "operationId": "justwatch-title-media",
"parameters": [
{
- "description": "IMDb title id",
+ "description": "Raw JustWatch movie/show id matching tm[0-9]+ or ts[0-9]+",
"in": "query",
"name": "id",
+ "required": true,
"type": "string",
- "x-example": "tt1375666"
+ "x-example": "tm92641"
},
{
- "description": "Absolute https://www.imdb.com/title/