> For the complete documentation index, see [llms.txt](https://gitbook.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook.com/docs/developers/gitbook-api/api-reference/docs-sites/site-context/update-a-context-connection.md).

# Update a context connection

```json
{"openapi":"3.1.0","info":{"title":"GitBook API","version":"0.0.1-beta"},"tags":[{"name":"site-context","description":"Manage the contextual records and topics used by your site to power AI experiences and insights.\n\n{% openapi-schemas spec=\"gitbook\" schemas=\"ContextRecord,ContextConnection,SiteTopic,SiteFinding,SiteFindingPage\" grouped=\"false\" %}\n    The Site Context objects\n{% endopenapi-schemas %}\n"}],"servers":[{"url":"{host}/v1","variables":{"host":{"default":"https://api.gitbook.com"}}}],"security":[{"user":[]},{"oauth":["site:write"]}],"components":{"securitySchemes":{"user":{"type":"http","scheme":"bearer"},"oauth":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://oauth.gitbook.com/authorize","tokenUrl":"https://oauth.gitbook.com/token","scopes":{"user:read":"Read your GitBook user profile.","organization:read":"Read the organizations you belong to, their settings and metadata, and their AI agent conversations.","organization:write":"Create organizations, and update organization settings and AI agent conversations.","organization:members:read":"Read organization members, teams, invites and link invites.","organization:members:write":"Manage organization members, teams, invites and link invites.","organization:ask":"Ask AI questions across an organization's content.","organization:search":"Search across an organization's content.","space:read":"Read spaces and their content, including pages, change requests and their reviews, comments, files and revision history.","space:write":"Create, update and delete spaces and their content, including change requests (create, edit, review), comments, and content imports and exports. Merging a change request also requires change-request:merge.","space:permissions:read":"Read the users and teams who have access to spaces and collections.","space:permissions:write":"Manage who has access to spaces and collections, including inviting users and teams.","change-request:merge":"Merge change requests, publishing their changes to the space. Creating, editing and reviewing change requests only requires space:write.","site:read":"Read sites and their settings, including navigation structure, linked spaces, customization, redirects, topics, AI configuration and documentation issues.","site:write":"Create, update and delete sites and their settings, including navigation structure (sections, linked spaces, external links), customization, redirects, topics and AI configuration.","site:publish":"Publish and unpublish sites, controlling their public exposure.","site:permissions:read":"Read the users and teams who have access to sites.","site:permissions:write":"Manage who has access to sites, including inviting users and teams.","site:auth:read":"Read how visitors authenticate on a site and its security configuration, including private share links.","site:auth:write":"Manage how visitors authenticate on a site and its security configuration, including private share links.","site:insights:read":"Read site analytics and insights, including the questions visitors asked Ask AI and the answers they received.","site:ask":"Ask AI questions across a site's content.","site:search":"Search across a site's content.","integration:read":"Read integrations, their status and where they are installed.","integration:installations:read":"Read integration installations and their configuration, which can include credentials for third-party services.","integration:installations:write":"Install and configure integrations on an organization, its spaces and its sites.","integration:publish":"Publish integrations, which can request their own permissions on your content, and route their events to a development tunnel.","integration:delete":"Unpublish integrations, permanently deleting them and every installation of them.","openapi:read":"Read OpenAPI specifications.","openapi:write":"Create, update and delete OpenAPI specifications."}}}}},"parameters":{"organizationId":{"name":"organizationId","in":"path","required":true,"description":"The unique id of the organization","schema":{"$ref":"#/components/schemas/EntityId"}},"siteId":{"name":"siteId","in":"path","required":true,"description":"The unique id of the site","schema":{"type":"string"}},"siteContextConnectionId":{"name":"siteContextConnectionId","in":"path","required":true,"description":"The unique id of the context connection","schema":{"type":"string"}}},"schemas":{"EntityId":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","description":"A unique entity identifier"},"ContextConnectorSetup":{"oneOf":[{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:email"]}},"required":["connector"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:api"]}},"required":["connector"]},{"type":"object","properties":{"connector":{"type":"string","pattern":"^integration:[^:]+$"}},"required":["connector"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:website"]},"setupSettings":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:youtube"]},"setupSettings":{"type":"object","properties":{"channelId":{"$ref":"#/components/schemas/YoutubeChannelPattern"}},"required":["channelId"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:github-discussions"]},"setupSettings":{"type":"object","properties":{"repository":{"type":"string","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$"},"token":{"type":"string","minLength":1}},"required":["repository","token"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:github-issues"]},"setupSettings":{"type":"object","properties":{"repository":{"type":"string","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$"},"token":{"type":"string","minLength":1}},"required":["repository","token"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:intercom"]},"setupSettings":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:front"]},"setupSettings":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:zendesk"]},"setupSettings":{"type":"object","properties":{"subdomain":{"type":"string","minLength":1},"email":{"type":"string","minLength":1},"apiToken":{"type":"string","minLength":1}},"required":["subdomain","email","apiToken"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:zoho-desk"]},"setupSettings":{"type":"object","properties":{"dataCenter":{"type":"string","minLength":1,"description":"Zoho data center hosting the account, given as its API domain suffix (e.g. `com`, `eu`, `in`, `com.au`). Zoho scopes both the accounts and desk API hosts by data center."},"orgId":{"type":"string","minLength":1,"description":"Zoho Desk organization id the tickets belong to."},"clientId":{"type":"string","minLength":1},"clientSecret":{"type":"string","minLength":1},"refreshToken":{"type":"string","minLength":1}},"required":["dataCenter","orgId","clientId","clientSecret","refreshToken"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:freshdesk"]},"setupSettings":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Freshdesk domain hosting the account, e.g. `mycompany.freshdesk.com` or just `mycompany`. Tickets and the API are scoped by this domain."},"apiKey":{"type":"string","minLength":1,"description":"Freshdesk API key with permission to read tickets. Sent as HTTP Basic auth and redacted when read back."}},"required":["domain","apiKey"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:pylon"]},"setupSettings":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:hubspot"]},"setupSettings":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:linear"]},"setupSettings":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]}},"required":["connector","setupSettings"]},{"type":"object","properties":{"connector":{"type":"string","enum":["builtin:jira"]},"setupSettings":{"$ref":"#/components/schemas/JiraConnectorSetupSettings"}},"required":["connector","setupSettings"]}]},"YoutubeChannelPattern":{"description":"A YouTube channel identifier, either a channel ID or a channel handle.","oneOf":[{"$ref":"#/components/schemas/YoutubeChannelId"},{"$ref":"#/components/schemas/YoutubeChannelName"}]},"YoutubeChannelId":{"type":"string","description":"A YouTube channel ID starting with \"UC\".","pattern":"^UC[A-Za-z0-9_-]{22}$"},"YoutubeChannelName":{"type":"string","description":"A YouTube channel handle starting with \"@\".","pattern":"^@[A-Za-z0-9._-]{3,100}$"},"JiraConnectorSetupSettings":{"type":"object","properties":{"baseUrl":{"type":"string","format":"uri","minLength":1,"maxLength":2048,"description":"Base URL of the Jira Cloud site, e.g. https://your-team.atlassian.net."},"apiEmail":{"type":"string","format":"email","minLength":1,"maxLength":254,"description":"Email of the Atlassian account whose API token is used."},"apiToken":{"type":"string","minLength":1,"maxLength":1024,"description":"Atlassian API token used for outbound writes. Redacted when read back. Omit it when updating a connection to keep the stored token; required when the site URL or account email changes."},"projectKeys":{"type":"array","maxItems":100,"uniqueItems":true,"description":"Projects where GitBook handles issues. Empty means all accessible projects.","items":{"type":"string","minLength":1,"maxLength":255}},"statusMapping":{"type":"object","description":"Jira status to move the linked issue to when the change request reaches a given status, e.g. `{ \"merged\": \"Done\" }`. A status left out is not synced.","propertyNames":{"$ref":"#/components/schemas/ChangeRequestStatus"},"additionalProperties":{"type":"string","minLength":1,"maxLength":255}}},"required":["baseUrl","apiEmail","apiToken"]},"ChangeRequestStatus":{"type":"string","enum":["draft","open","archived","merged"]},"ContextConnectionLabel":{"type":"string","description":"Optional label for the connection","minLength":0,"maxLength":128},"baseUrl":{"type":"string","format":"uri","minLength":1,"maxLength":2048,"description":"Base URL of the Jira Cloud site, e.g. https://your-team.atlassian.net."},"apiEmail":{"type":"string","format":"email","minLength":1,"maxLength":254,"description":"Email of the Atlassian account whose API token is used."},"apiToken":{"type":"string","minLength":1,"maxLength":1024,"description":"Atlassian API token used for outbound writes. Redacted when read back. Omit it when updating a connection to keep the stored token; required when the site URL or account email changes."},"projectKeys":{"type":"array","maxItems":100,"uniqueItems":true,"description":"Projects where GitBook handles issues. Empty means all accessible projects.","items":{"type":"string","minLength":1,"maxLength":255}},"statusMapping":{"type":"object","description":"Jira status to move the linked issue to when the change request reaches a given status, e.g. `{ \"merged\": \"Done\" }`. A status left out is not synced.","propertyNames":{"$ref":"#/components/schemas/ChangeRequestStatus"},"additionalProperties":{"type":"string","minLength":1,"maxLength":255}},"ContextUsageSettings":{"type":"object","properties":{"changeRequests":{"type":"boolean","description":"Whether to use context to propose change requests"},"search":{"type":"boolean","description":"Whether to expose records in search results"},"sync":{"type":"boolean","description":"Whether the connection syncs GitBook change-request state outward to the connected external system (outbound write). Requires a write-capable token or role."},"searchBoost":{"$ref":"#/components/schemas/ContextSearchBoost"}},"required":["changeRequests","search","searchBoost"]},"ContextSearchBoost":{"type":"string","description":"Relative score adjustment applied to records from a connection when searching.","enum":["x0.8","x1.0","x1.2"]},"ContextConnectionFilter":{"type":"string","description":"Optional filter used to restrict which items are ingested from the source. Its meaning depends on the connector: it can be a tag, label, or an expression. When empty or omitted, all resolved items are ingested.","minLength":0,"maxLength":1024},"ContextConnection":{"allOf":[{"type":"object","properties":{"object":{"type":"string","enum":["context-connection"]},"id":{"type":"string","description":"The ID of the connection"},"createdAt":{"$ref":"#/components/schemas/Timestamp"},"syncedAt":{"$ref":"#/components/schemas/Timestamp"},"label":{"$ref":"#/components/schemas/ContextConnectionLabel"},"filter":{"$ref":"#/components/schemas/ContextConnectionFilter"},"status":{"$ref":"#/components/schemas/ContextConnectionStatus"},"records":{"type":"integer","description":"Number of records ingested from this connection"},"failureMessage":{"type":"string","description":"Failure message when synchronization fails"},"failureReason":{"$ref":"#/components/schemas/ContextConnectionFailureReason"},"skipReason":{"$ref":"#/components/schemas/AISkipReason"},"email":{"type":"object","description":"Parameters associated with the connection when it is an email connection","properties":{"ingestionAddress":{"type":"string","description":"Inbound email address for the connection","format":"email"}}},"usageSettings":{"$ref":"#/components/schemas/ContextUsageSettings"},"urls":{"type":"object","description":"URLs associated with the connection","properties":{"location":{"type":"string","description":"URL of the connection in the API","format":"uri"}},"required":["location"]}},"required":["object","id","createdAt","status","records","usageSettings","urls"]},{"$ref":"#/components/schemas/ContextConnectorSetup"}]},"Timestamp":{"type":"string","format":"date-time"},"ContextConnectionStatus":{"type":"string","enum":["pending","syncing","succeeded","failed","skipped"]},"ContextConnectionFailureReason":{"type":"string","description":"Why a synchronization failed, indicating who can resolve it. `authentication` and `misconfigured` need the connection to be reconfigured; `rate_limited` and `upstream_unavailable` are the source's own limits or downtime and are retried; `unknown` could not be attributed to the source's response.","enum":["authentication","misconfigured","rate_limited","upstream_unavailable","unknown"]},"AISkipReason":{"type":"string","description":"Why an AI task was skipped before execution.\n\n- `ai_unavailable_for_organization`: The organization's effective plan does not include AI or a\n  required feature. Takes precedence when both the organization and site plans block the task.\n- `ai_unavailable_for_site`: The site's effective plan does not include the required feature.\n  The site's applied plan takes precedence over its own plan.\n- `ai_paused`: AI usage is temporarily paused by automatic usage controls.\n- `ai_disabled`: AI or a required AI feature has been turned off in the organization's settings.\n- `ai_restricted`: AI is blocked by GitBook or a contractual restriction and cannot be enabled\n  through organization settings.","enum":["ai_unavailable_for_organization","ai_unavailable_for_site","ai_disabled","ai_restricted","ai_paused"]}}},"paths":{"/orgs/{organizationId}/sites/{siteId}/context-connections/{siteContextConnectionId}":{"patch":{"operationId":"updateSiteContextConnectionById","summary":"Update a context connection","tags":["site-context"],"parameters":[{"$ref":"#/components/parameters/organizationId"},{"$ref":"#/components/parameters/siteId"},{"$ref":"#/components/parameters/siteContextConnectionId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ContextConnectorSetup"},{"type":"object","description":"Update a Jira connection. Omit `setupSettings.apiToken` to keep the stored token.","required":["connector","setupSettings"],"properties":{"connector":{"type":"string","enum":["builtin:jira"]},"label":{"$ref":"#/components/schemas/ContextConnectionLabel"},"setupSettings":{"type":"object","required":["baseUrl","apiEmail"],"properties":{"baseUrl":{"$ref":"#/components/schemas/baseUrl"},"apiEmail":{"$ref":"#/components/schemas/apiEmail"},"apiToken":{"$ref":"#/components/schemas/apiToken"},"projectKeys":{"$ref":"#/components/schemas/projectKeys"},"statusMapping":{"$ref":"#/components/schemas/statusMapping"}}}}},{"type":"object","properties":{"usageSettings":{"$ref":"#/components/schemas/ContextUsageSettings"},"label":{"$ref":"#/components/schemas/ContextConnectionLabel"},"filter":{"$ref":"#/components/schemas/ContextConnectionFilter"}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextConnection"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://gitbook.com/docs/developers/gitbook-api/api-reference/docs-sites/site-context/update-a-context-connection.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
