{"openapi":"3.1.0","info":{"title":"Quave Pager API","version":"1.0.0","description":"Create, list, update, and manage alarms for the authenticated user's registered devices. Alarm payloads may include link for the result/action URL and aiConversationResume for returning to the AI conversation."},"servers":[{"url":"https://pager.quave.ai"}],"components":{"securitySchemes":{"bearerApiKey":{"type":"http","scheme":"bearer","description":"Use QUAVE_PAGER_API_KEY as the bearer token."}}},"security":[{"bearerApiKey":[]}],"paths":{"/health":{"get":{"security":[],"summary":"Health check","responses":{"200":{"description":"OK"}}}},"/install-macos.sh":{"get":{"security":[],"summary":"Download the macOS terminal installer script","responses":{"200":{"description":"Shell installer script"}}}},"/api/signup/start":{"post":{"security":[],"summary":"Start email-code signup","responses":{"200":{"description":"Signup code created"}}}},"/api/signup/verify":{"post":{"security":[],"summary":"Verify signup and receive first API key once","responses":{"201":{"description":"User, device, and API key created"}}}},"/api/alarms":{"get":{"summary":"List alarms","responses":{"200":{"description":"Alarm list"}}},"post":{"summary":"Create alarm, optionally with link and aiConversationResume metadata","responses":{"201":{"description":"Alarm created"}}}},"/api/alarms/{id}":{"patch":{"summary":"Edit an alarm, link, or aiConversationResume metadata","responses":{"200":{"description":"Alarm updated"},"404":{"description":"Alarm not found"}}},"post":{"summary":"Edit an alarm for clients where PATCH is awkward","responses":{"200":{"description":"Alarm updated"},"404":{"description":"Alarm not found"}}},"delete":{"summary":"Logically remove an alarm","responses":{"200":{"description":"Alarm removed"},"404":{"description":"Alarm not found"}}}},"/api/alarms/{id}/remove":{"post":{"summary":"Logically remove an alarm for clients where DELETE is awkward","responses":{"200":{"description":"Alarm removed"},"404":{"description":"Alarm not found"}}}},"/api/alarms/{id}/snooze":{"post":{"summary":"Snooze an alarm","responses":{"200":{"description":"Alarm snoozed"},"404":{"description":"Alarm not found"}}}},"/api/alarms/{id}/dismiss":{"post":{"summary":"Dismiss an alarm","responses":{"200":{"description":"Alarm dismissed"},"404":{"description":"Alarm not found"}}}},"/api/alarms/{id}/cancel":{"post":{"summary":"Cancel an alarm","responses":{"200":{"description":"Alarm canceled"},"404":{"description":"Alarm not found"}}}},"/api/api-keys":{"get":{"summary":"List API keys","responses":{"200":{"description":"API key list without plaintext secrets"}}},"post":{"summary":"Create API key","responses":{"201":{"description":"API key created with plaintext returned once"}}}},"/api/api-keys/{id}/rotate":{"post":{"summary":"Rotate an API key","responses":{"201":{"description":"Replacement key created"}}}},"/api/api-keys/{id}/revoke":{"post":{"summary":"Revoke an API key","responses":{"200":{"description":"API key revoked"}}}},"/api/delivery":{"get":{"summary":"Read account delivery mode and registered devices","responses":{"200":{"description":"Delivery settings and device list"}}},"post":{"summary":"Update account delivery mode","responses":{"200":{"description":"Delivery settings updated"},"400":{"description":"Invalid delivery settings"}}}},"/api/devices":{"get":{"summary":"List registered devices and current delivery settings","responses":{"200":{"description":"Device list and delivery settings"}}}},"/api/devices/register":{"post":{"summary":"Register device","responses":{"200":{"description":"Device registered"}}}},"/api/devices/{deviceId}":{"patch":{"summary":"Update device metadata, priority, or enabled state","responses":{"200":{"description":"Device updated"},"404":{"description":"Device not found"}}},"post":{"summary":"Update device metadata for clients where PATCH is awkward","responses":{"200":{"description":"Device updated"},"404":{"description":"Device not found"}}},"delete":{"summary":"Logically remove device","responses":{"200":{"description":"Device removed"},"404":{"description":"Device not found"}}}},"/api/devices/{deviceId}/remove":{"post":{"summary":"Logically remove device","responses":{"200":{"description":"Device removed"},"404":{"description":"Device not found"}}}},"/api/devices/{deviceId}/ringing":{"post":{"summary":"Report or clear the alarm currently ringing on a device","responses":{"200":{"description":"Device ringing state updated"},"404":{"description":"Device not found"}}}},"/api/devices/{deviceId}/alarms/{alarmId}/dismiss":{"post":{"summary":"Dismiss one alarm on one specific device only","responses":{"200":{"description":"Target device receives a stop command"},"404":{"description":"Device or alarm not found"}}}},"/api/devices/{deviceId}/events":{"get":{"summary":"Long-poll device events","responses":{"200":{"description":"Pending alarm events"}}}}}}