{"openapi":"3.1.0","info":{"title":"toddwatts.dev API","version":"1.0.0","summary":"Portfolio intelligence, publishing, and operations APIs for toddwatts.dev.","description":"Machine-readable contract for the Ghost Signal portfolio API surface: profile proof, portfolio evidence, feed telemetry, health posture, ops status, authenticated publishing, and synthetic monitoring."},"servers":[{"url":"https://toddwatts.dev","description":"Production"},{"url":"http://localhost:3003","description":"Local development"}],"tags":[{"name":"Feed","description":"Ranked AI, software engineering, and technology signal aggregation."},{"name":"Profile","description":"Machine-readable software-engineering profile and capability map."},{"name":"Operations","description":"Operational posture, history, alerting, and monitor state."},{"name":"Publishing","description":"Authenticated headless blog publishing."},{"name":"Contract","description":"Machine-readable API contract."}],"paths":{"/api/openapi":{"get":{"tags":["Contract"],"summary":"Read this OpenAPI contract","operationId":"getOpenApiContract","responses":{"200":{"description":"OpenAPI 3.1 contract for the toddwatts.dev API surface.","content":{"application/json":{"schema":{"type":"object","required":["openapi","info","paths","components"]}}}}}}},"/api/capabilities":{"get":{"tags":["Profile"],"summary":"Read Gordon Todd Watts capability profile","operationId":"getCapabilityProfile","responses":{"200":{"description":"No-store software-engineering capability contract for the public profile.","headers":{"Cache-Control":{"schema":{"type":"string","examples":["no-store"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilityResponse"}}}}}}},"/api/portfolio":{"get":{"tags":["Profile"],"summary":"Read Gordon Todd Watts portfolio proof graph","operationId":"getPortfolioProofGraph","responses":{"200":{"description":"No-store machine-readable graph of projects, capability lanes, release gates, and proof routes.","headers":{"Cache-Control":{"schema":{"type":"string","examples":["no-store"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioProofResponse"}}}}}}},"/api/feed":{"get":{"tags":["Feed"],"summary":"Read ranked feed items with aggregation telemetry","operationId":"getSignalFeed","responses":{"200":{"description":"Ranked feed items and aggregation metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedResponse"}}}}}}},"/api/health":{"get":{"tags":["Operations"],"summary":"Read platform health posture","operationId":"getHealth","responses":{"200":{"description":"No-store platform health response.","headers":{"Cache-Control":{"schema":{"type":"string","examples":["no-store"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/api/ops/status":{"get":{"tags":["Operations"],"summary":"Read operational status and history posture","operationId":"getOpsStatus","responses":{"200":{"description":"No-store operational state for feed, sources, history, and monitor alerts.","headers":{"Cache-Control":{"schema":{"type":"string","examples":["no-store"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpsStatusResponse"}}}}}}},"/api/publish":{"options":{"tags":["Publishing"],"summary":"Read publish CORS policy","operationId":"optionsPublishPost","responses":{"204":{"description":"Allowed origin, method, and authorization headers for publish clients.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}},"Access-Control-Allow-Methods":{"schema":{"type":"string","examples":["POST, OPTIONS"]}},"Access-Control-Allow-Headers":{"schema":{"type":"string","examples":["Content-Type, Authorization"]}},"Access-Control-Expose-Headers":{"schema":{"type":"string","examples":["RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy, Retry-After"]}},"Cache-Control":{"schema":{"type":"string","examples":["no-store"]}},"Vary":{"schema":{"type":"string","examples":["Origin"]}}}}}},"post":{"tags":["Publishing"],"summary":"Publish an MDX blog post","operationId":"publishBlogPost","security":[{"PublishBearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRequest"}}}},"responses":{"200":{"description":"Blog post written and revalidated.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishSuccessResponse"}}}},"400":{"$ref":"#/components/responses/PublishErrorResponse"},"401":{"$ref":"#/components/responses/PublishErrorResponse"},"409":{"$ref":"#/components/responses/PublishErrorResponse"},"413":{"$ref":"#/components/responses/PublishErrorResponse"},"415":{"$ref":"#/components/responses/PublishErrorResponse"},"429":{"$ref":"#/components/responses/PublishRateLimitResponse"},"500":{"$ref":"#/components/responses/PublishErrorResponse"},"503":{"$ref":"#/components/responses/PublishErrorResponse"}}}},"/api/monitor":{"get":{"tags":["Operations"],"summary":"Run synthetic production monitor","operationId":"runSyntheticMonitor","security":[{"CronBearerAuth":[]}],"responses":{"200":{"description":"Monitor completed with ok or degraded posture.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorResponse"}}}},"401":{"$ref":"#/components/responses/ErrorResponse"},"503":{"description":"Monitor completed and found an error posture.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorResponse"}}}}}}}},"components":{"securitySchemes":{"PublishBearerAuth":{"type":"http","scheme":"bearer","description":"Uses BLOG_PUBLISH_SECRET."},"CronBearerAuth":{"type":"http","scheme":"bearer","description":"Uses CRON_SECRET."}},"responses":{"ErrorResponse":{"description":"JSON error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"PublishErrorResponse":{"description":"JSON publishing error response with rate-limit posture.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"PublishRateLimitResponse":{"description":"Publishing rate limit exceeded.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"headers":{"RateLimitLimit":{"description":"Maximum requests allowed in the current fixed window.","schema":{"type":"integer","minimum":1,"examples":[5]}},"RateLimitRemaining":{"description":"Requests remaining in the current fixed window.","schema":{"type":"integer","minimum":0,"examples":[4]}},"RateLimitReset":{"description":"Seconds until the current fixed window resets.","schema":{"type":"integer","minimum":0,"examples":[60]}},"RateLimitPolicy":{"description":"Fixed-window request policy.","schema":{"type":"string","examples":["5;w=60"]}},"RetryAfter":{"description":"Seconds the client should wait before retrying.","schema":{"type":"integer","minimum":1,"examples":[60]}}},"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"status":{"type":"string"},"generatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"CapabilityResponse":{"type":"object","required":["version","generatedAt","owner","summary","metrics","lanes","fitSignals","proofRoutes"],"properties":{"version":{"type":"string"},"generatedAt":{"type":"string","format":"date-time"},"owner":{"$ref":"#/components/schemas/CapabilityOwner"},"summary":{"type":"string"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/CapabilityMetric"}},"lanes":{"type":"array","items":{"$ref":"#/components/schemas/CapabilityLane"}},"fitSignals":{"type":"array","items":{"type":"string"}},"proofRoutes":{"type":"array","items":{"type":"string"}}}},"CapabilityOwner":{"type":"object","required":["name","title","location"],"properties":{"name":{"type":"string"},"title":{"type":"string"},"location":{"type":"string"}}},"CapabilityMetric":{"type":"object","required":["label","value","detail"],"properties":{"label":{"type":"string"},"value":{"type":"string"},"detail":{"type":"string"}}},"CapabilityLane":{"type":"object","required":["id","index","label","focus","signal","stack","proof","output","evidence"],"properties":{"id":{"type":"string"},"index":{"type":"string"},"label":{"type":"string"},"focus":{"type":"string"},"signal":{"type":"string"},"stack":{"type":"array","items":{"type":"string"}},"proof":{"type":"string"},"output":{"type":"string"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/CapabilityEvidenceSignal"}}}},"CapabilityEvidenceSignal":{"type":"object","required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string"}}},"PortfolioProofResponse":{"type":"object","required":["version","generatedAt","owner","summary","totals","capability","projects","quality","proofRoutes"],"properties":{"version":{"type":"string"},"generatedAt":{"type":"string","format":"date-time"},"owner":{"$ref":"#/components/schemas/CapabilityOwner"},"summary":{"type":"string"},"totals":{"$ref":"#/components/schemas/PortfolioProofTotals"},"capability":{"$ref":"#/components/schemas/PortfolioCapabilitySummary"},"projects":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioProjectProof"}},"quality":{"$ref":"#/components/schemas/QualityContract"},"proofRoutes":{"type":"array","items":{"type":"string"}}}},"PortfolioProofTotals":{"type":"object","required":["projects","liveSystems","aiLinked","openSource","highlighted","capabilityLanes","qualityGates","auditedChecks"],"properties":{"projects":{"type":"number"},"liveSystems":{"type":"number"},"aiLinked":{"type":"number"},"openSource":{"type":"number"},"highlighted":{"type":"number"},"capabilityLanes":{"type":"number"},"qualityGates":{"type":"number"},"auditedChecks":{"type":"number"}}},"PortfolioCapabilitySummary":{"type":"object","required":["version","metrics","lanes","fitSignals"],"properties":{"version":{"type":"string"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/CapabilityMetric"}},"lanes":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioCapabilityLane"}},"fitSignals":{"type":"array","items":{"type":"string"}}}},"PortfolioCapabilityLane":{"type":"object","required":["id","label","focus","signal","output","evidence"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"focus":{"type":"string"},"signal":{"type":"string"},"output":{"type":"string"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/CapabilityEvidenceSignal"}}}},"PortfolioProjectProof":{"type":"object","required":["id","title","tagline","status","year","href","impactLine","tags","architecture","stats","proof","outcomes","systemMap","evidence"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"tagline":{"type":"string"},"status":{"type":"string","enum":["live","wip","research"]},"year":{"type":"string"},"href":{"type":["string","null"]},"impactLine":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"architecture":{"type":"array","items":{"type":"string"}},"stats":{"type":"array","items":{"$ref":"#/components/schemas/ProjectStat"}},"proof":{"type":"array","items":{"type":"string"}},"outcomes":{"type":"array","items":{"type":"string"}},"systemMap":{"$ref":"#/components/schemas/ProjectSystemMap"},"evidence":{"$ref":"#/components/schemas/PortfolioEvidence"}}},"ProjectStat":{"type":"object","required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string"}}},"ProjectSystemMap":{"type":"object","required":["intake","core","output","controls","telemetry"],"properties":{"intake":{"$ref":"#/components/schemas/ProjectSystemNode"},"core":{"$ref":"#/components/schemas/ProjectSystemNode"},"output":{"$ref":"#/components/schemas/ProjectSystemNode"},"controls":{"type":"array","items":{"type":"string"}},"telemetry":{"type":"array","items":{"$ref":"#/components/schemas/ProjectStat"}}}},"ProjectSystemNode":{"type":"object","required":["label","detail"],"properties":{"label":{"type":"string"},"detail":{"type":"string"}}},"PortfolioEvidence":{"type":"object","required":["label","artifact","detail","signals","inspection"],"properties":{"label":{"type":"string"},"artifact":{"type":"string"},"detail":{"type":"string"},"signals":{"type":"array","items":{"type":"string"}},"inspection":{"type":"array","items":{"$ref":"#/components/schemas/ProjectStat"}}}},"QualityContract":{"type":"object","required":["version","mode","verificationCommand","failurePosture","releaseGates","coverageSignals"],"properties":{"version":{"type":"string"},"mode":{"type":"string","enum":["local"]},"verificationCommand":{"type":"string"},"failurePosture":{"type":"string"},"releaseGates":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseGate"}},"coverageSignals":{"type":"array","items":{"$ref":"#/components/schemas/CoverageSignal"}}}},"ReleaseGate":{"type":"object","required":["gate","command","proof","status"],"properties":{"gate":{"type":"string"},"command":{"type":"string"},"proof":{"type":"string"},"status":{"type":"string"}}},"CoverageSignal":{"type":"object","required":["label","value","detail"],"properties":{"label":{"type":"string"},"value":{"type":"string"},"detail":{"type":"string"}}},"FeedResponse":{"type":"object","required":["items","fetchedAt","meta"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/NewsItem"}},"fetchedAt":{"type":"string","format":"date-time"},"error":{"type":"string"},"meta":{"$ref":"#/components/schemas/FeedMeta"}}},"NewsItem":{"type":"object","required":["id","title","url","source","categories","score","publishedAt"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"source":{"type":"string"},"categories":{"type":"array","items":{"type":"string","enum":["ai","web","systems","research","video","tech","dev"]}},"score":{"type":"number"},"commentCount":{"type":"number"},"commentUrl":{"type":["string","null"],"format":"uri"},"author":{"type":["string","null"]},"publishedAt":{"type":"string","format":"date-time"},"excerpt":{"type":["string","null"]},"thumbnail":{"type":["string","null"]},"isVideo":{"type":"boolean"}}},"FeedMeta":{"type":"object","required":["count","totalFetched","totalSelected","sourceCount","sourceCounts","categoryCounts","ranking","diversityPolicy","revalidateSeconds","freshness","health","quality","calibration","recommendations","sources","cache"],"properties":{"count":{"type":"number"},"totalFetched":{"type":"number"},"totalSelected":{"type":"number"},"sourceCount":{"type":"number"},"sourceCounts":{"type":"object","additionalProperties":{"type":"number"}},"categoryCounts":{"type":"object","additionalProperties":{"type":"number"}},"ranking":{"type":"string"},"diversityPolicy":{"type":"string"},"revalidateSeconds":{"type":"number","const":900},"freshness":{"$ref":"#/components/schemas/Freshness"},"health":{"$ref":"#/components/schemas/FeedHealth"},"quality":{"$ref":"#/components/schemas/FeedQuality"},"calibration":{"$ref":"#/components/schemas/FeedCalibration"},"recommendations":{"type":"array","items":{"$ref":"#/components/schemas/NewsSourceRecommendation"}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/NewsSourceTelemetry"}},"cache":{"$ref":"#/components/schemas/FeedCache"}}},"FeedCache":{"type":"object","required":["status","ageSeconds","ttlSeconds","staleWhileRevalidateSeconds","cachedAt","expiresAt"],"properties":{"status":{"type":"string","enum":["miss","fresh","stale"]},"ageSeconds":{"type":"number","minimum":0},"ttlSeconds":{"type":"number","const":900},"staleWhileRevalidateSeconds":{"type":"number","const":3600},"cachedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}}},"FeedHealth":{"type":"object","required":["online","degraded","error","coveragePct"],"properties":{"online":{"type":"number"},"degraded":{"type":"number"},"error":{"type":"number"},"coveragePct":{"type":"number"}}},"FeedQuality":{"type":"object","required":["averageScore","primeSources","steadySources","watchSources","coldSources","freshSources","staleSources","averageLatencyMs","selectedSourceCoveragePct"],"properties":{"averageScore":{"type":"number","minimum":0,"maximum":100},"primeSources":{"type":"number"},"steadySources":{"type":"number"},"watchSources":{"type":"number"},"coldSources":{"type":"number"},"freshSources":{"type":"number"},"staleSources":{"type":"number"},"averageLatencyMs":{"type":"number"},"selectedSourceCoveragePct":{"type":"number","minimum":0,"maximum":100}}},"FeedCalibration":{"type":"object","required":["version","model","maxScore","preCapMaxPoints","factors","qualityBands","freshnessBands","latencyBands","observed"],"properties":{"version":{"type":"string"},"model":{"type":"string"},"maxScore":{"type":"number","const":100},"preCapMaxPoints":{"type":"number"},"factors":{"type":"array","items":{"$ref":"#/components/schemas/FeedCalibrationFactor"}},"qualityBands":{"type":"array","items":{"$ref":"#/components/schemas/FeedQualityBand"}},"freshnessBands":{"type":"array","items":{"$ref":"#/components/schemas/FeedFreshnessBand"}},"latencyBands":{"type":"array","items":{"$ref":"#/components/schemas/FeedLatencyBand"}},"observed":{"$ref":"#/components/schemas/FeedCalibrationObserved"}}},"FeedCalibrationFactor":{"type":"object","required":["id","label","maxPoints","signal"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"maxPoints":{"type":"number"},"signal":{"type":"string"}}},"FeedQualityBand":{"type":"object","required":["label","minScore","maxScore","detail"],"properties":{"label":{"type":"string","enum":["prime","steady","watch","cold"]},"minScore":{"type":"number"},"maxScore":{"type":"number"},"detail":{"type":"string"}}},"FeedFreshnessBand":{"type":"object","required":["status","maxMinutes","detail"],"properties":{"status":{"type":"string","enum":["fresh","aging","stale","unknown"]},"maxMinutes":{"type":["number","null"]},"detail":{"type":"string"}}},"FeedLatencyBand":{"type":"object","required":["status","maxMs","detail"],"properties":{"status":{"type":"string","enum":["fast","steady","slow"]},"maxMs":{"type":["number","null"]},"detail":{"type":"string"}}},"FeedCalibrationObserved":{"type":"object","required":["configuredSources","selectedSources","selectedCoveragePct","averageSourceWeight","averageSelectionRatePct","averageFreshnessMinutes","averageLatencyMs"],"properties":{"configuredSources":{"type":"number"},"selectedSources":{"type":"number"},"selectedCoveragePct":{"type":"number","minimum":0,"maximum":100},"averageSourceWeight":{"type":"number"},"averageSelectionRatePct":{"type":"number","minimum":0,"maximum":100},"averageFreshnessMinutes":{"type":["number","null"]},"averageLatencyMs":{"type":"number"}}},"Freshness":{"type":"object","required":["newestItemAt","oldestItemAt"],"properties":{"newestItemAt":{"type":["string","null"],"format":"date-time"},"oldestItemAt":{"type":["string","null"],"format":"date-time"}}},"NewsSourceRecommendation":{"type":"object","required":["source","label","priority","reason","action","signal"],"properties":{"source":{"type":"string"},"label":{"type":"string"},"priority":{"type":"string","enum":["critical","watch","tune","monitor"]},"reason":{"type":"string"},"action":{"type":"string"},"signal":{"type":"string"}}},"NewsSourceTelemetry":{"type":"object","required":["source","label","short","weight","status","fetchedCount","selectedCount","selectionRatePct","latencyMs","latencyStatus","freshnessMinutes","freshnessStatus","qualityScore","qualityLabel"],"properties":{"source":{"type":"string"},"label":{"type":"string"},"short":{"type":"string"},"weight":{"type":"number"},"status":{"type":"string","enum":["online","degraded","error"]},"fetchedCount":{"type":"number"},"selectedCount":{"type":"number"},"selectionRatePct":{"type":"number","minimum":0,"maximum":100},"latencyMs":{"type":"number"},"latencyStatus":{"type":"string","enum":["fast","steady","slow"]},"newestItemAt":{"type":["string","null"],"format":"date-time"},"freshnessMinutes":{"type":["number","null"]},"freshnessStatus":{"type":"string","enum":["fresh","aging","stale","unknown"]},"qualityScore":{"type":"number","minimum":0,"maximum":100},"qualityLabel":{"type":"string","enum":["prime","steady","watch","cold"]},"categories":{"type":"array","items":{"type":"string"}}}},"HealthResponse":{"type":"object","required":["status","site","timestamp","version","release","contentStore","checks"],"properties":{"status":{"type":"string","enum":["ok"]},"site":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"version":{"type":"string"},"release":{"$ref":"#/components/schemas/ReleaseInfo"},"contentStore":{"$ref":"#/components/schemas/BlogContentStore"},"checks":{"type":"object","required":["feedAggregation","blogPublishing","opsStatus","syntheticMonitor","monitorAlerts","cronAuth","opsHistory","opsHistoryDurability","feedSnapshots","contentStore","contentStoreDurability","deploymentTarget"],"additionalProperties":{"type":"string"}}}},"OpsStatusResponse":{"type":"object","required":["status","generatedAt","site","release","contentStore","checks","feed","sources","history","alerts"],"properties":{"status":{"type":"string","enum":["ok","degraded","error"]},"generatedAt":{"type":"string","format":"date-time"},"site":{"type":"string"},"release":{"$ref":"#/components/schemas/ReleaseInfo"},"contentStore":{"$ref":"#/components/schemas/BlogContentStore"},"checks":{"type":"object","additionalProperties":true},"feed":{"$ref":"#/components/schemas/OpsFeedStatus"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/NewsSourceTelemetry"}},"history":{"type":"object","additionalProperties":true},"alerts":{"type":"object","additionalProperties":true},"snapshots":{"type":"object","additionalProperties":true}}},"OpsFeedStatus":{"type":"object","required":["fetchedAt","totalFetched","totalSelected","sourceCount","categoryCounts","health","quality","calibration","recommendations","cache","trend","freshness","ranking","diversityPolicy"],"properties":{"fetchedAt":{"type":"string","format":"date-time"},"totalFetched":{"type":"number"},"totalSelected":{"type":"number"},"sourceCount":{"type":"number"},"categoryCounts":{"type":"object","additionalProperties":{"type":"number"}},"health":{"$ref":"#/components/schemas/FeedHealth"},"quality":{"$ref":"#/components/schemas/FeedQuality"},"calibration":{"$ref":"#/components/schemas/FeedCalibration"},"recommendations":{"type":"array","items":{"$ref":"#/components/schemas/NewsSourceRecommendation"}},"cache":{"$ref":"#/components/schemas/FeedCache"},"trend":{"$ref":"#/components/schemas/FeedSnapshotTrend"},"freshness":{"$ref":"#/components/schemas/Freshness"},"ranking":{"type":"string"},"diversityPolicy":{"type":"string"}},"additionalProperties":true},"FeedSnapshotTrend":{"type":"object","required":["status","sampleCount","latestCapturedAt","baselineCapturedAt","windowLabel","metrics","sourceDeltas","summary"],"properties":{"status":{"type":"string","enum":["waiting","ready"]},"sampleCount":{"type":"number"},"latestCapturedAt":{"type":"string","format":"date-time"},"baselineCapturedAt":{"type":["string","null"],"format":"date-time"},"windowLabel":{"type":"string"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/FeedSnapshotMetricTrend"}},"sourceDeltas":{"type":"array","items":{"$ref":"#/components/schemas/FeedSnapshotSourceDelta"}},"summary":{"type":"array","items":{"type":"string"}}}},"FeedSnapshotMetricTrend":{"type":"object","required":["id","label","current","baseline","delta","unit","tone","summary"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"current":{"type":"number"},"baseline":{"type":["number","null"]},"delta":{"type":["number","null"]},"unit":{"type":"string"},"tone":{"type":"string","enum":["signal","warn","neutral"]},"summary":{"type":"string"}}},"FeedSnapshotSourceDelta":{"type":"object","required":["source","label","status","previousStatus","qualityScore","previousQualityScore","qualityDelta","selectedCount","previousSelectedCount","selectedDelta","latencyMs","previousLatencyMs","latencyDelta","note"],"properties":{"source":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["online","degraded","error"]},"previousStatus":{"type":["string","null"],"enum":["online","degraded","error",null]},"qualityScore":{"type":"number","minimum":0,"maximum":100},"previousQualityScore":{"type":["number","null"]},"qualityDelta":{"type":["number","null"]},"selectedCount":{"type":"number"},"previousSelectedCount":{"type":["number","null"]},"selectedDelta":{"type":["number","null"]},"latencyMs":{"type":"number"},"previousLatencyMs":{"type":["number","null"]},"latencyDelta":{"type":["number","null"]},"note":{"type":"string"}}},"ReleaseInfo":{"type":"object","required":["version","target","environment","gitSha","gitRef","repository","deploymentUrl"],"properties":{"version":{"type":"string"},"target":{"type":"string","enum":["vercel","local"]},"environment":{"type":"string"},"gitSha":{"type":"string"},"gitRef":{"type":"string"},"repository":{"type":"string"},"deploymentUrl":{"type":"string"}}},"BlogContentStore":{"type":"object","required":["provider","writable","durable","reason","prefix","bundledPath"],"properties":{"provider":{"type":"string","enum":["filesystem","vercel-blob","disabled"]},"writable":{"type":"boolean"},"durable":{"type":"boolean"},"reason":{"type":"string"},"prefix":{"type":"string"},"bundledPath":{"type":"string"}}},"PublishRequest":{"type":"object","required":["title","slug","content"],"properties":{"title":{"type":"string","minLength":5,"maxLength":200},"slug":{"type":"string","minLength":3,"maxLength":96,"pattern":"^[a-z0-9-]+$"},"content":{"type":"string","minLength":50,"maxLength":200000},"excerpt":{"type":"string","maxLength":300},"tags":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":40}},"publishedAt":{"type":"string","format":"date-time"},"draft":{"type":"boolean","default":false},"overwrite":{"type":"boolean","default":false}}},"PublishSuccessResponse":{"type":"object","required":["success","url","slug","publishedAt","provider","overwritten"],"properties":{"success":{"type":"boolean","const":true},"url":{"type":"string"},"slug":{"type":"string"},"publishedAt":{"type":"string","format":"date-time"},"provider":{"type":"string","enum":["filesystem","vercel-blob"]},"overwritten":{"type":"boolean"}}},"MonitorResponse":{"type":"object","required":["status","generatedAt","durationMs","site","baseUrl","checks","feed","history","alerts","routes"],"properties":{"status":{"type":"string","enum":["ok","degraded","error"]},"generatedAt":{"type":"string","format":"date-time"},"durationMs":{"type":"number"},"site":{"type":"string"},"baseUrl":{"type":"string","format":"uri"},"checks":{"type":"array","items":{"$ref":"#/components/schemas/MonitorCheck"}},"feed":{"type":"object","additionalProperties":true},"history":{"type":"object","additionalProperties":true},"alerts":{"type":"object","additionalProperties":true},"routes":{"type":"array","items":{"$ref":"#/components/schemas/RouteProbe"}}}},"MonitorCheck":{"type":"object","required":["name","status","detail"],"properties":{"name":{"type":"string"},"status":{"type":"string","enum":["ok","degraded","error"]},"detail":{"type":"string"}}},"RouteProbe":{"type":"object","required":["path","status","statusCode","latencyMs","contentType","cacheControl","hasCsp","hasHsts","bytes"],"properties":{"path":{"type":"string"},"status":{"type":"string","enum":["ok","degraded","error"]},"statusCode":{"type":["number","null"]},"latencyMs":{"type":"number"},"contentType":{"type":"string"},"cacheControl":{"type":"string"},"hasCsp":{"type":"boolean"},"hasHsts":{"type":"boolean"},"bytes":{"type":"number"}}}}}}