{"openapi":"3.0.0","info":{"title":"CameraGate","version":"0.0.6","description":"Self-hosted camera server. Runs on the phone and exposes the camera over LAN."},"servers":[{"url":"/"}],"security":[{"token":[]}],"components":{"securitySchemes":{"token":{"type":"apiKey","in":"header","name":"X-CameraGate-Token"}}},"paths":{"/camera":{"get":{"summary":"Camera and server state","responses":{200:{"description":"ok"}}}},"/snapshot":{"get":{"summary":"Latest JPEG frame","responses":{200:{"description":"image/jpeg"}}}},"/stream":{"get":{"summary":"MJPEG live stream (multipart/x-mixed-replace)","responses":{200:{"description":"multipart stream"}}}},"/ws":{"get":{"summary":"WebSocket, binary JPEG frames","responses":{101:{"description":"upgraded"}}}},"/record/start":{"post":{"summary":"Start MP4 recording","responses":{200:{"description":"ok"}}}},"/record/stop":{"post":{"summary":"Stop recording","responses":{200:{"description":"ok"}}}},"/qr":{"get":{"summary":"QR code PNG of the server URL","responses":{200:{"description":"image/png"}}}},"/health":{"get":{"summary":"Liveness probe","responses":{200:{"description":"ok"}}}}}}