feat(rootly): add Rootly incident management integration with 14 tools#3899
feat(rootly): add Rootly incident management integration with 14 tools#3899waleedlatif1 merged 8 commits intostagingfrom
Conversation
PR SummaryMedium Risk Overview Updates the landing integrations metadata ( Written by Cursor Bugbot for commit 9f6b8ea. Configure here. |
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Greptile SummaryThis PR adds a full Rootly incident management integration with 14 tools, following the established Sim integration pattern (tools → block → icon). It covers the complete CRUD lifecycle for incidents, alert creation and listing, timeline events, and seven catalog-style list operations (services, severities, teams, environments, incident types, functionalities, retrospectives). Key highlights:
Confidence Score: 5/5Integration is well-structured and complete — safe to merge pending resolution of any outstanding items from prior review rounds. No new P0 or P1 findings identified in this pass. All 14 tools follow the established ToolConfig pattern, API key visibility is correctly set to user-only across every tool, list tool totalCount fields use the API meta field with a correct fallback, all block subBlock/inputs/outputs/params mappings are consistent, and no custom rules are violated. apps/sim/tools/rootly/update_incident.ts — verify the HTTP method is correct per the Rootly API spec. Important Files Changed
Sequence DiagramsequenceDiagram
participant UI as Block UI
participant Block as RootlyBlock (config)
participant Tool as Rootly Tool
participant API as api.rootly.com
UI->>Block: operation selected + params filled
Block->>Block: tools.config.tool() → resolves tool ID
Block->>Block: tools.config.params() → maps subBlock fields,<br/>coerces types (string→bool, string→number)
Block->>Tool: dispatches to selected ToolConfig
alt Create / Update Incident
Tool->>API: POST /v1/incidents (JSON:API)<br/>PATCH /v1/incidents/:id (JSON:API)
API-->>Tool: { data: { id, attributes } }
Tool-->>UI: { incident: RootlyIncidentData }
end
alt List Operations (incidents, alerts, services…)
Tool->>API: GET /v1/{resource}?filter[…]&page[size]=…
API-->>Tool: { data: [...], meta: { total_count } }
Tool-->>UI: { items[], totalCount: meta.total_count ?? items.length }
end
alt Create Alert
Tool->>API: POST /v1/alerts (JSON:API)
API-->>Tool: { data: { id, attributes } }
Tool-->>UI: { alert: RootlyAlertData }
end
alt Add Incident Event
Tool->>API: POST /v1/incidents/:id/events (JSON:API)
API-->>Tool: { data: { id, attributes } }
Tool-->>UI: { eventId, event, visibility, occurredAt }
end
Reviews (5): Last reviewed commit: "reorg" | Re-trigger Greptile |
…nvironmentIds - Changed update_incident HTTP method from PUT to PATCH per Rootly API spec - Fixed totalCount in all 9 list tools to use data.meta?.total_count from API response - Added missing updateEnvironmentIds subBlock and params mapping for update_incident
|
@greptile |
|
@cursor review |
…us dropdown - Include incident id in JSON:API PATCH body per spec requirement - Add 'Unchanged' empty option to updateStatus dropdown to avoid accidental overwrites
|
@greptile |
|
@cursor review |
… gaps - Add missing get_incident output fields (private, shortUrl, closedAt) - Add missing block subBlocks: createPrivate, alertStatus, alertExternalId, listAlertsServices - Add pageNumber subBlocks for all 9 list operations - Add teams/environments filter subBlocks for list_incidents and list_alerts - Add environmentIds subBlock for create_alert - Add empty default options to all optional dropdowns (createStatus, createKind, listIncidentsSort, eventVisibility) - Wire all new subBlocks in tools.config.params and inputs - Regenerate docs
|
@greptile |
|
@cursor review |
- list_incident_types: use filter[name] instead of unsupported filter[search] - list_severities: add missing search param (filter[search]) - create_incident: title is optional per API (auto-generated if null) - update_incident: add kind, private, labels, incidentTypeIds, functionalityIds, cancellationMessage params - create/update/list incidents: add scheduled, in_progress, completed status values - create_alert: fix status description (only open/triggered on create) - add_incident_event: add updatedAt to response - block: add matching subBlocks and params for all new tool fields Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- update_incident: change PATCH to PUT per OpenAPI spec - index.ts: add types re-export - types.ts: fix id fields to string | null (matches ?? null runtime) - block: add value initializers to 4 dropdowns missing them - registry: fix alphabetical order (incident_types before incidents) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@greptile |
|
@cursor review |
#3899) * feat(rootly): add Rootly incident management integration with 14 tools * fix(rootly): address PR review feedback - PATCH method, totalCount, environmentIds - Changed update_incident HTTP method from PUT to PATCH per Rootly API spec - Fixed totalCount in all 9 list tools to use data.meta?.total_count from API response - Added missing updateEnvironmentIds subBlock and params mapping for update_incident * fix(rootly): add id to PATCH body and unchanged option to update status dropdown - Include incident id in JSON:API PATCH body per spec requirement - Add 'Unchanged' empty option to updateStatus dropdown to avoid accidental overwrites * icon update * improvement(rootly): complete block-tool alignment and fix validation gaps - Add missing get_incident output fields (private, shortUrl, closedAt) - Add missing block subBlocks: createPrivate, alertStatus, alertExternalId, listAlertsServices - Add pageNumber subBlocks for all 9 list operations - Add teams/environments filter subBlocks for list_incidents and list_alerts - Add environmentIds subBlock for create_alert - Add empty default options to all optional dropdowns (createStatus, createKind, listIncidentsSort, eventVisibility) - Wire all new subBlocks in tools.config.params and inputs - Regenerate docs * fix(rootly): align tools with OpenAPI spec - list_incident_types: use filter[name] instead of unsupported filter[search] - list_severities: add missing search param (filter[search]) - create_incident: title is optional per API (auto-generated if null) - update_incident: add kind, private, labels, incidentTypeIds, functionalityIds, cancellationMessage params - create/update/list incidents: add scheduled, in_progress, completed status values - create_alert: fix status description (only open/triggered on create) - add_incident_event: add updatedAt to response - block: add matching subBlocks and params for all new tool fields Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(rootly): final validation fixes from OpenAPI spec audit - update_incident: change PATCH to PUT per OpenAPI spec - index.ts: add types re-export - types.ts: fix id fields to string | null (matches ?? null runtime) - block: add value initializers to 4 dropdowns missing them - registry: fix alphabetical order (incident_types before incidents) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * reorg --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Summary
Type of Change
Testing
Tested manually
Checklist