---
title: "Update workspace connector policies in bulk"
method: PUT
path: "/api/workspace/{workspace_id}/connector-governance/bulk"
---

# Update workspace connector policies in bulk

`PUT /api/workspace/{workspace_id}/connector-governance/bulk`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/workspace/{workspace_id}/connector-governance/bulk`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

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. In FERPA-designated workspaces, OAuth connectors start with both switches off. Only an active workspace owner or admin can enable them; workspace credentials alone do not count as approval. Connector policies are available on every plan for those workspaces. 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](/api-reference/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](/api-reference/update-builder-connection-policy), [Update per-user connection policy](/api-reference/update-per-user-connection-policy), and [Update workspace connector policies in bulk](/api-reference/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.

<Note>Call this as an owner or admin of the workspace, with a personal access token for that workspace sent as a Bearer token, or from a signed-in session. A read-only token is refused. Workspace API keys aren't accepted.</Note>

## Path parameters

- `workspace_id` string, required: ID of the workspace. With a personal access token, use the token's workspace. Get it from `organization_id` in [Get app](/api-reference/get-app).

## Request body

- BulkToggleRequest: Policy changes to apply in order.
  - `actions` BulkToggleAction[], required: The changes, up to 100. An empty list changes nothing.
    - `integration_type` string, required: ID of the connector, from `integration_type` in [Get workspace connector policies](/api-reference/get-workspace-connector-policies).
    - `builder_connection_enabled` boolean, nullable: Whether builders can connect the connector to the workspace's apps. Leave it out, or send `null`, to keep it.
    - `per_user_connection_enabled` boolean, nullable: Whether the apps' users can connect their own accounts through a workspace connector. Turning it on needs a workspace connector for the connector. Leave it out, or send `null`, to keep it.

## Response `200`

The outcome of each action.

- BulkToggleResponse: The outcome of each action.
  - `results` BulkToggleResult[], required: One result per action, in the order sent.
    - `integration_type` string, required: Connector the action was for.
    - `ok` boolean, required: Whether the action applied (`true`) or failed (`false`).
    - `error` string, nullable: Why the action failed, or `null` when `ok` is `true`. Its wording can change, so don't parse it.
    - `item` ConnectorGovernanceItem
      - `integration_type` string, required: ID of the connector.
      - `display_name` string, required: Name of the connector.
      - `connector_mode` string, required: Which ways the connector can be connected. One of `all`, `shared_only`, `app_user_only`, `byo_shared_only`, or `byo_shared_and_app_user`, with the same meaning as `connector_mode` in [List connectors](/api-reference/list-connectors).
      - `builder_connection_enabled` boolean, required: Whether the workspace lets builders connect the connector to its apps (`true`) or has turned that off (`false`). When it's `false`, starting a connection is refused.
      - `per_user_connection_enabled` boolean, required: Whether the apps' users can connect their own accounts with the workspace's credentials (`true`) or not (`false`). Always `false` when `has_per_user_credentials` is `false`.
      - `has_per_user_credentials` boolean, required: Whether the workspace has set up its own OAuth app credentials for the connector.
      - `school_approval_required` boolean: Whether the school must enable this OAuth connector before anyone can connect it.
      - `not_yet_enabled` boolean: Whether both switches are off only because the connector became available after the workspace chose to start new connectors off, and nobody has set its policy yet (`true`). Setting either switch makes it `false`.

## Other responses

- `401`: Missing or invalid credentials.
- `402`: The workspace's plan doesn't include connector policies.
- `403`: You aren't an owner or admin of the workspace, your token is for a different workspace or is read-only, or your credential can't be used on this endpoint.
- `409`: The workspace requires an unlocked SSO session.
- `422`: `actions` has more than 100 items, or an action has a missing or wrongly typed field.
- `429`: Rate limit exceeded.

## Changes

> 58 revisions in range; 1 not diffed.

- **2026-10-13** `b92cc2f13639`: 1 info
  - added the optional property `results/items/item/anyOf[subschema #1: ConnectorGovernanceItem]/school_approval_required` to the response with the `200` status
- **2026-10-12** `5e139db2e643`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-09** `fc604cdcc3a2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/workspace/:workspace_id/connector-governance/bulk/put.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/fa29e915c226?raw)
