{"openapi":"3.1.0","info":{"title":"Watchdog API","version":"0","description":"Upstream API-change events: know what changed and what it could break."},"servers":[{"url":"https://watchdog.fastn.dev"}],"paths":{"/healthz":{"get":{"summary":"Health check","responses":{"200":{"description":"ok"}}}},"/v1/changes":{"get":{"summary":"Feed of published change events","parameters":[{"name":"vendor","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"integer"},"description":"epoch seconds"},{"name":"severity","in":"query","schema":{"enum":["breaking","dangerous","additive","advisory"]}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":500}}],"security":[{"serviceToken":[]}],"responses":{"200":{"description":"changes"},"401":{"description":"unauthorized"}}}},"/v1/events":{"post":{"summary":"Publish a normalized event (UCL-side detectors)","security":[{"serviceToken":[]}],"responses":{"202":{"description":"accepted"},"400":{"description":"invalid"}}}},"/v1/events/raw":{"post":{"summary":"cdio.fastn.dev webhook (secret-gated via ?secret=)","parameters":[{"name":"target","in":"query","required":true,"schema":{"type":"string"}},{"name":"secret","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"accepted"},"401":{"description":"bad secret"}}}},"/v1/targets":{"put":{"summary":"Register a vendor/domain to watch","security":[{"serviceToken":[]}],"responses":{"200":{"description":"registered"}}}},"/v1/subscribers":{"post":{"summary":"Register a consumer webhook","security":[{"serviceToken":[]}],"responses":{"201":{"description":"created"}}}}},"components":{"securitySchemes":{"serviceToken":{"type":"http","scheme":"bearer","description":"SERVICE_TOKEN"}}}}