{"openapi":"3.0.3","info":{"title":"Ziantrix Public API","description":"Public API endpoints for Ziantrix. For developer support, contact contact@ziantrix.com.","version":"1.0.0","contact":{"name":"Ziantrix Support","email":"contact@ziantrix.com","url":"https://ziantrix.com/contact"},"license":{"name":"Proprietary","url":"https://ziantrix.com/terms"}},"servers":[{"url":"https://ziantrix.com/api/python","description":"Production"}],"tags":[{"name":"Health","description":"Service availability checks"},{"name":"Contact","description":"Public contact form submission"}],"paths":{"/":{"get":{"tags":["Health"],"summary":"Root health check","description":"Returns API status and a welcome message.","operationId":"rootHealth","responses":{"200":{"description":"API is running","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Ziantrix API is running"},"status":{"type":"string","example":"healthy"}}}}}}}}},"/health":{"get":{"tags":["Health"],"summary":"Health check","description":"Lightweight health check for monitoring.","operationId":"healthCheck","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"healthy"}}}}}}}}},"/api/contact":{"post":{"tags":["Contact"],"summary":"Create contact submission","description":"Submit a contact form entry. Rate limited to 5 requests per 15 minutes per IP.","operationId":"createContactSubmission","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSubmissionCreate"},"examples":{"minimal":{"summary":"Minimal valid submission","value":{"name":"Jane Doe","email":"jane@example.com","message":"Interested in a demo for our 200-person team."}},"full":{"summary":"Full submission with all fields","value":{"name":"Jane Doe","email":"jane@example.com","organization":"Acme Corp","message":"Interested in a demo for our 200-person team."}}}}}},"responses":{"201":{"description":"Submission created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSubmission"}}}},"400":{"description":"Validation error — missing or invalid fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded — try again later","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"ContactSubmissionCreate":{"type":"object","required":["name","email","message"],"properties":{"name":{"type":"string","minLength":1,"description":"Submitter's full name","example":"Jane Doe"},"email":{"type":"string","format":"email","description":"Submitter's work email","example":"jane@example.com"},"organization":{"type":"string","nullable":true,"description":"Organization or company name","example":"Acme Corp"},"message":{"type":"string","minLength":1,"description":"Message or inquiry details","example":"Interested in a demo for our 200-person team."}}},"ContactSubmission":{"type":"object","properties":{"id":{"type":"integer","description":"Unique submission identifier","example":42},"name":{"type":"string","example":"Jane Doe"},"email":{"type":"string","format":"email","example":"jane@example.com"},"organization":{"type":"string","nullable":true,"example":"Acme Corp"},"message":{"type":"string","example":"Interested in a demo..."},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp","example":"2026-06-05T12:00:00Z"}}},"ErrorResponse":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable error message","example":"Name is required"}}}}}}