curl --request PUT \
--url https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities \
--header 'x-api-key: <api-key>'import requests
url = "https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities"
headers = {"x-api-key": "<api-key>"}
response = requests.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities', 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.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities"
req, _ := http.NewRequest("PUT", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"ok": true,
"organization": {
"id": "<string>"
},
"capabilities": {
"installLinks": true,
"mcpConnections": true,
"implicitCloudSkills": true,
"dashboardActivity": true,
"modelsAnalytics": true,
"auditLogs": true,
"orgManagedDashboards": true,
"slackAssistant": true,
"slackAssistantHeadless": true,
"headlessAutomations": true,
"workbot": true,
"automationCalendar": true,
"workbotCalendar": true,
"workbotSideChats": true,
"litellm": true,
"gatewayCloudSignIn": true,
"engineV2Upgrade": true,
"platformAuditReads": true,
"gatewayDashboard": true
},
"featureStates": {
"installLinks": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"mcpConnections": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"implicitCloudSkills": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"dashboardActivity": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"modelsAnalytics": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"auditLogs": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"orgManagedDashboards": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"slackAssistant": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"slackAssistantHeadless": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"headlessAutomations": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"workbot": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"automationCalendar": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"workbotCalendar": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"workbotSideChats": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"litellm": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"gatewayCloudSignIn": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"engineV2Upgrade": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"platformAuditReads": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
}
}
}{
"error": "invalid_request",
"message": "<string>"
}{
"error": "unauthorized"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Set an organization's capability overrides
Enables, disables or clears (null) per-organization feature overrides. Every key in the feature registry (packages/features/src/registry.ts) is accepted; a feature that is fixed on this deployment (unavailable, off or on for everyone) returns 400, and unknown or retired keys are ignored. A deployment lock (DEN_FEATURE_*) outranks a stored override; featureStates shows the effective value and its source. The auditLogs feature neither grants capture entitlement nor initializes capacity or changes capture preferences. The deprecated gatewayDashboard boolean or null input is validated but ignored and never persisted; its response field is always true.
curl --request PUT \
--url https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities \
--header 'x-api-key: <api-key>'import requests
url = "https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities"
headers = {"x-api-key": "<api-key>"}
response = requests.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities', 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.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities"
req, _ := http.NewRequest("PUT", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/admin/organizations/{organizationId}/capabilities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"ok": true,
"organization": {
"id": "<string>"
},
"capabilities": {
"installLinks": true,
"mcpConnections": true,
"implicitCloudSkills": true,
"dashboardActivity": true,
"modelsAnalytics": true,
"auditLogs": true,
"orgManagedDashboards": true,
"slackAssistant": true,
"slackAssistantHeadless": true,
"headlessAutomations": true,
"workbot": true,
"automationCalendar": true,
"workbotCalendar": true,
"workbotSideChats": true,
"litellm": true,
"gatewayCloudSignIn": true,
"engineV2Upgrade": true,
"platformAuditReads": true,
"gatewayDashboard": true
},
"featureStates": {
"installLinks": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"mcpConnections": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"implicitCloudSkills": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"dashboardActivity": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"modelsAnalytics": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"auditLogs": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"orgManagedDashboards": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"slackAssistant": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"slackAssistantHeadless": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"headlessAutomations": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"workbot": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"automationCalendar": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"workbotCalendar": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"workbotSideChats": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"litellm": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"gatewayCloudSignIn": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"engineV2Upgrade": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
},
"platformAuditReads": {
"enabled": true,
"source": "unavailable",
"everyone": true,
"killed": true,
"lock": true,
"override": true,
"overrideApplies": true
}
}
}{
"error": "invalid_request",
"message": "<string>"
}{
"error": "unauthorized"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
Organization API key passed as the x-api-key header. The raw key is the header value; do not prefix it with Bearer.
Path Parameters
Response
Capability overrides were updated.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Per feature for this organization: whether it is on and why (not part of this deployment, kill switch, operator lock, organization override, or the deployment-wide on/off state), and whether an organization override would take effect.
Show child attributes
Show child attributes
Was this page helpful?