{"openapi":"3.1.0","info":{"title":"Blank Files API","description":"Programmatic access to minimal valid blank files by type and category.","version":"1.0.0"},"servers":[{"url":"http:\/\/blankfiles.com"}],"paths":{"\/api\/v1\/files":{"get":{"summary":"List all blank files","description":"Optional API key in `X-API-Key` may receive higher rate limits.","responses":{"200":{"description":"List of files","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/FileListResponse"}}}}}}},"\/api\/v1\/files\/{type}":{"get":{"summary":"List files by extension","description":"Optional API key in `X-API-Key` may receive higher rate limits.","parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string"},"description":"File extension, for example `pdf` or `xlsx`."}],"responses":{"200":{"description":"Filtered list of files","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/FileListResponse"}}}}}}},"\/api\/v1\/files\/{category}\/{type}":{"get":{"summary":"Get a single file by category and extension","description":"Optional API key in `X-API-Key` may receive higher rate limits.","parameters":[{"name":"category","in":"path","required":true,"schema":{"type":"string"},"description":"Category slug, for example `document-spreadsheet`."},{"name":"type","in":"path","required":true,"schema":{"type":"string"},"description":"File extension, for example `xlsx`."}],"responses":{"200":{"description":"Single-entry list of files","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/FileListResponse"}}}},"404":{"description":"File not found"}}}},"\/api\/v1\/status":{"get":{"summary":"Get API status and catalog metrics","description":"Returns operational status and aggregate counts from the blank files catalog.","responses":{"200":{"description":"API status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/StatusResponse"}}}}}}}},"components":{"schemas":{"FileListResponse":{"type":"object","required":["files","meta"],"properties":{"files":{"type":"array","items":{"$ref":"#\/components\/schemas\/File"}},"meta":{"$ref":"#\/components\/schemas\/Meta"}}},"File":{"type":"object","required":["category","type","url","package"],"properties":{"category":{"type":"string","example":"document-spreadsheet"},"type":{"type":"string","example":"xlsx"},"url":{"type":"string","format":"uri","example":"http:\/\/blankfiles.com\/files\/blank.xlsx"},"package":{"type":"boolean","example":false}}},"Meta":{"type":"object","required":["version","generated_at","count"],"properties":{"version":{"type":"string","example":"v1"},"generated_at":{"type":"string","format":"date-time"},"count":{"type":"integer","example":1}}},"StatusResponse":{"type":"object","required":["status","service","version","generated_at","catalog"],"properties":{"status":{"type":"string","example":"ok"},"service":{"type":"string","example":"blankfiles-api"},"version":{"type":"string","example":"v1"},"generated_at":{"type":"string","format":"date-time"},"catalog":{"type":"object","required":["source_repository","catalog_url","cdn_url","file_count","type_count","category_count"],"properties":{"source_repository":{"type":"string","format":"uri"},"catalog_url":{"type":"string","format":"uri"},"cdn_url":{"type":"string","format":"uri"},"file_count":{"type":"integer","example":300},"type_count":{"type":"integer","example":120},"category_count":{"type":"integer","example":15}}}}}}}}