Create a board watch
Subscribe to a board. webhookUrl is validated against an SSRF blocklist (loopback/private/link-local/cloud-metadata ranges) before acceptance and again on every dispatch. Every board.updated delivery body includes a deliveryId (stable per watch per refresh event, even across our own internal retries) so you can dedup safely on your end.
Each item in the body's changes[] carries the same id and detectedAt that GET /watches/{watchId}/changes returns, so a webhook item is directly usable: pass its id as sinceId to page the rest of a change set that overflowed changesOverflowCount, or to GET /watches/{watchId}/changes/{changeId}/diff for the before and after text.
The two sets of counters in that body measure different things over different populations, and they are not reconcilable against each other. Read sections*, and read rows* only if you already built on it:
- sectionsAdded / sectionsAmended / sectionsRemoved count SECTIONS, one per change event, which is the same unit as changes[] and as GET /watches/{watchId}/changes. They are narrowed by this watch's scope, which the body echoes back so you can see what they were counted over. They are omitted entirely when the refresh classified no change events, because there is then no honest section count to give.
- rowsAdded / rowsUpdated / rowsDeleted are the refresh's raw storage counters for the WHOLE BOARD. They are never narrowed by scope, and they do not share a unit with each other: added and deleted count storage chunks (a long section is stored as several), while updated counts sections. One amended multi-section document therefore lands in all three at once, so a run that amended three sections can truthfully report 12 added, 3 updated and 12 removed.
Both can be true in the same body: a watch scoped to 21 CFR part 314 can receive rowsUpdated: 480 next to sectionsAmended: 1, because the first counts the eCFR refresh's whole run and the second counts what happened inside your scope. The rows* keys are kept unchanged for receivers already built on them; do not present them to anyone as three populations of sections.
Free.
Request
- Base URLhttps://api.vaquill.ai
- Auth
- HTTP bearer
- or API key in header X-API-Key
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Request body
Example request
{
"corpusType": "state",
"state": "wa",
"scope": {
"part": "314",
"title": "21"
},
"webhookAuth": {
"headerName": "X-Api-Key"
}
}Response
The created watch.
Example response
{
"data": {
"cadence": "weekly"
}
}Changes
No recorded changes to this operation across all 1 revision of this API.