{"openapi":"3.1.0","info":{"title":"Bannerify Public API","version":"1.0.0","description":"Machine-readable discovery endpoints for Bannerify animation presets, prompt generation, and agent tooling."},"servers":[{"url":"https://bannerify.hypermatic.com"}],"tags":[{"name":"Discovery","description":"Machine-readable discovery and health endpoints for Bannerify."},{"name":"Animations","description":"Bannerify animation preset inventory grouped by category."},{"name":"Prompting","description":"Prompt template endpoints for generating Bannerify JSON animations."}],"paths":{"/api/index.json":{"get":{"tags":["Discovery"],"summary":"Get the Bannerify public API index","operationId":"getApiIndex","responses":{"200":{"description":"The API index response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiIndexResponse"}}}}}}},"/api/status.json":{"get":{"tags":["Discovery"],"summary":"Get discovery endpoint status","operationId":"getStatus","responses":{"200":{"description":"A health-style status response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}}}}},"/api/animations.json":{"get":{"tags":["Animations"],"summary":"List Bannerify animation presets and categories","operationId":"listAnimations","responses":{"200":{"description":"Animation categories and preset metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnimationsResponse"}}}}}}},"/api/prompt-template.json":{"get":{"tags":["Prompting"],"summary":"Get the Bannerify JSON generation prompt template","operationId":"getPromptTemplate","responses":{"200":{"description":"Prompt template and usage guidance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptTemplateResponse"}}}}}}}},"components":{"schemas":{"ApiIndexResponse":{"type":"object","required":["name","version","description","authentication","endpoints"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"authentication":{"type":"string","enum":["public"]},"endpoints":{"type":"object","additionalProperties":{"type":"string","format":"uri"}}}},"StatusResponse":{"type":"object","required":["service","status","generatedAt","features","authentication"],"properties":{"api":{"$ref":"#/components/schemas/ApiIndexResponse"},"service":{"type":"string"},"status":{"type":"string","enum":["ok"]},"generatedAt":{"type":"string","format":"date-time"},"features":{"type":"object","additionalProperties":{"type":"boolean"}},"authentication":{"type":"object","required":["protectedApis","reason"],"properties":{"protectedApis":{"type":"boolean"},"reason":{"type":"string"}}}}},"Animation":{"type":"object","required":["name","key"],"properties":{"name":{"type":"string"},"key":{"type":"string"}}},"AnimationGuide":{"type":"object","required":["overview","useCases","tips"],"properties":{"overview":{"type":"string"},"useCases":{"type":"string"},"tips":{"type":"array","items":{"type":"string"}}}},"AnimationCategory":{"type":"object","required":["slug","title","description","url","count","guide","animations"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"url":{"type":"string","format":"uri"},"count":{"type":"integer"},"guide":{"$ref":"#/components/schemas/AnimationGuide"},"animations":{"type":"array","items":{"$ref":"#/components/schemas/Animation"}}}},"AnimationPreset":{"type":"object","required":["name","key","categorySlug","categoryTitle","categoryUrl"],"properties":{"name":{"type":"string"},"key":{"type":"string"},"categorySlug":{"type":"string"},"categoryTitle":{"type":"string"},"categoryUrl":{"type":"string","format":"uri"}}},"AnimationsResponse":{"type":"object","required":["api","totalVisibleAnimations","totalCategories","categories","presets"],"properties":{"api":{"$ref":"#/components/schemas/ApiIndexResponse"},"totalVisibleAnimations":{"type":"integer"},"totalCategories":{"type":"integer"},"categories":{"type":"array","items":{"$ref":"#/components/schemas/AnimationCategory"}},"presets":{"type":"array","items":{"$ref":"#/components/schemas/AnimationPreset"}}}},"PromptTemplateResponse":{"type":"object","required":["api","templateName","description","placeholder","promptTemplate","promptWithPlaceholder","usageSteps","docs"],"properties":{"api":{"$ref":"#/components/schemas/ApiIndexResponse"},"templateName":{"type":"string"},"description":{"type":"string"},"placeholder":{"type":"string"},"promptTemplate":{"type":"string"},"promptWithPlaceholder":{"type":"string"},"usageSteps":{"type":"array","items":{"type":"string"}},"docs":{"type":"object","additionalProperties":{"type":"string","format":"uri"}}}}}}}