Create a Slack provider app and connect it to an Omnara integration
curl --request POST \
--url https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"app_name": "<string>",
"app_configuration_token": "<string>",
"return_to": "<string>"
}
'import requests
url = "https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup"
payload = {
"app_name": "<string>",
"app_configuration_token": "<string>",
"return_to": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
app_name: '<string>',
app_configuration_token: '<string>',
return_to: '<string>'
})
};
fetch('https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup', 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.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'app_name' => '<string>',
'app_configuration_token' => '<string>',
'return_to' => '<string>'
]),
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.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup"
payload := strings.NewReader("{\n \"app_name\": \"<string>\",\n \"app_configuration_token\": \"<string>\",\n \"return_to\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"app_name\": \"<string>\",\n \"app_configuration_token\": \"<string>\",\n \"return_to\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"app_name\": \"<string>\",\n \"app_configuration_token\": \"<string>\",\n \"return_to\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"integration_id": "<string>",
"setup_revision": 2,
"provider": "<string>",
"flow_id": "<string>",
"slack_app_id": "<string>",
"oauth_url": "<string>",
"redirect_uri": "<string>",
"events_url": "<string>",
"actions_url": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Integrations
Create a Slack provider app and connect it to an Omnara integration
Creates a provider-side Slack app using the supplied configuration token, name and optional icon, then starts OAuth for this saved Omnara integration. The callback activates this integration only. It never creates another Omnara integration or changes launcher settings.
POST
/
orgs
/
{orgID}
/
projects
/
{projectID}
/
integrations
/
{integrationID}
/
slack-setup
Create a Slack provider app and connect it to an Omnara integration
curl --request POST \
--url https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"app_name": "<string>",
"app_configuration_token": "<string>",
"return_to": "<string>"
}
'import requests
url = "https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup"
payload = {
"app_name": "<string>",
"app_configuration_token": "<string>",
"return_to": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
app_name: '<string>',
app_configuration_token: '<string>',
return_to: '<string>'
})
};
fetch('https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup', 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.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'app_name' => '<string>',
'app_configuration_token' => '<string>',
'return_to' => '<string>'
]),
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.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup"
payload := strings.NewReader("{\n \"app_name\": \"<string>\",\n \"app_configuration_token\": \"<string>\",\n \"return_to\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"app_name\": \"<string>\",\n \"app_configuration_token\": \"<string>\",\n \"return_to\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omnara.com/v1/orgs/{orgID}/projects/{projectID}/integrations/{integrationID}/slack-setup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"app_name\": \"<string>\",\n \"app_configuration_token\": \"<string>\",\n \"return_to\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"integration_id": "<string>",
"setup_revision": 2,
"provider": "<string>",
"flow_id": "<string>",
"slack_app_id": "<string>",
"oauth_url": "<string>",
"redirect_uri": "<string>",
"events_url": "<string>",
"actions_url": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>",
"current_digest": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>",
"line": 2,
"column": 2
}
]
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Authorizations
bearerAuthbrowserSessionCookie & csrfHeader
An opaque Omnara personal or organization bearer token.
Path Parameters
Organization ID (org_...).
Pattern:
^org_[a-z2-7]{26}$Project ID (proj_...).
Pattern:
^proj_[a-z2-7]{26}$Integration ID (itg_...).
Pattern:
^itg_[a-z2-7]{26}$Body
application/json
Response
Slack app created and OAuth setup started.
Pattern:
^itg_[a-z2-7]{26}$Integration setup revision captured by this authorization flow.
Required range:
x >= 1Pattern:
^ioaf_[a-z2-7]{26}$