Watch routes: pause, replay, resume, rotate
The Watch Verbs pause, replay, resume, rotate as api.sb routes, with inputs, result, refusals and an example.
Reference for Watch, one group of Watch routes.
Watch.pause
Pause stops a Watch delivering while its Events keep queuing; the platform pauses a Watch whose deliveries fail for three days. Verb page.
POST /{namespace}/ watches/ {watch}/ pausePath: watch. Body, as JSON: the other inputs. Emits Watch.paused.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
watch | Watch | required | The Watch to pause. |
reason | text | Why deliveries stop. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
watch | Watch | required | The paused Watch. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ watches/ watch_9o4vCuR17L/ pause \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"{
"api": "https: //api.sb/ leaseline.app",
"watch": {
"$id": "https: //api.sb/ leaseline.app/ watches/ watch_9o4vCuR17L",
"$type": "Watch",
"selector": "Example selector",
"url": "https: //leaseline.app"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Watch.pause",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Watch.replay
Replay redelivers a Watch’s Events from a chosen point, signed as they were the first time. Verb page.
POST /{namespace}/ watches/ {watch}/ replayPath: watch. Body, as JSON: the other inputs. Emits Watch.replayed.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
watch | Watch | required | The Watch to replay. |
from | datetime | required | Where the replay starts. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
watch | Watch | required | The Watch, replaying. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The input does not match the schema of the operation. | invalid-input | Read the schema of the operation, then send every required field with the right type. | None. |
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ watches/ watch_9o4vCuR17L/ replay \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"from": "2026-10-22T12: 00: 00Z"}'{
"api": "https: //api.sb/ leaseline.app",
"watch": {
"$id": "https: //api.sb/ leaseline.app/ watches/ watch_9o4vCuR17L",
"$type": "Watch",
"selector": "Example selector",
"url": "https: //leaseline.app"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Watch.replay",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Watch.resume
Resume restarts a paused Watch and delivers the Events it held, oldest first. Verb page.
POST /{namespace}/ watches/ {watch}/ resumePath: watch. Emits Watch.resumed.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
watch | Watch | required | The paused Watch. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
watch | Watch | required | The Watch, delivering again. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ watches/ watch_9o4vCuR17L/ resume \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"{
"api": "https: //api.sb/ leaseline.app",
"watch": {
"$id": "https: //api.sb/ leaseline.app/ watches/ watch_9o4vCuR17L",
"$type": "Watch",
"selector": "Example selector",
"url": "https: //leaseline.app"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Watch.resume",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Watch.rotate
Rotate issues a new signing secret for a Watch and signs with both secrets until the old one expires. Verb page.
POST /{namespace}/ watches/ {watch}/ rotatePath: watch. Body, as JSON: the other inputs. Emits Watch.rotated.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
watch | Watch | required | The Watch whose secret changes. |
overlap | string | How long the old secret keeps signing, as an ISO 8601 duration; defaults to PT24H. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
watch | Watch | required | The Watch, signing with both secrets. |
secret | string | required | The new signing secret, shown once. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ watches/ watch_9o4vCuR17L/ rotate \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"{
"api": "https: //api.sb/ leaseline.app",
"watch": {
"$id": "https: //api.sb/ leaseline.app/ watches/ watch_9o4vCuR17L",
"$type": "Watch",
"selector": "Example selector",
"url": "https: //leaseline.app"
},
"secret": "Example secret",
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Watch.rotate",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}