Notifications
Choose where Nuvelics sends your organization's notifications, turn them on or off, and send a test message.
x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
The org switch and every destination, each with its credential health
application/json- response
config*routes*array<|>curl -X GET 'https://api.nuvelics.com/api/tenant/v1/notifications'{ "config": { "enabled": true, "updatedAt": "2019-08-24T14:15:22Z" }, "routes": [ { "channel": "slack", "target": {}, "id": "string", "orgId": "string", "name": "string", "credentialId": "string", "health": { "status": "healthy", "lastError": "string", "lastCheckedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "fundingStatus": "ok" }, "notifyNewPitch": true, "notifyNewPitchScoreThreshold": 70, "notifyStoryEnriched": true, "notifyStoryPushedNrcs": true, "newsdeskScope": "all", "newsdeskIds": [ "string" ], "activeSince": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "version": 0 } ]}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
application/json- body
enabled*booleanThe org switch was set
application/json- response
enabled*booleanOrg-wide switch; off keeps the routes but delivers nothing
updatedAt*stringISO 8601 last-modified timestamp; null before the switch was ever set
date-timecurl -X PUT 'https://api.nuvelics.com/api/tenant/v1/notifications/config' \ -H 'Content-Type: application/json' \ -d '{ "enabled": true}'{ "enabled": true, "updatedAt": "2019-08-24T14:15:22Z"}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
application/json- body
channel*"slack""slack"name*stringThe operator's label for the destination, e.g. #sports-desk
1 <= length <= 80notifyNewPitch*booleanDeliver an event when a pitch is created
notifyNewPitchScoreThreshold?integerMinimum pitch score (40-100) a new pitch needs to be delivered; defaults to 70
40 <= value <= 10070notifyStoryEnriched*booleanDeliver an event when a story enrichment run completes
notifyStoryPushedNrcs*booleanDeliver an event when a story is pushed to an NRCS connection
newsdeskScope*string'all' matches every newsdesk, including ones created later; 'selected' matches only the route's listed newsdesks
"all""selected"newsdeskIds*array<>Newsdesks a 'selected' scope matches; ignored for 'all'
items <= 500webhookUrl*stringSlack Incoming Webhook URL (https, hooks.slack.com). Write-only: never returned by any read.
urilength <= 2048Destination created
application/json- response
channel*"slack""slack"target*id*stringNotification route identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$orgId*stringOwning organization identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$name*stringThe operator's label for the destination, e.g. #sports-desk
1 <= length <= 80credentialId*stringCredential identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$health?Health of the route's credential; null or absent when never observed
notifyNewPitch*booleanDeliver an event when a pitch is created
notifyNewPitchScoreThreshold?integerMinimum pitch score (40-100) a new pitch needs to be delivered; defaults to 70
40 <= value <= 10070notifyStoryEnriched*booleanDeliver an event when a story enrichment run completes
notifyStoryPushedNrcs*booleanDeliver an event when a story is pushed to an NRCS connection
newsdeskScope*string'all' matches every newsdesk, including ones created later; 'selected' matches only the route's listed newsdesks
"all""selected"newsdeskIds*array<>Newsdesks a 'selected' scope matches; ignored for 'all'
items <= 500activeSince*stringWatermark: the route only delivers events created at or after this moment; re-stamped when its filters change or the org switch turns on
date-timecreatedAt*stringISO 8601 creation timestamp
date-timeupdatedAt*stringISO 8601 last-modified timestamp
date-timeversion*integerMonotonic row version; used as concurrency token
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/notifications/routes' \ -H 'Content-Type: application/json' \ -d '{ "channel": "slack", "name": "string", "notifyNewPitch": true, "notifyStoryEnriched": true, "notifyStoryPushedNrcs": true, "newsdeskScope": "all", "newsdeskIds": [ "string" ], "webhookUrl": "http://example.com"}'{ "channel": "slack", "target": {}, "id": "string", "orgId": "string", "name": "string", "credentialId": "string", "health": { "status": "healthy", "lastError": "string", "lastCheckedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "fundingStatus": "ok" }, "notifyNewPitch": true, "notifyNewPitchScoreThreshold": 70, "notifyStoryEnriched": true, "notifyStoryPushedNrcs": true, "newsdeskScope": "all", "newsdeskIds": [ "string" ], "activeSince": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "version": 0}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringNotification route identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$Destination and its webhook credential deleted
curl -X DELETE 'https://api.nuvelics.com/api/tenant/v1/notifications/routes/string'x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringNotification route identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$application/json- body
channel*"slack""slack"name*stringThe operator's label for the destination, e.g. #sports-desk
1 <= length <= 80notifyNewPitch*booleanDeliver an event when a pitch is created
notifyNewPitchScoreThreshold?integerMinimum pitch score (40-100) a new pitch needs to be delivered; defaults to 70
40 <= value <= 10070notifyStoryEnriched*booleanDeliver an event when a story enrichment run completes
notifyStoryPushedNrcs*booleanDeliver an event when a story is pushed to an NRCS connection
newsdeskScope*string'all' matches every newsdesk, including ones created later; 'selected' matches only the route's listed newsdesks
"all""selected"newsdeskIds*array<>Newsdesks a 'selected' scope matches; ignored for 'all'
items <= 500webhookUrl?|Blank or absent keeps the saved webhook; a Slack URL replaces it. Write-only: never returned by any read.
Destination replaced. A blank or absent webhookUrl keeps the saved webhook; a new URL rotates it.
application/json- response
channel*"slack""slack"target*id*stringNotification route identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$orgId*stringOwning organization identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$name*stringThe operator's label for the destination, e.g. #sports-desk
1 <= length <= 80credentialId*stringCredential identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$health?Health of the route's credential; null or absent when never observed
notifyNewPitch*booleanDeliver an event when a pitch is created
notifyNewPitchScoreThreshold?integerMinimum pitch score (40-100) a new pitch needs to be delivered; defaults to 70
40 <= value <= 10070notifyStoryEnriched*booleanDeliver an event when a story enrichment run completes
notifyStoryPushedNrcs*booleanDeliver an event when a story is pushed to an NRCS connection
newsdeskScope*string'all' matches every newsdesk, including ones created later; 'selected' matches only the route's listed newsdesks
"all""selected"newsdeskIds*array<>Newsdesks a 'selected' scope matches; ignored for 'all'
items <= 500activeSince*stringWatermark: the route only delivers events created at or after this moment; re-stamped when its filters change or the org switch turns on
date-timecreatedAt*stringISO 8601 creation timestamp
date-timeupdatedAt*stringISO 8601 last-modified timestamp
date-timeversion*integerMonotonic row version; used as concurrency token
curl -X PUT 'https://api.nuvelics.com/api/tenant/v1/notifications/routes/string' \ -H 'Content-Type: application/json' \ -d '{ "channel": "slack", "name": "string", "notifyNewPitch": true, "notifyStoryEnriched": true, "notifyStoryPushedNrcs": true, "newsdeskScope": "all", "newsdeskIds": [ "string" ]}'{ "channel": "slack", "target": {}, "id": "string", "orgId": "string", "name": "string", "credentialId": "string", "health": { "status": "healthy", "lastError": "string", "lastCheckedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "fundingStatus": "ok" }, "notifyNewPitch": true, "notifyNewPitchScoreThreshold": 70, "notifyStoryEnriched": true, "notifyStoryPushedNrcs": true, "newsdeskScope": "all", "newsdeskIds": [ "string" ], "activeSince": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "version": 0}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
application/json- body
channel*"slack""slack"webhookUrl*stringurilength <= 2048The test message's outcome, success or failure
application/json- response
ok*booleanerror*stringStatus and provider error code when the test failed; never contains the URL
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/notifications/test' \ -H 'Content-Type: application/json' \ -d '{ "channel": "slack", "webhookUrl": "http://example.com"}'{ "ok": true, "error": "string"}