{"ok":true,"data":{"openapi":"3.1.0","info":{"title":"PlatPhorm BrowserOps","version":"0.1.0","description":"BrowserOps is the PlatPhormNews network-wide proof layer for real browser journeys, screenshots, artifacts, route compliance, discovery compliance, UI compliance, trace propagation, and Vercel metadata."},"servers":[{"url":"https://browserops.platphormnews.com","description":"Production"}],"paths":{"/api/health":{"get":{"summary":"GET /api/health","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/health":{"get":{"summary":"GET /api/v1/health","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/docs":{"get":{"summary":"GET /api/docs","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/openapi.json":{"get":{"summary":"GET /openapi.json","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/openapi.yaml":{"get":{"summary":"GET /openapi.yaml","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/asyncapi.yaml":{"get":{"summary":"GET /asyncapi.yaml","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/mcp":{"get":{"summary":"GET /api/mcp","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}},"post":{"summary":"POST /api/mcp","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/status":{"get":{"summary":"GET /api/browserops/status","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/journeys":{"get":{"summary":"GET /api/browserops/journeys","description":"Public-safe BrowserOps read endpoint.","tags":["Journeys"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/journeys/{id}":{"get":{"summary":"GET /api/browserops/journeys/{id}","description":"Public-safe BrowserOps read endpoint.","tags":["Journeys"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/runs":{"get":{"summary":"GET /api/browserops/runs","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/runs/{id}":{"get":{"summary":"GET /api/browserops/runs/{id}","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/runs/{id}/timeline":{"get":{"summary":"GET /api/browserops/runs/{id}/timeline","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/runs/{id}/artifacts":{"get":{"summary":"GET /api/browserops/runs/{id}/artifacts","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/runs/{id}/handoffs":{"get":{"summary":"GET /api/browserops/runs/{id}/handoffs","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/runs/{id}/events":{"get":{"summary":"GET /api/browserops/runs/{id}/events","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/run":{"post":{"summary":"POST /api/browserops/run","description":"BrowserOps run endpoint. dryRun=true is public-safe and returns a non-persistent plan preview; browser execution uses a request PLATPHORM_API_KEY or the server-side Vercel PLATPHORM_API_KEY for trusted-domain UI runs.","tags":["Platform"],"security":[{},{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dryRun":{"type":"boolean","description":"When true, return public preview_ready without launching a browser or storing a run."},"journeyId":{"type":"string"},"targetUrl":{"type":"string","format":"uri"},"source":{"type":"string"},"artifactPolicy":{"type":"object"}}},"examples":{"publicPreview":{"value":{"dryRun":true,"journeyId":"browserops-homepage-smoke","targetUrl":"https://browserops.platphormnews.com"}},"protectedRun":{"value":{"dryRun":false,"journeyId":"browserops-homepage-smoke","targetUrl":"https://browserops.platphormnews.com","source":"manual"}}}}}},"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/browserops/validate-url":{"get":{"summary":"GET /api/browserops/validate-url","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}},"post":{"summary":"POST /api/browserops/validate-url","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/receive-handoff":{"post":{"summary":"POST /api/browserops/receive-handoff","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/send-handoff":{"post":{"summary":"POST /api/browserops/send-handoff","description":"Protected BrowserOps handoff action. dryRun previews without remote dispatch; dispatch=true attempts trusted HTTPS downstream delivery and marks sent or accepted only after a confirmed response.","tags":["Platform"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["to","capability"],"properties":{"dryRun":{"type":"boolean","description":"Preview the handoff envelope without remote dispatch."},"dispatch":{"type":"boolean","description":"Attempt protected downstream delivery after URL safety validation."},"to":{"type":"string","description":"Target PlatPhorm service id."},"capability":{"type":"string"},"intent":{"type":"string"},"endpointUrl":{"type":"string","format":"uri","description":"Optional trusted HTTPS endpoint override."},"input":{"type":"object"},"expectedOutput":{"type":"object"}}},"example":{"to":"docs","capability":"publish_public_safe_browser_report","dryRun":false,"dispatch":true,"input":{"artifacts":[],"payload":{"runId":"run_abc123"},"redaction":"public_safe"},"expectedOutput":{"type":"handoff.acceptance","required":false}}}}},"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/browserops/suite":{"get":{"summary":"GET /api/browserops/suite","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/integrations":{"get":{"summary":"GET /api/browserops/integrations","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/integrations/{service}/events":{"get":{"summary":"GET /api/browserops/integrations/{service}/events","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/coverage":{"get":{"summary":"GET /api/browserops/coverage","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/evidence":{"get":{"summary":"GET /api/browserops/evidence","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/handoffs":{"get":{"summary":"GET /api/browserops/handoffs","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/handoffs/{id}":{"get":{"summary":"GET /api/browserops/handoffs/{id}","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/handoffs/{id}/events":{"get":{"summary":"GET /api/browserops/handoffs/{id}/events","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/browserops/events":{"get":{"summary":"GET /api/browserops/events","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/web4/status":{"get":{"summary":"GET /api/web4/status","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/web4/manifest":{"get":{"summary":"GET /api/web4/manifest","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/web4/scorecard":{"get":{"summary":"GET /api/web4/scorecard","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/web4/fingerprints":{"get":{"summary":"GET /api/web4/fingerprints","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/provenance/lookup":{"get":{"summary":"GET /api/provenance/lookup","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/provenance/verify":{"get":{"summary":"GET /api/provenance/verify","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/journeys":{"get":{"summary":"GET /api/v1/journeys","description":"Public-safe BrowserOps read endpoint.","tags":["Journeys"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}},"post":{"summary":"POST /api/v1/journeys","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Journeys"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/journeys/{id}":{"get":{"summary":"GET /api/v1/journeys/{id}","description":"Public-safe BrowserOps read endpoint.","tags":["Journeys"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}},"put":{"summary":"PUT /api/v1/journeys/{id}","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Journeys"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}},"delete":{"summary":"DELETE /api/v1/journeys/{id}","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Journeys"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/journeys/{id}/run":{"get":{"summary":"GET /api/v1/journeys/{id}/run","description":"POST-only BrowserOps run action. GET returns structured method_not_allowed JSON for browser navigation safety.","tags":["Journeys"],"security":[],"responses":{"405":{"description":"Structured JSON response for opening a POST-only BrowserOps action with GET.","content":{"application/json":{"example":{"ok":false,"error":{"code":"method_not_allowed","message":"This journey run endpoint requires POST.","details":{"allowedMethods":["POST"],"endpoint":"/api/v1/journeys/404-homepage-smoke/run","authPolicy":"protected","requires":"PLATPHORM_API_KEY through request headers or the server-side Vercel environment."}}}}}}}},"post":{"summary":"POST /api/v1/journeys/{id}/run","description":"Protected BrowserOps journey execution. BrowserOps accepts a request PLATPHORM_API_KEY, or uses the server-side Vercel PLATPHORM_API_KEY for trusted-domain UI-triggered runs.","tags":["Journeys"],"security":[{},{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/journeys/{id}/dry-run":{"post":{"summary":"POST /api/v1/journeys/{id}/dry-run","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Journeys"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/runs":{"get":{"summary":"GET /api/v1/runs","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}},"post":{"summary":"POST /api/v1/runs","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Runs"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/runs/{id}":{"get":{"summary":"GET /api/v1/runs/{id}","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/runs/{id}/steps":{"get":{"summary":"GET /api/v1/runs/{id}/steps","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/runs/{id}/artifacts":{"get":{"summary":"GET /api/v1/runs/{id}/artifacts","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/runs/{id}/screenshots":{"get":{"summary":"GET /api/v1/runs/{id}/screenshots","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/runs/{id}/trace":{"get":{"summary":"GET /api/v1/runs/{id}/trace","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/runs/{id}/report":{"get":{"summary":"GET /api/v1/runs/{id}/report","description":"Public-safe BrowserOps read endpoint.","tags":["Runs"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/runs/{id}/cancel":{"post":{"summary":"POST /api/v1/runs/{id}/cancel","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Runs"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/runs/{id}/publish-docs":{"post":{"summary":"POST /api/v1/runs/{id}/publish-docs","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Runs"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/runs/{id}/export-sheets":{"post":{"summary":"POST /api/v1/runs/{id}/export-sheets","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Runs"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/runs/{id}/generate-deck":{"post":{"summary":"POST /api/v1/runs/{id}/generate-deck","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Runs"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/network/run-smoke":{"post":{"summary":"POST /api/v1/network/run-smoke","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Network"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/network/graph":{"get":{"summary":"GET /api/v1/network/graph","description":"Public-safe BrowserOps read endpoint.","tags":["Network"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/network/graph/sync":{"get":{"summary":"GET /api/v1/network/graph/sync","description":"Public-safe BrowserOps read endpoint.","tags":["Network"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}},"post":{"summary":"POST /api/v1/network/graph/sync","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Network"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/network/sites":{"get":{"summary":"GET /api/v1/network/sites","description":"Public-safe BrowserOps read endpoint.","tags":["Network"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/network/domains":{"get":{"summary":"GET /api/v1/network/domains","description":"Public-safe BrowserOps read endpoint.","tags":["Network"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/network/trusted-domains":{"get":{"summary":"GET /api/v1/network/trusted-domains","description":"Public-safe BrowserOps read endpoint.","tags":["Network"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/network/route-compliance":{"get":{"summary":"GET /api/v1/network/route-compliance","description":"Public-safe BrowserOps read endpoint.","tags":["Network"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/network/discovery-compliance":{"get":{"summary":"GET /api/v1/network/discovery-compliance","description":"Public-safe BrowserOps read endpoint.","tags":["Network"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/network/ui-compliance":{"get":{"summary":"GET /api/v1/network/ui-compliance","description":"Public-safe BrowserOps read endpoint.","tags":["Network"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/network/trace-propagation":{"get":{"summary":"GET /api/v1/network/trace-propagation","description":"Public-safe BrowserOps read endpoint.","tags":["Network"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/sites/{slug}/ui":{"get":{"summary":"GET /api/v1/sites/{slug}/ui","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/sites/{slug}/journeys":{"get":{"summary":"GET /api/v1/sites/{slug}/journeys","description":"Public-safe BrowserOps read endpoint.","tags":["Journeys"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/sites/{slug}/vercel":{"get":{"summary":"GET /api/v1/sites/{slug}/vercel","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/sitemaps/coverage":{"get":{"summary":"GET /api/v1/sitemaps/coverage","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/sitemaps/sync":{"post":{"summary":"POST /api/v1/sitemaps/sync","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Platform"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/feeds":{"get":{"summary":"GET /api/v1/feeds","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/feeds/sync":{"post":{"summary":"POST /api/v1/feeds/sync","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Platform"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/integrations":{"get":{"summary":"GET /api/v1/integrations","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/integrations/status":{"get":{"summary":"GET /api/v1/integrations/status","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/integrations/{service}":{"get":{"summary":"GET /api/v1/integrations/{service}","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/agent-policy":{"get":{"summary":"GET /api/v1/agent-policy","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/agent-policy/platforms":{"get":{"summary":"GET /api/v1/agent-policy/platforms","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/agent-policy/platforms/{id}":{"get":{"summary":"GET /api/v1/agent-policy/platforms/{id}","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/agent-policy/robots":{"get":{"summary":"GET /api/v1/agent-policy/robots","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/agent-policy/summary":{"get":{"summary":"GET /api/v1/agent-policy/summary","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/protected-actions":{"get":{"summary":"GET /api/v1/protected-actions","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/protected-actions/{id}":{"get":{"summary":"GET /api/v1/protected-actions/{id}","description":"Public-safe BrowserOps read endpoint.","tags":["Platform"],"security":[],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}}}}},"/api/v1/protected-actions/{id}/confirm":{"post":{"summary":"POST /api/v1/protected-actions/{id}/confirm","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Platform"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}},"/api/v1/protected-actions/{id}/execute":{"post":{"summary":"POST /api/v1/protected-actions/{id}/execute","description":"Protected BrowserOps action. Requires PLATPHORM_API_KEY.","tags":["Platform"],"security":[{"bearerPlatformKey":[]},{"platphormApiKey":[]}],"responses":{"200":{"description":"BrowserOps REST response envelope.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["ok","data"],"properties":{"ok":{"const":true},"data":{"type":"object"}}},{"type":"object","required":["ok","error"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}}]}}}},"401":{"description":"Protected BrowserOps action rejected when no valid request or server-side PLATPHORM_API_KEY is available.","content":{"application/json":{"example":{"ok":false,"error":{"code":"auth_required","message":"Running this BrowserOps journey requires PLATPHORM_API_KEY.","details":{"authSchemes":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]}}}}}}}}}},"components":{"securitySchemes":{"bearerPlatformKey":{"type":"http","scheme":"bearer","description":"Use Authorization: Bearer $PLATPHORM_API_KEY for protected BrowserOps actions."},"platphormApiKey":{"type":"apiKey","in":"header","name":"X-PlatPhorm-API-Key","description":"Shared PlatPhorm platform API key for protected actions."}}},"x-browserops-endpoints":["/api/health","/api/v1/health","/api/docs","/openapi.yaml","/openapi.json","/asyncapi.yaml","/api/mcp","/api/browserops/status","/api/browserops/journeys","/api/browserops/runs","/api/browserops/validate-url","/api/browserops/suite","/api/browserops/integrations","/api/browserops/integrations/{service}/events","/api/browserops/coverage","/api/browserops/evidence","/api/browserops/handoffs","/api/browserops/handoffs/{id}/events","/api/browserops/events","/api/web4/status","/api/web4/manifest","/api/web4/scorecard","/api/web4/fingerprints","/api/provenance/lookup","/api/provenance/verify","/api/v1/journeys","/api/v1/runs","/api/v1/network/sites","/api/v1/network/domains","/api/v1/network/trusted-domains","/api/v1/network/route-compliance","/api/v1/network/discovery-compliance","/api/v1/network/ui-compliance","/api/v1/network/trace-propagation","/api/v1/sitemaps/coverage","/api/v1/feeds","/api/v1/integrations","/api/v1/integrations/status","/api/v1/agent-policy","/api/v1/agent-policy/platforms","/api/v1/agent-policy/robots","/api/v1/agent-policy/summary","/api/v1/protected-actions","/llms.txt","/llms-full.txt","/llms-index.json","/rss.xml","/feed.xml","/sitemap.xml","/sitemap-index.xml","/robots.txt","/manifest.webmanifest","/.well-known/mcp.json","/.well-known/web4.json","/.well-known/provenance.json","/.well-known/agents.json","/.well-known/agent-policy.json","/.well-known/ai-policy.json","/.well-known/security.txt","/.well-known/trust.json","POST /api/browserops/run","POST /api/browserops/send-handoff","POST /api/v1/journeys","PUT /api/v1/journeys/{id}","DELETE /api/v1/journeys/{id}","POST /api/v1/journeys/{id}/run","POST /api/v1/journeys/{id}/dry-run","POST /api/v1/runs","POST /api/v1/runs/{id}/cancel","POST /api/v1/runs/{id}/publish-docs","POST /api/v1/runs/{id}/export-sheets","POST /api/v1/runs/{id}/generate-deck","POST /api/v1/network/run-smoke","POST /api/v1/network/graph/sync","POST /api/v1/sitemaps/sync","POST /api/v1/feeds/sync","POST /api/v1/protected-actions/{id}/confirm","POST /api/v1/protected-actions/{id}/execute"]}}