{
 "api_revision": 39,
 "changes": [
  {
   "date": "2026-10-27",
   "app_version": "1.3.0",
   "items": [
    {
     "endpoint": "/v1/health",
     "what": "Health, capabilities (enabled / ready / blocked_reason), this guide and OpenAPI"
    },
    {
     "endpoint": "/v1/camera/snapshot",
     "what": "Camera photo with size presets and raw=1"
    },
    {
     "endpoint": "/v1/mic/record",
     "what": "Microphone clip, 1-120 s"
    },
    {
     "endpoint": "/v1/gallery/recent",
     "what": "Gallery list"
    },
    {
     "endpoint": "/v1/gallery/photo/{id}",
     "what": "One gallery photo, any size, raw=1"
    },
    {
     "endpoint": "/v1/image/last",
     "what": "Newest screenshot or photo; since + wait for the next one"
    },
    {
     "endpoint": "/v1/log",
     "what": "Log: query, follow live, stats, export, notes; /v1/audit alias"
    },
    {
     "endpoint": null,
     "what": "Idempotency-Key on POSTs; pending (202) schema"
    },
    {
     "endpoint": "/v1/tools/bridget",
     "what": "The bridget helper download"
    }
   ],
   "revision": 1
  },
  {
   "date": "2026-10-27",
   "app_version": "1.4.0",
   "items": [
    {
     "endpoint": "/v1/feedback",
     "what": "File a bug report or feature request (any agent)"
    },
    {
     "endpoint": "/v1/feedback/{id}/status",
     "what": "Developer agents: list and read reports, move their status"
    }
   ],
   "revision": 2
  },
  {
   "date": "2026-10-27",
   "app_version": "1.4.4",
   "items": [
    {
     "endpoint": "/v1/camera/snapshot",
     "what": "Camera zoom: \"zoom\": 0.5 (ultra-wide) to the phone's maximum; range in /v1/capabilities"
    },
    {
     "endpoint": "/v1/changes",
     "what": "API revisions: X-Bridget-API-Revision on every reply, X-Bridget-Whats-New until you've caught up, and this list"
    }
   ],
   "revision": 3
  },
  {
   "date": "2026-10-27",
   "app_version": "1.5.0",
   "items": [
    {
     "endpoint": "/v1/interactions",
     "what": "Interactions: send the owner a notice or a question with buttons, a text reply, a choice or links; read aloud if you ask"
    },
    {
     "endpoint": "/v1/interactions/{id}",
     "what": "Wait for their answer (wait=55), list or cancel your interactions"
    },
    {
     "endpoint": "/v1/events",
     "what": "Events: answers, closes and expiries for you, oldest first, with long-poll"
    }
   ],
   "revision": 4
  },
  {
   "date": "2026-10-27",
   "app_version": "1.5.0",
   "items": [
    {
     "endpoint": "/v1/location",
     "what": "Location with altitude, speed, heading and the compass"
    },
    {
     "endpoint": "/v1/speaker/play",
     "what": "Play audio or read text aloud on the phone; newer narration replaces what's queued"
    },
    {
     "endpoint": "/v1/speaker/say",
     "what": "Speak text with the phone's own voice"
    },
    {
     "endpoint": "/v1/speaker",
     "what": "What's playing; stop your audio"
    },
    {
     "endpoint": "/v1/tour",
     "what": "City tour: your running tour (tour.started / tour.tick / tour.question / tour.ended events)"
    }
   ],
   "revision": 5
  },
  {
   "date": "2026-10-27",
   "app_version": "1.5.2",
   "items": [
    {
     "endpoint": "/v1/me",
     "what": "Report your model and harness; the owner sees it on your agent card"
    },
    {
     "endpoint": "/v1/tour",
     "what": "City tour brief in tour.started and GET /v1/tour: directions relative to them, nearest interesting places when nothing is left here"
    },
    {
     "endpoint": "/v1/tour/photo/{n}",
     "what": "tour.photo: the owner took a photo for you on the tour; fetch it"
    }
   ],
   "revision": 6
  },
  {
   "date": "2026-10-27",
   "app_version": "1.5.2",
   "items": [
    {
     "endpoint": "/v1/interactions",
     "what": "HTML cards: kind=html draws your own card (offline, Bridget.respond(json) answers)"
    },
    {
     "endpoint": "/v1/text/stream",
     "what": "Live text panel: kind=text, then stream text into it"
    },
    {
     "endpoint": "/v1/callback/test",
     "what": "Callbacks: the owner can set a callback URL for you; events are POSTed signed with HMAC-SHA256; send a test"
    },
    {
     "endpoint": "/v1/mcp",
     "what": "MCP: use Bridgit as an MCP server (Streamable HTTP) with your key"
    },
    {
     "endpoint": "/v1/speaker",
     "what": "Speaker status: playing shows only your own sound; busy and paused added"
    },
    {
     "endpoint": "/v1/tour",
     "what": "End tour: optional tour_id so you only end the tour you mean"
    },
    {
     "endpoint": "/v1/screen/capture",
     "what": "Screenshot on request: what's on the owner's screen now, nothing saved (once they turn on Screenshots)"
    },
    {
     "endpoint": "/v1/gallery/recent",
     "what": "Gallery with \"Select photos\" access: photo_not_found and /v1/gallery/recent say how the owner allows all"
    }
   ],
   "revision": 7
  },
  {
   "date": "2026-10-29",
   "app_version": "1.6.0",
   "items": [
    {
     "endpoint": "/v1/phone/status",
     "what": "Device context, sensors, flashlight, timed sound/display controls and find-phone ring"
    },
    {
     "endpoint": "/v1/files",
     "what": "Private file transfers, owner-selected Downloads, Android sharing and clipboard approval"
    },
    {
     "endpoint": "/v1/ocr",
     "what": "On-device OCR and transcription; short video and accessible gallery videos"
    },
    {
     "endpoint": "/v1/health/records",
     "what": "Read-only Health Connect, app usage and opt-in notification text"
    },
    {
     "endpoint": "/v1/screen/grant",
     "what": "Owner-approved, per-agent MediaProjection screen-sharing grants"
    },
    {
     "endpoint": "/v1/sensors",
     "what": "Sensors"
    },
    {
     "endpoint": "/v1/flashlight",
     "what": "Flashlight"
    },
    {
     "endpoint": "/v1/phone/context",
     "what": "Phone context"
    },
    {
     "endpoint": "/v1/phone/dnd",
     "what": "DND"
    },
    {
     "endpoint": "/v1/phone/sound",
     "what": "Sound"
    },
    {
     "endpoint": "/v1/phone/brightness",
     "what": "Brightness"
    },
    {
     "endpoint": "/v1/phone/undo",
     "what": "Undo timed changes"
    },
    {
     "endpoint": "/v1/phone/ring",
     "what": "Ring"
    },
    {
     "endpoint": "/v1/shares",
     "what": "Shares"
    },
    {
     "endpoint": "/v1/downloads",
     "what": "Downloads"
    },
    {
     "endpoint": "/v1/clipboard",
     "what": "Clipboard"
    },
    {
     "endpoint": "/v1/camera/video",
     "what": "Video recording"
    },
    {
     "endpoint": "/v1/gallery/videos/recent",
     "what": "Gallery videos"
    },
    {
     "endpoint": "/v1/gallery/video/{id}",
     "what": "Gallery video bytes"
    },
    {
     "endpoint": "/v1/notifications",
     "what": "Notification reads"
    },
    {
     "endpoint": "/v1/usage",
     "what": "Usage summaries"
    },
    {
     "endpoint": "/v1/screen/share/capture",
     "what": "Shared-screen capture"
    },
    {
     "endpoint": "/v1/capabilities",
     "what": "Per-agent capability grants, enforced for HTTP and MCP"
    }
   ],
   "revision": 8
  },
  {
   "date": "2026-10-30",
   "app_version": "1.6.0",
   "items": [{
    "endpoint": "/v1/demo",
    "what": "A demo script: offer the owner a hands-on tour of what you can do, tailored by a few questions"
   }],
   "revision": 9
  },
  {
   "date": "2026-10-30",
   "app_version": "1.6.0",
   "items": [
    {
     "endpoint": "/v1/listen",
     "what": "Wake words: the owner maps words like \"hey bridget\" to you; what they say next arrives as a listen.heard event. Your wake words and whether the phone is listening"
    },
    {
     "endpoint": "/v1/listen/clip/{id}",
     "what": "The audio after a wake word, when the owner chose to send it"
    }
   ],
   "revision": 10
  },
  {
   "date": "2026-10-30",
   "app_version": "1.6.0",
   "items": [
    {
     "endpoint": "/v1/sounds",
     "what": "Listen for any sounds: the owner can have the phone tell you when the room gets loud (sound.heard events), and how it's set"
    },
    {
     "endpoint": "/v1/sounds/clip/{id}",
     "what": "The audio of a sound, when the owner lets sounds send audio"
    }
   ],
   "revision": 11
  },
  {
   "date": "2026-10-30",
   "app_version": "1.6.0",
   "items": [{
    "endpoint": "/v1/events",
    "what": "Late answers: the owner can still answer a question after it expires; you get interaction.answered with late=true after interaction.expired"
   }],
   "revision": 12
  },
  {
   "date": "2026-10-31",
   "app_version": "1.6.0",
   "items": [
    {
     "endpoint": null,
     "what": "A five-minute first-run demo to offer right after pairing: https://bridgit.cc/demo/SKILL.md"
    },
    {
     "endpoint": "/v1/speaker/say",
     "what": "speaker/say and speaker/play reply status \"silenced\" when the phone is on silent, Do Not Disturb or in a call"
    },
    {
     "endpoint": "/v1/flashlight",
     "what": "Flashlight on a device without one: capabilities shows blocked_reason no_hardware and the call fails with not_supported"
    }
   ],
   "revision": 13
  },
  {
   "date": "2026-11-01",
   "app_version": "1.6.0",
   "items": [{
    "endpoint": "/v1/demo",
    "what": "The demo has one entry point: GET /v1/demo (MCP tool demo) now starts with the first-run tour, run from cards on the phone, then the menu. The menu asks its questions on a card and every demo ends with a card"
   }],
   "revision": 14
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [{
    "endpoint": "/v1/feedback",
    "what": "Reports go to the Bridgit team too (unless the owner turns it off), with the phone's details and yours: add agent_info {harness, harness_version, model} when you file one; replies say sent_to_team. Up to 50 reports an hour per agent"
   }],
   "revision": 15
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [
    {
     "endpoint": "/v1/settings",
     "what": "App settings: every Bridgit setting and the phone's sound and display settings, with type, allowed values and whether you may change each one (locked_reason, why)"
    },
    {
     "endpoint": "/v1/settings",
     "what": "Developer agents change settings in one call once the owner turns on App settings; locked ones fail with setting_locked"
    }
   ],
   "revision": 16
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [
    {
     "endpoint": null,
     "what": "Spelled Bridgit everywhere. Headers are now X-Bridgit-* (API revision, what's new, image and audio details, callback signatures); every one is still also sent as X-Bridget-*, so read either"
    },
    {
     "endpoint": "/v1/tools/bridgit",
     "what": "The helper is GET /v1/tools/bridgit (save it as ~/bin/bridgit; it reads BRIDGIT_* and ~/.config/bridgit/env, and still BRIDGET_* and ~/.config/bridget/env). /v1/tools/bridget still works"
    },
    {
     "endpoint": "/v1/interactions",
     "what": "HTML cards: call Bridgit.respond(json)"
    },
    {
     "endpoint": "/v1/health",
     "what": "health says \"app\": \"Bridgit\"; the MCP server name is bridgit; log filter agent=bridgit (agent=bridget still works); the pairing QR carries \"bridgit\": 1 as well as \"bridget\": 1"
    }
   ],
   "revision": 17
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [
    {
     "endpoint": "/v1/interactions",
     "what": "HTML cards act on the phone: Bridgit.act({method, path, body}) runs one of your endpoints at once, as you (your grants and the owner's switches apply), and resolves to {ok, status, body}"
    },
    {
     "endpoint": "/v1/events",
     "what": "action.executed event for every Bridgit.act call, so a card's action is reported even while you're offline"
    }
   ],
   "revision": 18
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [
    {
     "endpoint": "/v1/samples",
     "what": "Interaction samples: GET /v1/samples has a complete, tested POST body for every kind, styled html cards included, and the exact answer each one produces"
    },
    {
     "endpoint": "/v1/demo",
     "what": "The demo's cards are styled html cards (step pill, icon, Do it / Skip / End demo); their pages are in GET /v1/samples"
    }
   ],
   "revision": 19
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [{
    "endpoint": "/v1/interactions",
    "what": "Card stacks: post kind=html cards with the same \"stack\" id (optional stack_index) and the owner swipes through them, n of m with a peek of the next card. swipe_answer {left, right} lets a swipe answer a card (answer.data.swipe). Interactions and interaction.answered events carry stack, stack_index (and stack_size)"
   }],
   "revision": 20
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [{
    "endpoint": "/v1/camera/arm",
    "what": "Arm the camera ahead of a photo: it opens and settles exposure for up to 10 s, so your next snapshot fires in about 0.3 s instead of 1.4-2 s; snapshot replies say warm"
   }],
   "revision": 21
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [{
    "endpoint": "/v1/schedule",
    "what": "Scheduled actions: hand the phone an action manifest once (inline or a URL it polls) \u2014 any call you may make plus download, play, show, send and delete, each with its own schedule (at, times, every_minutes with count/until, daily, after). The owner approves it once; results arrive as schedule.* events, saved files at /v1/schedule/assets"
   }],
   "revision": 22
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [{
    "endpoint": "/v1/feedback",
    "what": "Please report bugs and ask for features: the setup prompt, the guide (Report bugs, ask for features), the MCP instructions and health's links.feedback now point you to POST /v1/feedback. health's links also lists samples"
   }],
   "revision": 23
  },
  {
   "date": "2026-11-02",
   "app_version": "1.6.0",
   "items": [
    {
     "endpoint": "/v1/feedback/{id}",
     "what": "Check on your own reports: every agent can list (GET /v1/feedback) and read the reports it filed, with status, history and the Bridgit team's note; the team's latest status is pulled first. Developer agents still see every report; mine=true narrows to yours"
    },
    {
     "endpoint": "/v1/feedback/{id}/followup",
     "what": "Follow up on a report you filed: a note, and once it's fixed, won't fix or duplicate, outcome works or still_broken. Follow-ups reach the Bridgit team"
    },
    {
     "endpoint": "/v1/feedback",
     "what": "Filing a report replies with url and followup_url so you can check back"
    }
   ],
   "revision": 24
  },
  {
   "date": "2026-11-02",
   "app_version": "1.7.0",
   "items": [
    {
     "endpoint": "/v1/phone/battery",
     "what": "Full battery report: status, plug type, health, temperature, voltage, cycles, current, time to full, battery saver, screen timeout and which power settings you may change. /v1/phone/status carries the same fields under battery"
    },
    {
     "endpoint": "/v1/phone/power",
     "what": "Battery saver on or off (after the owner's one-time USB grant) and screen timeout, with optional restoration"
    },
    {
     "endpoint": "/v1/events",
     "what": "Battery events on /v1/events for agents with the phone grant: battery.low (15%), battery.critical (5%), battery.okay (20%), battery.charging_started/stopped, battery.full, battery.saver_on/off, battery.hot (45 °C) and battery.cooled"
    }
   ],
   "revision": 25
  },
  {
   "date": "2026-11-02",
   "app_version": "1.7.0",
   "items": [
    {
     "endpoint": "/v1/feedback/team-key",
     "what": "Your own key for the Bridgit team's feedback backend (FBK-15): file reports, check their status and verify fixes there directly, so a broken phone doesn't stop you. rotate=true makes a new one"
    },
    {
     "endpoint": "/v1/feedback/team-key",
     "what": "The verify loop: follow your reports on the backend (GET /v1/agent/reports?waiting=true); when one is waiting_for_retest, install fixed_in or later, re-run the repro and POST /v1/agent/reports/{id}/verify works, still_broken or unverified. Never call something fixed until a re-test says works"
    },
    {
     "endpoint": "/v1/feedback",
     "what": "Send every bug and every feature request, however small, even if you doubt we can or will do it: we'd rather triage too many than miss one. POST /v1/feedback replies carry team_api {base_url, key_endpoint, docs}; uploads now carry your agent id"
    }
   ],
   "revision": 26
  },
  {
   "date": "2026-11-02",
   "app_version": "1.7.0",
   "items": [
    {
     "endpoint": "/v1/weather",
     "what": "Weather where the phone is, or at a lat/lon you give: conditions now, the next hours and the next 24 hours, from MET Norway (free, CC BY 4.0). Coordinates are rounded to about 1 km before they leave the phone. Schedule it like any call: {\"do\":{\"call\":\"GET /v1/weather\"}}"
    },
    {
     "endpoint": null,
     "what": "New error upstream_failed (502): a service Bridgit asks for you, such as MET Norway, failed and nothing was cached"
    }
   ],
   "revision": 27
  },
  {
   "date": "2026-11-02",
   "app_version": "1.7.0",
   "items": [
    {
     "endpoint": "/v1/adb/setup",
     "what": "ADB control: how to help the owner set it up (on the phone, or with a USB cable and a laptop agent), and what to run once it's on (no key needed)"
    },
    {
     "endpoint": "/v1/adb/status",
     "what": "ADB setup progress and which grants took effect"
    },
    {
     "endpoint": "/v1/adb/shell",
     "what": "Run a shell command as Android's shell user (developer agents, owner switch)"
    },
    {
     "endpoint": "/v1/adb/grant",
     "what": "Give Bridgit every useful permission and access through ADB"
    }
   ],
   "revision": 28
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": "/v1/feedback",
     "what": "Every agent can file and follow bug reports and feature requests, whatever permissions the owner gave it"
    },
    {
     "endpoint": null,
     "what": "Every error reply carries report_problems: where to report, including the team server's no-phone route for when the phone itself is the problem"
    }
   ],
   "revision": 29
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [{
    "endpoint": null,
    "what": "Learn Bridgit without the phone: https://bridgit.cc/learn/index.json lists the guide, OpenAPI, endpoint list, change log, samples, demo, errors and how to file bugs, always current with the latest code, no key. Also https://bridgit.cc/llms.txt. health's links.learn and /v1/changes links.learn point there"
   }],
   "revision": 30
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": "/v1/guide",
     "what": "The guide starts with a short Start here (capabilities first, one call, how to wait, retry and limits) and Good phone manners for cards and notices"
    },
    {
     "endpoint": "/v1/capabilities",
     "what": "The guide's capability table and endpoint list show what you are allowed to use (agent_allowed), not only what is switched on"
    },
    {
     "endpoint": "/v1/tools/bridgit",
     "what": "The bridgit helper's wait-interaction keeps waiting while a question is only seen, holds 55 s at a time, and takes --idempotency-key"
    }
   ],
   "revision": 31
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": "/v1/judgment",
     "what": "Decisions with Jev (TypeSafe): send a state and typed questions, get typed answers with calibrated probabilities, on the Bridgit team's account. Add conditional actions (bridgit-actions/1): a card, speech or a log line that runs only when an answer clears your threshold; a Jev failure runs nothing"
    },
    {
     "endpoint": "/v1/feedback/team-key",
     "what": "Agents with a phone-minted team key can also call the team backend directly: POST {base_url}/v1/jev, same body and reply (actions come back, not run)"
    }
   ],
   "revision": 32
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": "/v1/captures/storage",
     "what": "Keep your captures where you want, in any combination: memory (for as long as you choose, up to the owner's limit), the phone's Downloads/Bridgit folder, or an upload to your URL. Set it once for all your captures or per kind"
    },
    {
     "endpoint": "/v1/camera/snapshot",
     "what": "store on photos, screenshots and recordings: [\"memory\",\"files\",\"upload\"] for this one capture; the reply's capture says where it went"
    },
    {
     "endpoint": "/v1/captures",
     "what": "List, fetch and delete your kept captures; wake-word and sound clips are there too, and their events carry capture"
    },
    {
     "endpoint": null,
     "what": "Each agent still sees only its own captures, and only while it has the capability, unless the owner lets agents share them"
    }
   ],
   "revision": 33
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": "/v1/outbound",
     "what": "Outbound log: every call the phone made to a server off the device (team backend, Jev, weather, relay, updates, Sentry, your callbacks), with destination, purpose, the agent that caused it, data categories, bytes, status and a redacted preview of what was sent. Filter by since, destination, agent, category; every agent may read the calls it caused"
    },
    {
     "endpoint": "/v1/outbound/summary",
     "what": "Totals of what left the phone by destination, category, agent, purpose and day"
    },
    {
     "endpoint": "/v1/outbound/{id}",
     "what": "One outbound entry with its previews"
    }
   ],
   "revision": 34
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": "/v1/owner/email",
     "what": "The owner's email: Bridgit works for 24 hours from the first agent call, then needs a verified address. See where it stands; health has the same as owner_email"
    },
    {
     "endpoint": "/v1/owner/email",
     "what": "Send the owner's address yourself: bridgit.cc emails them a link to tap (the same address gets email alerts)"
    },
    {
     "endpoint": null,
     "what": "New error email_required (403): after the 24 hours only status, feedback and /v1/owner/email work until the owner verifies"
    }
   ],
   "revision": 35
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": "/v1/outbound/summary",
     "what": "The outbound summary is now an analysis in one call: a plain-language headline (what left the phone and to whom), period=today|24h|7d|30d, trends by hour or day, the biggest destinations, agents and calls, destinations first seen in the window, failures by destination and error, and for each destination the data categories, purposes and agents"
    },
    {
     "endpoint": "/v1/settings",
     "what": "privacy.outbound_log turns the outbound log on or off (default on); the owner in Settings or an agent here, audited. While it is off nothing new is recorded, and /v1/outbound's recording says since when and who turned it off"
    },
    {
     "endpoint": "/v1/outbound",
     "what": "period=today|24h|7d|30d on the outbound list too, and a recording block in every reply"
    }
   ],
   "revision": 36
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": null,
     "what": "The Developer switch is now two: Bridgit Fixer Mode (every bug report with screenshots, moving reports, attaching images) and Agent Super Powers (ADB shell and grants, changing settings, every agent's log). Agents that had Developer keep both"
    },
    {
     "endpoint": "/v1/settings",
     "what": "Refusals say which one you need: forbidden with reason fixer_mode_off or super_powers_off (was developer_only). settings has agent.fixer_mode and agent.super_powers instead of agent.developer"
    },
    {
     "endpoint": "/v1/adb/status",
     "what": "The owner can tap Revoke Super Powers: Super Powers off for every agent, ADB control off, what ADB gave Bridgit taken back, the pairing forgotten and Wireless debugging off"
    }
   ],
   "revision": 37
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": "/v1/feedback",
     "what": "Reports have one team-wide number, ref: a letter for the source and the Bridgit team's id, e.g. M0042 (the owner, from the app), A0042 (an agent), C0042 (caught automatically, like crashes). The phone shows it everywhere instead of its own #0001"
    },
    {
     "endpoint": "/v1/feedback/{id}",
     "what": "number is now that same ref, and null until the phone has sent the report to the Bridgit team (it was the phone's own #0001). team_id is the plain id. Keep using id in /v1/feedback/{id} URLs"
    }
   ],
   "revision": 38
  },
  {
   "date": "2026-11-02",
   "app_version": "1.8.0",
   "items": [
    {
     "endpoint": "/v1/watches",
     "what": "Watches: \"call me back when ...\". Pick data (location with speed, motion, steps, battery, ...) and an interval; the phone asks Jev (or Clef, model: clef) your question about the last few readings and calls you back (watch.matched) when the answer matches"
    },
    {
     "endpoint": "/v1/watches/{id}",
     "what": "Read one watch's last checks and the state Jev saw, or stop it"
    }
   ],
   "revision": 39
  }
 ],
 "links": {
  "feedback": "/v1/feedback",
  "capabilities": "/v1/capabilities",
  "openapi": "/v1/openapi.json",
  "learn": "https://bridgit.cc/learn/index.json",
  "llms_txt": "https://bridgit.cc/llms.txt",
  "changes": "/v1/changes",
  "demo": "/v1/demo",
  "guide": "/v1/guide",
  "samples": "/v1/samples"
 },
 "how_to_use": "Your phone's api_revision is in GET /v1/health. Everything after it is new to that phone's Bridgit; everything up to it works there."
}
