{"openapi":"3.1.0","info":{"title":"Fortune Fog API","version":"1.0.0-phase1","description":"Public-safe deterministic fortune, reflective prompt, quote, share, discovery, health, and MCP API for Fortune Fog. Model-backed operations are scaffolded and return honest degraded states unless a backend provider is configured.","contact":{"name":"PlatPhormNews","email":"hello@platphormnews.com","url":"https://platphormnews.com"}},"servers":[{"url":"https://fortune.platphormnews.com","description":"Fortune Fog production"}],"components":{"securitySchemes":{"PlatPhormApiKey":{"type":"apiKey","in":"header","name":"X-PlatPhorm-API-Key","description":"Future protected-action key. Public-safe Phase 1 fortune reveal, discovery, health, and read-only MCP introspection do not require it by default."},"PlatPhormBearer":{"type":"http","scheme":"bearer","description":"Authorization: Bearer $PLATPHORM_API_KEY for future protected actions."}},"schemas":{"ApiSuccess":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object"}},"required":["ok","data"]},"ApiError":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}},"required":["code","message"]}},"required":["ok","error"]}}},"paths":{"/api/health":{"get":{"summary":"GET /api/health","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/health":{"get":{"summary":"GET /api/v1/health","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/fortune":{"get":{"summary":"GET /api/v1/fortune","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/fortune/reveal":{"post":{"summary":"POST /api/v1/fortune/reveal","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/fortune/deterministic":{"post":{"summary":"POST /api/v1/fortune/deterministic","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/fortune/goal":{"post":{"summary":"POST /api/v1/fortune/goal","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/fortune/categories":{"get":{"summary":"GET /api/v1/fortune/categories","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/fortune/tones":{"get":{"summary":"GET /api/v1/fortune/tones","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/quotes":{"get":{"summary":"GET /api/v1/quotes","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/share-card":{"post":{"summary":"POST /api/v1/share-card","description":"Fortune Fog public-safe degraded server renderer endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/export":{"post":{"summary":"POST /api/v1/export","description":"Fortune Fog public-safe endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/model/fortune":{"post":{"summary":"POST /api/v1/model/fortune","description":"Fortune Fog future protected when enforcement enabled endpoint.","security":[{"PlatPhormApiKey":[]},{"PlatPhormBearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/model/share-copy":{"post":{"summary":"POST /api/v1/model/share-copy","description":"Fortune Fog future protected when enforcement enabled endpoint.","security":[{"PlatPhormApiKey":[]},{"PlatPhormBearer":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/mcp":{"get":{"summary":"GET /api/mcp","description":"Fortune Fog public-safe introspection endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"summary":"POST /api/mcp","description":"Fortune Fog public-safe bounded JSON-RPC tools endpoint.","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccess"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}