Outcome
Returns the configured public Web Push VAPID key without requiring sign-in.
Before you start
- This action is public and requires no user credential. Verify the intended environment and inspect the returned configuration value.
Discover the target
topolo actions get app_topolo_one.push.vapid_key.get --detail --json
Request
GET /api/push/vapid-key
Input fields
Use an empty input object. Credential and resource context are separate.
Interpret the response
Inspect vapidPublicKey. The placeholder YOUR_VAPID_PUBLIC_KEY_HERE means the deployment has no configured public key; HTTP 200 does not establish push readiness.
Inspect the declared output schema and captured variants.
Worked examples
Actual exported One Worker with local Miniflare D1/KV. Authentication, application discovery, checkout, billing and remote widget providers are controlled synthetic responses; outbound access is sealed. No live provider outcome is established.
Save the reviewed input below as payload.json; substitute discovered identifiers and bind credential/resource context separately. CLI:
topolo actions validate app_topolo_one.push.vapid_key.get --data @payload.json --json
topolo actions plan app_topolo_one.push.vapid_key.get --data @payload.json --json
topolo actions call app_topolo_one.push.vapid_key.get --data @payload.json --detail --json
MCP planning and execution use the same reviewed input:
{
"tool": "topolo_prepare_action",
"arguments": {
"actionId": "app_topolo_one.push.vapid_key.get",
"input": {}
}
}
{
"tool": "topolo_read_action",
"arguments": {
"actionId": "app_topolo_one.push.vapid_key.get",
"input": {},
"detail": true
}
}
Successful response · HTTP 200
Input · payload.json:
{}
Captured response:
{
"vapidPublicKey": "YOUR_VAPID_PUBLIC_KEY_HERE"
}
Inspect vapidPublicKey. The placeholder YOUR_VAPID_PUBLIC_KEY_HERE means the deployment has no configured public key; HTTP 200 does not establish push readiness.
Refused request · HTTP 429 · http_error
Input · payload.json:
{}
Captured response:
{
"error": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. 10 requests per 10 seconds allowed.",
"retryAfter": 10,
"limit": 10,
"window": 10,
"timestamp": "2026-10-06T02:06:25.257Z"
}
The exported Worker rate limiter can refuse this public read before routing. Inspect raw error RATE_LIMIT_EXCEEDED, wait for the Retry-After header or retryAfter seconds, then retry serially. No authentication is required for this endpoint.
Verify the result
- Inspect vapidPublicKey. The placeholder YOUR_VAPID_PUBLIC_KEY_HERE means the deployment has no configured public key; HTTP 200 does not establish push readiness.
Errors and recovery
http_error(HTTP 429): The exported Worker rate limiter can refuse this public read before routing. Inspect raw error RATE_LIMIT_EXCEEDED, wait for the Retry-After header or retryAfter seconds, then retry serially. No authentication is required for this endpoint.
These are observed local refusals; inspect the raw error body because one SDK code can represent several handler messages. Preserve the request id when available.
Recovery boundary
Configure a real public VAPID key through the deployment’s authorized operator before browser subscription. The public key is distinct from its private signing key.
Evidence
Actual exported One Worker with local Miniflare D1/KV. Authentication, application discovery, checkout, billing and remote widget providers are controlled synthetic responses; outbound access is sealed. No live provider outcome is established.