curl --request GET \
--url https://api.onecli.sh/v1/apps \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onecli.sh/v1/apps"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onecli.sh/v1/apps")
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[
{
"id": "<string>",
"name": "<string>",
"available": true,
"connectionType": "oauth",
"configurable": true,
"config": {
"hasCredentials": true,
"enabled": true,
"source": "organization"
},
"connection": {
"status": "<string>",
"scopes": [
"<string>"
],
"connectedAt": "2023-11-07T05:31:56Z"
},
"connections": [
{
"id": "<string>",
"label": "<string>",
"status": "<string>",
"scopes": [
"<string>"
],
"connectedAt": "2023-11-07T05:31:56Z"
}
],
"credentialStubs": [
{
"path": "<string>",
"content": {}
}
]
}
]List apps in the integration catalog
Lists every app in the catalog with its connection method, whether your own OAuth client is configured and your workspace’s connections.
curl --request GET \
--url https://api.onecli.sh/v1/apps \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onecli.sh/v1/apps"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onecli.sh/v1/apps")
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[
{
"id": "<string>",
"name": "<string>",
"available": true,
"connectionType": "oauth",
"configurable": true,
"config": {
"hasCredentials": true,
"enabled": true,
"source": "organization"
},
"connection": {
"status": "<string>",
"scopes": [
"<string>"
],
"connectedAt": "2023-11-07T05:31:56Z"
},
"connections": [
{
"id": "<string>",
"label": "<string>",
"status": "<string>",
"scopes": [
"<string>"
],
"connectedAt": "2023-11-07T05:31:56Z"
}
],
"credentialStubs": [
{
"path": "<string>",
"content": {}
}
]
}
]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.
Response
The app catalog
Always true. Kept for older clients that read a missing field as false.
oauth, credentials_import, api_key, cloud_only Whether the app accepts your own OAuth client credentials (POST /apps/{provider}/config).
Show child attributes
Show child attributes
The first connection only. Misleading for multi-account providers; read connections instead.
Show child attributes
Show child attributes
All of the provider's connections in the current workspace.
Show child attributes
Show child attributes
Local credential stub files some MCP servers need before they can start (secrets replaced with onecli-managed placeholders).
Show child attributes
Show child attributes