{"openapi":"3.1.0","info":{"title":"Guardian API","description":"Read your Guardian account and act on what it finds, from your own code.\n\n**Authentication.** Every route except `/v1/health` needs a token, sent as\n`Authorization: Bearer gapi_...`. Tokens are created by an admin in the\nGuardian app, under Config → API tokens. The secret is shown once, at creation,\nand Guardian keeps only a hash of it — if you lose it, revoke it and make\nanother.\n\n**Scopes.** A token is either `read` (GET only) or `write` (GET plus the write\nroutes). A token also carries a role — `viewer`, `operator` or `admin` — which\ncan never exceed the role of the admin who created it. The write routes need\n`operator` or better.\n\n**Your account only.** A token is bound to one account. There is no account\nparameter anywhere in this API, and an identifier belonging to another account\nanswers 404 — the same as one that does not exist.\n\n**Rate limit.** 120 requests a minute per token, and 30 writes a minute. Over\neither, the API answers `429` with a `Retry-After` header. Back off for that\nlong rather than retrying immediately.\n\n**Paging.** Every list route takes `limit` and `offset` and answers\n`{\"items\": [...], \"total\": N, \"limit\": N, \"offset\": N}`. `total` counts\neverything that matched, so you can size the work before you start.\n\n**Errors.** Non-2xx responses are `{\"detail\": \"what went wrong\"}`.","version":"v1"},"paths":{"/v1/health":{"get":{"tags":["Guardian API v1"],"summary":"Liveness check","description":"Answers without a token, so a monitor can watch the API itself.","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}},"x-guardian-scope":"none","x-guardian-role":"none","security":[]}},"/v1/whoami":{"get":{"tags":["Guardian API v1"],"summary":"Describe this token","description":"What account the presented token reads, and what it is allowed to do. A good first call when wiring up a client.","operationId":"whoami_v1_whoami_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhoAmI"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/overview":{"get":{"tags":["Guardian API v1"],"summary":"Account overview","description":"The headline picture: score, alert counts, device counts, site and host health, and what Guardian would do next.","operationId":"overview_v1_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverviewPayload"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/networks":{"get":{"tags":["Guardian API v1"],"summary":"List networks","description":"Every monitored network, with its device counts and whether its sensor is reporting.","operationId":"networks_list_v1_networks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworksPayload"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/sites":{"get":{"tags":["Guardian API v1"],"summary":"List monitored websites","description":"Reachability, response time and certificate expiry for each website Guardian watches.","operationId":"sites_v1_sites_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitesPayload"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/hosts":{"get":{"tags":["Guardian API v1"],"summary":"List monitored servers","description":"Load, disk, memory, pending updates and hardening grade for each server.","operationId":"hosts_v1_hosts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostsPayload"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/security":{"get":{"tags":["Guardian API v1"],"summary":"Security posture","description":"Scorecards, failed checks, exposure, Wi-Fi guard and recent attackers.","operationId":"security_v1_security_get","parameters":[{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityPayload"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/topology":{"get":{"tags":["Guardian API v1"],"summary":"Network map","description":"Nodes and links for the network map, clustered by kind, area or network.","operationId":"topology_v1_topology_get","parameters":[{"name":"cluster_by","in":"query","required":false,"schema":{"type":"string","default":"kind","title":"Cluster By"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopologyPayload"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/presence":{"get":{"tags":["Guardian API v1"],"summary":"Screen time","description":"How long each device was online, per day and per hour, over the last `days` days.","operationId":"presence_v1_presence_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenTimePayload"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/dns":{"get":{"tags":["Guardian API v1"],"summary":"DNS summary","description":"Totals, top and blocked domains, per-device breakdown and the current lists, over the last `hours` hours.","operationId":"dns_summary_v1_dns_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsPayload"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/dns/rules":{"get":{"tags":["Guardian API v1"],"summary":"Read the DNS allow/block lists","operationId":"dns_rules_v1_dns_rules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRules"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/devices":{"get":{"tags":["Guardian API v1"],"summary":"List devices","description":"Devices seen on the monitored networks, newest sighting first. Narrow with `network`, `kind`, `trusted` or `q` (a substring of the name, label, address or vendor).","operationId":"devices_v1_devices_get","parameters":[{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"","title":"Kind"}},{"name":"trusted","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Trusted"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_Device_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/devices/{mac}":{"get":{"tags":["Guardian API v1"],"summary":"One device in full","description":"Everything Guardian knows about one device: ports, timeline, DNS profile and presence.","operationId":"device_detail_v1_devices__mac__get","parameters":[{"name":"mac","in":"path","required":true,"schema":{"type":"string","title":"Mac"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"},"post":{"tags":["Guardian API v1"],"summary":"Update a device","description":"Set `trusted`, `label` or `always_on`. These are the only device fields v1 can change; removing or isolating a device is not exposed.","operationId":"device_write_v1_devices__mac__post","parameters":[{"name":"mac","in":"path","required":true,"schema":{"type":"string","title":"Mac"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceWrite"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Device"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"write","x-guardian-role":"operator"}},"/v1/alerts":{"get":{"tags":["Guardian API v1"],"summary":"List alerts","description":"Alerts, most recently seen first. Narrow with `status` (open/acked/snoozed/resolved), `sev` (CRIT/WARN/INFO) or `network`.","operationId":"alerts_v1_alerts_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"sev","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sev"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_Alert_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/alerts/{key}":{"get":{"tags":["Guardian API v1"],"summary":"One alert","operationId":"alert_one_v1_alerts__key__get","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/incidents":{"get":{"tags":["Guardian API v1"],"summary":"List incidents","description":"Groups of related alerts told as one story, newest first. `open=true` hides the ones already closed.","operationId":"incidents_v1_incidents_get","parameters":[{"name":"open","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Open"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_Incident_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/recommendations":{"get":{"tags":["Guardian API v1"],"summary":"List recommendations","description":"Changes Guardian suggests, highest priority first. `undecided=true` shows only the ones nobody has answered yet.","operationId":"recommendations_v1_recommendations_get","parameters":[{"name":"undecided","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Undecided"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_Recommendation_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/events":{"get":{"tags":["Guardian API v1"],"summary":"List events","description":"Devices joining and leaving, ports opening and closing, scans finishing — newest first. Narrow with `type` or `network`.","operationId":"events_v1_events_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Type"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_Event_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/dns/activity":{"get":{"tags":["Guardian API v1"],"summary":"DNS lookups","description":"Individual DNS lookups over the last `hours` hours, newest first. Narrow with `blocked`, `mac`, `domain` or `network`. Older lookups are summarised rather than kept one by one — use `/v1/dns` for those.","operationId":"dns_activity_v1_dns_activity_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}},{"name":"blocked","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"}},{"name":"mac","in":"query","required":false,"schema":{"type":"string","default":"","title":"Mac"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string","default":"","title":"Domain"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"","title":"Network"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_DnsQuery_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/reports":{"get":{"tags":["Guardian API v1"],"summary":"List reports","description":"Reports Guardian has generated, newest first.","operationId":"reports_v1_reports_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_Report_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/reports/{report_id}":{"get":{"tags":["Guardian API v1"],"summary":"Fetch one report","description":"The rendered report, as a standalone HTML document.","operationId":"report_html_v1_reports__report_id__get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"The report.","content":{"text/html":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/jobs/{job_id}":{"get":{"tags":["Guardian API v1"],"summary":"Check queued work","description":"The state of work an earlier write handed to the sensor.","operationId":"job_v1_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"read","x-guardian-role":"viewer"}},"/v1/alerts/{key}/{op}":{"post":{"tags":["Guardian API v1"],"summary":"Act on an alert","description":"`op` is one of `ack`, `snooze`, `resolve` or `reopen`. All four are reversible, and all four are recorded against this token.","operationId":"alert_op_v1_alerts__key___op__post","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"op","in":"path","required":true,"schema":{"type":"string","title":"Op"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertOpBody","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-guardian-scope":"write","x-guardian-role":"operator"}},"/v1/scans":{"post":{"tags":["Guardian API v1"],"summary":"Trigger a scan","description":"Asks the sensor to scan now rather than waiting for its next cycle. Returns a job id — poll `/v1/jobs/{id}`.","operationId":"trigger_scan_v1_scans_post","responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Queued"}}}}},"x-guardian-scope":"write","x-guardian-role":"operator"}},"/v1/speedtest":{"post":{"tags":["Guardian API v1"],"summary":"Trigger a speed test","description":"Asks the sensor to measure the internet connection now. Returns a job id — poll `/v1/jobs/{id}`.","operationId":"trigger_speedtest_v1_speedtest_post","responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Queued"}}}}},"x-guardian-scope":"write","x-guardian-role":"operator"}}},"components":{"schemas":{"Alert":{"properties":{"key":{"type":"string","title":"Key","description":"Stable identifier — use it on the write routes.","default":""},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]},"sev":{"type":"string","title":"Sev","description":"CRIT, WARN or INFO.","default":"INFO"},"msg":{"type":"string","title":"Msg","default":""},"why":{"type":"string","title":"Why","description":"Why Guardian raised it, in plain language.","default":""},"confidence":{"type":"string","title":"Confidence","default":""},"first_seen":{"type":"string","title":"First Seen","default":""},"last_seen":{"type":"string","title":"Last Seen","default":""},"count":{"type":"integer","title":"Count","default":1},"status":{"type":"string","title":"Status","description":"open, acked, snoozed or resolved.","default":"open"},"resolved_by":{"type":"string","title":"Resolved By","default":""},"snoozed_until":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snoozed Until"},"fix":{"type":"string","title":"Fix","description":"The repair Guardian would apply, if it knows one.","default":""}},"additionalProperties":false,"type":"object","title":"Alert","description":"One open or closed alert.\n\nThere is deliberately no `evidence` field. The underlying column is a\nfree-form JSON blob passed through from whatever the sensor sent, so nothing\ncan state what it will contain after the next sensor release — and a public\nAPI must not publish a shape it cannot describe. The part of it worth reading\nis already folded into `why`."},"AlertCounts":{"properties":{"crit":{"type":"integer","title":"Crit","default":0},"warn":{"type":"integer","title":"Warn","default":0},"info":{"type":"integer","title":"Info","default":0},"open":{"type":"integer","title":"Open","default":0},"acked":{"type":"integer","title":"Acked","default":0},"snoozed":{"type":"integer","title":"Snoozed","default":0}},"type":"object","title":"AlertCounts"},"AlertOpBody":{"properties":{"hours":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hours","description":"Snooze length in hours, 1 to 168. Ignored by the other actions; defaults to 8 when snoozing."}},"additionalProperties":false,"type":"object","title":"AlertOpBody"},"AlertRemedy":{"properties":{"kind":{"type":"string","title":"Kind","default":"none"},"action":{"type":"string","title":"Action","default":""},"host":{"type":"string","title":"Host","default":""},"arg":{"type":"string","title":"Arg","default":""},"tier":{"type":"integer","title":"Tier","default":0},"tool":{"type":"string","title":"Tool","default":""},"min_role":{"type":"string","title":"Min Role","default":""},"can_run_now":{"type":"boolean","title":"Can Run Now","default":false},"summary":{"type":"string","title":"Summary","default":""},"need":{"type":"string","title":"Need","default":""},"opening":{"type":"string","title":"Opening","default":""}},"type":"object","title":"AlertRemedy"},"AssetCounts":{"properties":{"total":{"type":"integer","title":"Total","default":0},"servers":{"type":"integer","title":"Servers","default":0},"sites":{"type":"integer","title":"Sites","default":0}},"type":"object","title":"AssetCounts"},"Attacker":{"properties":{"ip":{"type":"string","title":"Ip","default":""},"host":{"type":"string","title":"Host","default":""},"fails":{"type":"integer","title":"Fails","default":0},"days":{"type":"integer","title":"Days","default":0},"first_seen":{"type":"string","title":"First Seen","default":""},"last_seen":{"type":"string","title":"Last Seen","default":""},"geo":{"anyOf":[{"$ref":"#/components/schemas/Geo"},{"type":"null"}]},"action":{"type":"string","title":"Action","default":""},"action_ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Ts"},"alert_key":{"type":"string","title":"Alert Key","default":""},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]}},"type":"object","title":"Attacker"},"ContainerRow":{"properties":{"name":{"type":"string","title":"Name","default":""},"status":{"type":"string","title":"Status","default":""},"image":{"type":"string","title":"Image","default":""}},"type":"object","title":"ContainerRow"},"DayHours":{"properties":{"day":{"type":"string","title":"Day","default":""},"hours":{"items":{"type":"number"},"type":"array","title":"Hours"}},"type":"object","title":"DayHours"},"Deduction":{"properties":{"category":{"type":"string","title":"Category","default":""},"points":{"type":"integer","title":"Points","default":0},"why":{"type":"string","title":"Why","default":""}},"type":"object","title":"Deduction"},"Device":{"properties":{"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]},"mac":{"type":"string","title":"Mac","default":""},"ip":{"type":"string","title":"Ip","default":""},"name":{"type":"string","title":"Name","default":""},"vendor":{"type":"string","title":"Vendor","default":""},"kind":{"type":"string","title":"Kind","description":"What kind of thing this looks like — phone, laptop, camera, printer, and so on.","default":""},"label":{"type":"string","title":"Label","description":"Name you gave it, if any.","default":""},"trusted":{"type":"boolean","title":"Trusted","default":false},"always_on":{"type":"boolean","title":"Always On","default":false},"risk":{"type":"integer","title":"Risk","default":0},"presence":{"type":"string","title":"Presence","default":""},"ports":{"additionalProperties":{"type":"string"},"type":"object","title":"Ports","description":"Open ports, each mapped to when it was last seen open."},"first_seen":{"type":"string","title":"First Seen","default":""},"last_seen":{"type":"string","title":"Last Seen","default":""}},"additionalProperties":false,"type":"object","title":"Device","description":"One device seen on a monitored network."},"DeviceCard":{"properties":{"mac":{"type":"string","title":"Mac","default":""},"ip":{"type":"string","title":"Ip","default":""},"name":{"type":"string","title":"Name","default":""},"label":{"type":"string","title":"Label","default":""},"vendor":{"type":"string","title":"Vendor","default":""},"kind":{"type":"string","title":"Kind","default":"unknown"},"group":{"type":"string","title":"Group","default":""},"trusted":{"type":"boolean","title":"Trusted","default":false},"always_on":{"type":"boolean","title":"Always On","default":false},"quarantined":{"type":"boolean","title":"Quarantined","default":false},"parent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent"},"risk":{"type":"integer","title":"Risk","default":0},"presence":{"type":"string","title":"Presence","default":"NEW"},"online":{"type":"boolean","title":"Online","default":false},"first_seen":{"type":"string","title":"First Seen","default":""},"last_seen":{"type":"string","title":"Last Seen","default":""},"ports":{"items":{"$ref":"#/components/schemas/PortRow"},"type":"array","title":"Ports"},"unverified":{"type":"boolean","title":"Unverified","default":false},"randomized":{"type":"boolean","title":"Randomized","default":false},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]},"online_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Online 7D"},"camera_reasons":{"items":{"type":"string"},"type":"array","title":"Camera Reasons"}},"type":"object","title":"DeviceCard"},"DeviceCounts":{"properties":{"total":{"type":"integer","title":"Total","default":0},"online":{"type":"integer","title":"Online","default":0},"sleeping":{"type":"integer","title":"Sleeping","default":0},"unverified":{"type":"integer","title":"Unverified","default":0},"quarantined":{"type":"integer","title":"Quarantined","default":0}},"type":"object","title":"DeviceCounts"},"DeviceDetail":{"properties":{"device":{"$ref":"#/components/schemas/DeviceCard"},"timeline":{"items":{"$ref":"#/components/schemas/TimelineItem"},"type":"array","title":"Timeline"},"presence":{"$ref":"#/components/schemas/PresenceProfile"},"ports":{"items":{"$ref":"#/components/schemas/PortRow"},"type":"array","title":"Ports"},"dns":{"$ref":"#/components/schemas/DeviceDnsProfile"},"alerts":{"items":{"$ref":"#/components/schemas/InboxRow"},"type":"array","title":"Alerts"},"children":{"items":{"$ref":"#/components/schemas/DeviceCard"},"type":"array","title":"Children"},"events":{"items":{"$ref":"#/components/schemas/EventRow"},"type":"array","title":"Events"}},"type":"object","title":"DeviceDetail"},"DeviceDnsProfile":{"properties":{"queries_24h":{"type":"integer","title":"Queries 24H","default":0},"blocked_24h":{"type":"integer","title":"Blocked 24H","default":0},"top":{"items":{"$ref":"#/components/schemas/NameCount"},"type":"array","title":"Top"},"blocked_top":{"items":{"$ref":"#/components/schemas/NameCount"},"type":"array","title":"Blocked Top"}},"type":"object","title":"DeviceDnsProfile"},"DeviceWrite":{"properties":{"trusted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Trusted","description":"Mark this device as one you recognise."},"label":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Label","description":"Your own name for it."},"always_on":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always On","description":"Whether Guardian should alert when this device goes quiet."}},"additionalProperties":false,"type":"object","title":"DeviceWrite"},"DnsClient":{"properties":{"mac":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mac"},"ip":{"type":"string","title":"Ip","default":""},"name":{"type":"string","title":"Name","default":""},"queries":{"type":"integer","title":"Queries","default":0},"blocked":{"type":"integer","title":"Blocked","default":0},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]}},"type":"object","title":"DnsClient"},"DnsList":{"properties":{"name":{"type":"string","title":"Name","default":""},"category":{"type":"string","title":"Category","default":""},"entries":{"type":"integer","title":"Entries","default":0},"blocked_24h":{"type":"integer","title":"Blocked 24H","default":0},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","title":"DnsList"},"DnsPayload":{"properties":{"status":{"$ref":"#/components/schemas/DnsStatus"},"top":{"items":{"$ref":"#/components/schemas/NameCount"},"type":"array","title":"Top"},"blocked_top":{"items":{"$ref":"#/components/schemas/NameCount"},"type":"array","title":"Blocked Top"},"clients":{"items":{"$ref":"#/components/schemas/DnsClient"},"type":"array","title":"Clients"},"rules":{"$ref":"#/components/schemas/DnsRules"},"lists":{"items":{"$ref":"#/components/schemas/DnsList"},"type":"array","title":"Lists"},"beaconing":{"items":{"$ref":"#/components/schemas/NameCount"},"type":"array","title":"Beaconing"},"suspicious":{"items":{"$ref":"#/components/schemas/NameCount"},"type":"array","title":"Suspicious"},"wizard":{"$ref":"#/components/schemas/DnsWizard"}},"type":"object","title":"DnsPayload"},"DnsQuery":{"properties":{"ts":{"type":"string","title":"Ts","default":""},"client":{"type":"string","title":"Client","description":"Address the lookup came from.","default":""},"mac":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mac"},"name":{"type":"string","title":"Name","description":"Domain asked for.","default":""},"qtype":{"type":"string","title":"Qtype","default":""},"blocked":{"type":"boolean","title":"Blocked","default":false},"list":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"List","description":"Which list blocked it, when it was blocked."},"ms":{"type":"integer","title":"Ms","default":0},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"DnsQuery","description":"One DNS lookup made on a monitored network."},"DnsRules":{"properties":{"allow":{"items":{"type":"string"},"type":"array","title":"Allow"},"block":{"items":{"type":"string"},"type":"array","title":"Block"}},"type":"object","title":"DnsRules"},"DnsStatus":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"running":{"type":"boolean","title":"Running","default":false},"queries_24h":{"type":"integer","title":"Queries 24H","default":0},"blocked_24h":{"type":"integer","title":"Blocked 24H","default":0},"block_pct":{"type":"number","title":"Block Pct","default":0.0},"cache":{"type":"integer","title":"Cache","default":0},"upstream_ms_avg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Upstream Ms Avg"},"total_blocked_domains":{"type":"integer","title":"Total Blocked Domains","default":0},"family_filter":{"type":"boolean","title":"Family Filter","default":false},"uptime_s":{"type":"integer","title":"Uptime S","default":0},"ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ts"}},"type":"object","title":"DnsStatus"},"DnsWizard":{"properties":{"resolver_ip":{"type":"string","title":"Resolver Ip","default":""},"router_hint":{"type":"string","title":"Router Hint","default":""},"working":{"type":"boolean","title":"Working","default":false},"clients_using":{"type":"integer","title":"Clients Using","default":0},"checked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checked At"}},"type":"object","title":"DnsWizard"},"DomainRow":{"properties":{"domain":{"type":"string","title":"Domain","default":""},"expires":{"type":"string","title":"Expires","default":""},"days_left":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days Left"},"error":{"type":"string","title":"Error","default":""}},"type":"object","title":"DomainRow"},"EmailAuthRow":{"properties":{"domain":{"type":"string","title":"Domain","default":""},"spf":{"type":"string","title":"Spf","default":""},"dkim_selector":{"type":"string","title":"Dkim Selector","default":""},"dmarc":{"type":"string","title":"Dmarc","default":""},"dmarc_policy":{"type":"string","title":"Dmarc Policy","default":""},"has_mx":{"type":"boolean","title":"Has Mx","default":false},"passed":{"type":"boolean","title":"Passed","default":false},"checked":{"type":"string","title":"Checked","default":""}},"type":"object","title":"EmailAuthRow"},"Event":{"properties":{"ts":{"type":"string","title":"Ts","default":""},"type":{"type":"string","title":"Type","default":""},"entity":{"type":"string","title":"Entity","default":""},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]},"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"additionalProperties":false,"type":"object","title":"Event","description":"One thing that happened: a device joining or leaving, a port opening,\na scan finishing."},"EventRow":{"properties":{"ts":{"type":"string","title":"Ts","default":""},"type":{"type":"string","title":"Type","default":""},"entity":{"type":"string","title":"Entity","default":""},"text":{"type":"string","title":"Text","default":""},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]}},"type":"object","title":"EventRow"},"ExposureTile":{"properties":{"label":{"type":"string","title":"Label","default":""},"value":{"type":"string","title":"Value","default":""},"state":{"type":"string","title":"State","default":"ok"},"detail":{"type":"string","title":"Detail","default":""}},"type":"object","title":"ExposureTile"},"ExtPortRow":{"properties":{"host":{"type":"string","title":"Host","default":""},"ip":{"type":"string","title":"Ip","default":""},"ports":{"items":{"type":"integer"},"type":"array","title":"Ports"},"unexpected":{"items":{"type":"integer"},"type":"array","title":"Unexpected"},"findings":{"items":{"type":"string"},"type":"array","title":"Findings"},"probe_host":{"type":"string","title":"Probe Host","default":""},"checked":{"type":"string","title":"Checked","default":""}},"type":"object","title":"ExtPortRow"},"ExtraCheck":{"properties":{"name":{"type":"string","title":"Name","default":""},"type":{"type":"string","title":"Type","default":""},"target":{"type":"string","title":"Target","default":""},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port"},"ok":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ok"},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency Ms"},"detail":{"type":"string","title":"Detail","default":""}},"type":"object","title":"ExtraCheck"},"FeedState":{"properties":{"name":{"type":"string","title":"Name","default":""},"ok":{"type":"boolean","title":"Ok","default":false}},"type":"object","title":"FeedState"},"FixLogRow":{"properties":{"ts":{"type":"string","title":"Ts","default":""},"host":{"type":"string","title":"Host","default":""},"action":{"type":"string","title":"Action","default":""},"label":{"type":"string","title":"Label","default":""},"by":{"type":"string","title":"By","default":"auto"},"ok":{"type":"boolean","title":"Ok","default":false},"detail":{"type":"string","title":"Detail","default":""}},"type":"object","title":"FixLogRow"},"Gauge":{"properties":{"name":{"type":"string","title":"Name","default":""},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"type":"string","title":"Unit","default":""},"max":{"type":"number","title":"Max","default":100.0},"state":{"type":"string","title":"State","default":"ok"}},"type":"object","title":"Gauge"},"Geo":{"properties":{"country":{"type":"string","title":"Country","default":""},"country_code":{"type":"string","title":"Country Code","default":""},"city":{"type":"string","title":"City","default":""},"org":{"type":"string","title":"Org","default":""},"isp":{"type":"string","title":"Isp","default":""},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"hosting":{"type":"boolean","title":"Hosting","default":false},"reverse":{"type":"string","title":"Reverse","default":""}},"type":"object","title":"Geo"},"GuardianHealth":{"properties":{"sensor_state":{"type":"string","title":"Sensor State","default":"unknown"},"run_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Run Seconds"},"scans_last_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scans Last Hour"},"sensors_active":{"type":"integer","title":"Sensors Active","default":0},"sensors_total":{"type":"integer","title":"Sensors Total","default":0},"feeds":{"items":{"$ref":"#/components/schemas/FeedState"},"type":"array","title":"Feeds"},"last_event_ts":{"type":"string","title":"Last Event Ts","default":""},"last_event_age_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Event Age S"},"autofix_enabled":{"type":"boolean","title":"Autofix Enabled","default":false},"autofix_24h":{"type":"integer","title":"Autofix 24H","default":0},"notify_channel":{"type":"string","title":"Notify Channel","default":""},"dns_filter_state":{"type":"string","title":"Dns Filter State","default":"off"},"dns_blocked_24h":{"type":"integer","title":"Dns Blocked 24H","default":0}},"type":"object","title":"GuardianHealth"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HardeningCheck":{"properties":{"name":{"type":"string","title":"Name","default":""},"passed":{"type":"boolean","title":"Passed","default":false},"detail":{"type":"string","title":"Detail","default":""}},"type":"object","title":"HardeningCheck"},"HardeningGrade":{"properties":{"score":{"type":"integer","title":"Score","default":0},"grade":{"type":"string","title":"Grade","default":""},"checks":{"items":{"$ref":"#/components/schemas/HardeningCheck"},"type":"array","title":"Checks"}},"type":"object","title":"HardeningGrade"},"Health":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"product":{"type":"string","title":"Product","default":"Guardian"},"api":{"type":"string","title":"Api","description":"API version this host serves.","default":"v1"}},"additionalProperties":false,"type":"object","title":"Health","description":"Liveness. The only route that needs no token."},"HealthStrip":{"properties":{"kind":{"type":"string","title":"Kind","default":""},"name":{"type":"string","title":"Name","default":""},"ok":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ok"},"blocks":{"items":{"$ref":"#/components/schemas/HourBlock"},"type":"array","title":"Blocks"}},"type":"object","title":"HealthStrip"},"HeartbeatRow":{"properties":{"name":{"type":"string","title":"Name","default":""},"every_min":{"type":"integer","title":"Every Min","default":0},"last_ping":{"type":"string","title":"Last Ping","default":""},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age Min"},"late":{"type":"boolean","title":"Late","default":false},"note":{"type":"string","title":"Note","default":""}},"type":"object","title":"HeartbeatRow"},"HeatmapCell":{"properties":{"row":{"type":"string","title":"Row","default":""},"col":{"type":"integer","title":"Col","default":0},"value":{"type":"number","title":"Value","default":0.0}},"type":"object","title":"HeatmapCell"},"HistoryChart":{"properties":{"key":{"type":"string","title":"Key","default":""},"label":{"type":"string","title":"Label","default":""},"unit":{"type":"string","title":"Unit","default":""},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max"},"series":{"items":{"$ref":"#/components/schemas/Series"},"type":"array","title":"Series"}},"type":"object","title":"HistoryChart"},"HostCard":{"properties":{"name":{"type":"string","title":"Name","default":""},"address":{"type":"string","title":"Address","default":""},"reachable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reachable"},"hostname":{"type":"string","title":"Hostname","default":""},"uptime":{"type":"string","title":"Uptime","default":""},"load1":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Load1"},"load_per_core":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Load Per Core"},"disk_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Disk Pct"},"mem_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mem Pct"},"failed_ssh_24h":{"type":"integer","title":"Failed Ssh 24H","default":0},"banned":{"type":"integer","title":"Banned","default":0},"fail2ban":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fail2Ban"},"reboot_required":{"type":"boolean","title":"Reboot Required","default":false},"pending_updates":{"type":"integer","title":"Pending Updates","default":0},"security_updates":{"type":"integer","title":"Security Updates","default":0},"cve_fixable":{"type":"integer","title":"Cve Fixable","default":0},"hardening":{"$ref":"#/components/schemas/HardeningGrade"},"ports":{"items":{"$ref":"#/components/schemas/PortRow"},"type":"array","title":"Ports"},"docker":{"items":{"$ref":"#/components/schemas/ContainerRow"},"type":"array","title":"Docker"},"services":{"items":{"$ref":"#/components/schemas/ServiceRow"},"type":"array","title":"Services"},"gauges":{"items":{"$ref":"#/components/schemas/Gauge"},"type":"array","title":"Gauges"}},"type":"object","title":"HostCard"},"HostsPayload":{"properties":{"hosts":{"items":{"$ref":"#/components/schemas/HostCard"},"type":"array","title":"Hosts"}},"type":"object","title":"HostsPayload"},"HourBlock":{"properties":{"hour":{"type":"integer","title":"Hour","default":0},"state":{"type":"string","title":"State","default":"none"}},"type":"object","title":"HourBlock"},"InboxRow":{"properties":{"id":{"type":"string","title":"Id","default":""},"view":{"type":"string","title":"View","default":"alerts"},"sev":{"type":"string","enum":["CRIT","WARN","INFO"],"title":"Sev","default":"INFO"},"title":{"type":"string","title":"Title","default":""},"entity":{"type":"string","title":"Entity","default":""},"why":{"type":"string","title":"Why","default":""},"what_changed":{"type":"string","title":"What Changed","default":""},"status":{"type":"string","title":"Status","default":"open"},"first_seen":{"type":"string","title":"First Seen","default":""},"last_seen":{"type":"string","title":"Last Seen","default":""},"count":{"type":"integer","title":"Count","default":1},"actions":{"items":{"$ref":"#/components/schemas/RowAction"},"type":"array","title":"Actions"},"children":{"items":{"$ref":"#/components/schemas/InboxRow"},"type":"array","title":"Children"},"ticket_key":{"type":"string","title":"Ticket Key","default":""},"confidence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Confidence"},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]},"remedy":{"anyOf":[{"$ref":"#/components/schemas/AlertRemedy"},{"type":"null"}]}},"type":"object","title":"InboxRow"},"Incident":{"properties":{"iid":{"type":"string","title":"Iid","default":""},"entity":{"type":"string","title":"Entity","default":""},"sev":{"type":"string","title":"Sev","default":"INFO"},"story":{"type":"string","title":"Story","default":""},"alert_keys":{"items":{"type":"string"},"type":"array","title":"Alert Keys"},"opened":{"type":"string","title":"Opened","default":""},"closed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Closed"}},"additionalProperties":false,"type":"object","title":"Incident","description":"Several related alerts, told as one story."},"IncidentBrief":{"properties":{"id":{"type":"string","title":"Id","default":""},"title":{"type":"string","title":"Title","default":""},"sev":{"type":"string","enum":["CRIT","WARN","INFO"],"title":"Sev","default":"WARN"},"entity":{"type":"string","title":"Entity","default":""},"opened":{"type":"string","title":"Opened","default":""},"alerts":{"type":"integer","title":"Alerts","default":0},"href":{"type":"string","title":"Href","default":""}},"type":"object","title":"IncidentBrief"},"IncidentCounts":{"properties":{"open":{"type":"integer","title":"Open","default":0},"crit":{"type":"integer","title":"Crit","default":0},"warn":{"type":"integer","title":"Warn","default":0}},"type":"object","title":"IncidentCounts"},"Job":{"properties":{"id":{"type":"string","title":"Id","default":""},"status":{"type":"string","title":"Status","default":"queued"},"queued_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Queued At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"ok":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ok","description":"Null until the work finishes."}},"additionalProperties":false,"type":"object","title":"Job","description":"State of one piece of queued work."},"NameCount":{"properties":{"name":{"type":"string","title":"Name","default":""},"count":{"type":"integer","title":"Count","default":0}},"type":"object","title":"NameCount"},"Network":{"properties":{"id":{"type":"string","title":"Id","default":""},"slug":{"type":"string","title":"Slug","default":""},"name":{"type":"string","title":"Name","default":""},"kind":{"type":"string","title":"Kind","default":"wifi"},"subnet_prefix":{"type":"string","title":"Subnet Prefix","default":""},"expected_gateway":{"type":"string","title":"Expected Gateway","default":""},"ssid":{"type":"string","title":"Ssid","default":""},"sensor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sensor Id"},"sensor_name":{"type":"string","title":"Sensor Name","default":""},"colour":{"type":"string","title":"Colour","default":""},"is_primary":{"type":"boolean","title":"Is Primary","default":false},"status":{"type":"string","title":"Status","default":"pending"},"devices":{"type":"integer","title":"Devices","default":0},"online":{"type":"integer","title":"Online","default":0},"unverified":{"type":"integer","title":"Unverified","default":0},"cameras":{"type":"integer","title":"Cameras","default":0},"created":{"type":"string","title":"Created","default":""}},"type":"object","title":"Network"},"NetworkHealth":{"properties":{"id":{"type":"string","title":"Id","default":""},"slug":{"type":"string","title":"Slug","default":""},"name":{"type":"string","title":"Name","default":""},"colour":{"type":"string","title":"Colour","default":""},"state":{"type":"string","title":"State","default":"good"},"status":{"type":"string","title":"Status","default":"pending"},"devices":{"type":"integer","title":"Devices","default":0},"online":{"type":"integer","title":"Online","default":0},"unverified":{"type":"integer","title":"Unverified","default":0},"cameras":{"type":"integer","title":"Cameras","default":0},"cameras_online":{"type":"integer","title":"Cameras Online","default":0},"crit":{"type":"integer","title":"Crit","default":0},"warn":{"type":"integer","title":"Warn","default":0},"sensor_ok":{"type":"boolean","title":"Sensor Ok","default":false},"is_primary":{"type":"boolean","title":"Is Primary","default":false}},"type":"object","title":"NetworkHealth"},"NetworkRef":{"properties":{"id":{"type":"string","title":"Id","default":""},"slug":{"type":"string","title":"Slug","default":""},"name":{"type":"string","title":"Name","default":""},"colour":{"type":"string","title":"Colour","default":""}},"type":"object","title":"NetworkRef"},"NetworksPayload":{"properties":{"networks":{"items":{"$ref":"#/components/schemas/Network"},"type":"array","title":"Networks"}},"type":"object","title":"NetworksPayload"},"NextAction":{"properties":{"label":{"type":"string","title":"Label","default":""},"method":{"type":"string","title":"Method","default":"POST"},"path":{"type":"string","title":"Path","default":""},"body":{"additionalProperties":true,"type":"object","title":"Body"}},"type":"object","title":"NextAction"},"OverviewPayload":{"properties":{"ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ts"},"age_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age S"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"grade":{"type":"string","title":"Grade","default":""},"potential":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Potential"},"verdict":{"type":"string","title":"Verdict","default":""},"next_action":{"anyOf":[{"$ref":"#/components/schemas/NextAction"},{"type":"null"}]},"deductions":{"items":{"$ref":"#/components/schemas/Deduction"},"type":"array","title":"Deductions"},"strip":{"items":{"$ref":"#/components/schemas/HealthStrip"},"type":"array","title":"Strip"},"timeline":{"items":{"$ref":"#/components/schemas/TimelineItem"},"type":"array","title":"Timeline"},"score_trend":{"$ref":"#/components/schemas/Series"},"questions":{"items":{"$ref":"#/components/schemas/QuestionItem"},"type":"array","title":"Questions"},"alerts":{"$ref":"#/components/schemas/AlertCounts"},"devices":{"$ref":"#/components/schemas/DeviceCounts"},"sensor":{"anyOf":[{"$ref":"#/components/schemas/SensorStatus"},{"type":"null"}]},"networks":{"items":{"$ref":"#/components/schemas/NetworkHealth"},"type":"array","title":"Networks"},"score_trend_7d":{"$ref":"#/components/schemas/Series"},"assets":{"$ref":"#/components/schemas/AssetCounts"},"changed_24h":{"type":"integer","title":"Changed 24H","default":0},"incidents":{"$ref":"#/components/schemas/IncidentCounts"},"incident_briefs":{"items":{"$ref":"#/components/schemas/IncidentBrief"},"type":"array","title":"Incident Briefs"},"recs":{"$ref":"#/components/schemas/RecCounts"},"health":{"$ref":"#/components/schemas/GuardianHealth"},"paths":{"items":{"$ref":"#/components/schemas/PathHealth"},"type":"array","title":"Paths"},"chat_example_ip":{"type":"string","title":"Chat Example Ip","default":""}},"type":"object","title":"OverviewPayload"},"Page_Alert_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Alert"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","description":"Total matching records, ignoring limit and offset.","default":0},"limit":{"type":"integer","title":"Limit","description":"Page size actually applied, after clamping.","default":50},"offset":{"type":"integer","title":"Offset","description":"Index of the first record in this page.","default":0}},"additionalProperties":false,"type":"object","title":"Page[Alert]"},"Page_Device_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Device"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","description":"Total matching records, ignoring limit and offset.","default":0},"limit":{"type":"integer","title":"Limit","description":"Page size actually applied, after clamping.","default":50},"offset":{"type":"integer","title":"Offset","description":"Index of the first record in this page.","default":0}},"additionalProperties":false,"type":"object","title":"Page[Device]"},"Page_DnsQuery_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DnsQuery"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","description":"Total matching records, ignoring limit and offset.","default":0},"limit":{"type":"integer","title":"Limit","description":"Page size actually applied, after clamping.","default":50},"offset":{"type":"integer","title":"Offset","description":"Index of the first record in this page.","default":0}},"additionalProperties":false,"type":"object","title":"Page[DnsQuery]"},"Page_Event_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Event"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","description":"Total matching records, ignoring limit and offset.","default":0},"limit":{"type":"integer","title":"Limit","description":"Page size actually applied, after clamping.","default":50},"offset":{"type":"integer","title":"Offset","description":"Index of the first record in this page.","default":0}},"additionalProperties":false,"type":"object","title":"Page[Event]"},"Page_Incident_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Incident"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","description":"Total matching records, ignoring limit and offset.","default":0},"limit":{"type":"integer","title":"Limit","description":"Page size actually applied, after clamping.","default":50},"offset":{"type":"integer","title":"Offset","description":"Index of the first record in this page.","default":0}},"additionalProperties":false,"type":"object","title":"Page[Incident]"},"Page_Recommendation_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Recommendation"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","description":"Total matching records, ignoring limit and offset.","default":0},"limit":{"type":"integer","title":"Limit","description":"Page size actually applied, after clamping.","default":50},"offset":{"type":"integer","title":"Offset","description":"Index of the first record in this page.","default":0}},"additionalProperties":false,"type":"object","title":"Page[Recommendation]"},"Page_Report_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Report"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","description":"Total matching records, ignoring limit and offset.","default":0},"limit":{"type":"integer","title":"Limit","description":"Page size actually applied, after clamping.","default":50},"offset":{"type":"integer","title":"Offset","description":"Index of the first record in this page.","default":0}},"additionalProperties":false,"type":"object","title":"Page[Report]"},"PathHealth":{"properties":{"name":{"type":"string","title":"Name","default":""},"ip":{"type":"string","title":"Ip","default":""},"avg_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Ms"},"loss_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Loss Pct"},"jitter_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Jitter Ms"},"state":{"type":"string","title":"State","default":"good"}},"type":"object","title":"PathHealth"},"PortRow":{"properties":{"port":{"type":"integer","title":"Port","default":0},"since":{"type":"string","title":"Since","default":""},"risky":{"type":"boolean","title":"Risky","default":false},"service":{"type":"string","title":"Service","default":""}},"type":"object","title":"PortRow"},"PresenceProfile":{"properties":{"online_pct_24h":{"type":"number","title":"Online Pct 24H","default":0.0},"online_pct_7d":{"type":"number","title":"Online Pct 7D","default":0.0},"hours":{"items":{"type":"number"},"type":"array","title":"Hours"},"typical_hours":{"items":{"type":"integer"},"type":"array","title":"Typical Hours"},"days":{"items":{"$ref":"#/components/schemas/DayHours"},"type":"array","title":"Days"},"strip":{"items":{"$ref":"#/components/schemas/HourBlock"},"type":"array","title":"Strip"}},"type":"object","title":"PresenceProfile"},"QuestionItem":{"properties":{"question":{"type":"string","title":"Question","default":""},"answer":{"type":"string","title":"Answer","default":""},"state":{"type":"string","title":"State","default":"ok"}},"type":"object","title":"QuestionItem"},"Queued":{"properties":{"id":{"type":"string","title":"Id","default":""},"status":{"type":"string","title":"Status","description":"queued, running, done or failed.","default":"queued"}},"additionalProperties":false,"type":"object","title":"Queued","description":"Work handed to the sensor. Poll `/v1/jobs/{id}` for the outcome."},"RecCounts":{"properties":{"open":{"type":"integer","title":"Open","default":0},"critical":{"type":"integer","title":"Critical","default":0},"high":{"type":"integer","title":"High","default":0},"top":{"type":"string","title":"Top","default":""}},"type":"object","title":"RecCounts"},"Recommendation":{"properties":{"key":{"type":"string","title":"Key","default":""},"priority":{"type":"string","title":"Priority","default":""},"title":{"type":"string","title":"Title","default":""},"why":{"type":"string","title":"Why","default":""},"decision":{"type":"string","title":"Decision","description":"Empty, 'yes' or 'no'.","default":""},"decided_by":{"type":"string","title":"Decided By","default":""},"status":{"type":"string","title":"Status","default":""},"last_seen":{"type":"string","title":"Last Seen","default":""}},"additionalProperties":false,"type":"object","title":"Recommendation","description":"Something Guardian suggests you change."},"Report":{"properties":{"id":{"type":"string","title":"Id","default":""},"kind":{"type":"string","title":"Kind","description":"weekly, monthly or manual.","default":""},"title":{"type":"string","title":"Title","default":""},"period_days":{"type":"integer","title":"Period Days","default":0},"preset":{"type":"string","title":"Preset","default":""},"sections":{"items":{"type":"string"},"type":"array","title":"Sections"},"created":{"type":"string","title":"Created","default":""},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"}},"additionalProperties":false,"type":"object","title":"Report","description":"One generated report. Fetch the rendered HTML from\n`/v1/reports/{id}`."},"RowAction":{"properties":{"kind":{"type":"string","title":"Kind","default":""},"label":{"type":"string","title":"Label","default":""},"method":{"type":"string","title":"Method","default":"POST"},"path":{"type":"string","title":"Path","default":""},"body":{"additionalProperties":true,"type":"object","title":"Body"},"tier":{"type":"integer","title":"Tier","default":1}},"type":"object","title":"RowAction"},"Scorecard":{"properties":{"target":{"type":"string","title":"Target","default":""},"kind":{"type":"string","title":"Kind","default":""},"grade":{"type":"string","title":"Grade","default":""},"score":{"type":"integer","title":"Score","default":0},"deductions":{"items":{"$ref":"#/components/schemas/Deduction"},"type":"array","title":"Deductions"},"fix":{"type":"string","title":"Fix","default":""}},"type":"object","title":"Scorecard"},"ScreenTimePayload":{"properties":{"days":{"type":"integer","title":"Days","default":0},"scans":{"type":"integer","title":"Scans","default":0},"devices":{"items":{"$ref":"#/components/schemas/ScreenTimeRow"},"type":"array","title":"Devices"},"heatmap":{"items":{"$ref":"#/components/schemas/HeatmapCell"},"type":"array","title":"Heatmap"}},"type":"object","title":"ScreenTimePayload"},"ScreenTimeRow":{"properties":{"mac":{"type":"string","title":"Mac","default":""},"name":{"type":"string","title":"Name","default":""},"ip":{"type":"string","title":"Ip","default":""},"trusted":{"type":"boolean","title":"Trusted","default":false},"total_h":{"type":"number","title":"Total H","default":0.0},"pct":{"type":"number","title":"Pct","default":0.0},"hours_per_day":{"type":"number","title":"Hours Per Day","default":0.0},"hours":{"items":{"type":"number"},"type":"array","title":"Hours"},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]}},"type":"object","title":"ScreenTimeRow"},"SecurityCheck":{"properties":{"key":{"type":"string","title":"Key","default":""},"area":{"type":"string","title":"Area","default":""},"title":{"type":"string","title":"Title","default":""},"passed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Passed"},"last_verified":{"type":"string","title":"Last Verified","default":""},"evidence":{"type":"string","title":"Evidence","default":""},"autofix":{"type":"string","title":"Autofix","default":""},"target":{"type":"string","title":"Target","default":""}},"type":"object","title":"SecurityCheck"},"SecurityHeaders":{"properties":{"hsts":{"type":"boolean","title":"Hsts","default":false},"nosniff":{"type":"boolean","title":"Nosniff","default":false},"frame":{"type":"boolean","title":"Frame","default":false},"csp":{"type":"boolean","title":"Csp","default":false},"https_redirect":{"type":"boolean","title":"Https Redirect","default":false},"old_tls":{"type":"boolean","title":"Old Tls","default":false},"server":{"type":"string","title":"Server","default":""}},"type":"object","title":"SecurityHeaders"},"SecurityPayload":{"properties":{"scorecards":{"items":{"$ref":"#/components/schemas/Scorecard"},"type":"array","title":"Scorecards"},"wifi":{"$ref":"#/components/schemas/WifiGuard"},"checks":{"items":{"$ref":"#/components/schemas/SecurityCheck"},"type":"array","title":"Checks"},"attackers":{"items":{"$ref":"#/components/schemas/Attacker"},"type":"array","title":"Attackers"},"exposure":{"items":{"$ref":"#/components/schemas/ExposureTile"},"type":"array","title":"Exposure"},"attacker_method":{"type":"string","title":"Attacker Method","default":"auto"},"methods":{"items":{"type":"string"},"type":"array","title":"Methods"},"networks":{"items":{"$ref":"#/components/schemas/NetworkHealth"},"type":"array","title":"Networks"},"wifis":{"items":{"$ref":"#/components/schemas/WifiGuard"},"type":"array","title":"Wifis"},"extra_checks":{"items":{"$ref":"#/components/schemas/ExtraCheck"},"type":"array","title":"Extra Checks"},"heartbeats":{"items":{"$ref":"#/components/schemas/HeartbeatRow"},"type":"array","title":"Heartbeats"},"domains":{"items":{"$ref":"#/components/schemas/DomainRow"},"type":"array","title":"Domains"},"email":{"items":{"$ref":"#/components/schemas/EmailAuthRow"},"type":"array","title":"Email"},"ext_ports":{"items":{"$ref":"#/components/schemas/ExtPortRow"},"type":"array","title":"Ext Ports"},"fix_log":{"items":{"$ref":"#/components/schemas/FixLogRow"},"type":"array","title":"Fix Log"}},"type":"object","title":"SecurityPayload"},"SensorStatus":{"properties":{"name":{"type":"string","title":"Name","default":""},"status":{"type":"string","title":"Status","default":"pending"},"last_seen":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Seen"},"age_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age S"},"platform":{"type":"string","title":"Platform","default":""},"version":{"type":"string","title":"Version","default":""}},"type":"object","title":"SensorStatus"},"Series":{"properties":{"name":{"type":"string","title":"Name","default":""},"points":{"items":{"$ref":"#/components/schemas/TrendPoint"},"type":"array","title":"Points"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"}},"type":"object","title":"Series"},"ServiceRow":{"properties":{"name":{"type":"string","title":"Name","default":""},"state":{"type":"string","title":"State","default":""}},"type":"object","title":"ServiceRow"},"SiteCard":{"properties":{"name":{"type":"string","title":"Name","default":""},"url":{"type":"string","title":"Url","default":""},"ok":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ok"},"code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Code"},"ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ms"},"uptime_24h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Uptime 24H"},"uptime_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Uptime 7D"},"latency_spark":{"items":{"type":"number"},"type":"array","title":"Latency Spark"},"cert_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cert Days"},"cert_expires":{"type":"string","title":"Cert Expires","default":""},"cert_issuer":{"type":"string","title":"Cert Issuer","default":""},"dns_a":{"items":{"type":"string"},"type":"array","title":"Dns A"},"headers":{"$ref":"#/components/schemas/SecurityHeaders"},"incidents_7d":{"type":"integer","title":"Incidents 7D","default":0},"public":{"type":"boolean","title":"Public","default":false}},"type":"object","title":"SiteCard"},"SitesPayload":{"properties":{"sites":{"items":{"$ref":"#/components/schemas/SiteCard"},"type":"array","title":"Sites"},"charts":{"items":{"$ref":"#/components/schemas/HistoryChart"},"type":"array","title":"Charts"}},"type":"object","title":"SitesPayload"},"TimelineItem":{"properties":{"ts":{"type":"string","title":"Ts","default":""},"kind":{"type":"string","title":"Kind","default":""},"title":{"type":"string","title":"Title","default":""},"detail":{"type":"string","title":"Detail","default":""},"sev":{"anyOf":[{"type":"string","enum":["CRIT","WARN","INFO"]},{"type":"null"}],"title":"Sev"},"entity":{"type":"string","title":"Entity","default":""},"href":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Href"}},"type":"object","title":"TimelineItem"},"TopoCluster":{"properties":{"id":{"type":"string","title":"Id","default":""},"label":{"type":"string","title":"Label","default":""},"members":{"items":{"type":"string"},"type":"array","title":"Members"},"network_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Network Id"}},"type":"object","title":"TopoCluster"},"TopoLink":{"properties":{"source":{"type":"string","title":"Source","default":""},"target":{"type":"string","title":"Target","default":""},"kind":{"type":"string","title":"Kind","default":""},"pulse":{"type":"boolean","title":"Pulse","default":false}},"type":"object","title":"TopoLink"},"TopoNode":{"properties":{"id":{"type":"string","title":"Id","default":""},"kind":{"type":"string","title":"Kind","default":""},"group":{"type":"string","title":"Group","default":""},"label":{"type":"string","title":"Label","default":""},"ip":{"type":"string","title":"Ip","default":""},"mac":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mac"},"icon":{"type":"string","title":"Icon","default":""},"state":{"type":"string","title":"State","default":"ok"},"risk":{"type":"integer","title":"Risk","default":0},"ring":{"type":"integer","title":"Ring","default":0},"trusted":{"type":"boolean","title":"Trusted","default":false},"quarantined":{"type":"boolean","title":"Quarantined","default":false},"pulse":{"type":"boolean","title":"Pulse","default":false},"detail":{"type":"string","title":"Detail","default":""},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]}},"type":"object","title":"TopoNode"},"TopologyPayload":{"properties":{"nodes":{"items":{"$ref":"#/components/schemas/TopoNode"},"type":"array","title":"Nodes"},"links":{"items":{"$ref":"#/components/schemas/TopoLink"},"type":"array","title":"Links"},"clusters":{"items":{"$ref":"#/components/schemas/TopoCluster"},"type":"array","title":"Clusters"},"networks":{"items":{"$ref":"#/components/schemas/NetworkHealth"},"type":"array","title":"Networks"}},"type":"object","title":"TopologyPayload"},"TrendPoint":{"properties":{"ts":{"type":"string","title":"Ts","default":""},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"}},"type":"object","title":"TrendPoint"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WhoAmI":{"properties":{"account":{"type":"string","title":"Account","description":"Name of the account this token reads.","default":""},"account_slug":{"type":"string","title":"Account Slug","default":""},"token_name":{"type":"string","title":"Token Name","description":"Name the token was given when it was created.","default":""},"token_prefix":{"type":"string","title":"Token Prefix","description":"Public, non-secret head of the token — the same string that appears in logs, so a log line can be matched back to a token without the secret.","default":""},"scope":{"type":"string","title":"Scope","description":"'read' allows GET only; 'write' also allows the write routes.","default":"read"},"role":{"type":"string","title":"Role","description":"'viewer', 'operator' or 'admin'.","default":"viewer"},"expires":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires","description":"When this token stops working, or null if it does not expire."}},"additionalProperties":false,"type":"object","title":"WhoAmI","description":"What the presented token is, and what it may do. Useful as a\nfirst call when wiring up a client, and as a self-check afterwards."},"WifiGuard":{"properties":{"verdict":{"type":"string","title":"Verdict","default":""},"state":{"type":"string","title":"State","default":"ok"},"ssid":{"type":"string","title":"Ssid","default":""},"security":{"type":"string","title":"Security","default":""},"channel":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Channel"},"phy":{"type":"string","title":"Phy","default":""},"signal":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Signal"},"evil_twin":{"type":"boolean","title":"Evil Twin","default":false},"twin_channels":{"items":{"type":"integer"},"type":"array","title":"Twin Channels"},"rogue_dhcp":{"type":"boolean","title":"Rogue Dhcp","default":false},"dhcp_server":{"type":"string","title":"Dhcp Server","default":""},"expected_gateway":{"type":"string","title":"Expected Gateway","default":""},"default_gateway":{"type":"string","title":"Default Gateway","default":""},"gateway_mac":{"type":"string","title":"Gateway Mac","default":""},"unknown_devices":{"type":"integer","title":"Unknown Devices","default":0},"rows":{"items":{"$ref":"#/components/schemas/SecurityCheck"},"type":"array","title":"Rows"},"network":{"anyOf":[{"$ref":"#/components/schemas/NetworkRef"},{"type":"null"}]}},"type":"object","title":"WifiGuard"}},"securitySchemes":{"bearerToken":{"type":"http","scheme":"bearer","description":"An API token created in the Guardian app. Always starts with `gapi_`."}}},"servers":[{"url":"https://api.guarder.io","description":"Guardian API"}],"security":[{"bearerToken":[]}]}