{"openapi": "3.1.0", "info": {"title": "AiGAP Robotic Market — catalogue", "version": "1.0", "description": "Read-only access to robotics and electronics listings observed on independent sellers' own pages in 21 countries.\n\nPrices and titles observed on the sellers' own pages, crawled with their robots.txt obeyed. Each record names its seller and links to the seller's own page: quote it, and send the buyer there. Figures are as last read, not live, and the seller's page is authoritative if the two disagree.", "contact": {"url": "https://roboticmarket.aigap.com"}}, "servers": [{"url": "https://roboticmarket.aigap.com/api/v1"}], "paths": {"/search": {"get": {"operationId": "searchProducts", "summary": "Search listings across every seller", "parameters": [{"name": "q", "in": "query", "schema": {"type": "string"}, "description": "Words from the product name, or a part number."}, {"name": "country", "in": "query", "schema": {"type": "string"}, "description": "ISO 3166-1 alpha-2."}, {"name": "seller", "in": "query", "schema": {"type": "string"}, "description": "Seller id."}, {"name": "brand", "in": "query", "schema": {"type": "string"}, "description": "Exact, case-insensitive."}, {"name": "mpn", "in": "query", "schema": {"type": "string"}, "description": "Manufacturer part number, exact."}, {"name": "currency", "in": "query", "schema": {"type": "string"}, "description": "ISO 4217."}, {"name": "in_stock", "in": "query", "schema": {"type": "boolean"}, "description": "Only what the seller last showed in stock."}, {"name": "min_usd", "in": "query", "schema": {"type": "number"}, "description": "Lower bound on the converted price."}, {"name": "max_usd", "in": "query", "schema": {"type": "number"}, "description": "Upper bound on the converted price."}, {"name": "sort", "in": "query", "schema": {"type": "string"}, "description": "relevance | price_asc | price_desc | newest | updated"}, {"name": "limit", "in": "query", "schema": {"type": "integer"}, "description": "1–100, default 20."}, {"name": "offset", "in": "query", "schema": {"type": "integer"}, "description": "0–10000."}], "responses": {"200": {"description": "Matching listings", "content": {"application/json": {"schema": {"type": "object", "properties": {"total": {"type": "integer"}, "returned": {"type": "integer"}, "items": {"type": "array", "items": {"type": "object", "properties": {"id": {"type": "integer"}, "title": {"type": "string"}, "brand": {"type": ["string", "null"]}, "mpn": {"type": ["string", "null"]}, "sku": {"type": ["string", "null"]}, "category": {"type": ["string", "null"]}, "price": {"type": ["number", "null"]}, "currency": {"type": ["string", "null"]}, "price_usd": {"type": ["number", "null"], "description": "Converted at ECB reference rates; a convenience, not a quote."}, "availability": {"type": "string"}, "seller": {"type": "object", "properties": {"id": {"type": "string"}, "name": {"type": "string"}, "domain": {"type": "string"}, "country": {"type": "string"}}}, "seller_url": {"type": "string", "description": "The seller's own page. Authoritative; link here."}, "page": {"type": "string"}, "first_seen": {"type": "string"}, "last_seen": {"type": "string"}}}}}}}}}}}}, "/products/{id}": {"get": {"operationId": "getProduct", "summary": "One listing, with price history and a photograph if we hold one", "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer"}}], "responses": {"200": {"description": "The listing", "content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "integer"}, "title": {"type": "string"}, "brand": {"type": ["string", "null"]}, "mpn": {"type": ["string", "null"]}, "sku": {"type": ["string", "null"]}, "category": {"type": ["string", "null"]}, "price": {"type": ["number", "null"]}, "currency": {"type": ["string", "null"]}, "price_usd": {"type": ["number", "null"], "description": "Converted at ECB reference rates; a convenience, not a quote."}, "availability": {"type": "string"}, "seller": {"type": "object", "properties": {"id": {"type": "string"}, "name": {"type": "string"}, "domain": {"type": "string"}, "country": {"type": "string"}}}, "seller_url": {"type": "string", "description": "The seller's own page. Authoritative; link here."}, "page": {"type": "string"}, "first_seen": {"type": "string"}, "last_seen": {"type": "string"}}}}}}, "404": {"description": "No such listing"}}}}, "/sellers": {"get": {"operationId": "listSellers", "summary": "Sellers, with country and size", "parameters": [{"name": "country", "in": "query", "schema": {"type": "string"}, "description": "ISO 3166-1 alpha-2."}], "responses": {"200": {"description": "Sellers"}}}}, "/countries": {"get": {"operationId": "listCountries", "summary": "Countries covered", "responses": {"200": {"description": "Countries"}}}}, "/stats": {"get": {"operationId": "catalogueStats", "summary": "Size, freshness, exchange-rate source and terms", "responses": {"200": {"description": "Statistics"}}}}}}