Set an app's OAuth client configuration
curl --request POST \
--url https://api.onecli.sh/v1/apps/{provider}/config \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"clientId": "1234567890.apps.googleusercontent.com",
"clientSecret": "GOCSPX-…"
}
'import requests
url = "https://api.onecli.sh/v1/apps/{provider}/config"
payload = {
"clientId": "1234567890.apps.googleusercontent.com",
"clientSecret": "GOCSPX-…"
}
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({clientId: '1234567890.apps.googleusercontent.com', clientSecret: 'GOCSPX-…'})
};
fetch('https://api.onecli.sh/v1/apps/{provider}/config', 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.onecli.sh/v1/apps/{provider}/config",
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([
'clientId' => '1234567890.apps.googleusercontent.com',
'clientSecret' => 'GOCSPX-…'
]),
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.onecli.sh/v1/apps/{provider}/config"
payload := strings.NewReader("{\n \"clientId\": \"1234567890.apps.googleusercontent.com\",\n \"clientSecret\": \"GOCSPX-…\"\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.onecli.sh/v1/apps/{provider}/config")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"clientId\": \"1234567890.apps.googleusercontent.com\",\n \"clientSecret\": \"GOCSPX-…\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onecli.sh/v1/apps/{provider}/config")
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 \"clientId\": \"1234567890.apps.googleusercontent.com\",\n \"clientSecret\": \"GOCSPX-…\"\n}"
response = http.request(request)
puts response.read_body{
"success": true
}{
"error": "<string>"
}{
"error": "<string>"
}Apps
Set an app's OAuth client configuration
Stores your own OAuth client credentials for an app at the workspace level. For shared vendors like Google, one client serves all their apps.
POST
/
apps
/
{provider}
/
config
Set an app's OAuth client configuration
curl --request POST \
--url https://api.onecli.sh/v1/apps/{provider}/config \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"clientId": "1234567890.apps.googleusercontent.com",
"clientSecret": "GOCSPX-…"
}
'import requests
url = "https://api.onecli.sh/v1/apps/{provider}/config"
payload = {
"clientId": "1234567890.apps.googleusercontent.com",
"clientSecret": "GOCSPX-…"
}
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({clientId: '1234567890.apps.googleusercontent.com', clientSecret: 'GOCSPX-…'})
};
fetch('https://api.onecli.sh/v1/apps/{provider}/config', 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.onecli.sh/v1/apps/{provider}/config",
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([
'clientId' => '1234567890.apps.googleusercontent.com',
'clientSecret' => 'GOCSPX-…'
]),
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.onecli.sh/v1/apps/{provider}/config"
payload := strings.NewReader("{\n \"clientId\": \"1234567890.apps.googleusercontent.com\",\n \"clientSecret\": \"GOCSPX-…\"\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.onecli.sh/v1/apps/{provider}/config")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"clientId\": \"1234567890.apps.googleusercontent.com\",\n \"clientSecret\": \"GOCSPX-…\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onecli.sh/v1/apps/{provider}/config")
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 \"clientId\": \"1234567890.apps.googleusercontent.com\",\n \"clientSecret\": \"GOCSPX-…\"\n}"
response = http.request(request)
puts response.read_body{
"success": true
}{
"error": "<string>"
}{
"error": "<string>"
}Brings your own OAuth client instead of the default one. For Google, Atlassian, and Microsoft, one saved client covers all of that vendor’s apps in the workspace. See App connections.
Store your own OAuth client credentials for the app at the workspace level (“bring your own client”). For an app that shares a vendor client (Google, Atlassian, Microsoft) the credentials are saved once for the vendor and serve every app of that vendor in the workspace. Replacing an existing configuration disconnects the connections minted from it. Requires the admin or owner role wherever roles are enforced (see Roles).
Availability: Cloud · Community (self-hosted) · Enterprise (self-hosted)
Authorizations
A workspace API key (oc_…) or organization API key (oc_org_…). Workspace-scoped endpoints called with an organization key also need X-Workspace-Id.
Path Parameters
App provider identifier (for example gmail, github, jira).
Body
application/json
The app's own OAuth client credentials ("bring your own client"). Field names are per app; most take clientId and clientSecret.
Response
Saved