{"openapi":"3.1.0","info":{"title":"PlatPhorm SitemapOps API","description":"SitemapOps is the route evidence engine for PlatPhormNews: it validates public routes, sitemaps, robots files, feeds, llms files, OpenAPI specs, MCP manifests, well-known policy files, canonicals, and source packets for SearchOps, TrustOps, AgentOps, and the root graph.","version":"1.0.0","contact":{"name":"PlatPhorm News","url":"https://platphormnews.com"}},"servers":[{"url":"https://sitemapops.platphormnews.com","description":"Production"}],"security":[],"paths":{"/api/health":{"get":{"summary":"Health check","tags":["SitemapOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/health":{"get":{"summary":"Versioned health check","tags":["SitemapOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/services":{"get":{"summary":"List source-backed discovered services","tags":["SitemapOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/network/graph":{"get":{"summary":"Return SitemapOps network snapshot","tags":["Network"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/network/services":{"get":{"summary":"Return discovered services","tags":["Network"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/network/evidence":{"get":{"summary":"Return public route evidence dry-run","tags":["Network"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/searchops/source":{"get":{"summary":"Return SearchOps source packet","tags":["SearchOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/searchops/routes":{"get":{"summary":"Return SearchOps routes","tags":["SearchOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/searchops/canonicals":{"get":{"summary":"Return SearchOps canonical URLs","tags":["SearchOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/searchops/feeds":{"get":{"summary":"Return SearchOps feeds","tags":["SearchOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/trustops/source":{"get":{"summary":"Return TrustOps source packet","tags":["TrustOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/trustops/route-evidence":{"get":{"summary":"Return TrustOps route evidence","tags":["TrustOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/trustops/policy-alignment":{"get":{"summary":"Return TrustOps policy alignment","tags":["TrustOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/trustops/public-protected-boundaries":{"get":{"summary":"Return public/protected boundary policy","tags":["TrustOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/agentops/source":{"get":{"summary":"Return AgentOps source packet","tags":["AgentOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/agentops/tools":{"get":{"summary":"Return AgentOps tool discovery","tags":["AgentOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/agentops/routes":{"get":{"summary":"Return AgentOps route discovery","tags":["AgentOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/agentops/actions":{"get":{"summary":"Return AgentOps action policy","tags":["AgentOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/agentops/policies":{"get":{"summary":"Return AgentOps policies","tags":["AgentOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/integrations":{"get":{"summary":"List integration targets","tags":["Integrations"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/integrations/status":{"get":{"summary":"List integration target status","tags":["Integrations"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/webhooks/events":{"get":{"summary":"List persisted SitemapOps webhook event audit summaries","tags":["SitemapOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/trace/links":{"get":{"summary":"List persisted SitemapOps trace handoff links","tags":["SitemapOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/docs":{"get":{"summary":"OpenAPI JSON document","tags":["SitemapOps"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/mcp":{"get":{"summary":"MCP metadata","tags":["MCP"],"responses":{"200":{"description":"Public-safe response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}},"post":{"summary":"MCP JSON-RPC 2.0 endpoint","tags":["MCP"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/validate/sitemap":{"post":{"summary":"Validate sitemap XML or trusted sitemap URL","tags":["Validation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/validate/robots":{"post":{"summary":"Validate trusted robots.txt URL","tags":["Validation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/validate/feed":{"post":{"summary":"Validate trusted RSS or Atom feed URL","tags":["Validation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/validate/openapi":{"post":{"summary":"Validate trusted OpenAPI URL","tags":["Validation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/validate/mcp":{"post":{"summary":"Validate trusted MCP manifest URL","tags":["Validation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/validate/llms":{"post":{"summary":"Validate trusted llms route URL","tags":["Validation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/validate/well-known":{"post":{"summary":"Validate trusted well-known policy URL","tags":["Validation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/validate/canonical":{"post":{"summary":"Validate canonical target URL","tags":["Validation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/validate/dead-links":{"post":{"summary":"Check trusted URL for dead-link status","tags":["Validation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/network/dry-run-update":{"post":{"summary":"Generate root graph dry-run update packet","tags":["Network"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/scans":{"post":{"summary":"Create public dry-run scan preview","tags":["SitemapOps"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/reports/generate":{"post":{"summary":"Generate public-safe report preview","tags":["SitemapOps"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"xml":{"type":"string"}}}}}},"responses":{"200":{"description":"Validation or dry-run response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/network/refresh":{"post":{"summary":"Protected actions require PLATPHORM_API_KEY through Authorization: Bearer or X-PlatPhorm-API-Key. /api/v1/network/refresh","tags":["Protected Operations"],"security":[{"PlatPhormApiKey":[]}],"responses":{"200":{"description":"Protected action response or honest degraded status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"401":{"description":"PLATPHORM_API_KEY required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/searchops/publish":{"post":{"summary":"Protected actions require PLATPHORM_API_KEY through Authorization: Bearer or X-PlatPhorm-API-Key. /api/v1/searchops/publish","tags":["Protected Operations"],"security":[{"PlatPhormApiKey":[]}],"responses":{"200":{"description":"Protected action response or honest degraded status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"401":{"description":"PLATPHORM_API_KEY required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/trustops/publish":{"post":{"summary":"Protected actions require PLATPHORM_API_KEY through Authorization: Bearer or X-PlatPhorm-API-Key. /api/v1/trustops/publish","tags":["Protected Operations"],"security":[{"PlatPhormApiKey":[]}],"responses":{"200":{"description":"Protected action response or honest degraded status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"401":{"description":"PLATPHORM_API_KEY required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/agentops/publish":{"post":{"summary":"Protected actions require PLATPHORM_API_KEY through Authorization: Bearer or X-PlatPhorm-API-Key. /api/v1/agentops/publish","tags":["Protected Operations"],"security":[{"PlatPhormApiKey":[]}],"responses":{"200":{"description":"Protected action response or honest degraded status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"401":{"description":"PLATPHORM_API_KEY required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/reports/publish-docs":{"post":{"summary":"Protected actions require PLATPHORM_API_KEY through Authorization: Bearer or X-PlatPhorm-API-Key. /api/v1/reports/publish-docs","tags":["Protected Operations"],"security":[{"PlatPhormApiKey":[]}],"responses":{"200":{"description":"Protected action response or honest degraded status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"401":{"description":"PLATPHORM_API_KEY required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}},"/api/v1/reports/export-sheets":{"post":{"summary":"Protected actions require PLATPHORM_API_KEY through Authorization: Bearer or X-PlatPhorm-API-Key. /api/v1/reports/export-sheets","tags":["Protected Operations"],"security":[{"PlatPhormApiKey":[]}],"responses":{"200":{"description":"Protected action response or honest degraded status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"401":{"description":"PLATPHORM_API_KEY required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}}}}}},"components":{"securitySchemes":{"PlatPhormApiKey":{"type":"apiKey","in":"header","name":"X-PlatPhorm-API-Key","description":"Protected actions require PLATPHORM_API_KEY through Authorization: Bearer or X-PlatPhorm-API-Key."},"PlatPhormBearer":{"type":"http","scheme":"bearer","description":"Protected actions require PLATPHORM_API_KEY through Authorization: Bearer or X-PlatPhorm-API-Key."}},"schemas":{"ApiResponse":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"},"data":{"type":"object"},"error":{"type":"object"},"meta":{"type":"object"},"warnings":{"type":"array","items":{"type":"string"}},"errors":{"type":"array","items":{"type":"string"}}}}}},"x-platphorm":{"service":"sitemapops","publicRead":true,"protectedActionsRequire":"PLATPHORM_API_KEY","noGenericApiKeyExamples":true,"ja4DigestPolicy":"redacted-or-hashed-only"}}