Source code for bridge.core.github_repo

"""
Auto-generated Pydantic models for the GitHub repository schema.
Do not edit this file manually — it is generated by `scripts/gen_models.py`
from the JSON schema at schemas/github_repo.json.
"""

# generated by datamodel-codegen:
#   filename:  github_repo.json
#   timestamp: 2025-11-04T16:20:15+00:00

from __future__ import annotations

from enum import Enum
from typing import Any

from pydantic import AnyUrl, AwareDatetime, BaseModel, Field


[docs] class Owner(BaseModel): name: str | None = None email: str | None = None login: str = Field(..., examples=["octocat"]) id: int = Field(..., examples=[1]) node_id: str = Field(..., examples=["MDQ6VXNlcjE="]) avatar_url: AnyUrl = Field(..., examples=["https://github.com/images/error/octocat_happy.gif"]) gravatar_id: str | None = Field(..., examples=["41d064eb2195891e12d0413f63227ea7"]) url: AnyUrl = Field(..., examples=["https://api.github.com/users/octocat"]) html_url: AnyUrl = Field(..., examples=["https://github.com/octocat"]) followers_url: AnyUrl = Field(..., examples=["https://api.github.com/users/octocat/followers"]) following_url: str = Field(..., examples=["https://api.github.com/users/octocat/following{/other_user}"]) gists_url: str = Field(..., examples=["https://api.github.com/users/octocat/gists{/gist_id}"]) starred_url: str = Field(..., examples=["https://api.github.com/users/octocat/starred{/owner}{/repo}"]) subscriptions_url: AnyUrl = Field(..., examples=["https://api.github.com/users/octocat/subscriptions"]) organizations_url: AnyUrl = Field(..., examples=["https://api.github.com/users/octocat/orgs"]) repos_url: AnyUrl = Field(..., examples=["https://api.github.com/users/octocat/repos"]) events_url: str = Field(..., examples=["https://api.github.com/users/octocat/events{/privacy}"]) received_events_url: AnyUrl = Field(..., examples=["https://api.github.com/users/octocat/received_events"]) type: str = Field(..., examples=["User"]) site_admin: bool starred_at: str | None = Field(None, examples=['"2020-07-09T00:17:55Z"']) user_view_type: str | None = Field(None, examples=["public"])
[docs] class Permissions(BaseModel): admin: bool maintain: bool | None = None push: bool triage: bool | None = None pull: bool
[docs] class License(BaseModel): key: str = Field(..., examples=["mit"]) name: str = Field(..., examples=["MIT License"]) url: AnyUrl | None = Field(..., examples=["https://api.github.com/licenses/mit"]) spdx_id: str | None = Field(..., examples=["MIT"]) node_id: str = Field(..., examples=["MDc6TGljZW5zZW1pdA=="]) html_url: AnyUrl | None = None
[docs] class Permissions1(BaseModel): admin: bool pull: bool triage: bool | None = None push: bool maintain: bool | None = None
[docs] class SquashMergeCommitTitle(Enum): PR_TITLE = "PR_TITLE" COMMIT_OR_PR_TITLE = "COMMIT_OR_PR_TITLE"
[docs] class SquashMergeCommitMessage(Enum): PR_BODY = "PR_BODY" COMMIT_MESSAGES = "COMMIT_MESSAGES" BLANK = "BLANK"
[docs] class MergeCommitTitle(Enum): PR_TITLE = "PR_TITLE" MERGE_MESSAGE = "MERGE_MESSAGE"
[docs] class MergeCommitMessage(Enum): PR_BODY = "PR_BODY" PR_TITLE = "PR_TITLE" BLANK = "BLANK"
[docs] class CodeSearchIndexStatus(BaseModel): lexical_search_ok: bool | None = None lexical_commit_sha: str | None = None
[docs] class TemplateRepository(BaseModel): id: int = Field(..., description="Unique identifier of the repository", examples=[42]) node_id: str = Field(..., examples=["MDEwOlJlcG9zaXRvcnkxMjk2MjY5"]) name: str = Field(..., description="The name of the repository.", examples=["Team Environment"]) full_name: str = Field(..., examples=["octocat/Hello-World"]) license: License | None = None forks: int permissions: Permissions1 | None = None owner: Owner = Field(..., description="A GitHub user.", title="Simple User") private: bool = Field(..., description="Whether the repository is private or public.") html_url: AnyUrl = Field(..., examples=["https://github.com/octocat/Hello-World"]) description: str | None = Field(..., examples=["This your first repo!"]) fork: bool url: AnyUrl = Field(..., examples=["https://api.github.com/repos/octocat/Hello-World"]) archive_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}"]) assignees_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/assignees{/user}"]) blobs_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}"]) branches_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/branches{/branch}"]) collaborators_url: str = Field( ..., examples=["http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}"] ) comments_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/comments{/number}"]) commits_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/commits{/sha}"]) compare_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}"]) contents_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/contents/{+path}"]) contributors_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/contributors"]) deployments_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/deployments"]) downloads_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/downloads"]) events_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/events"]) forks_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/forks"]) git_commits_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}"]) git_refs_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}"]) git_tags_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}"]) git_url: str = Field(..., examples=["git:github.com/octocat/Hello-World.git"]) issue_comment_url: str = Field( ..., examples=["http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}"] ) issue_events_url: str = Field( ..., examples=["http://api.github.com/repos/octocat/Hello-World/issues/events{/number}"] ) issues_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/issues{/number}"]) keys_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/keys{/key_id}"]) labels_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/labels{/name}"]) languages_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/languages"]) merges_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/merges"]) milestones_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/milestones{/number}"]) notifications_url: str = Field( ..., examples=["http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}"] ) pulls_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/pulls{/number}"]) releases_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/releases{/id}"]) ssh_url: str = Field(..., examples=["git@github.com:octocat/Hello-World.git"]) stargazers_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/stargazers"]) statuses_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/statuses/{sha}"]) subscribers_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/subscribers"]) subscription_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/subscription"]) tags_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/tags"]) teams_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/teams"]) trees_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}"]) clone_url: str = Field(..., examples=["https://github.com/octocat/Hello-World.git"]) mirror_url: AnyUrl | None = Field(..., examples=["git:git.example.com/octocat/Hello-World"]) hooks_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/hooks"]) svn_url: AnyUrl = Field(..., examples=["https://svn.github.com/octocat/Hello-World"]) homepage: AnyUrl | None = Field(..., examples=["https://github.com"]) language: str | None = None forks_count: int = Field(..., examples=[9]) stargazers_count: int = Field(..., examples=[80]) watchers_count: int = Field(..., examples=[80]) size: int = Field( ..., description="The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0.", examples=[108], ) default_branch: str = Field(..., description="The default branch of the repository.", examples=["master"]) open_issues_count: int = Field(..., examples=[0]) is_template: bool | None = Field( False, description="Whether this repository acts as a template that can be used to generate new repositories.", examples=[True], ) topics: list[str] | None = None has_issues: bool = Field(..., description="Whether issues are enabled.", examples=[True]) has_projects: bool = Field(..., description="Whether projects are enabled.", examples=[True]) has_wiki: bool = Field(..., description="Whether the wiki is enabled.", examples=[True]) has_pages: bool has_downloads: bool = Field(..., description="Whether downloads are enabled.", examples=[True]) has_discussions: bool | None = Field(False, description="Whether discussions are enabled.", examples=[True]) archived: bool = Field(..., description="Whether the repository is archived.") disabled: bool = Field(..., description="Returns whether or not this repository disabled.") visibility: str | None = Field("public", description="The repository visibility: public, private, or internal.") pushed_at: AwareDatetime | None = Field(..., examples=["2011-01-26T19:06:43Z"]) created_at: AwareDatetime | None = Field(..., examples=["2011-01-26T19:01:12Z"]) updated_at: AwareDatetime | None = Field(..., examples=["2011-01-26T19:14:43Z"]) allow_rebase_merge: bool | None = Field( True, description="Whether to allow rebase merges for pull requests.", examples=[True] ) temp_clone_token: str | None = None allow_squash_merge: bool | None = Field( True, description="Whether to allow squash merges for pull requests.", examples=[True] ) allow_auto_merge: bool | None = Field( False, description="Whether to allow Auto-merge to be used on pull requests.", examples=[False] ) delete_branch_on_merge: bool | None = Field( False, description="Whether to delete head branches when pull requests are merged", examples=[False] ) allow_update_branch: bool | None = Field( False, description="Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging.", examples=[False], ) use_squash_pr_title_as_default: bool | None = Field( False, description="Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use `squash_merge_commit_title` instead.", ) squash_merge_commit_title: SquashMergeCommitTitle | None = Field( None, description="The default value for a squash merge commit title:\n\n- `PR_TITLE` - default to the pull request's title.\n- `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).", ) squash_merge_commit_message: SquashMergeCommitMessage | None = Field( None, description="The default value for a squash merge commit message:\n\n- `PR_BODY` - default to the pull request's body.\n- `COMMIT_MESSAGES` - default to the branch's commit messages.\n- `BLANK` - default to a blank commit message.", ) merge_commit_title: MergeCommitTitle | None = Field( None, description="The default value for a merge commit title.\n\n- `PR_TITLE` - default to the pull request's title.\n- `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).", ) merge_commit_message: MergeCommitMessage | None = Field( None, description="The default value for a merge commit message.\n\n- `PR_TITLE` - default to the pull request's title.\n- `PR_BODY` - default to the pull request's body.\n- `BLANK` - default to a blank commit message.", ) allow_merge_commit: bool | None = Field( True, description="Whether to allow merge commits for pull requests.", examples=[True] ) allow_forking: bool | None = Field(None, description="Whether to allow forking this repo") web_commit_signoff_required: bool | None = Field( False, description="Whether to require contributors to sign off on web-based commits" ) open_issues: int watchers: int master_branch: str | None = None starred_at: str | None = Field(None, examples=['"2020-07-09T00:17:42Z"']) anonymous_access_enabled: bool | None = Field( None, description="Whether anonymous git access is enabled for this repository" ) code_search_index_status: CodeSearchIndexStatus | None = Field( None, description="The status of the code search index for this repository" )
Organization = Owner Parent = TemplateRepository Source = TemplateRepository
[docs] class CodeOfConduct(BaseModel): url: AnyUrl = Field(..., examples=["https://api.github.com/repos/github/docs/community/code_of_conduct"]) key: str = Field(..., examples=["citizen_code_of_conduct"]) name: str = Field(..., examples=["Citizen Code of Conduct"]) html_url: AnyUrl | None = Field(..., examples=["https://github.com/github/docs/blob/main/CODE_OF_CONDUCT.md"])
[docs] class Status(Enum): enabled = "enabled" disabled = "disabled"
[docs] class AdvancedSecurity(BaseModel): status: Status | None = None
CodeSecurity = AdvancedSecurity
[docs] class DependabotSecurityUpdates(BaseModel): status: Status | None = Field( None, description="The enablement status of Dependabot security updates for the repository." )
SecretScanning = AdvancedSecurity SecretScanningPushProtection = AdvancedSecurity SecretScanningNonProviderPatterns = AdvancedSecurity SecretScanningAiDetection = AdvancedSecurity
[docs] class SecurityAndAnalysis(BaseModel): advanced_security: AdvancedSecurity | None = Field( None, description="Enable or disable GitHub Advanced Security for the repository.\n\nFor standalone Code Scanning or Secret Protection products, this parameter cannot be used.\n", ) code_security: CodeSecurity | None = None dependabot_security_updates: DependabotSecurityUpdates | None = Field( None, description="Enable or disable Dependabot security updates for the repository." ) secret_scanning: SecretScanning | None = None secret_scanning_push_protection: SecretScanningPushProtection | None = None secret_scanning_non_provider_patterns: SecretScanningNonProviderPatterns | None = None secret_scanning_ai_detection: SecretScanningAiDetection | None = None
[docs] class FullRepository(BaseModel): id: int = Field(..., examples=[1296269]) node_id: str = Field(..., examples=["MDEwOlJlcG9zaXRvcnkxMjk2MjY5"]) name: str = Field(..., examples=["Hello-World"]) full_name: str = Field(..., examples=["octocat/Hello-World"]) owner: Owner = Field(..., description="A GitHub user.", title="Simple User") private: bool html_url: AnyUrl = Field(..., examples=["https://github.com/octocat/Hello-World"]) description: str | None = Field(..., examples=["This your first repo!"]) fork: bool url: AnyUrl = Field(..., examples=["https://api.github.com/repos/octocat/Hello-World"]) archive_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}"]) assignees_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/assignees{/user}"]) blobs_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}"]) branches_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/branches{/branch}"]) collaborators_url: str = Field( ..., examples=["http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}"] ) comments_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/comments{/number}"]) commits_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/commits{/sha}"]) compare_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}"]) contents_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/contents/{+path}"]) contributors_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/contributors"]) deployments_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/deployments"]) downloads_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/downloads"]) events_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/events"]) forks_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/forks"]) git_commits_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}"]) git_refs_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}"]) git_tags_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}"]) git_url: str = Field(..., examples=["git:github.com/octocat/Hello-World.git"]) issue_comment_url: str = Field( ..., examples=["http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}"] ) issue_events_url: str = Field( ..., examples=["http://api.github.com/repos/octocat/Hello-World/issues/events{/number}"] ) issues_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/issues{/number}"]) keys_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/keys{/key_id}"]) labels_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/labels{/name}"]) languages_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/languages"]) merges_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/merges"]) milestones_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/milestones{/number}"]) notifications_url: str = Field( ..., examples=["http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}"] ) pulls_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/pulls{/number}"]) releases_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/releases{/id}"]) ssh_url: str = Field(..., examples=["git@github.com:octocat/Hello-World.git"]) stargazers_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/stargazers"]) statuses_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/statuses/{sha}"]) subscribers_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/subscribers"]) subscription_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/subscription"]) tags_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/tags"]) teams_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/teams"]) trees_url: str = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}"]) clone_url: str = Field(..., examples=["https://github.com/octocat/Hello-World.git"]) mirror_url: AnyUrl | None = Field(..., examples=["git:git.example.com/octocat/Hello-World"]) hooks_url: AnyUrl = Field(..., examples=["http://api.github.com/repos/octocat/Hello-World/hooks"]) svn_url: AnyUrl = Field(..., examples=["https://svn.github.com/octocat/Hello-World"]) homepage: AnyUrl | None = Field(..., examples=["https://github.com"]) language: str | None = None forks_count: int = Field(..., examples=[9]) stargazers_count: int = Field(..., examples=[80]) watchers_count: int = Field(..., examples=[80]) size: int = Field( ..., description="The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0.", examples=[108], ) default_branch: str = Field(..., examples=["master"]) open_issues_count: int = Field(..., examples=[0]) is_template: bool | None = Field(None, examples=[True]) topics: list[str] | None = Field(None, examples=["octocat", "atom", "electron", "API"]) has_issues: bool = Field(..., examples=[True]) has_projects: bool = Field(..., examples=[True]) has_wiki: bool = Field(..., examples=[True]) has_pages: bool has_downloads: bool | None = Field(None, examples=[True]) has_discussions: bool = Field(..., examples=[True]) archived: bool disabled: bool = Field(..., description="Returns whether or not this repository disabled.") visibility: str | None = Field( None, description="The repository visibility: public, private, or internal.", examples=["public"] ) pushed_at: AwareDatetime = Field(..., examples=["2011-01-26T19:06:43Z"]) created_at: AwareDatetime = Field(..., examples=["2011-01-26T19:01:12Z"]) updated_at: AwareDatetime = Field(..., examples=["2011-01-26T19:14:43Z"]) permissions: Permissions | None = None allow_rebase_merge: bool | None = Field(None, examples=[True]) template_repository: TemplateRepository | None = None temp_clone_token: str | None = None allow_squash_merge: bool | None = Field(None, examples=[True]) allow_auto_merge: bool | None = Field(None, examples=[False]) delete_branch_on_merge: bool | None = Field(None, examples=[False]) allow_merge_commit: bool | None = Field(None, examples=[True]) allow_update_branch: bool | None = Field(None, examples=[True]) use_squash_pr_title_as_default: bool | None = Field(None, examples=[False]) squash_merge_commit_title: SquashMergeCommitTitle | None = Field( None, description="The default value for a squash merge commit title:\n\n- `PR_TITLE` - default to the pull request's title.\n- `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).", examples=["PR_TITLE"], ) squash_merge_commit_message: SquashMergeCommitMessage | None = Field( None, description="The default value for a squash merge commit message:\n\n- `PR_BODY` - default to the pull request's body.\n- `COMMIT_MESSAGES` - default to the branch's commit messages.\n- `BLANK` - default to a blank commit message.", examples=["PR_BODY"], ) merge_commit_title: MergeCommitTitle | None = Field( None, description="The default value for a merge commit title.\n\n - `PR_TITLE` - default to the pull request's title.\n - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).", examples=["PR_TITLE"], ) merge_commit_message: MergeCommitMessage | None = Field( None, description="The default value for a merge commit message.\n\n- `PR_TITLE` - default to the pull request's title.\n- `PR_BODY` - default to the pull request's body.\n- `BLANK` - default to a blank commit message.", examples=["PR_BODY"], ) allow_forking: bool | None = Field(None, examples=[True]) web_commit_signoff_required: bool | None = Field(None, examples=[False]) subscribers_count: int = Field(..., examples=[42]) network_count: int = Field(..., examples=[0]) license: License | None = None organization: Organization | None = None parent: Parent | None = Field(None, description="A repository on GitHub.", title="Repository") source: Source | None = Field(None, description="A repository on GitHub.", title="Repository") forks: int master_branch: str | None = None open_issues: int watchers: int anonymous_access_enabled: bool | None = Field(True, description="Whether anonymous git access is allowed.") code_of_conduct: CodeOfConduct | None = Field( None, description="Code of Conduct Simple", title="Code Of Conduct Simple" ) security_and_analysis: SecurityAndAnalysis | None = None custom_properties: dict[str, Any] | None = Field( None, description="The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", )