Start an OAuth connect
curl --request GET \
--url https://api.onecli.sh/v1/apps/{provider}/authorize \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onecli.sh/v1/apps/{provider}/authorize"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onecli.sh/v1/apps/{provider}/authorize', 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}/authorize",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.onecli.sh/v1/apps/{provider}/authorize"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.onecli.sh/v1/apps/{provider}/authorize")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onecli.sh/v1/apps/{provider}/authorize")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"error": "<string>"
}Apps
Start an OAuth connect flow for an app
Redirects the browser to the provider consent screen to connect an app via OAuth. The token and workspace travel in the query string.
GET
/
apps
/
{provider}
/
authorize
Start an OAuth connect
curl --request GET \
--url https://api.onecli.sh/v1/apps/{provider}/authorize \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onecli.sh/v1/apps/{provider}/authorize"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onecli.sh/v1/apps/{provider}/authorize', 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}/authorize",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.onecli.sh/v1/apps/{provider}/authorize"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.onecli.sh/v1/apps/{provider}/authorize")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onecli.sh/v1/apps/{provider}/authorize")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"error": "<string>"
}Redirects to the provider with
_token, _workspace, and optionally _org in the query string. After consent, the provider calls back and the connection is created. See App connections.
Redirects the browser to the provider’s consent screen. A browser navigation cannot set headers, so the scope rides the query string instead: _token (the bearer), _workspace (the workspace id), and optionally _org to connect at the organization level. After consent the provider calls back to /v1/apps/{provider}/callback and the browser lands on the dashboard’s /app-connect/{provider} page with status=success or status=error.
Pass connectionId to re-authenticate an existing connection instead of creating a new one.
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).
Query Parameters
The bearer token, for browser navigations that cannot send Authorization.
The workspace id, for browser navigations that cannot send X-Workspace-Id.
Connect at the organization level (admin only). Prefer GET /org/apps/{provider}/authorize.
Re-authenticate this connection.
Carried through to the success redirect for the CLI's post-connect flow.
Response
Redirect to the provider's consent screen