GitHub: Update a repository
GitHub repos.reposUpdate: arguments, response, policy and SDK examples.
← Repos operations · Get started
Operation github.repos_update
Provider route: PATCH /repos/{owner}/{repo}. Alter supplies the connection’s credentials and routing.
Call through Alter
Section titled “Call through Alter”Install @alter-ai/sdk @alter-ai/github with npm, or alter-sdk-github with pip. Supply your connected customer’s grant ID and the arguments described below.
import { App } from "@alter-ai/sdk";import { GitHubIntegration } from "@alter-ai/github";
async function execute(input: Parameters<GitHubIntegration["repos"]["reposUpdate"]>[0]) { const app = new App({ apiKey: process.env.ALTER_API_KEY! }); try { const provider = new GitHubIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! }); const call = await provider.repos.reposUpdate(input); const result = await call.wait(); return result.bodyJson(); } finally { await app.close(); }}import osfrom alter_sdk import Appfrom alter_sdk_github import GitHubIntegration
async def execute(arguments): async with App(api_key=os.environ["ALTER_API_KEY"]) as app: provider = GitHubIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]}) call = await provider.repos.repos_update(arguments) result = await call.wait() return result.body_json()| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Additional keys: not allowed |
path | object | Required within parent | Additional keys: not allowed |
path.owner | string | Required within parent | |
path.repo | string | Required within parent | |
body | object | Optional | |
body.allow_auto_merge | boolean | Optional | Either `true` to allow auto-merge on pull requests, or `false` to disallow auto-merge. Default: false |
body.allow_forking | boolean | Optional | Either `true` to allow private forks, or `false` to prevent private forks. Default: false |
body.allow_merge_commit | boolean | Optional | Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits. Default: true |
body.allow_rebase_merge | boolean | Optional | Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging. Default: true |
body.allow_squash_merge | boolean | Optional | Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging. Default: true |
body.allow_update_branch | boolean | Optional | Either `true` to always allow a pull request head branch that is behind its base branch to be updated even if it is not required to be up to date before merging, or false otherwise. Default: false |
body.archived | boolean | Optional | Whether to archive this repository. `false` will unarchive a previously archived repository. Default: false |
body.default_branch | string | Optional | Updates the default branch for this repository. |
body.delete_branch_on_merge | boolean | Optional | Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion. Default: false |
body.description | string | Optional | A short description of the repository. |
body.has_issues | boolean | Optional | Either `true` to enable issues for this repository or `false` to disable them. Default: true |
body.has_projects | boolean | Optional | Either `true` to enable projects for this repository or `false` to disable them. Note: If you’re creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error. Default: true |
body.has_pull_requests | boolean | Optional | Either `true` to allow pull requests for this repository or `false` to prevent pull requests. Default: true |
body.has_wiki | boolean | Optional | Either `true` to enable the wiki for this repository or `false` to disable it. Default: true |
body.homepage | string | Optional | A URL with more information about the repository. |
body.is_template | boolean | Optional | Either `true` to make this repo available as a template repository or `false` to prevent it. Default: false |
body.merge_commit_message | string | Optional | The default value for a merge commit message. - `PR_TITLE` - default to the pull request’s title. - `PR_BODY` - default to the pull request’s body. - `BLANK` - default to a blank commit message. One of: PR_BODY, PR_TITLE, BLANK |
body.merge_commit_title | string | Optional | Required when using `merge_commit_message`. The default value for a merge commit title. - `PR_TITLE` - default to the pull request’s title. - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name). One of: PR_TITLE, MERGE_MESSAGE |
body.name | string | Optional | The name of the repository. |
body.private | boolean | Optional | Either `true` to make the repository private or `false` to make it public. Default: `false`. Note: You will get a `422` error if the organization restricts [changing repository visibility](https://docs.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. Default: false |
body.pull_request_creation_policy | string | Optional | The policy that controls who can create pull requests for this repository: `all` or `collaborators_only`. One of: all, collaborators_only |
body.security_and_analysis | JSON | Optional | |
body.security_and_analysis (anyOf 1) | object | Alternative | Specify which security and analysis features to enable or disable for the repository. To use this parameter, you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see “[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization).” For example, to enable GitHub Advanced Security, use this data in the body of the `PATCH` request: `{ “security_and_analysis”: {“advanced_security”: { “status”: “enabled” } } }`. You can check which security and analysis features are currently enabled by using a `GET /repos/{owner}/{repo}` request. |
body.security_and_analysis (anyOf 1).advanced_security | object | Optional | Use the `status` property to enable or disable GitHub Advanced Security for this repository. For more information, see “[About GitHub Advanced Security](/github/getting-started-with-github/learning-about-github/about-github-advanced-security).” For standalone Code Scanning or Secret Protection products, this parameter cannot be used. |
body.security_and_analysis (anyOf 1).advanced_security.status | string | Optional | Can be `enabled` or `disabled`. |
body.security_and_analysis (anyOf 1).code_security | object | Optional | Use the `status` property to enable or disable GitHub Code Security for this repository. |
body.security_and_analysis (anyOf 1).code_security.status | string | Optional | Can be `enabled` or `disabled`. |
body.security_and_analysis (anyOf 1).secret_scanning | object | Optional | Use the `status` property to enable or disable secret scanning for this repository. For more information, see “[About secret scanning](/code-security/secret-security/about-secret-scanning).” |
body.security_and_analysis (anyOf 1).secret_scanning.status | string | Optional | Can be `enabled` or `disabled`. |
body.security_and_analysis (anyOf 1).secret_scanning_ai_detection | object | Optional | Use the `status` property to enable or disable secret scanning AI detection for this repository. For more information, see “[Responsible detection of generic secrets with AI](https://docs.github.com/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets).” |
body.security_and_analysis (anyOf 1).secret_scanning_ai_detection.status | string | Optional | Can be `enabled` or `disabled`. |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_alert_dismissal | object | Optional | Use the `status` property to enable or disable secret scanning delegated alert dismissal for this repository. |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_alert_dismissal.status | string | Optional | Can be `enabled` or `disabled`. |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_bypass | object | Optional | Use the `status` property to enable or disable secret scanning delegated bypass for this repository. |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_bypass.status | string | Optional | Can be `enabled` or `disabled`. |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_bypass_options | object | Optional | Feature options for secret scanning delegated bypass. This object is only honored when `security_and_analysis.secret_scanning_delegated_bypass.status` is set to `enabled`. You can send this object in the same request as `secret_scanning_delegated_bypass`, or update just the options in a separate request. |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_bypass_options.reviewers | array | Optional | The bypass reviewers for secret scanning delegated bypass. If you omit this field, the existing set of reviewers is unchanged. |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[] | object | Each item | |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[].mode | string | Optional | The bypass mode for the reviewer Default: ALWAYS One of: ALWAYS, EXEMPT |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[].reviewer_id | integer | Required within parent | The ID of the team or role selected as a bypass reviewer |
body.security_and_analysis (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[].reviewer_type | string | Required within parent | The type of the bypass reviewer One of: TEAM, ROLE |
body.security_and_analysis (anyOf 1).secret_scanning_non_provider_patterns | object | Optional | Use the `status` property to enable or disable secret scanning non-provider patterns for this repository. For more information, see “[Supported secret scanning patterns](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets).” |
body.security_and_analysis (anyOf 1).secret_scanning_non_provider_patterns.status | string | Optional | Can be `enabled` or `disabled`. |
body.security_and_analysis (anyOf 1).secret_scanning_push_protection | object | Optional | Use the `status` property to enable or disable secret scanning push protection for this repository. For more information, see “[Protecting pushes with secret scanning](/code-security/secret-scanning/protecting-pushes-with-secret-scanning).” |
body.security_and_analysis (anyOf 1).secret_scanning_push_protection.status | string | Optional | Can be `enabled` or `disabled`. |
body.security_and_analysis (anyOf 2) | null | Alternative | |
body.squash_merge_commit_message | string | Optional | The default value for a squash merge commit message: - `PR_BODY` - default to the pull request’s body. - `COMMIT_MESSAGES` - default to the branch’s commit messages. - `BLANK` - default to a blank commit message. One of: PR_BODY, COMMIT_MESSAGES, BLANK |
body.squash_merge_commit_title | string | Optional | Required when using `squash_merge_commit_message`. The default value for a squash merge commit title: - `PR_TITLE` - default to the pull request’s title. - `COMMIT_OR_PR_TITLE` - default to the commit’s title (if only one commit) or the pull request’s title (when more than one commit). One of: PR_TITLE, COMMIT_OR_PR_TITLE |
body.use_squash_pr_title_as_default | boolean | Optional | Either `true` to allow squash-merge commits to use pull request title, or `false` to use commit message. **This property is closing down. Please use `squash_merge_commit_title` instead. Default: false |
body.visibility | string | Optional | The visibility of the repository. One of: public, private |
body.web_commit_signoff_required | boolean | Optional | Either `true` to require contributors to sign off on web-based commits, or `false` to not require contributors to sign off on web-based commits. Default: false |
Response
Section titled “Response”Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | Model | Root | Expand Create a fork — response body |
Referenced models: Create a fork — response body
Schemas
Section titled “Schemas”4 more schemas are linked from the tables above, on the schema pages.
Create a fork — response body — code of conduct
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Code of Conduct Simple |
html_url | JSON | Required within parent | |
html_url (anyOf 1) | string | Alternative | Format: uri |
html_url (anyOf 2) | null | Alternative | |
key | string | Required within parent | |
name | string | Required within parent | |
url | string | Required within parent | Format: uri |
Create a fork — response body — license
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | JSON | Root | |
$ (anyOf 1) | object | Alternative | License Simple |
$ (anyOf 1).html_url | string | Optional | Format: uri |
$ (anyOf 1).key | string | Required within parent | |
$ (anyOf 1).name | string | Required within parent | |
$ (anyOf 1).node_id | string | Required within parent | |
$ (anyOf 1).spdx_id | JSON | Required within parent | |
$ (anyOf 1).spdx_id (anyOf 1) | string | Alternative | |
$ (anyOf 1).spdx_id (anyOf 2) | null | Alternative | |
$ (anyOf 1).url | JSON | Required within parent | |
$ (anyOf 1).url (anyOf 1) | string | Alternative | Format: uri |
$ (anyOf 1).url (anyOf 2) | null | Alternative | |
$ (anyOf 2) | null | Alternative |
Create a fork — response body — template repository
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | JSON | Root | |
$ (anyOf 1) | Model | Alternative | Expand Create a fork — response body — template_repository / merge_commit_message: PR BODY, PR TITLE, BLANK, merge commit title: PR TITLE, MERGE MESSAGE, pull request creation policy: all, collaborators only, squash merge commit message: PR BODY, COMMIT MESSAGES, BLANK, squash merge commit title: PR TITLE, COMMIT OR PR TITLE |
$ (anyOf 2) | null | Alternative |
Get an issue — response body — user
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | JSON | Root | |
$ (anyOf 1) | Model | Alternative | Expand Get an issue — response body — user A Git Hub user |
$ (anyOf 2) | null | Alternative |
Referenced models: Get an issue — response body — user A Git Hub user
Create a fork — response body — security and analysis
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | JSON | Root | |
$ (anyOf 1) | object | Alternative | |
$ (anyOf 1).advanced_security | object | Optional | Enable or disable GitHub Advanced Security for the repository. For standalone Code Scanning or Secret Protection products, this parameter cannot be used. |
$ (anyOf 1).advanced_security.status | string | Optional | Known values: enabled, disabled |
$ (anyOf 1).code_security | object | Optional | |
$ (anyOf 1).code_security.status | string | Optional | Known values: enabled, disabled |
$ (anyOf 1).dependabot_security_updates | object | Optional | Enable or disable Dependabot security updates for the repository. |
$ (anyOf 1).dependabot_security_updates.status | string | Optional | The enablement status of Dependabot security updates for the repository. Known values: enabled, disabled |
$ (anyOf 1).secret_scanning | object | Optional | |
$ (anyOf 1).secret_scanning.status | string | Optional | Known values: enabled, disabled |
$ (anyOf 1).secret_scanning_ai_detection | object | Optional | |
$ (anyOf 1).secret_scanning_ai_detection.status | string | Optional | Known values: enabled, disabled |
$ (anyOf 1).secret_scanning_delegated_alert_dismissal | object | Optional | |
$ (anyOf 1).secret_scanning_delegated_alert_dismissal.status | string | Optional | Known values: enabled, disabled |
$ (anyOf 1).secret_scanning_delegated_bypass | object | Optional | |
$ (anyOf 1).secret_scanning_delegated_bypass.status | string | Optional | Known values: enabled, disabled |
$ (anyOf 1).secret_scanning_delegated_bypass_options | object | Optional | |
$ (anyOf 1).secret_scanning_delegated_bypass_options.reviewers | array | Optional | The bypass reviewers for secret scanning delegated bypass |
$ (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[] | object | Each item | |
$ (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[].mode | string | Optional | The bypass mode for the reviewer Known values: ALWAYS, EXEMPT Default: ALWAYS |
$ (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[].reviewer_id | JSON | Required within parent | |
$ (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[].reviewer_id (anyOf 1) | integer | Alternative | The ID of the team or role selected as a bypass reviewer |
$ (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[].reviewer_id (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
$ (anyOf 1).secret_scanning_delegated_bypass_options.reviewers[].reviewer_type | string | Required within parent | The type of the bypass reviewer Known values: TEAM, ROLE |
$ (anyOf 1).secret_scanning_non_provider_patterns | object | Optional | |
$ (anyOf 1).secret_scanning_non_provider_patterns.status | string | Optional | Known values: enabled, disabled |
$ (anyOf 1).secret_scanning_push_protection | object | Optional | |
$ (anyOf 1).secret_scanning_push_protection.status | string | Optional | Known values: enabled, disabled |
$ (anyOf 2) | null | Alternative |
List users — response body — item
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | A GitHub user. |
avatar_url | string | Required within parent | Format: uri |
email | JSON | Optional | |
email (anyOf 1) | string | Alternative | |
email (anyOf 2) | null | Alternative | |
events_url | string | Required within parent | |
followers_url | string | Required within parent | Format: uri |
following_url | string | Required within parent | |
gists_url | string | Required within parent | |
gravatar_id | JSON | Required within parent | |
gravatar_id (anyOf 1) | string | Alternative | |
gravatar_id (anyOf 2) | null | Alternative | |
html_url | string | Required within parent | Format: uri |
id | JSON | Required within parent | |
id (anyOf 1) | integer | Alternative | Format: int64 |
id (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
login | string | Required within parent | |
name | JSON | Optional | |
name (anyOf 1) | string | Alternative | |
name (anyOf 2) | null | Alternative | |
node_id | string | Required within parent | |
organizations_url | string | Required within parent | Format: uri |
received_events_url | string | Required within parent | Format: uri |
repos_url | string | Required within parent | Format: uri |
site_admin | boolean | Required within parent | |
starred_at | string | Optional | |
starred_url | string | Required within parent | |
subscriptions_url | string | Required within parent | Format: uri |
type | string | Required within parent | |
url | string | Required within parent | Format: uri |
user_view_type | string | Optional |
Policy, approvals and errors
Section titled “Policy, approvals and errors”SDK function policy ID: github.repos_update. Catalog operation: repos/update. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.
Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.
Pinned headers: {"X-GitHub-Api-Version": "2026-03-10", "User-Agent": "Alter", "Accept": "application/vnd.github+json"}