{"openapi":"3.1.0","info":{"title":"apexAI Public API","version":"1.0.0","description":"Öffentliche Read-only-JSON-API von apexAI · Services, Produkte, Pricing, Testimonials, Team und Firmendaten. Keine Authentifizierung, CORS offen. Fehler kommen als JSON (Schema `Error`) mit stabilem `code` und `hint`; Schreib-Methoden enden mit 405, unbekannte Pfade mit 404.","contact":{"name":"Elevate Solutions GmbH","email":"info@apex-ai.ch","url":"https://apex-ai.ch"}},"externalDocs":{"description":"Entwickler-Portal mit Schnellstart, Fehlercodes und MCP-Server.","url":"https://apex-ai.ch/developers"},"servers":[{"url":"https://apex-ai.ch/api/v1","description":"Produktion"}],"security":[],"paths":{"/services":{"get":{"operationId":"listServices","summary":"Alle Service-Angebote auflisten.","responses":{"200":{"description":"Liste der Services.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Service"}},"meta":{"type":"object","properties":{"count":{"type":"integer"}},"required":["count"]}},"required":["data","meta"]}}}}}}},"/services/{slug}":{"get":{"operationId":"getService","summary":"Ein Service-Angebot per Slug abrufen.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","enum":["ai-first","solutions","consulting","products"]}}],"responses":{"200":{"description":"Service-Detail.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ServiceDetail"}},"required":["data"]}}}},"404":{"description":"Service nicht gefunden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/products":{"get":{"operationId":"listProducts","summary":"Alle Produkte auflisten.","responses":{"200":{"description":"Liste der Produkte.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"meta":{"type":"object","properties":{"count":{"type":"integer"}},"required":["count"]}},"required":["data","meta"]}}}}}}},"/products/{slug}":{"get":{"operationId":"getProduct","summary":"Ein Produkt per Slug abrufen, inklusive Pricing-Plänen.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","enum":["apextranscribe","apexacquire","swiss-knowledge-hub"]}}],"responses":{"200":{"description":"Produkt-Detail.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ProductDetail"}},"required":["data"]}}}},"404":{"description":"Produkt nicht gefunden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/blog":{"get":{"operationId":"listBlogPosts","summary":"Veröffentlichte Blog-Beiträge auflisten.","responses":{"200":{"description":"Liste der Beiträge.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BlogPost"}},"meta":{"type":"object","properties":{"count":{"type":"integer"}},"required":["count"]}},"required":["data","meta"]}}}}}}},"/blog/{slug}":{"get":{"operationId":"getBlogPost","summary":"Einen Blog-Beitrag per Slug abrufen, inklusive Inhalt als Markdown.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Beitrag-Detail.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BlogPostDetail"}},"required":["data"]}}}},"404":{"description":"Beitrag nicht gefunden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/jobs":{"get":{"operationId":"listJobs","summary":"Offene Stellen auflisten.","responses":{"200":{"description":"Liste der offenen Stellen.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Job"}},"meta":{"type":"object","properties":{"count":{"type":"integer"}},"required":["count"]}},"required":["data","meta"]}}}}}}},"/jobs/{slug}":{"get":{"operationId":"getJob","summary":"Eine offene Stelle per Slug abrufen, inklusive Inhalt als Markdown.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Stellen-Detail.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/JobDetail"}},"required":["data"]}}}},"404":{"description":"Stelle nicht gefunden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pricing":{"get":{"operationId":"getPricing","summary":"Preisübersicht der apexAI-Produkte.","responses":{"200":{"description":"Preisübersicht.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Pricing"}},"required":["data"]}}}}}}},"/testimonials":{"get":{"operationId":"listTestimonials","summary":"Kundenstimmen auflisten.","responses":{"200":{"description":"Liste der Testimonials.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Testimonial"}},"meta":{"type":"object","properties":{"count":{"type":"integer"}},"required":["count"]}},"required":["data","meta"]}}}}}}},"/team":{"get":{"operationId":"listTeam","summary":"Die Gründer von apexAI auflisten.","responses":{"200":{"description":"Liste der Gründer.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TeamMember"}},"meta":{"type":"object","properties":{"count":{"type":"integer"}},"required":["count"]}},"required":["data","meta"]}}}}}}},"/company":{"get":{"operationId":"getCompany","summary":"Firmendaten der Elevate Solutions GmbH abrufen.","responses":{"200":{"description":"Firmendaten.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Company"}},"required":["data"]}}}}}}},"/health":{"get":{"operationId":"getHealth","summary":"Liveness-Check.","responses":{"200":{"description":"Dienst ist erreichbar.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}}}}},"components":{"schemas":{"ServicePrice":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string","enum":["CHF"]},"model":{"type":"string","enum":["flat","monthly","usage","custom","from"]},"note":{"type":"string"}},"required":["currency","model"]},"Service":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"tagline":{"type":"string"},"shortDescription":{"type":"string"},"price":{"$ref":"#/components/schemas/ServicePrice"},"priceAnchor":{"type":"string"},"badge":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["slug","name","tagline","url"]},"ServiceDetail":{"allOf":[{"$ref":"#/components/schemas/Service"},{"type":"object","properties":{"longDescription":{"type":"string"},"duration":{"type":"string"},"targetAudience":{"type":"string"},"updatedAt":{"type":"string","format":"date"}}}]},"ProductPlan":{"type":"object","properties":{"name":{"type":"string"},"audience":{"type":"string"},"priceChf":{"type":"number","description":"Monatsbetrag in Franken · Rechengrundlage, passend zu «price»."},"price":{"type":"string"},"period":{"type":"string"},"annualChf":{"type":"number","description":"Jahresbetrag in Franken · nur Pläne mit Jahresabo."},"annualPrice":{"type":"string"},"annualPeriod":{"type":"string"},"highlight":{"type":"boolean"},"badge":{"type":"string"},"description":{"type":"string"},"featuresLead":{"type":"string","description":"Kopfzeile der Feature-Liste, z.B. «Alles aus Starter, plus» · «features» nennt dann nur den Zuwachs gegenüber dem genannten Plan."},"features":{"type":"array","items":{"type":"string"}},"platforms":{"type":"array","items":{"type":"string"},"description":"Im Plan enthaltene Plattformen, z.B. [«Web», «Windows»]."},"usageBased":{"type":"boolean","description":"Nutzungspreis statt Abo · der Preis gilt pro Minute, nicht pro Monat."},"ctaLabel":{"type":"string"}},"required":["name","priceChf","price","period","description"]},"Product":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"tagline":{"type":"string"},"shortDescription":{"type":"string"},"status":{"type":"string","enum":["available","coming-soon"]},"badge":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["slug","name","tagline","status","url"]},"ProductDetail":{"allOf":[{"$ref":"#/components/schemas/Product"},{"type":"object","properties":{"longDescription":{"type":"string"},"pricingPlans":{"type":"array","items":{"$ref":"#/components/schemas/ProductPlan"}},"faq":{"type":"array","items":{"$ref":"#/components/schemas/FaqItem"}},"updatedAt":{"type":"string","format":"date"}}}]},"FaqItem":{"type":"object","description":"Frage und Antwort, wortgleich mit dem FAQPage-Schema der Seite.","properties":{"id":{"type":"string"},"question":{"type":"string"},"answer":{"type":"string"}},"required":["id","question","answer"]},"Pricing":{"type":"object","description":"Preisübersicht der apexAI-Produkte (apexTranscribe, apexAcquire).","additionalProperties":true},"BlogPost":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"category":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"authors":{"type":"array","items":{"type":"string"}},"coverImage":{"type":["string","null"],"format":"uri"},"publishedAt":{"type":["string","null"],"format":"date"},"url":{"type":"string","format":"uri"}},"required":["slug","title","url"]},"BlogPostDetail":{"allOf":[{"$ref":"#/components/schemas/BlogPost"},{"type":"object","properties":{"readingMinutes":{"type":"integer"},"content":{"type":"string","description":"Beitragsinhalt als Markdown."}}}]},"Job":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"teaser":{"type":"string"},"pensum":{"type":["string","null"]},"employmentType":{"type":["string","null"]},"area":{"type":["string","null"]},"location":{"type":["string","null"]},"level":{"type":["string","null"]},"publishedAt":{"type":["string","null"],"format":"date"},"url":{"type":"string","format":"uri"}},"required":["slug","title","url"]},"JobDetail":{"allOf":[{"$ref":"#/components/schemas/Job"},{"type":"object","properties":{"applicationUrl":{"type":"string","format":"uri"},"content":{"type":"string","description":"Stellenbeschreibung als Markdown."}}}]},"Testimonial":{"type":"object","properties":{"id":{"type":"string"},"quote":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"company":{"type":"string"},"companyUrl":{"type":"string","format":"uri"}},"required":["id","quote","name","role","company"]},"TeamMember":{"type":"object","properties":{"name":{"type":"string"},"role":{"type":"string"},"focus":{"type":"string"},"email":{"type":"string","format":"email"},"linkedin":{"type":"string","format":"uri"}},"required":["name","role"]},"Company":{"type":"object","properties":{"name":{"type":"string"},"legalName":{"type":"string"},"claim":{"type":"string"},"founded":{"type":"integer"},"url":{"type":"string","format":"uri"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"uid":{"type":"string"},"handelsregisterNr":{"type":"string"},"operationalAddress":{"$ref":"#/components/schemas/Address"},"legalAddress":{"$ref":"#/components/schemas/Address"},"founders":{"type":"array","items":{"type":"string"}}},"required":["name","legalName","url"]},"Address":{"type":"object","properties":{"street":{"type":"string"},"zip":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"countryCode":{"type":"string"}},"required":["street","zip","city","countryCode"]},"Health":{"type":"object","properties":{"status":{"type":"string","enum":["ok"]},"time":{"type":"string","format":"date-time"}},"required":["status","time"]},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"status":{"type":"integer","description":"HTTP-Status, gleich wie in der Antwort."},"code":{"type":"string","enum":["endpoint_not_found","resource_not_found","method_not_allowed","internal_error"],"description":"Stabiler, maschinenlesbarer Fehlercode."},"message":{"type":"string"},"hint":{"type":"string","description":"Nächster Schritt, um den Fehler zu beheben."},"docs":{"type":"string","format":"uri","description":"Doku zum Fehlerformat."}},"required":["status","code","message","hint","docs"]}},"required":["error"]}}}}