Install a catalog app into a workspace.
curl --request POST \
--url https://api.rigbox.dev/api/v1/workspaces/{id}/install-app \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"catalog_id": "<string>",
"params": {}
}
'import requests
url = "https://api.rigbox.dev/api/v1/workspaces/{id}/install-app"
payload = {
"catalog_id": "<string>",
"params": {}
}
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({catalog_id: '<string>', params: {}})
};
fetch('https://api.rigbox.dev/api/v1/workspaces/{id}/install-app', 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.rigbox.dev/api/v1/workspaces/{id}/install-app",
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([
'catalog_id' => '<string>',
'params' => [
]
]),
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.rigbox.dev/api/v1/workspaces/{id}/install-app"
payload := strings.NewReader("{\n \"catalog_id\": \"<string>\",\n \"params\": {}\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.rigbox.dev/api/v1/workspaces/{id}/install-app")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"catalog_id\": \"<string>\",\n \"params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rigbox.dev/api/v1/workspaces/{id}/install-app")
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 \"catalog_id\": \"<string>\",\n \"params\": {}\n}"
response = http.request(request)
puts response.read_body{
"app": {
"allowed_emails": [
"<string>"
],
"app_kind": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"custom_domain_verified": true,
"depends_on": [
"<string>"
],
"id": "<string>",
"managed": true,
"metadata": "<unknown>",
"name": "<string>",
"node_id": "<string>",
"port": 1,
"protocol": "<string>",
"subdomain": "<string>",
"system_tags": [
"<string>"
],
"updated_at": "2023-11-07T05:31:56Z",
"user_id": "<string>",
"workspace_id": "<string>",
"custom_domain": "<string>",
"description": "<string>"
},
"live_installed": true,
"message": "<string>",
"credentials": {},
"job_id": "<string>"
}App Catalog
Install App
Install a catalog app into a workspace.
POST
/
api
/
v1
/
workspaces
/
{id}
/
install-app
Install a catalog app into a workspace.
curl --request POST \
--url https://api.rigbox.dev/api/v1/workspaces/{id}/install-app \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"catalog_id": "<string>",
"params": {}
}
'import requests
url = "https://api.rigbox.dev/api/v1/workspaces/{id}/install-app"
payload = {
"catalog_id": "<string>",
"params": {}
}
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({catalog_id: '<string>', params: {}})
};
fetch('https://api.rigbox.dev/api/v1/workspaces/{id}/install-app', 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.rigbox.dev/api/v1/workspaces/{id}/install-app",
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([
'catalog_id' => '<string>',
'params' => [
]
]),
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.rigbox.dev/api/v1/workspaces/{id}/install-app"
payload := strings.NewReader("{\n \"catalog_id\": \"<string>\",\n \"params\": {}\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.rigbox.dev/api/v1/workspaces/{id}/install-app")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"catalog_id\": \"<string>\",\n \"params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rigbox.dev/api/v1/workspaces/{id}/install-app")
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 \"catalog_id\": \"<string>\",\n \"params\": {}\n}"
response = http.request(request)
puts response.read_body{
"app": {
"allowed_emails": [
"<string>"
],
"app_kind": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"custom_domain_verified": true,
"depends_on": [
"<string>"
],
"id": "<string>",
"managed": true,
"metadata": "<unknown>",
"name": "<string>",
"node_id": "<string>",
"port": 1,
"protocol": "<string>",
"subdomain": "<string>",
"system_tags": [
"<string>"
],
"updated_at": "2023-11-07T05:31:56Z",
"user_id": "<string>",
"workspace_id": "<string>",
"custom_domain": "<string>",
"description": "<string>"
},
"live_installed": true,
"message": "<string>",
"credentials": {},
"job_id": "<string>"
}Installation runs as a background job. Use Get Job Status to track progress.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Workspace ID
Body
application/json
Response
200 - application/json
Catalog app installed successfully
OpenAPI-facing mirror of the canonical app payload.
Response types can keep serializing rig_data_store::models::App while
pointing schema generation at this local mirror to avoid cross-crate derive
coupling in utoipa.
Show child attributes
Show child attributes
If workspace is running, whether live install was attempted.
Credentials generated at install time (only for apps that require login).
Show child attributes
Show child attributes
Job ID for async install - frontend should poll GET /workspaces/{id}/jobs/{job_id}.
⌘I