Skip to content

`PATCH /v1/orgs/{org}/notification-channels/{channel_id}`.

PATCH
/v1/orgs/{org}/notification-channels/{channel_id}
curl --request PATCH \
--url https://api.updawg.net/v1/orgs/example/notification-channels/example \
--header 'Content-Type: application/json' \
--data '{ "config": "example", "name": "example" }'
org
required
string

Organization slug.

channel_id
required
string

The nch_… id.

Media typeapplication/json
object
config

A whole new configuration for the channel’s kind, replacing the old one. There is no merging into what is stored: nothing can read it back to merge into.

object | null
name
string | null
Examplegenerated
{
"config": "example",
"name": "example"
}

Changed. Replacing a webhook’s configuration makes it a new signing_secret, returned here and only here.

Media typeapplication/json

A channel just saved, and — for a webhook whose configuration was just set — the secret its requests are signed with. ⚠️ Shown once: it is stored encrypted with the rest of the configuration and never returned again. Replace the configuration to get a new one.

object
created_at
required
string format: date-time
display
required

Enough to tell channels apart — hooks.slack.com …WXYZ — and never enough to use one.

string
id
required

nch_….

string
kind
required
string
name
required
string
updated_at
required
string format: date-time
signing_secret

whsec_…. See the webhook signing scheme in the API docs.

string | null
Examplegenerated
{
"created_at": "2026-04-15T12:00:00Z",
"display": "example",
"id": "example",
"kind": "example",
"name": "example",
"updated_at": "2026-04-15T12:00:00Z",
"signing_secret": "example"
}

An empty name, a configuration the channel’s kind does not accept, or a webhook secret.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

No session.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

Not permitted for this role.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

No such channel here.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

A channel with that name exists.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

Over the organization’s request limit. Retry-After says when to try again; RateLimit-Limit is the burst.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

This deployment cannot encrypt channel credentials.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}