PUT /notifiers/{id}
Changed onReplaces a notifier's name, channel properties, and disabledUntil with the request body, so omitted fields are cleared. labelIds replaces assignments when supplied; [] clears them. Omitted or null labelIds preserves assignments on updates and creates an unlabeled resource on creation. IDs must belong to existing labels in your organization and are validated before saving.
Request
- Base URLhttps://api.axiom.co/v2
- AuthOAuth 2Authorization codehttps://accounts.google.com/o/oauth2/v2/authToken URLhttps://www.googleapis.com/oauth2/v4/tokenScopesnotifiers|update
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Path parameters
Notifier ID.
Request body
Example request
{
"createdAt": "2024-01-15T10:30:00Z",
"createdBy": "alice@example.com",
"disabledUntil": "2024-03-20T15:00:00Z",
"name": "Production Slack Alerts",
"properties": {
"chatgptWorkspaceAgent": {
"triggerId": "agtch_example"
},
"claudeCode": {
"routineId": "trig_01ABCDEFGHJKLMNOPQRSTUVW"
},
"cursor": {
"webhookUrl": "https://api2.cursor.sh/automations/webhook/00000000-0000-0000-0000-000000000000"
},
"customWebhook": {
"body": "{\"alert\": \"{{.AlertName}}\", \"severity\": \"{{.Severity}}\", \"message\": \"{{.Message}}\"}",
"headers": {
"Content-Type": "application/json",
"X-API-Version": "1.0"
},
"secretHeaders": {
"Authorization": "Bearer {{token}}"
},
"url": "https://api.custom-service.com/alerts"
},
"discord": {
"discordChannel": "123456789012345678",
"discordToken": "Bot 123456789012345678",
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
}
},
"discordWebhook": {
"discordWebhookUrl": "https://discord.com/api/webhooks/123456789012345678/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
}
},
"email": {
"emails": [
"oncall@example.com",
"alerts@example.com"
],
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
}
},
"jiraServiceManagement": {
"apiKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"microsoftTeams": {
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
},
"microsoftTeamsUrl": "https://outlook.office.com/webhook/123456789/IncomingWebhook/..."
},
"opsgenie": {
"apiKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"isEU": true
},
"pagerduty": {
"routingKey": "1234567890abcdef1234567890abcdef",
"token": "u+1234567890abcdef1234567890abcdef"
},
"slack": {
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
},
"slackUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
},
"webhook": {
"url": "https://api.example.com/webhooks/alerts"
}
},
"updatedAt": "2024-01-15T11:00:00Z"
}Response
Updated notifier.
Example response
{
"createdAt": "2024-01-15T10:30:00Z",
"createdBy": "alice@example.com",
"disabledUntil": "2024-03-20T15:00:00Z",
"name": "Production Slack Alerts",
"properties": {
"chatgptWorkspaceAgent": {
"triggerId": "agtch_example"
},
"claudeCode": {
"routineId": "trig_01ABCDEFGHJKLMNOPQRSTUVW"
},
"cursor": {
"webhookUrl": "https://api2.cursor.sh/automations/webhook/00000000-0000-0000-0000-000000000000"
},
"customWebhook": {
"body": "{\"alert\": \"{{.AlertName}}\", \"severity\": \"{{.Severity}}\", \"message\": \"{{.Message}}\"}",
"headers": {
"Content-Type": "application/json",
"X-API-Version": "1.0"
},
"secretHeaders": {
"Authorization": "Bearer {{token}}"
},
"url": "https://api.custom-service.com/alerts"
},
"discord": {
"discordChannel": "123456789012345678",
"discordToken": "Bot 123456789012345678",
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
}
},
"discordWebhook": {
"discordWebhookUrl": "https://discord.com/api/webhooks/123456789012345678/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
}
},
"email": {
"emails": [
"oncall@example.com",
"alerts@example.com"
],
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
}
},
"jiraServiceManagement": {
"apiKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"microsoftTeams": {
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
},
"microsoftTeamsUrl": "https://outlook.office.com/webhook/123456789/IncomingWebhook/..."
},
"opsgenie": {
"apiKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"isEU": true
},
"pagerduty": {
"routingKey": "1234567890abcdef1234567890abcdef",
"token": "u+1234567890abcdef1234567890abcdef"
},
"slack": {
"messageTemplate": {
"body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
"title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
},
"slackUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
},
"webhook": {
"url": "https://api.example.com/webhooks/alerts"
}
},
"updatedAt": "2024-01-15T11:00:00Z",
"id": "z0NfJw64aKagPOBBIJ"
}Changes
- breaking
added
subschema #2to the request bodyallOflist - breaking
the request's body type changed from
objectto no type - warning
removed the request property
- warning
removed the request property
- warning
removed the request property
- info
added the optional property
////to the response with the status - info
added the optional property
////to the response with the status - info
added the optional property
////to the response with the status - info
added the optional property
/////to the response with the status - info
added the optional property
/////to the response with the status - info
added the optional property
//////to the response with the status - info
added the optional property
//////to the response with the status - info
added the optional property
//////to the response with the status - info
added the optional property
/////to the response with the status - info
added the optional property
//////to the response with the status - info
added the optional property
//////to the response with the status - info
added the required property
/to the response with the status
- breaking
- info
added the non-success response with the status
- info
added the non-success response with the status
- info