{"openapi":"3.0.3","info":{"title":"Kivi UI API & Component Registry","description":"Machine-readable API specification for Kivi UI component library, registry metadata, interactive features, and utilities for AI agents and developer tools.","version":"1.0.0","contact":{"name":"Kivi UI Support","url":"https://kiviui.dev"}},"servers":[{"url":"https://kiviui.dev","description":"Production server"}],"paths":{"/openapi.json":{"get":{"summary":"Get OpenAPI Specification in JSON","operationId":"getOpenApiJson","responses":{"200":{"description":"OpenAPI Specification in JSON format","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/openapi.yaml":{"get":{"summary":"Get OpenAPI Specification in YAML","operationId":"getOpenApiYaml","responses":{"200":{"description":"OpenAPI Specification in YAML format","content":{"text/yaml":{"schema":{"type":"string"}}}}}}},"/r/registry.json":{"get":{"summary":"Get Component Registry Index","description":"Returns full list of available UI components, blocks, dependencies, and metadata for shadcn/Kivi UI CLI.","operationId":"getRegistryIndex","responses":{"200":{"description":"Component registry array","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RegistryItem"}}}}}}}},"/r/{name}.json":{"get":{"summary":"Get Component Spec","description":"Returns full component code, registry dependencies, and configuration for a specific component name.","operationId":"getComponentSpec","parameters":[{"name":"name","in":"path","required":true,"description":"The slug of the component (e.g. animated-button)","schema":{"type":"string"}}],"responses":{"200":{"description":"Component detail specification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryItem"}}}},"404":{"description":"Component not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/contact":{"post":{"summary":"Submit Contact Form","description":"Sends a message to the Kivi UI team.","operationId":"submitContact","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}}},"responses":{"200":{"description":"Contact form submitted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"message":{"type":"string","example":"Your message has been sent successfully."}}}}}},"400":{"description":"Invalid input or validation failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/feedback":{"post":{"summary":"Submit Feedback","description":"Submits feedback for components or documentation pages.","operationId":"submitFeedback","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRequest"}}}},"responses":{"200":{"description":"Feedback submitted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"message":{"type":"string"}}}}}},"400":{"description":"Invalid feedback data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/newsletter":{"post":{"summary":"Subscribe to Newsletter","description":"Subscribes an email address to Kivi UI updates.","operationId":"subscribeNewsletter","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterRequest"}}}},"responses":{"200":{"description":"Subscription successful","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"message":{"type":"string"}}}}}},"400":{"description":"Invalid email address","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/showcase-submit":{"post":{"summary":"Submit Site to Showcase","description":"Submits a community website built with Kivi UI for inclusion in the showcase.","operationId":"submitShowcase","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShowcaseSubmitRequest"}}}},"responses":{"200":{"description":"Showcase submission received","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true}}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/check-seo":{"get":{"summary":"Check Page SEO Score","operationId":"checkSeo","responses":{"200":{"description":"SEO status report","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/check-robots":{"get":{"summary":"Check Robots.txt Status","operationId":"checkRobots","responses":{"200":{"description":"Robots verification report","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/check-sitemap":{"get":{"summary":"Check Sitemap Status","operationId":"checkSitemap","responses":{"200":{"description":"Sitemap verification report","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","hint"],"properties":{"code":{"type":"string","example":"BAD_REQUEST"},"message":{"type":"string","example":"Validation failed"},"hint":{"type":"string","example":"Please supply all required fields: name, email, subject, message."},"details":{"description":"Optional error details or validation errors"}}}}},"ContactRequest":{"type":"object","required":["name","email","subject","message"],"properties":{"name":{"type":"string","example":"Developer"},"email":{"type":"string","format":"email","example":"dev@example.com"},"subject":{"type":"string","example":"Inquiry about Kivi UI components"},"message":{"type":"string","example":"How can I integrate Kivi UI into Next.js App Router?"}}},"FeedbackRequest":{"type":"object","required":["feedback"],"properties":{"feedback":{"type":"string","example":"Great component designs!"},"rating":{"type":"integer","minimum":1,"maximum":5,"example":5},"pageUrl":{"type":"string","example":"https://kiviui.dev/components/animated-button"}}},"NewsletterRequest":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","example":"agent@example.com"}}},"ShowcaseSubmitRequest":{"type":"object","required":["siteName","siteUrl"],"properties":{"siteName":{"type":"string","example":"My Portfolio"},"siteUrl":{"type":"string","format":"uri","example":"https://myportfolio.com"},"description":{"type":"string","example":"Built with Kivi UI and Tailwind CSS"}}},"RegistryItem":{"type":"object","required":["name","type","files"],"properties":{"name":{"type":"string","example":"animated-button"},"type":{"type":"string","example":"registry:ui"},"title":{"type":"string","example":"Animated Button"},"description":{"type":"string","example":"A button with interactive hover animations"},"dependencies":{"type":"array","items":{"type":"string"}},"registryDependencies":{"type":"array","items":{"type":"string"}},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"},"type":{"type":"string"}}}}}}}}}