integration source type and
flow through the project’s existing notification routes.
Sources and destinations are separate. A source receives an alert from CloudWatch,
Alertmanager, Grafana, Datadog, PagerDuty-compatible producers, or a generic sender.
A notification destination sends the resulting Squasher incident
to responders.
Operations
Management operations require project read or write permission. The inbound
endpoint authenticates AWS connectors with the SNS signature and exact topic
ARN. Webhook connectors use the write-only secret returned at creation or rotation;
the provider setup page specifies whether it belongs in a bearer header or payload.
Inbound endpoints are rate-limited at the edge before application processing. A
429 response is retryable; preserve the original event identity and use
exponential backoff with jitter.
Providers
Create AWS CloudWatch
Create a generic webhook
setup object. Store its secret in a
secret manager; subsequent reads return only secret_prefix.
Because that secret is returned only once, create and rotate requests do not accept
Idempotency-Key and official clients do not retry them automatically. If the
response is interrupted, list the project’s connectors before creating another one,
then rotate the existing connector if you need a new credential.
Rotation starts a 24-hour overlap window for the previous secret. Update the source
during that window, verify a provider-specific firing and recovery test, then let the
old credential expire. AWS connectors do
not expose this operation because SNS signatures authenticate their requests.
The test operation checks that the connector is enabled and reports whether Squasher
has received a provider delivery. It does not manufacture an incident or pretend to
test the upstream vendor. Use listDeliveries to inspect recent opened, updated,
resolved, ignored, and failed outcomes without exposing raw payloads or credentials.
Paginate delivery history
Request a page size from 1 to 100 to receive a cursor page. Omitcursor on the
first request, then pass the returned next_cursor unchanged until it is null.
The cursor is opaque; do not parse or construct it.
--limit and --cursor. MCP agents can
discover it with search("alertConnectors.listDeliveries"); omit cursor on the
first execute call and reuse the response’s next_cursor on the next call.
Calling the endpoint without limit or cursor still returns the legacy first-page
array for compatibility. New integrations should always request limit so they can
continue beyond the first 50 records.
default_severity is a project-configured incident-severity key, not a closed
enum. Existing legacy keys and additional ranks such as sev-8 remain valid;
the value is bounded to 64 characters.
Deleting a connector immediately revokes its credentials and resolves any active
incidents owned by that connector. The connector disappears from management APIs,
while listDeliveries remains available for that connector ID and project during the
90-day delivery-audit retention window. Save the connector ID before deletion. The
response contains only sanitized delivery metadata; another project cannot read it.
The 90-day ledger bound applies to every outcome. Project deletion removes the
history immediately. Delivery rows expire even when the linked incident is still open;
the incident and its timeline remain available. Once a delivery identity has aged out,
reusing that identity can process a new request, subject to the normal lifecycle-ordering
checks.
Use client.alertConnectors.* in @squasher-ai/api-client,
squasher alert-connectors, or MCP search("alertConnectors").
See Inbound alert connectors for lifecycle,
deduplication, security, and troubleshooting guidance.