{"openapi":"3.1.0","info":{"title":"HospiFox API","description":"\nHospiFox is a database of products and devices used daily by hospitality\nbusinesses and retailers — from disinfectants and batteries to kitchen\nappliances and apps.\n\n**Authentication:** All endpoints under `/api/v1` require an API key in the\nHTTP header `X-API-Key`. You will receive your key after approval by our\nteam — register at `/register`.\n","contact":{"name":"HospiFox Team","url":"https://hospifox.example/"},"license":{"name":"Proprietary"},"version":"0.1.0"},"paths":{"/api/v1/products":{"get":{"tags":["Public API"],"summary":"List products","operationId":"list_products_api_v1_products_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Free-text search across name and description.","title":"Q"},"description":"Free-text search across name and description."},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category.","title":"Category"},"description":"Filter by category."},{"name":"manufacturer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by manufacturer.","title":"Manufacturer Id"},"description":"Filter by manufacturer."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedProducts"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/{product_id}":{"get":{"tags":["Public API"],"summary":"Get product detail","operationId":"get_product_api_v1_products__product_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/by-ean/{ean}":{"get":{"tags":["Public API"],"summary":"Lookup product by EAN/GTIN","operationId":"get_product_by_ean_api_v1_products_by_ean__ean__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"ean","in":"path","required":true,"schema":{"type":"string","title":"Ean"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/{product_id}/manual":{"get":{"tags":["Public API"],"summary":"Download product manual file (PDF/binary)","operationId":"get_product_manual_api_v1_products__product_id__manual_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/{product_id}/manual/text":{"get":{"tags":["Public API"],"summary":"Get manual as plain text (AI-friendly)","operationId":"get_product_manual_text_api_v1_products__product_id__manual_text_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/manufacturers":{"get":{"tags":["Public API"],"summary":"List manufacturers","operationId":"list_manufacturers_api_v1_manufacturers_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedManufacturers"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/manufacturers/{manufacturer_id}":{"get":{"tags":["Public API"],"summary":"Get Manufacturer","operationId":"get_manufacturer_api_v1_manufacturers__manufacturer_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"manufacturer_id","in":"path","required":true,"schema":{"type":"integer","title":"Manufacturer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManufacturerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["Meta"],"summary":"Health check","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ManufacturerOut":{"properties":{"name":{"type":"string","title":"Name","examples":["Bosch Hausgeräte GmbH"]},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address","examples":["Carl-Wery-Straße 34, 81739 München"]},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","examples":["Germany"]},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","examples":["https://www.bosch-home.com"]},"id":{"type":"integer","title":"Id"}},"type":"object","required":["name","id"],"title":"ManufacturerOut"},"PaginatedManufacturers":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/ManufacturerOut"},"type":"array","title":"Items"}},"type":"object","required":["total","items"],"title":"PaginatedManufacturers"},"PaginatedProducts":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/ProductOut"},"type":"array","title":"Items"}},"type":"object","required":["total","items"],"title":"PaginatedProducts"},"ProductDetail":{"properties":{"name":{"type":"string","title":"Name","examples":["Bosch ProfiMixx 47"]},"ean":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ean","examples":["4242002819532"]},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","examples":["Kitchen Appliance"]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"country_of_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Of Origin","examples":["Germany"]},"purchase_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purchase Url","examples":["https://example-shop.de/product/123"]},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"manual_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manual File"},"id":{"type":"integer","title":"Id"},"manufacturer":{"$ref":"#/components/schemas/ManufacturerOut"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"manual_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manual Text"}},"type":"object","required":["name","id","manufacturer","created_at","updated_at"],"title":"ProductDetail"},"ProductOut":{"properties":{"name":{"type":"string","title":"Name","examples":["Bosch ProfiMixx 47"]},"ean":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ean","examples":["4242002819532"]},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","examples":["Kitchen Appliance"]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"country_of_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Of Origin","examples":["Germany"]},"purchase_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purchase Url","examples":["https://example-shop.de/product/123"]},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"manual_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manual File"},"id":{"type":"integer","title":"Id"},"manufacturer":{"$ref":"#/components/schemas/ManufacturerOut"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["name","id","manufacturer","created_at","updated_at"],"title":"ProductOut"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}