Uh oh!
There was an error while loading. Please reload this page.
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. |
waleedlatif1
commented
Jun 27, 2026
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. |
waleedlatif1
commented
Jun 27, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
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 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
- 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
waleedlatif1
commented
Jun 27, 2026
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 |
waleedlatif1
commented
Jun 27, 2026
waleedlatif1
commented
Jun 27, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
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.
waleedlatif1
commented
Jun 27, 2026
waleedlatif1
commented
Jun 27, 2026
@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.
Uh oh!
There was an error while loading. Please reload this page.
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.
waleedlatif1
commented
Jun 27, 2026
waleedlatif1
commented
Jun 27, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
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.waleedlatif1
commented
Jun 27, 2026
waleedlatif1
commented
Jun 27, 2026
@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.
Uh oh!
There was an error while loading. Please reload this page.
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