curl --request PUT \
--url https://api.example.com/api/notifications/admin/channels/{provider} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_id": "<string>",
"client_secret": "<string>",
"bot_token": "<string>",
"tenant": "<string>",
"catalog_app_id": "<string>",
"enabled": true
}
'import requests
url = "https://api.example.com/api/notifications/admin/channels/{provider}"
payload = {
"client_id": "<string>",
"client_secret": "<string>",
"bot_token": "<string>",
"tenant": "<string>",
"catalog_app_id": "<string>",
"enabled": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client_id: '<string>',
client_secret: '<string>',
bot_token: '<string>',
tenant: '<string>',
catalog_app_id: '<string>',
enabled: true
})
};
fetch('https://api.example.com/api/notifications/admin/channels/{provider}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/notifications/admin/channels/{provider}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'client_id' => '<string>',
'client_secret' => '<string>',
'bot_token' => '<string>',
'tenant' => '<string>',
'catalog_app_id' => '<string>',
'enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/notifications/admin/channels/{provider}"
payload := strings.NewReader("{\n \"client_id\": \"<string>\",\n \"client_secret\": \"<string>\",\n \"bot_token\": \"<string>\",\n \"tenant\": \"<string>\",\n \"catalog_app_id\": \"<string>\",\n \"enabled\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/api/notifications/admin/channels/{provider}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"client_id\": \"<string>\",\n \"client_secret\": \"<string>\",\n \"bot_token\": \"<string>\",\n \"tenant\": \"<string>\",\n \"catalog_app_id\": \"<string>\",\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/notifications/admin/channels/{provider}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_id\": \"<string>\",\n \"client_secret\": \"<string>\",\n \"bot_token\": \"<string>\",\n \"tenant\": \"<string>\",\n \"catalog_app_id\": \"<string>\",\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"provider": "slack",
"configured": true,
"enabled": true,
"client_id": "<string>",
"secrets_set": [
"<string>"
],
"workspace": "<string>",
"tenant": "<string>",
"catalog_app_id": "<string>",
"connected_people": 0,
"redirect_url": "<string>"
}{
"error": "<string>",
"code": 500
}{
"error": "<string>",
"code": 500
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Set up Slack or Teams
Checked against the provider before it’s saved. Empty secrets keep the stored ones.
curl --request PUT \
--url https://api.example.com/api/notifications/admin/channels/{provider} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_id": "<string>",
"client_secret": "<string>",
"bot_token": "<string>",
"tenant": "<string>",
"catalog_app_id": "<string>",
"enabled": true
}
'import requests
url = "https://api.example.com/api/notifications/admin/channels/{provider}"
payload = {
"client_id": "<string>",
"client_secret": "<string>",
"bot_token": "<string>",
"tenant": "<string>",
"catalog_app_id": "<string>",
"enabled": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client_id: '<string>',
client_secret: '<string>',
bot_token: '<string>',
tenant: '<string>',
catalog_app_id: '<string>',
enabled: true
})
};
fetch('https://api.example.com/api/notifications/admin/channels/{provider}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/notifications/admin/channels/{provider}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'client_id' => '<string>',
'client_secret' => '<string>',
'bot_token' => '<string>',
'tenant' => '<string>',
'catalog_app_id' => '<string>',
'enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/notifications/admin/channels/{provider}"
payload := strings.NewReader("{\n \"client_id\": \"<string>\",\n \"client_secret\": \"<string>\",\n \"bot_token\": \"<string>\",\n \"tenant\": \"<string>\",\n \"catalog_app_id\": \"<string>\",\n \"enabled\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/api/notifications/admin/channels/{provider}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"client_id\": \"<string>\",\n \"client_secret\": \"<string>\",\n \"bot_token\": \"<string>\",\n \"tenant\": \"<string>\",\n \"catalog_app_id\": \"<string>\",\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/notifications/admin/channels/{provider}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_id\": \"<string>\",\n \"client_secret\": \"<string>\",\n \"bot_token\": \"<string>\",\n \"tenant\": \"<string>\",\n \"catalog_app_id\": \"<string>\",\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"provider": "slack",
"configured": true,
"enabled": true,
"client_id": "<string>",
"secrets_set": [
"<string>"
],
"workspace": "<string>",
"tenant": "<string>",
"catalog_app_id": "<string>",
"connected_people": 0,
"redirect_url": "<string>"
}{
"error": "<string>",
"code": 500
}{
"error": "<string>",
"code": 500
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
slack, teams Body
Set up or change the Slack app or Teams bot. Empty secrets keep the stored ones.
1 - 2561024Slack only: the bot token (xoxb-…).
1024^xoxb-[A-Za-z0-9-]+$Teams only: the Entra directory id or domain.
256^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}|[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)+)$Teams only: the app's id once it is in your org's catalog.
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Response
Successful Response
The platform's Slack app or Teams bot. No secret is ever returned.
slack, teams Whether an admin has set it up.
Off hides it from everyone.
Which secrets are stored (never their values).
Slack: the workspace the bot token belongs to.
Teams: the Entra directory.
Teams: the app's id in your org's catalog.
How many people connected.
The redirect URL to register with the provider.
Was this page helpful?

