curl --request PUT \
--url https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"actions": [
{
"builder_connection_enabled": false,
"integration_type": "googlecalendar"
},
{
"builder_connection_enabled": true,
"integration_type": "slack",
"per_user_connection_enabled": true
}
]
}
'import requests
url = "https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk"
payload = { "actions": [
{
"builder_connection_enabled": False,
"integration_type": "googlecalendar"
},
{
"builder_connection_enabled": True,
"integration_type": "slack",
"per_user_connection_enabled": True
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
actions: [
{builder_connection_enabled: false, integration_type: 'googlecalendar'},
{
builder_connection_enabled: true,
integration_type: 'slack',
per_user_connection_enabled: true
}
]
})
};
fetch('https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk', 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://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'actions' => [
[
'builder_connection_enabled' => false,
'integration_type' => 'googlecalendar'
],
[
'builder_connection_enabled' => true,
'integration_type' => 'slack',
'per_user_connection_enabled' => true
]
]
]),
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://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk"
payload := strings.NewReader("{\n \"actions\": [\n {\n \"builder_connection_enabled\": false,\n \"integration_type\": \"googlecalendar\"\n },\n {\n \"builder_connection_enabled\": true,\n \"integration_type\": \"slack\",\n \"per_user_connection_enabled\": true\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"actions\": [\n {\n \"builder_connection_enabled\": false,\n \"integration_type\": \"googlecalendar\"\n },\n {\n \"builder_connection_enabled\": true,\n \"integration_type\": \"slack\",\n \"per_user_connection_enabled\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"actions\": [\n {\n \"builder_connection_enabled\": false,\n \"integration_type\": \"googlecalendar\"\n },\n {\n \"builder_connection_enabled\": true,\n \"integration_type\": \"slack\",\n \"per_user_connection_enabled\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"integration_type": "googlecalendar",
"item": {
"builder_connection_enabled": false,
"connector_mode": "all",
"display_name": "Google Calendar",
"has_per_user_credentials": false,
"integration_type": "googlecalendar",
"not_yet_enabled": false,
"per_user_connection_enabled": false
},
"ok": true
},
{
"error": "Cannot enable per-user connections without credentials configured.",
"integration_type": "slack",
"ok": false
}
]
}Update workspace connector policies in bulk
Changes the policies of up to 100 connectors in a workspace at once.
A connector policy has two switches. builder_connection_enabled decides whether builders can connect the connector to the workspace’s apps. per_user_connection_enabled decides whether the apps’ users can connect their own accounts through a workspace connector. Each action sets either switch, or both. Leave a switch out, or send null, to keep it.
Actions run in order, and each succeeds or fails on its own, so a 200 doesn’t mean every action applied. Check ok on each result. A failed action changes nothing, except one that fails while saving: its first switch may already be saved, so read the policies again with Get workspace connector policies.
Turning a switch off also stops apps from using connections already made that way, until it’s turned back on. Owners of affected apps get a notification.
Changing policies here needs a plan that includes connector policies, for every connector.
This is limited to 60 requests per minute, shared by Update builder connection policy, Update per-user connection policy, and Update workspace connector policies in bulk. A signed-in session has its own limit, and every personal access token for the workspace shares one. Some workspaces have a different limit.
curl --request PUT \
--url https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"actions": [
{
"builder_connection_enabled": false,
"integration_type": "googlecalendar"
},
{
"builder_connection_enabled": true,
"integration_type": "slack",
"per_user_connection_enabled": true
}
]
}
'import requests
url = "https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk"
payload = { "actions": [
{
"builder_connection_enabled": False,
"integration_type": "googlecalendar"
},
{
"builder_connection_enabled": True,
"integration_type": "slack",
"per_user_connection_enabled": True
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
actions: [
{builder_connection_enabled: false, integration_type: 'googlecalendar'},
{
builder_connection_enabled: true,
integration_type: 'slack',
per_user_connection_enabled: true
}
]
})
};
fetch('https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk', 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://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'actions' => [
[
'builder_connection_enabled' => false,
'integration_type' => 'googlecalendar'
],
[
'builder_connection_enabled' => true,
'integration_type' => 'slack',
'per_user_connection_enabled' => true
]
]
]),
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://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk"
payload := strings.NewReader("{\n \"actions\": [\n {\n \"builder_connection_enabled\": false,\n \"integration_type\": \"googlecalendar\"\n },\n {\n \"builder_connection_enabled\": true,\n \"integration_type\": \"slack\",\n \"per_user_connection_enabled\": true\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"actions\": [\n {\n \"builder_connection_enabled\": false,\n \"integration_type\": \"googlecalendar\"\n },\n {\n \"builder_connection_enabled\": true,\n \"integration_type\": \"slack\",\n \"per_user_connection_enabled\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"actions\": [\n {\n \"builder_connection_enabled\": false,\n \"integration_type\": \"googlecalendar\"\n },\n {\n \"builder_connection_enabled\": true,\n \"integration_type\": \"slack\",\n \"per_user_connection_enabled\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"integration_type": "googlecalendar",
"item": {
"builder_connection_enabled": false,
"connector_mode": "all",
"display_name": "Google Calendar",
"has_per_user_credentials": false,
"integration_type": "googlecalendar",
"not_yet_enabled": false,
"per_user_connection_enabled": false
},
"ok": true
},
{
"error": "Cannot enable per-user connections without credentials configured.",
"integration_type": "slack",
"ok": false
}
]
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
Body
Policy changes to apply in order.
The changes, up to 100. An empty list changes nothing.
100Show child attributes
Show child attributes
[
{
"builder_connection_enabled": false,
"integration_type": "googlecalendar"
},
{
"builder_connection_enabled": true,
"integration_type": "slack",
"per_user_connection_enabled": true
}
]
Response
The outcome of each action.
The outcome of each action.
One result per action, in the order sent.
Show child attributes
Show child attributes
[
{
"integration_type": "googlecalendar",
"item": {
"builder_connection_enabled": false,
"connector_mode": "all",
"display_name": "Google Calendar",
"has_per_user_credentials": false,
"integration_type": "googlecalendar",
"not_yet_enabled": false,
"per_user_connection_enabled": false
},
"ok": true
},
{
"error": "Cannot enable per-user connections without credentials configured.",
"integration_type": "slack",
"ok": false
}
]
Was this page helpful?