feat(uptimerobot): add UptimeRobot v3 integration#5229
Conversation
- 24 tools across monitors, incidents, maintenance windows, alert contacts, public status pages, and account (UptimeRobot v3 REST API, Bearer auth) - Block with operation-scoped subBlocks, status-page logo/icon file uploads via internal multipart routes, and BlockMeta templates + skills - Registered tools/block, added icon, generated docs - Updated add-integration/add-block/validate-integration docs links to /integrations
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
@greptile |
PR SummaryMedium Risk Overview Status-page create/update with logo/icon uses internal routes that resolve uploaded files from storage (with access checks), build multipart requests, and forward to UptimeRobot; other operations call the API directly from tool configs. Shared types/mappers, contracts, docs MDX, icon mappings, and Claude command templates now point Reviewed by Cursor Bugbot for commit 94ac0c5. Configure here. |
|
@cursor review |
Greptile SummaryThis PR adds a full UptimeRobot integration. The main changes are:
Confidence Score: 5/5This looks safe to merge.
Important Files Changed
Reviews (6): Last reviewed commit: "fix(uptimerobot): validate core PSP fiel..." | Re-trigger Greptile |
- Block: URL is not required for HEARTBEAT monitors (no URL) - buildMonitorBody: throw on malformed assignedAlertContacts/customHttpHeaders JSON instead of silently dropping the field - PSP route: error (400) when a supplied logo/icon cannot be resolved to a stored file instead of silently omitting the image - PSP route: guard success-path JSON parsing; return a controlled 502 on a non-JSON provider response instead of an uncaught 500
- pause/start monitor: send Content-Type: application/json (v3 spec requires it on these POSTs even with an empty body) - update maintenance window: drop autoAddMonitors (not in UpdateMaintenanceWindowDto); gate the block field to create only
|
Ran a comprehensive per-endpoint conformance audit of all 24 tools against the live v3 OpenAPI (
One genuinely spec-ambiguous item remains: the multipart array encoding for PSP |
|
@greptile |
|
@cursor review |
The tool runner treats a top-level `timeout` param as the outbound HTTP-client timeout (ms), so a monitor check-timeout of e.g. 30s would abort the API call in 30ms. Rename the input to `checkTimeout` (block subBlock, tool params, inputs, numeric coercion) and map it to the API body's `timeout` key in buildMonitorBody.
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 4301512. Configure here.
A successful PSP create/update must return the PspDto object; an empty or non-object body now returns a controlled 502 instead of mapping a phantom status page (id: 0, empty name, null images) back to the workflow.
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit ec4b90b. Configure here.
Reject successful PSP responses that lack a positive numeric id and non-empty
friendlyName (a {} or metadata envelope) with a controlled 502, instead of
mapping a phantom status page.
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 94ac0c5. Configure here.
What
Adds a complete UptimeRobot integration built on the UptimeRobot v3 REST API (
https://api.uptimerobot.com/v3, Bearer API-key auth).Tools (24)
Block
uptimerobotblock with an operation dropdown covering all 24 operations.wandConfigon incident timestamp filters.interval,status,cursor) are disambiguated with operation-scoped subBlock ids collapsed onto canonical params intools.config.params(numeric coercion is NaN-aware so maintenance-window enum intervals stay strings).UptimeRobotBlockMetawith 8 templates + 5 skills.File handling
Status-page logo/icon image uploads follow the standard internal-route pattern: the
create_psp/update_psptools post a JSON envelope to internal multipart routes (/api/tools/uptimerobot/{create,update}-psp) which download the referencedUserFilefrom storage and forward amultipart/form-datarequest to UptimeRobot. Boundary shapes live inlib/api/contracts/tools/uptimerobot.ts.Other
#111921bg), tools + block registered, docs generated.add-integration/add-block/validate-integrationcommand docs to usedocs.sim.ai/integrations/...(was/tools/...), matching the actual generated docs path.Validation
bun run type-check— clean (no new errors)biome check— cleanbun run check:api-validation— passing (route-count baseline bumped 862 → 864 for the two new internal routes)/validate-integration— endpoints, params, response mappings, and block↔tool alignment cross-checked against the v3 OpenAPI spec