curl --request POST \
--url https://api.getoneprofile.ai/design-partner/slack-channel/invite/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/design-partner/slack-channel/invite/"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/design-partner/slack-channel/invite/', 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.getoneprofile.ai/design-partner/slack-channel/invite/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/design-partner/slack-channel/invite/"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getoneprofile.ai/design-partner/slack-channel/invite/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/design-partner/slack-channel/invite/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"channel_failure_message": "<string>",
"channel_name": "<string>",
"channel_state": "none",
"channel_url": "<string>",
"invite_can_retry": true,
"invite_email": "<string>",
"invite_message": "<string>",
"invite_sent_at": "2023-11-07T05:31:56Z",
"invite_status": "none",
"partner_joined": true
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Join the workspace's shared Slack channel
Make sure the caller is on their way into the workspace’s shared Slack channel. The page calls this the first time it loads: with no channel yet it starts the run that creates one and invites the caller, and answers provisioning for the page to poll. With a channel ready it sends the caller their own invitation, which is also how a resend works. Idempotent, so it answers 200 rather than 201.
The invitation goes to the caller’s own verified email and nowhere else. A refusal Slack itself made — their Slack being on a free plan, for instance — is not an error: it comes back in the body with a sentence to show them.
curl --request POST \
--url https://api.getoneprofile.ai/design-partner/slack-channel/invite/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/design-partner/slack-channel/invite/"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/design-partner/slack-channel/invite/', 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.getoneprofile.ai/design-partner/slack-channel/invite/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/design-partner/slack-channel/invite/"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.getoneprofile.ai/design-partner/slack-channel/invite/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/design-partner/slack-channel/invite/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"channel_failure_message": "<string>",
"channel_name": "<string>",
"channel_state": "none",
"channel_url": "<string>",
"invite_can_retry": true,
"invite_email": "<string>",
"invite_message": "<string>",
"invite_sent_at": "2023-11-07T05:31:56Z",
"invite_status": "none",
"partner_joined": true
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Response
Successful Response
The workspace's shared Slack channel, and THIS caller's invitation to it.
Two independent facts rather than one status: the channel belongs to the organization, the invitation belongs to the person. A colleague of whoever created the channel sees it exists and is offered their own invitation, instead of being told they are already somewhere they cannot see.
What to tell the reader when provisioning failed. Null otherwise.
The channel's name, without the leading hash. Null until it is ready.
Where the workspace's channel is. 'none' means nobody has asked yet, and the page asks the moment it loads. 'provisioning' is the run that creates it, which the page polls. 'failed' carries a sentence.
none, provisioning, ready, failed A link that opens the channel in the reader's Slack. Null until it is ready.
Whether pressing the button again could plausibly work. False for a refusal about our own Slack workspace's settings, which no retry fixes.
The address the invitation went to.
What to tell the reader when Slack refused, already written for a person rather than a log. Null when nothing was refused.
When Slack accepted the invitation.
This caller's own invitation. Per person, because Slack binds an invitation to one email address.
none, sent, refused Whether anybody from the partner's workspace is actually in the channel. Null when we could not tell: there is no Slack event subscription, so this is a live read that is allowed to fail.
Was this page helpful?