Help us shape the future of Go! Take the 2026 Go Developer Survey

gitcode

package module
v0.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2026 License: MIT Imports: 20 Imported by: 0

README

GitCode API Client

Go 语言的 GitCode / AtomGit API 客户端库,提供对 GitCode 平台几乎所有 REST API (/api/v5) 的类型安全访问。

Go Reference Go Version

功能特性

  • 认证 — Bearer Token / PRIVATE-TOKEN Header / access_token Query 三种鉴权 + OAuth 2.0 授权码流程
  • 仓库 — 创建/更新/删除/Fork/归档/转让,组织仓库,文件 CRUD,Tree/Blob,Raw,文件&图片上传,Fork 同步,远程镜像,许可协议,CLA
  • Issue — 仓库 Issue CRUD、评论、标签、里程碑、操作日志、关联 PR、时间线、订阅者、依赖关系、关联分支、看板字段、修改历史;用户/组织/企业级 Issue 查询
  • Pull Request — CRUD、合并、文件/提交/评论/审查、标签、审查人/测试人分配、操作日志、关联 Issue、Diff/Patch、讨论回复、检视意见、修改历史
  • 讨论 — 仓库/组织级讨论、评论、回复
  • 分支 — 列表/创建/删除,保护分支规则,提交比较,提交历史
  • Webhook — CRUD、测试推送,Push/TagPull/Issue/PullRequest/Note 事件解析
  • 用户 — 当前用户/指定用户、SSH 公钥、邮箱、动态、Star/Watch 仓库、Namespace、关注/取关、更新资料、用户 PR 列表
  • 组织 / 企业 — 组织信息/成员/关注者/公开成员/屏蔽用户,企业成员、企业 Issue/PR、Issue 扩展状态、企业标签、组织自定义角色、组织讨论
  • 组织团队 — 团队 CRUD、成员管理、仓库关联
  • 组织 Webhook — 组织级 Webhook CRUD
  • 组织标签 — 组织级标签 CRUD
  • 搜索 — 仓库 / Issue / 用户
  • 协作者 — 仓库协作者 CRUD、权限查询
  • Topics — 仓库主题管理
  • Commit Status — 提交状态、合并状态 (CI/CD 集成)
  • Deploy Keys — 部署密钥 CRUD
  • Git References — Git 引用 CRUD
  • Git Tags — 轻量/注释标签、Release 资产管理
  • Reactions — Issue/评论/PR 表情回应
  • Wiki — Wiki 页面 CRUD
  • 通知 — 增强通知操作(标记已读、线程详情、仓库通知)
  • 仓库邀请 — 接受/拒绝仓库邀请
  • 模板 — Issue 模板、PR 合并模板、Gitignore/License/Label 模板
  • Markdown — Markdown 渲染
  • 仓库统计 — 参与度、代码频率、提交活动、Punch Card
  • 仓库归档 — 下载仓库压缩包
  • 仓库设置 — Push 配置、PR 设置、模块开关、审查规则、下载统计
  • 保护标签 — 保护标签规则 CRUD
  • Release 增强 — 最新 Release、上传 URL、下载附件
  • 企业 — 企业成员/里程碑/标签/自定义角色/Issue 自定义字段/组织关联企业
  • 看板 (Dashboard) — 组织看板 CRUD、看板条目管理
  • Actions/CI — 工作流/运行记录/Jobs/日志/Artifacts/Runners/Runner Groups
  • 类型友好 — FlexInt/FlexString/NullableTime 等 JSON 容错类型,适配 GitCode 返回值类型漂移

环境要求

  • Go ≥ 1.26(go.mod 已锁定)
  • 一个 GitCode 个人访问令牌(PAT)或 OAuth 应用凭据

安装

go get github.com/yi-nology/go-gitcode@latest

当前最新版本为 v0.7.2,完整版本历史见 releases。

快速开始

package main

import (
    "context"
    "fmt"
    "log"

    gitcode "github.com/yi-nology/go-gitcode"
)

func main() {
    client := gitcode.NewClient("your-gitcode-token")
    ctx := context.Background()

    user, err := client.GetCurrentUser(ctx)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("当前用户: %s (%s)\n", user.Name, user.Login)

    repos, err := client.ListRepositories(ctx, gitcode.ListRepositoriesOptions{
        ListOptions: gitcode.ListOptions{Page: 1, PerPage: 10},
    })
    if err != nil {
        log.Fatal(err)
    }
    for _, r := range repos {
        fmt.Printf("- %s\n", r.FullName)
    }
}

更完整的示例参见 examples/main.go。

客户端与认证

获取 Token

访问 GitCode → 个人设置 → 私人令牌 创建 Token。

三种鉴权方式

Client 默认使用 Authorization: Bearer <token>,可通过 SetAuthStyle 切换:

client := gitcode.NewClient("your-token")                       // Bearer (默认)
client.SetAuthStyle(gitcode.AuthStylePrivateToken)              // PRIVATE-TOKEN Header
client.SetAuthStyle(gitcode.AuthStyleAccessToken)               // access_token Query 参数
私有部署 / 自定义 HTTP 客户端
方式一:构造时指定
client := gitcode.NewClientWithBaseURL("https://your-gitcode.com/api/v5", "token")
client.SetHTTPClient(&http.Client{Timeout: 60 * time.Second})   // 自定义超时
方式二:构造后修改
client := gitcode.NewClient("token")
client.SetBaseURL("https://your-gitcode.com/api/v5")            // 切换到私有实例
fmt.Println(client.BaseURL())                                    // 查看当前 URL
方式三:环境变量(推荐用于 CLI / CI)

设置以下环境变量后,使用 NewClientFromEnv() 自动读取:

环境变量 说明 示例
GITCODE_URL 私有实例 API 地址 https://gitcode.example.com/api/v5
GITCODE_TOKEN 认证 Token your-token
export GITCODE_URL="https://gitcode.example.com/api/v5"
export GITCODE_TOKEN="your-token"
client := gitcode.NewClientFromEnv()  // 自动读取环境变量
if client == nil {
    log.Fatal("请设置 GITCODE_TOKEN 环境变量")
}

优先级: 显式参数 > 环境变量 > 默认值 (https://api.gitcode.com/api/v5)。

OAuth 2.0

适用于需要用户授权而非固定 Token 的场景:

oauth := gitcode.NewOAuthClient("client-id", "client-secret", "https://app.example.com/callback")

// 1. 引导用户跳转授权
url := oauth.AuthorizeURL("user_info projects", "random-state")
http.Redirect(w, r, url, http.StatusFound)

// 2. 用回调拿到的 code 换 token
token, err := oauth.ExchangeToken(ctx, code)

// 3. 用 token 创建 API 客户端
client := oauth.NewClient(token)  // 推荐:保留 OAuth 客户端的 base URL

// 4. 后续可用 refresh token 续期
token, err = oauth.RefreshToken(ctx, token.RefreshToken)
OAuth 私有部署
// 指定私有实例地址
oauth := gitcode.NewOAuthClientWithBaseURL(
    "client-id", "client-secret",
    "https://app.example.com/callback",
    "https://gitcode.example.com",  // 私有实例地址
)

// 后续流程与上面相同,oauth.NewClient(token) 会自动使用私有实例的 API 地址
client := oauth.NewClient(token)

API 示例

下文示例中 ctx := context.Background(),owner/repo 为仓库所有者和路径名。

仓库与文件
// 创建仓库(私有)
private := false
repo, _ := client.CreateRepository(ctx, gitcode.CreateRepositoryOptions{
    Name:        "my-repo",
    Description: "描述",
    Private:     &private,
    AutoInit:    &private, // true,初始化 README
})

// 更新 / 删除 / Fork
client.UpdateRepository(ctx, "owner", "my-repo", gitcode.UpdateRepositoryOptions{Description: "新描述"})
client.DeleteRepository(ctx, "owner", "my-repo")
client.ForkRepository(ctx, "owner", "repo", nil)

// 组织下创建仓库
client.CreateOrgRepository(ctx, "my-org", gitcode.CreateOrgRepoOptions{Name: "team-repo"})

// 文件 CRUD(content 需 base64 编码)
content, _ := client.GetRepositoryContent(ctx, "owner", "repo", "README.md", "main")
res, _ := client.CreateFile(ctx, "owner", "repo", "a.txt", gitcode.CreateFileOptions{
    Message: "add a",
    Content: base64.StdEncoding.EncodeToString([]byte("hi")),
    Branch:  "main",
})
client.UpdateFile(ctx, "owner", "repo", "a.txt", gitcode.UpdateFileOptions{
    Message: "upd", Content: "...", SHA: res.Content.SHA, Branch: "main",
})

// 原始内容 / Tree / Blob / 贡献者 / 语言
raw, _      := client.GetRawFile(ctx, "owner", "repo", "README.md", "main")
tree, _     := client.GetTree(ctx, "owner", "repo", "main", true)
blob, _     := client.GetBlob(ctx, "owner", "repo", sha)
contribs, _ := client.ListContributors(ctx, "owner", "repo")
langs, _    := client.GetLanguages(ctx, "owner", "repo")

// 标签 / Release
tags, _     := client.ListTags(ctx, "owner", "repo")
release, _  := client.CreateRelease(ctx, "owner", "repo", gitcode.CreateReleaseOptions{
    TagName: "v1.0.0", Title: "v1.0.0", Body: "release notes",
})
client.DeleteRelease(ctx, "owner", "repo", release.TagName)
仓库归档与统计
// 下载仓库压缩包
tarGz, _ := client.GetRepositoryArchive(ctx, "owner", "repo", "main.tar.gz")
zip, _   := client.GetRepositoryArchive(ctx, "owner", "repo", "main.zip")

// 仓库统计
participation, _ := client.GetRepoParticipation(ctx, "owner", "repo")
codeFreq, _      := client.GetRepoCodeFrequency(ctx, "owner", "repo")
commitActivity, _ := client.GetRepoCommitActivity(ctx, "owner", "repo")
punchCard, _      := client.GetRepoPunchCard(ctx, "owner", "repo")
仓库主题 (Topics)
// 列出主题
topics, _ := client.ListRepositoryTopics(ctx, "owner", "repo")

// 更新主题
client.UpdateRepositoryTopics(ctx, "owner", "repo", []string{"golang", "api", "sdk"})

// 添加/删除单个主题
client.AddRepositoryTopic(ctx, "owner", "repo", "new-topic")
client.DeleteRepositoryTopic(ctx, "owner", "repo", "old-topic")
Fork 同步 / 远程镜像 / 许可协议 / CLA
// Fork 同步
syncStatus, _ := client.GetForkSyncStatus(ctx, "owner", "fork-repo")
fmt.Printf("behind=%d ahead=%d\n", syncStatus.BehindBy, syncStatus.AheadBy)
client.SyncForkRepository(ctx, "owner", "fork-repo") // 同步源仓库

// 远程镜像
mirror, _ := client.GetRepoRemoteMirror(ctx, "owner", "repo")
mirrors, _ := client.ListPushRemoteMirrors(ctx, "owner", "repo", gitcode.ListOptions{})

// 许可协议
license, _ := client.GetRepoLicense(ctx, "owner", "repo")

// CLA
clas, _ := client.ListRepoCLAs(ctx, "owner", "repo")
client.ConfigureRepoCLA(ctx, "owner", "repo", &gitcode.RepoCLA{Name: "CLA", Content: "...", Enabled: true})
讨论 (Discussions)
// 仓库讨论
discussions, _ := client.ListDiscussions(ctx, "owner", "repo", gitcode.ListOptions{})
discussion, _  := client.GetDiscussion(ctx, "owner", "repo", 1)
comments, _    := client.ListDiscussionComments(ctx, "owner", "repo", 1, gitcode.ListOptions{})
replies, _     := client.ListDiscussionCommentReplies(ctx, "owner", "repo", 1, commentID, gitcode.ListOptions{})

// 组织讨论
orgDiscussions, _ := client.ListOrgDiscussions(ctx, "my-org", gitcode.ListOptions{})
orgDiscussion, _  := client.GetOrgDiscussion(ctx, "my-org", 1)
协作者
// 列出协作者
collabs, _ := client.ListCollaborators(ctx, "owner", "repo", gitcode.ListOptions{})

// 添加协作者
client.AddCollaborator(ctx, "owner", "repo", "username", &gitcode.AddCollaboratorOptions{
    Permission: "push", // pull, push, admin
})

// 检查是否为协作者
isCollab, _ := client.IsCollaborator(ctx, "owner", "repo", "username")

// 获取协作者权限
perm, _ := client.GetCollaboratorPermission(ctx, "owner", "repo", "username")

// 移除协作者
client.RemoveCollaborator(ctx, "owner", "repo", "username")
Deploy Keys
// 列出部署密钥
keys, _ := client.ListDeployKeys(ctx, "owner", "repo", gitcode.ListOptions{})

// 创建部署密钥
readOnly := true
key, _ := client.CreateDeployKey(ctx, "owner", "repo", gitcode.CreateDeployKeyOptions{
    Title:    "deploy",
    Key:      "ssh-ed25519 AAAA...",
    ReadOnly: &readOnly,
})

// 获取/删除
client.GetDeployKey(ctx, "owner", "repo", key.ID)
client.DeleteDeployKey(ctx, "owner", "repo", key.ID)
Issue / 标签 / 里程碑
// Issue CRUD
issue, _ := client.CreateIssue(ctx, "owner", "repo", gitcode.CreateIssueOptions{
    Title:  "Bug 报告",
    Body:   "问题描述",
    Labels: []string{"bug"},
})
client.UpdateIssue(ctx, "owner", "repo", int(issue.Number), gitcode.UpdateIssueOptions{State: gitcode.IssueStateClosed})
client.ReopenIssue(ctx, "owner", "repo", int(issue.Number))

// 评论
client.CreateIssueComment(ctx, "owner", "repo", int(issue.Number), "+1")
client.ListIssueComments(ctx, "owner", "repo", int(issue.Number))

// 仓库标签
client.CreateIssueLabel(ctx, "owner", "repo", "bug", "#ee0701")
client.UpdateIssueLabel(ctx, "owner", "repo", "bug", gitcode.UpdateLabelOptions{Color: "#d73a4a"})
client.AddIssueLabels(ctx, "owner", "repo", int(issue.Number), []string{"bug"})
client.ReplaceIssueLabels(ctx, "owner", "repo", int(issue.Number), []string{"bug", "p0"})

// 里程碑
ms, _ := client.CreateMilestone(ctx, "owner", "repo", "v2.0", "下个版本")
client.ListMilestones(ctx, "owner", "repo")
client.UpdateMilestone(ctx, "owner", "repo", int(ms.ID), gitcode.UpdateMilestoneOptions{State: "closed"})

// 操作日志 / 关联 PR
logs, _ := client.GetIssueOperateLogs(ctx, "owner", "repo", int(issue.Number))
prs, _  := client.GetIssueLinkedPRs(ctx, "owner", "repo", int(issue.Number))

// 时间线事件
timeline, _ := client.ListIssueTimelineEvents(ctx, "owner", "repo", int(issue.Number), gitcode.ListOptions{})

// 订阅者
subscribers, _ := client.ListIssueSubscribers(ctx, "owner", "repo", int(issue.Number), gitcode.ListOptions{})
client.SubscribeToIssue(ctx, "owner", "repo", int(issue.Number), "username")
client.UnsubscribeFromIssue(ctx, "owner", "repo", int(issue.Number), "username")

// Issue 依赖关系
deps, _ := client.ListIssueDependencies(ctx, "owner", "repo", int(issue.Number), gitcode.ListOptions{})
client.CreateIssueDependency(ctx, "owner", "repo", int(issue.Number), 42) // 依赖 issue #42
client.DeleteIssueDependency(ctx, "owner", "repo", int(issue.Number), 42)

// 指派人
assignees, _ := client.ListRepoAssignees(ctx, "owner", "repo", gitcode.ListOptions{})
client.AddIssueAssignees(ctx, "owner", "repo", int(issue.Number), []string{"user1", "user2"})
client.RemoveIssueAssignees(ctx, "owner", "repo", int(issue.Number), []string{"user1"})

// 关联分支
branches, _ := client.ListIssueRelatedBranches(ctx, "owner", "repo", int(issue.Number))
client.SetIssueRelatedBranches(ctx, "owner", "repo", int(issue.Number), []string{"feature-branch"})

// 看板字段
client.UpdateIssueKanbanValues(ctx, "owner", "repo", int(issue.Number), []gitcode.KanbanValue{
    {FieldID: 1, FieldName: "priority", ValueID: 2, ValueName: "high"},
})

// 修改历史
history, _ := client.ListIssueModifyHistory(ctx, "owner", "repo", int(issue.Number), gitcode.ListOptions{})
commentHistory, _ := client.ListIssueCommentModifyHistory(ctx, "owner", "repo", commentID, gitcode.ListOptions{})

// 企业 Issue 状态
statuses, _ := client.ListEnterpriseIssueStatuses(ctx, "my-enterprise")
Issue 表情回应 (Reactions)
// 添加表情
client.CreateIssueReaction(ctx, "owner", "repo", int(issue.Number), gitcode.ReactionHeart)
client.CreateIssueReaction(ctx, "owner", "repo", int(issue.Number), gitcode.ReactionPlusOne)

// 列出表情
reactions, _ := client.ListIssueReactions(ctx, "owner", "repo", int(issue.Number), gitcode.ListOptions{})

// 删除表情
client.DeleteIssueReaction(ctx, "owner", "repo", int(issue.Number), reactions[0].ID)

// 评论表情
client.CreateIssueCommentReaction(ctx, "owner", "repo", commentID, gitcode.ReactionRocket)
client.ListIssueCommentReactions(ctx, "owner", "repo", commentID, gitcode.ListOptions{})
Pull Request
pr, _ := client.CreatePullRequest(ctx, "owner", "repo", gitcode.CreatePullRequestOptions{
    Title: "feat: xxx", Head: "feature", Base: "main",
})

// 合并 (Squash)
client.MergePullRequest(ctx, "owner", "repo", pr.Number, &gitcode.MergePullRequestOptions{
    CommitMessage: "merge feat",
    Squash:        true,
})

// 文件 / 提交 / 评论 / 审查
client.ListPullRequestFiles(ctx, "owner", "repo", pr.Number)
client.ListPullRequestCommits(ctx, "owner", "repo", pr.Number)
client.CreatePullRequestReview(ctx, "owner", "repo", pr.Number, "LGTM", "APPROVE")

// 标签 / 审查人 / 测试人
client.AddPullRequestLabels(ctx, "owner", "repo", pr.Number, []string{"review"})
client.AssignPullRequestReviewers(ctx, "owner", "repo", pr.Number, "user1,user2")
client.AssignPullRequestTesters(ctx, "owner", "repo", pr.Number, "qa1")
client.HandlePullRequestReview(ctx, "owner", "repo", pr.Number, false) // force=false

// 关联 Issue / 操作日志
issues, _ := client.GetPullRequestLinkedIssues(ctx, "owner", "repo", pr.Number, gitcode.ListOptions{})
logs, _   := client.GetPullRequestOperateLogs(ctx, "owner", "repo", pr.Number)

// Diff / Patch
diff, _  := client.GetPullRequestDiff(ctx, "owner", "repo", pr.Number)
patch, _ := client.GetPullRequestPatch(ctx, "owner", "repo", pr.Number)

// 审查人管理
reviewers, _ := client.ListPullRequestReviewers(ctx, "owner", "repo", pr.Number)
client.RequestPullRequestReviewers(ctx, "owner", "repo", pr.Number, gitcode.PullRequestReviewRequest{
    Reviewers: []string{"reviewer1", "reviewer2"},
})

// 审查操作
review, _ := client.GetPullRequestReview(ctx, "owner", "repo", pr.Number, reviewID)
client.SubmitPullRequestReview(ctx, "owner", "repo", pr.Number, reviewID, "LGTM", "APPROVE")
client.DismissPullRequestReview(ctx, "owner", "repo", pr.Number, reviewID, "Dismissed")

// PR 表情回应
client.CreatePullRequestCommentReaction(ctx, "owner", "repo", commentID, gitcode.ReactionHooray)

// PR 关联/取消关联 Issue
client.LinkPullRequestIssue(ctx, "owner", "repo", pr.Number, 42)
client.UnlinkPullRequestIssue(ctx, "owner", "repo", pr.Number, 42)

// 取消测试人/审查人
client.UnassignPullRequestTesters(ctx, "owner", "repo", pr.Number, "qa1")
client.UnassignPullRequestReviewers(ctx, "owner", "repo", pr.Number, "user1")

// 可选测试人/审查人列表
availableTesters, _ := client.ListPullRequestAvailableTesters(ctx, "owner", "repo", pr.Number, gitcode.ListOptions{})
availableReviewers, _ := client.ListPullRequestAvailableReviewers(ctx, "owner", "repo", pr.Number, gitcode.ListOptions{})

// 评审人 (approval-reviewers)
client.AssignPullRequestApprovalReviewers(ctx, "owner", "repo", pr.Number, "reviewer1,reviewer2")
client.UnassignPullRequestApprovalReviewers(ctx, "owner", "repo", pr.Number, "reviewer1")

// 讨论回复 / 检视意见
client.ReplyPullRequestComment(ctx, "owner", "repo", pr.Number, "discussion-id", "Reply body")
client.ResolvePullRequestDiscussion(ctx, "owner", "repo", pr.Number, "discussion-id", true)

// 修改历史
prHistory, _ := client.ListPullRequestModifyHistory(ctx, "owner", "repo", pr.Number, gitcode.ListOptions{})
prCommentHistory, _ := client.ListPullRequestCommentModifyHistory(ctx, "owner", "repo", commentID, gitcode.ListOptions{})

// 刷新评论位置
client.RefreshPullRequestCommentPosition(ctx, "owner", "repo", pr.Number)

// 文件变更 JSON
fileChanges, _ := client.ListPullRequestFilesJSON(ctx, "owner", "repo", pr.Number, gitcode.ListOptions{})
Commit Status (CI/CD 集成)
// 创建提交状态
client.CreateCommitStatus(ctx, "owner", "repo", sha, gitcode.CreateCommitStatusOptions{
    State:       "success", // pending, success, error, failure
    TargetURL:   "https://ci.example.com/build/123",
    Description: "Build passed",
    Context:     "ci/build",
})

// 列出提交状态
statuses, _ := client.ListCommitStatuses(ctx, "owner", "repo", sha, gitcode.ListOptions{})

// 获取合并状态(CI 整体状态)
combined, _ := client.GetCombinedStatus(ctx, "owner", "repo", sha)
fmt.Printf("总状态: %d 个检查\n", combined.TotalCount)
Commit 评论
// 创建提交评论
comment, _ := client.CreateCommitComment(ctx, "owner", "repo", sha, gitcode.CreateCommitCommentOptions{
    Body:     "Nice work!",
    Path:     "main.go",
    Position: 10,
})

// 列出/获取/更新/删除
client.ListCommitComments(ctx, "owner", "repo", sha, gitcode.ListOptions{})
client.GetCommitComment(ctx, "owner", "repo", comment.ID)
client.UpdateCommitComment(ctx, "owner", "repo", comment.ID, gitcode.UpdateCommitCommentOptions{Body: "Updated"})
client.DeleteCommitComment(ctx, "owner", "repo", comment.ID)

// 列出仓库所有提交评论
client.ListRepoCommitComments(ctx, "owner", "repo", gitcode.ListOptions{})
分支与提交
client.CreateBranch(ctx, "owner", "repo", gitcode.CreateBranchOptions{
    BranchName: "dev", Refs: "main",
})
client.DeleteBranch(ctx, "owner", "repo", "dev")

// 保护分支规则
client.CreateBranchProtection(ctx, "owner", "repo", gitcode.CreateBranchProtectionOptions{
    Name:                     "main",
    RequiredApprovingReviews: 2,
    AllowForcePushes:         false,
})
client.ListBranchProtections(ctx, "owner", "repo")
client.DeleteBranchProtection(ctx, "owner", "repo", "main")

// 提交
commits, _ := client.ListCommits(ctx, "owner", "repo", gitcode.ListCommitsOptions{Branch: "main"})
commit, _  := client.GetCommit(ctx, "owner", "repo", commits[0].SHA)
cmp, _     := client.CompareCommits(ctx, "owner", "repo", "main", "dev")
fmt.Printf("ahead=%d behind=%d\n", cmp.AheadBy, cmp.BehindBy)
Git References
// 列出引用
refs, _ := client.ListGitReferences(ctx, "owner", "repo", gitcode.ListOptions{})

// 列出分支引用
heads, _ := client.ListGitRefSubPaths(ctx, "owner", "repo", "heads/")

// 获取引用
ref, _ := client.GetGitReference(ctx, "owner", "repo", "heads/main")

// 创建引用
client.CreateGitReference(ctx, "owner", "repo", gitcode.CreateReferenceOptions{
    Ref: "refs/heads/new-branch",
    SHA: "abc123...",
})

// 更新引用
client.UpdateGitReference(ctx, "owner", "repo", "heads/main", gitcode.UpdateReferenceOptions{
    SHA:   "def456...",
    Force: false,
})

// 删除引用
client.DeleteGitReference(ctx, "owner", "repo", "heads/old-branch")
Git Tags (注释标签)
// 创建注释标签
annotatedTag, _ := client.CreateAnnotatedTag(ctx, "owner", "repo", gitcode.CreateAnnotatedTagOptions{
    Tag:     "v2.0.0",
    Message: "Release v2.0.0",
    Object:  "abc123...",
    Type:    "commit",
})

// 获取注释标签
client.GetAnnotatedTag(ctx, "owner", "repo", annotatedTag.SHA)

// Release 资产
assets, _ := client.ListReleaseAssets(ctx, "owner", "repo", releaseID, gitcode.ListOptions{})
client.GetReleaseAsset(ctx, "owner", "repo", assetID)
client.DeleteReleaseAsset(ctx, "owner", "repo", assetID)

// 通过标签获取 Release
release, _ := client.GetReleaseByTag(ctx, "owner", "repo", "v1.0.0")

// 更新 Release
client.UpdateRelease(ctx, "owner", "repo", releaseID, gitcode.UpdateReleaseOptions{
    Body: "Updated release notes",
})
Webhook
active := true
hook, _ := client.CreateWebhook(ctx, "owner", "repo", gitcode.CreateWebhookOptions{
    URL:    "https://example.com/hook",
    Secret: "s3cret",
    Events: []string{"push", "pull_request"},
    Active: &active,
})
client.TestWebhook(ctx, "owner", "repo", hook.ID)
client.DeleteWebhook(ctx, "owner", "repo", hook.ID)

接收并解析事件(以 Gin 为例):

payload, _ := io.ReadAll(r.Body)
switch r.Header.Get("X-Gitcode-Event") {
case "push":
    e, _ := client.ParsePushEvent(payload)
    log.Printf("push %s -> %s", e.Before[:8], e.After[:8])
case "pull_request":
    e, _ := client.ParsePullRequestEvent(payload)
    log.Printf("PR #%d %s", e.Number, e.Action)
case "issues":
    e, _ := client.ParseIssueEvent(payload)
    log.Printf("issue #%d %s", int(e.Issue.Number), e.Action)
case "note":
    e, _ := client.ParseNoteEvent(payload)
    log.Printf("note on %s", e.NoteType)
case "tag_push":
    e, _ := client.ParseTagPushEvent(payload)
    log.Printf("tag %s", e.Ref)
}

还提供了 PushEvent/PullRequestWebhookEvent/IssueWebhookEvent/NoteWebhookEvent/TagPushEvent 五种事件类型,见 webhooks.go。

用户 / SSH 公钥 / 邮箱
me, _     := client.GetCurrentUser(ctx)
user, _   := client.GetUser(ctx, "somebody")
emails, _ := client.ListEmails(ctx)

key, _ := client.CreateSSHKey(ctx, gitcode.CreateSSHKeyOptions{
    Title: "mbp", Key: "ssh-ed25519 AAAA...",
})
client.ListSSHKeys(ctx, gitcode.ListOptions{PerPage: 50})
client.DeleteSSHKey(ctx, key.ID)

events, _ := client.GetUserEvents(ctx, me.Login, "2025", "") // 年度动态
starred, _ := client.ListStarredRepositories(ctx, gitcode.ListStarredReposOptions{})
ns, _      := client.GetNamespace(ctx, "somepath")

// Watch 了的仓库
watched, _ := client.ListUserWatchedRepositories(ctx, "username", gitcode.ListOptions{})
myWatched, _ := client.ListCurrentUserWatchedRepositories(ctx, gitcode.ListOptions{})

// 更新个人资料
client.UpdateCurrentUser(ctx, gitcode.UpdateCurrentUserOptions{
    Name: "New Name", Bio: "Go developer",
})

// 用户 PR 列表
myPRs, _ := client.ListUserPullRequests(ctx, gitcode.ListPullRequestsOptions{
    State: gitcode.PullRequestStateOpen,
})
用户关注
// 列出关注者/被关注者
followers, _ := client.ListUserFollowers(ctx, "username", gitcode.ListOptions{})
following, _ := client.ListUserFollowing(ctx, "username", gitcode.ListOptions{})

// 当前用户的关注关系
myFollowers, _ := client.ListCurrentUserFollowers(ctx, gitcode.ListOptions{})
myFollowing, _ := client.ListCurrentUserFollowing(ctx, gitcode.ListOptions{})

// 关注/取关
client.FollowUser(ctx, "target-user")
client.UnfollowUser(ctx, "target-user")

// 检查是否关注
isFollowing, _ := client.IsFollowing(ctx, "target-user")
组织 / 企业
// 组织
client.ListUserOrganizations(ctx, "username", gitcode.ListOptions{})
org, _      := client.GetOrgInfo(ctx, "my-org")
client.UpdateOrganization(ctx, "my-org", gitcode.UpdateOrgOptions{Description: "..."})
client.InviteOrgMember(ctx, "my-org", "newbie", gitcode.InviteMemberOptions{Permission: "write"})
client.RemoveOrgMember(ctx, "my-org", "newbie")
client.ListOrgMembers(ctx, "my-org", "admin", gitcode.ListOptions{})

// 企业
client.ListEnterpriseMembers(ctx, "my-ent", "", gitcode.ListOptions{})
client.UpdateEnterpriseMember(ctx, "my-ent", "user", gitcode.UpdateEnterpriseMemberOptions{Role: "admin"})

// 企业 Issue / PR
client.ListEnterpriseIssues(ctx, "my-ent", gitcode.ListUserIssuesOptions{State: "open"})
client.ListEnterprisePullRequests(ctx, "my-ent", gitcode.ListEnterprisePRsOptions{State: "open"})
client.ListEnterpriseLabels(ctx, "my-ent")
client.GetOrgIssueExtendSettings(ctx, "my-org") // 自定义状态扩展
组织公开成员 / 屏蔽
// 公开成员
publicMembers, _ := client.ListOrgPublicMembers(ctx, "my-org", gitcode.ListOptions{})
client.PublicizeOrgMembership(ctx, "my-org", "username")
client.ConcealOrgMembership(ctx, "my-org", "username")
isPublic, _ := client.IsOrgPublicMember(ctx, "my-org", "username")

// 屏蔽用户
blocked, _ := client.ListOrgBlockedUsers(ctx, "my-org", gitcode.ListOptions{})
client.BlockOrgUser(ctx, "my-org", "spammer")
client.UnblockOrgUser(ctx, "my-org", "spammer")
isBlocked, _ := client.IsOrgBlockedUser(ctx, "my-org", "spammer")

// 组织自定义角色
roles, _ := client.ListOrgCustomizedRoles(ctx, "my-org")
组织团队
// 创建团队
team, _ := client.CreateTeam(ctx, "my-org", gitcode.CreateTeamOptions{
    Name:       "backend",
    Permission: "write",
    Privacy:    "closed",
})

// 列出/获取/更新/删除团队
teams, _ := client.ListOrgTeams(ctx, "my-org", gitcode.ListOptions{})
client.GetTeam(ctx, team.ID)
client.UpdateTeam(ctx, team.ID, gitcode.UpdateTeamOptions{Name: "backend-team"})
client.DeleteTeam(ctx, team.ID)

// 团队成员管理
client.ListTeamMembers(ctx, team.ID, gitcode.ListOptions{})
client.AddTeamMember(ctx, team.ID, "new-member")
client.RemoveTeamMember(ctx, team.ID, "old-member")

// 团队仓库管理
client.ListTeamRepositories(ctx, team.ID, gitcode.ListOptions{})
client.AddTeamRepository(ctx, team.ID, "my-org", "my-repo")
client.RemoveTeamRepository(ctx, team.ID, "my-org", "my-repo")
组织 Webhook
// 创建组织 Webhook
active := true
hook, _ := client.CreateOrgWebhook(ctx, "my-org", gitcode.CreateOrgWebhookOptions{
    URL:    "https://example.com/org-hook",
    Events: []string{"push", "repository"},
    Active: &active,
})

// 列出/获取/更新/删除
hooks, _ := client.ListOrgWebhooks(ctx, "my-org", gitcode.ListOptions{})
client.GetOrgWebhook(ctx, "my-org", hook.ID)
client.UpdateOrgWebhook(ctx, "my-org", hook.ID, gitcode.UpdateOrgWebhookOptions{URL: "https://new-url.com"})
client.DeleteOrgWebhook(ctx, "my-org", hook.ID)
组织标签
// 创建组织标签
label, _ := client.CreateOrgLabel(ctx, "my-org", gitcode.CreateOrgLabelOptions{
    Name:  "priority:high",
    Color: "#ff0000",
})

// 列出/获取/更新/删除
labels, _ := client.ListOrgLabels(ctx, "my-org", gitcode.ListOptions{})
client.GetOrgLabel(ctx, "my-org", label.ID)
client.UpdateOrgLabel(ctx, "my-org", label.ID, gitcode.UpdateOrgLabelOptions{Color: "#cc0000"})
client.DeleteOrgLabel(ctx, "my-org", label.ID)
搜索
repos, _ := client.SearchRepositories(ctx, gitcode.SearchRepositoriesOptions{
    Query: "gin web", Sort: "stars_count",
})
issues, _ := client.SearchIssues(ctx, gitcode.SearchIssuesOptions{
    Query: "memory leak", Repo: "owner/repo", State: "open",
})
users, _ := client.SearchUsers(ctx, gitcode.SearchUsersOptions{Query: "octocat"})
Star / Watch / 通知
client.StarRepository(ctx, "owner", "repo")
starred, _ := client.IsRepositoryStarred(ctx, "owner", "repo") // bool
client.UnstarRepository(ctx, "owner", "repo")

stargazers, _ := client.ListStargazers(ctx, "owner", "repo", gitcode.ListOptions{})
watchers, _   := client.ListWatchers(ctx, "owner", "repo", gitcode.ListOptions{})
增强通知
// 列出通知(带筛选)
notifs, _ := client.ListNotificationsWithOptions(ctx, gitcode.ListNotificationsOptions{
    ListOptions: gitcode.ListOptions{PerPage: 50},
    Status:      "unread",
})

// 获取通知线程详情
thread, _ := client.GetNotificationThread(ctx, threadID)

// 标记单个线程已读
client.MarkNotificationThreadAsRead(ctx, threadID)

// 标记所有通知已读
client.MarkNotificationsAsRead(ctx, gitcode.MarkNotificationsOptions{All: true})

// 仓库通知
repoNotifs, _ := client.ListRepoNotifications(ctx, "owner", "repo", gitcode.ListNotificationsOptions{})
client.MarkRepoNotificationsAsRead(ctx, "owner", "repo", gitcode.MarkNotificationsOptions{All: true})
Wiki
// 列出 Wiki 页面
pages, _ := client.ListWikiPages(ctx, "owner", "repo", gitcode.ListOptions{})

// 获取单个页面
page, _ := client.GetWikiPage(ctx, "owner", "repo", "Home")

// 创建页面
content := base64.StdEncoding.EncodeToString([]byte("# Hello Wiki"))
client.CreateWikiPage(ctx, "owner", "repo", gitcode.CreateWikiPageOptions{
    Title:         "New Page",
    ContentBase64: content,
    Message:       "Create new page",
})

// 更新/删除
client.UpdateWikiPage(ctx, "owner", "repo", "New-Page", gitcode.UpdateWikiPageOptions{
    ContentBase64: content,
    Message:       "Update page",
})
client.DeleteWikiPage(ctx, "owner", "repo", "Old-Page")
仓库邀请
// 列出待处理邀请
invitations, _ := client.ListPendingRepoInvitations(ctx, gitcode.ListOptions{})

// 接受/拒绝邀请
client.AcceptRepoInvitation(ctx, invitationID)
client.DeclineRepoInvitation(ctx, invitationID)
模板
// Issue 模板
issueTemplates, _ := client.ListIssueTemplates(ctx, "owner", "repo")
client.GetIssueTemplate(ctx, "owner", "repo", "bug_report")

// PR 合并模板
mergeTemplates, _ := client.ListPullRequestMergeTemplates(ctx, "owner", "repo")

// Gitignore 模板
gitignoreTemplates, _ := client.ListGitignoreTemplates(ctx)
client.GetGitignoreTemplate(ctx, "Go")

// License 模板
licenses, _ := client.ListLicenseTemplates(ctx)
client.GetLicenseTemplate(ctx, "mit")

// Label 模板
labelTemplates, _ := client.ListLabelTemplates(ctx)
client.GetLabelTemplate(ctx, "default")
Markdown 渲染
html, _ := client.RenderMarkdown(ctx, "**bold** and *italic*", "gfm", "owner/repo")
html, _ = client.RenderMarkdownRaw(ctx, "# Raw Markdown")
仓库设置类
client.UpdateRepoSettings(ctx, "owner", "repo", &gitcode.RepoSettings{HasIssues: true})
client.UpdatePushConfig(ctx, "owner", "repo", &gitcode.PushConfig{MaxFileSize: 104857600})
client.UpdatePRSettings(ctx, "owner", "repo", &gitcode.PRSettings{DefaultMergeMethod: "merge"})
client.SetModuleSetting(ctx, "owner", "repo", gitcode.ModuleSetting{Wiki: false})
client.UpdateReviewerConfig(ctx, "owner", "repo", gitcode.ReviewerConfig{MinApprovingReviews: 1})

// 归档 / 转让
client.ArchiveRepository(ctx, "owner", "repo")
client.TransferRepository(ctx, "owner", "repo", gitcode.TransferRepoOptions{NewOwner: "new-owner"})

// 限流
rl, _ := client.GetRateLimit(ctx)

高级功能

结构化错误处理

所有 API 错误都返回结构化类型,可通过类型断言区分:

_, err := client.GetRepository(ctx, "owner", "missing")
if err != nil {
    switch {
    case gitcode.IsNotFound(err):
        fmt.Println("仓库不存在")
    case gitcode.IsUnauthorized(err):
        fmt.Println("认证失败")
    case gitcode.IsRateLimit(err):
        fmt.Println("触发限流")
    case gitcode.IsForbidden(err):
        fmt.Println("权限不足")
    case gitcode.IsConflict(err):
        fmt.Println("资源已存在")
    default:
        fmt.Printf("其他错误: %v\n", err)
    }
}
Rate Limit 自动重试

配置自动重试策略,遇到 429/5xx 自动等待重试:

client.SetRetryPolicy(gitcode.RetryPolicy{
    MaxRetries:           3,
    InitialBackoff:       1 * time.Second,
    MaxBackoff:           30 * time.Second,
    Multiplier:           2.0,
    RetryableStatusCodes: []int{429, 500, 502, 503, 504},
})
自动分页

自动遍历所有分页,无需手动处理 Page 参数:

// 收集所有结果到一个 slice
allIssues, _ := gitcode.CollectAll(ctx, func(opts gitcode.ListOptions) ([]*gitcode.Issue, error) {
    return client.ListIssues(ctx, "owner", "repo", gitcode.ListIssuesOptions{
        ListOptions: opts,
        State:       gitcode.IssueStateOpen,
    })
})

// 使用迭代器逐页处理
for items, err := range gitcode.Paginate(ctx, func(opts gitcode.ListOptions) ([]*gitcode.Repository, error) {
    return client.ListRepositories(ctx, gitcode.ListRepositoriesOptions{ListOptions: opts})
}) {
    if err != nil { log.Fatal(err) }
    for _, repo := range items {
        fmt.Println(repo.FullName)
    }
}
Webhook 签名验证

验证 Webhook 请求的 HMAC-SHA256 签名:

func handleWebhook(w http.ResponseWriter, r *http.Request) {
    payload, _ := io.ReadAll(r.Body)
    signature := r.Header.Get("X-Gitcode-Signature")

    if !gitcode.VerifyWebhookSignature(payload, "your-webhook-secret", signature) {
        http.Error(w, "Invalid signature", http.StatusUnauthorized)
        return
    }

    // 签名有效,处理事件
    event, _ := client.ParsePushEvent(payload)
    fmt.Printf("Push to %s\n", event.Ref)
}

// 计算签名 (用于测试)
sig := gitcode.ComputeWebhookSignature(payload, secret)
请求/响应中间件 (Hooks)

添加请求前后的拦截器,用于日志、监控、调试:

// 请求前 Hook
client.AddRequestHook(func(req *http.Request) error {
    log.Printf("[REQ] %s %s", req.Method, req.URL.Path)
    req.Header.Set("X-Request-ID", uuid.New().String())
    return nil
})

// 响应后 Hook
client.AddResponseHook(func(resp *http.Response) error {
    log.Printf("[RESP] %d %s", resp.StatusCode, resp.Request.URL.Path)
    return nil
})

// 清除所有 Hook
client.ClearHooks()
Multipart 文件上传

使用 io.Reader 上传文件内容:

// 上传字节
result, _ := client.UploadFileBytes(ctx, "owner", "repo", "hello.txt", []byte("Hello"))

// 上传 io.Reader
file, _ := os.Open("local-file.go")
defer file.Close()
result, _ = client.UploadFileReader(ctx, "owner", "repo", "remote-name.go", file)

// 上传图片
img, _ := os.Open("screenshot.png")
defer img.Close()
result, _ = client.UploadImageReader(ctx, "owner", "repo", "screenshot.png", img)
输入校验

客户端自动校验必填字段,提前返回友好错误:

// owner 或 repo 为空时返回 ValidationErrorField
_, err := client.GetRepository(ctx, "", "repo")
// err: "validation error: owner - owner is required"

if gitcode.IsValidationError(err) {
    fmt.Println(err)
}
并发安全

SetAuthStyle、SetHTTPClient、AddRequestHook、AddResponseHook 等方法均使用 sync.RWMutex 保护,可安全在多个 goroutine 中调用。


通用类型

types.go 中定义了若干容错类型,用于处理 GitCode API 返回值类型不稳定的情况:

类型 用途
FlexInt 同一字段可能是 123 或 "123"
FlexString 同一字段可能是 "abc" 或 123
NullableTime 时间字段可能为空字符串
Timestamp 字符串格式时间(RFC3339)
Error API 错误响应结构(见下)

错误处理

Client 在 HTTP 状态码 ≥ 400 时返回标准 error(fmt.Errorf),错误信息包含方法、路径、状态码和响应体:

_, err := client.GetRepository(ctx, "owner", "missing")
if err != nil {
    log.Println(err)
    // 输出形如: GitCode API GET /repos/owner/missing returned 404: {"message":"404 Not Found"}
}

如需进一步解析错误体,可使用 types.Error:

var apiErr gitcode.Error
if json.Unmarshal([]byte(extractBody(err)), &apiErr) == nil {
    log.Printf("message=%s", apiErr.Message)
}

项目结构

gitcode_api/
├── client.go                   # Client 构造、鉴权、HTTP 请求、User、ListOptions、RateLimit
├── oauth.go                    # OAuthClient 授权码流程
├── repos.go                    # 仓库 / 文件 / Tree / Blob / 标签 / Release / 设置 / 归档 / 转让
├── repos_collaborators.go      # 仓库协作者 CRUD、权限查询
├── repos_topics.go             # 仓库主题管理
├── repos_statuses.go           # 提交状态、合并状态 (CI/CD)
├── repos_deploy_keys.go        # 部署密钥 CRUD
├── repos_reactions.go          # Issue / 评论 / PR 表情回应
├── repos_wiki.go               # Wiki 页面 CRUD
├── repos_invitations.go        # 仓库邀请
├── repos_templates.go          # Issue / PR 模板
├── repos_commits_comments.go   # 提交评论
├── repos_archive.go            # 仓库归档下载、统计
├── repos_assignees.go          # 指派人管理
├── repos_reviewers.go          # PR 审查人、Diff、Patch
├── repos_issues_timeline.go    # Issue 时间线、订阅者、依赖关系
├── repos_discussions.go        # 仓库讨论、评论、回复 / Fork 同步 / 远程镜像 / 许可协议 / CLA
├── issues.go                   # Issue CRUD / 评论 / 标签 / 里程碑
├── issues_enhanced.go          # Issue 关联分支 / 看板字段 / 修改历史 / 企业状态 / 表态
├── enterprise_issues.go        # 用户 / 组织 / 企业级 Issue、操作日志、关联 PR
├── pulls.go                    # Pull Request 全套 + 审查 / 测试 / 标签 / 企业 PR
├── pulls_enhanced.go           # PR 关联 Issue / 测试人管理 / 评审人 / 讨论回复 / 修改历史 / 表态
├── branches.go                 # 分支 / 保护分支 / 提交 / 比较
├── webhooks.go                 # Webhook CRUD + 5 类事件解析
├── search.go                   # 搜索仓库 / Issue / 用户
├── users.go                    # SSH 公钥 / 邮箱 / 动态 / Star / Namespace
├── users_enhanced.go           # Watch 仓库 / 更新资料 / 用户 PR 列表
├── user_followers.go           # 用户关注 / 取关
├── orgs.go                     # 组织 / 企业成员管理 / Issue 扩展配置
├── orgs_enhanced.go            # 组织自定义角色 / 组织讨论
├── org_teams.go                # 组织团队 CRUD / 成员 / 仓库
├── org_hooks.go                # 组织 Webhook CRUD
├── org_labels.go               # 组织标签 CRUD
├── org_members_enhanced.go     # 公开成员 / 屏蔽用户 / 创建删除组织
├── milestones.go               # 里程碑(带选项版本)
├── labels.go                   # 仓库标签更新 / 替换 / 企业标签
├── git_refs.go                 # Git 引用 CRUD
├── git_tags.go                 # 注释标签 / Release 资产
├── notifications_enhanced.go   # 增强通知操作
├── misc.go                     # Gitignore/License/Label 模板 / Markdown / 用户仓库
├── types.go                    # FlexInt/FlexString/NullableTime/Error 等通用类型 + Star/通知 API
├── errors.go                   # 结构化错误类型: NotFound/Unauthorized/RateLimit/Conflict/Validation
├── retry.go                    # Rate Limit 自动重试 + 指数退避
├── pagination.go               # 自动分页迭代器 (泛型)
├── hooks.go                    # 请求/响应中间件
├── validate.go                 # 输入校验
├── webhook_verify.go           # Webhook HMAC-SHA256 签名验证
├── upload.go                   # Multipart 文件上传
├── gitcode_test.go             # 单元测试 + 真实 API 集成测试
├── client_enhanced_test.go     # 新功能单元测试
└── examples/
    └── main.go                 # 完整使用示例

API 覆盖率

本库覆盖了 GitCode 官方文档 (docs.gitcode.com/docs/apis) 中的绝大部分 API:

模块 API 数量 状态
认证 & 用户 20+ ✅ 完整
仓库 CRUD & 文件 40+ ✅ 完整
讨论 (Discussions) 10 ✅ 完整
Fork 同步 / 远程镜像 / CLA 7 ✅ 完整
Issue / 标签 / 里程碑 30+ ✅ 完整
Issue 增强 (分支/看板/历史) 8 ✅ 完整
Pull Request 40+ ✅ 完整
PR 增强 (关联/评审/讨论/历史) 15 ✅ 完整
分支 & 提交 17 ✅ 完整
保护标签 5 ✅ 完整
Release 增强 8 ✅ 完整
Webhook 5 CRUD + 5 解析 ✅ 完整
组织 / 企业 40+ ✅ 完整
企业里程碑 / 标签 / 自定义字段 14 ✅ 完整
看板 (Dashboard) 7 ✅ 完整
Actions/CI (工作流/Runner/Artifact) 23 ✅ 完整
组织团队 12 ✅ 完整
搜索 3 ✅ 完整
协作者 5 ✅ 完整
Topics 4 ✅ 完整
Commit Status 3 ✅ 完整
Deploy Keys 4 ✅ 完整
Git References 6 ✅ 完整
Reactions 12 ✅ 完整
Wiki 5 ✅ 完整
通知 6 ✅ 完整
模板 7 ✅ 完整
总计 428 ✅

测试

测试分为两类:纯函数测试(不需要网络)和 真实 API 集成测试(会在你的账户下创建/删除临时仓库)。

# 默认运行(需在 gitcode_test.go 顶部填入有效 Token)
GITCODE_TOKEN="your-token" go test -v ./...

# 跳过需要联网的集成测试
go test -short ./...

集成测试会真实创建仓库(test-api-<timestamp>),测试结束后自动清理。请使用测试账号的 Token。

与 gitcode-cli 的关系

本项目参考了 gitcode-cli 的设计理念,提供 Go 语言的 API 客户端实现:

gitcode-cli (gc) gitcode_api
gc auth login NewClient(token) / OAuthClient
gc repo list ListRepositories()
gc issue create CreateIssue()
gc pr create CreatePullRequest()

相关项目

许可证

MIT。

Documentation

Index

Constants

View Source
const (
	DefaultBaseURL = "https://api.gitcode.com/api/v5"

	// EnvGitBaseURL is the environment variable for a custom GitCode API base URL.
	// Set this to your private instance URL (e.g. "https://gitcode.example.com/api/v5").
	EnvGitBaseURL = "GITCODE_URL"

	// EnvGitToken is the environment variable for the GitCode API token.
	EnvGitToken = "GITCODE_TOKEN"
)
View Source
const (
	ReactionPlusOne  = "+1"
	ReactionMinusOne = "-1"
	ReactionLaugh    = "laugh"
	ReactionConfused = "confused"
	ReactionHeart    = "heart"
	ReactionHooray   = "hooray"
	ReactionRocket   = "rocket"
	ReactionEyes     = "eyes"
)

ReactionContent constants for reaction types.

View Source
const (
	DefaultOAuthBaseURL = "https://gitcode.com"
)

Variables

This section is empty.

Functions

func CollectAll

func CollectAll[T any](ctx context.Context, fetch func(ListOptions) ([]T, error)) ([]T, error)

CollectAll collects all pages into a single slice.

func ComputeWebhookSignature

func ComputeWebhookSignature(payload []byte, secret string) string

ComputeWebhookSignature computes the HMAC-SHA256 signature for a payload. Returns the signature in the format "sha256=<hex>".

func IsConflict

func IsConflict(err error) bool

IsConflict checks if an error is a ConflictError.

func IsForbidden

func IsForbidden(err error) bool

IsForbidden checks if an error is a ForbiddenError.

func IsNotFound

func IsNotFound(err error) bool

IsNotFound checks if an error is a NotFoundError.

func IsRateLimit

func IsRateLimit(err error) bool

IsRateLimit checks if an error is a RateLimitError.

func IsUnauthorized

func IsUnauthorized(err error) bool

IsUnauthorized checks if an error is an UnauthorizedError.

func IsValidation

func IsValidation(err error) bool

IsValidation checks if an error is a ValidationError.

func IsValidationError

func IsValidationError(err error) bool

IsValidationError checks if an error is a client-side validation error.

func Paginate

func Paginate[T any](ctx context.Context, fetch func(ListOptions) ([]T, error)) iter.Seq2[[]T, error]

Paginate creates an iterator that automatically fetches all pages of results. Usage:

for items, err := range client.Paginate(ctx, func(opts ListOptions) ([]*Issue, error) {
    return client.ListIssues(ctx, owner, repo, ListIssuesOptions{ListOptions: opts})
}) {
    if err != nil { return err }
    for _, issue := range items {
        // process issue
    }
}

func VerifyWebhookSignature

func VerifyWebhookSignature(payload []byte, secret, signature string) bool

VerifyWebhookSignature verifies the signature of a webhook payload. The signature is expected in the format "sha256=<hex>".

Example usage:

func handleWebhook(w http.ResponseWriter, r *http.Request) {
    payload, _ := io.ReadAll(r.Body)
    signature := r.Header.Get("X-Gitcode-Signature")
    if !gitcode.VerifyWebhookSignature(payload, "your-secret", signature) {
        http.Error(w, "Invalid signature", http.StatusUnauthorized)
        return
    }
    // Process webhook...
}

Types

type APIError

type APIError struct {
	StatusCode int    `json:"status_code"`
	Message    string `json:"message"`
	URL        string `json:"url,omitempty"`
	Method     string `json:"method,omitempty"`
	Body       string `json:"body,omitempty"`
}

APIError represents a structured GitCode API error.

func (*APIError) Error

func (e *APIError) Error() string

type ActionArtifact

type ActionArtifact struct {
	ID         int64     `json:"id"`
	Name       string    `json:"name"`
	Size       int64     `json:"size"`
	ArchiveURL string    `json:"archive_download_url,omitempty"`
	Expired    bool      `json:"expired"`
	CreatedAt  time.Time `json:"created_at"`
	UpdatedAt  time.Time `json:"updated_at"`
	RunID      int64     `json:"run_id,omitempty"`
}

ActionArtifact represents a workflow artifact.

type ActionJob

type ActionJob struct {
	ID          int64         `json:"id"`
	RunID       int64         `json:"run_id"`
	Name        string        `json:"name"`
	Status      string        `json:"status"`
	Conclusion  string        `json:"conclusion,omitempty"`
	StartedAt   time.Time     `json:"started_at"`
	CompletedAt *time.Time    `json:"completed_at,omitempty"`
	RunnerID    int64         `json:"runner_id,omitempty"`
	RunnerName  string        `json:"runner_name,omitempty"`
	Steps       []*ActionStep `json:"steps,omitempty"`
}

ActionJob represents a workflow job.

type ActionRun

type ActionRun struct {
	ID           int64     `json:"id"`
	Name         string    `json:"name"`
	WorkflowID   int64     `json:"workflow_id"`
	Status       string    `json:"status"`
	Conclusion   string    `json:"conclusion,omitempty"`
	Branch       string    `json:"head_branch"`
	SHA          string    `json:"head_sha"`
	Event        string    `json:"event"`
	CreatedAt    time.Time `json:"created_at"`
	UpdatedAt    time.Time `json:"updated_at"`
	RunStartedAt time.Time `json:"run_started_at,omitempty"`
	HTMLURL      string    `json:"html_url,omitempty"`
}

ActionRun represents a workflow run.

type ActionRunner

type ActionRunner struct {
	ID         int64    `json:"id"`
	Name       string   `json:"name"`
	Status     string   `json:"status"`
	OS         string   `json:"os,omitempty"`
	Arch       string   `json:"arch,omitempty"`
	Labels     []string `json:"labels,omitempty"`
	RunnerType string   `json:"runner_type,omitempty"`
}

ActionRunner represents a CI/CD runner.

type ActionStep

type ActionStep struct {
	Name        string     `json:"name"`
	Status      string     `json:"status"`
	Conclusion  string     `json:"conclusion,omitempty"`
	Number      int        `json:"number"`
	StartedAt   time.Time  `json:"started_at,omitempty"`
	CompletedAt *time.Time `json:"completed_at,omitempty"`
}

ActionStep represents a step in a workflow job.

type ActionWorkflow

type ActionWorkflow struct {
	ID        int64     `json:"id"`
	Name      string    `json:"name"`
	Path      string    `json:"path"`
	State     string    `json:"state"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

ActionWorkflow represents a CI/CD workflow.

type AddCollaboratorOptions

type AddCollaboratorOptions struct {
	Permission string `json:"permission,omitempty"` // pull, push, admin
}

AddCollaboratorOptions specifies options for adding a collaborator.

type AddToKanbanBoardOptions

type AddToKanbanBoardOptions struct {
	IssueNumber int    `json:"issue_number,omitempty"`
	PRNumber    int    `json:"pr_number,omitempty"`
	Status      string `json:"status,omitempty"`
}

AddToKanbanBoardOptions specifies options for adding an item to a kanban board.

type AnnotatedTag

type AnnotatedTag struct {
	SHA     string        `json:"sha"`
	URL     string        `json:"url"`
	Tag     string        `json:"tag"`
	Message string        `json:"message"`
	Object  *GitObject    `json:"object"`
	Tagger  *CommitAuthor `json:"tagger"`
}

AnnotatedTag represents an annotated git tag.

type ArchiveStatus

type ArchiveStatus struct {
	Archived bool `json:"archived"`
}

type AuthStyle

type AuthStyle int

AuthStyle defines how authentication tokens are sent.

const (
	// AuthStyleBearer sends "Authorization: Bearer <token>" header.
	AuthStyleBearer AuthStyle = iota
	// AuthStylePrivateToken sends "PRIVATE-TOKEN: <token>" header.
	AuthStylePrivateToken
	// AuthStyleAccessToken sends "?access_token=<token>" query parameter.
	AuthStyleAccessToken
)

type Branch

type Branch struct {
	Name          string              `json:"name"`
	Commit        *BranchCommitDetail `json:"commit"`
	DefaultBranch bool                `json:"default_branch,omitempty"`
	Protected     bool                `json:"protected"`
}

type BranchCommitDetail

type BranchCommitDetail struct {
	SHA    string `json:"sha"`
	URL    string `json:"url"`
	Commit *struct {
		Author    *CommitAuthor `json:"author"`
		Committer *CommitAuthor `json:"committer"`
		Message   string        `json:"message"`
	} `json:"commit"`
}

type BranchProtection

type BranchProtection struct {
	Enabled                  bool `json:"enabled"`
	RequiredStatusChecks     bool `json:"required_status_checks"`
	RequiredApprovingReviews int  `json:"required_approving_reviews"`
	AllowForcePushes         bool `json:"allow_force_pushes"`
	AllowDeletions           bool `json:"allow_deletions"`
}

type BranchProtectionRule

type BranchProtectionRule struct {
	ID                       int64  `json:"id"`
	RepositoryID             int64  `json:"repository_id"`
	Name                     string `json:"name"`
	RequiredStatusChecks     bool   `json:"required_status_checks"`
	RequiredApprovingReviews int    `json:"required_approving_reviews"`
	AllowForcePushes         bool   `json:"allow_force_pushes"`
	AllowDeletions           bool   `json:"allow_deletions"`
}

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is the GitCode API client.

func NewClient

func NewClient(token string) *Client

NewClient creates a new GitCode API client with the given token.

func NewClientFromEnv

func NewClientFromEnv() *Client

NewClientFromEnv creates a client from GITCODE_TOKEN and optionally GITCODE_URL environment variables. Returns nil if GITCODE_TOKEN is not set.

This is the recommended way to create a client for CLI tools and scripts that support both public and private GitCode instances via environment configuration.

func NewClientFromOAuthToken deprecated

func NewClientFromOAuthToken(token *OAuthToken) *Client

Deprecated: NewClientFromOAuthToken creates a client from an OAuth token using the default public base URL. For private deployments, use OAuthClient.NewClient() instead, which preserves the base URL.

func NewClientWithBaseURL

func NewClientWithBaseURL(baseURL, token string) *Client

NewClientWithBaseURL creates a new GitCode API client with a custom base URL.

func (*Client) AcceptRepoInvitation

func (c *Client) AcceptRepoInvitation(ctx context.Context, invitationID int64) error

AcceptRepoInvitation accepts a repository invitation.

PATCH /user/repository_invitations/{id}

func (*Client) AddCollaborator

func (c *Client) AddCollaborator(ctx context.Context, owner, repo, username string, opts *AddCollaboratorOptions) error

AddCollaborator adds a collaborator to a repository.

PUT /repos/{owner}/{repo}/collaborators/{username}

func (*Client) AddIssueAssignees

func (c *Client) AddIssueAssignees(ctx context.Context, owner, repo string, number int, assignees []string) (*Issue, error)

AddIssueAssignees adds assignees to an issue.

POST /repos/{owner}/{repo}/issues/{index}/assignees

func (*Client) AddIssueLabels

func (c *Client) AddIssueLabels(ctx context.Context, owner, repo string, number int, labels []string) error

func (*Client) AddPullRequestLabels

func (c *Client) AddPullRequestLabels(ctx context.Context, owner, repo string, number int, labels []string) error

func (*Client) AddRepositoryTopic

func (c *Client) AddRepositoryTopic(ctx context.Context, owner, repo, topic string) error

AddRepositoryTopic adds a single topic to a repository.

PUT /repos/{owner}/{repo}/topics/{topic}

func (*Client) AddRequestHook

func (c *Client) AddRequestHook(hook RequestHook)

AddRequestHook adds a hook that runs before each HTTP request.

func (*Client) AddResponseHook

func (c *Client) AddResponseHook(hook ResponseHook)

AddResponseHook adds a hook that runs after each HTTP response.

func (*Client) AddTeamMember

func (c *Client) AddTeamMember(ctx context.Context, teamID int64, username string) error

AddTeamMember adds a member to a team.

PUT /teams/{team_id}/members/{username}

func (*Client) AddTeamRepository

func (c *Client) AddTeamRepository(ctx context.Context, teamID int64, org, repo string) error

AddTeamRepository adds a repository to a team.

PUT /teams/{team_id}/repos/{org}/{repo}

func (*Client) AddToKanbanBoard

func (c *Client) AddToKanbanBoard(ctx context.Context, org string, boardID int64, opts AddToKanbanBoardOptions) (*KanbanBoardItem, error)

AddToKanbanBoard adds an issue or pull request to a kanban board.

POST /orgs/{org}/kanban/boards/{id}/items

func (*Client) ArchiveRepository

func (c *Client) ArchiveRepository(ctx context.Context, owner, repo string) error

func (*Client) AssignPullRequestApprovalReviewers

func (c *Client) AssignPullRequestApprovalReviewers(ctx context.Context, owner, repo string, number int, reviewers string) error

AssignPullRequestApprovalReviewers assigns users as approval reviewers for a pull request.

POST /repos/{owner}/{repo}/pulls/{number}/approval-reviewers

func (*Client) AssignPullRequestReviewers

func (c *Client) AssignPullRequestReviewers(ctx context.Context, owner, repo string, number int, assignees string) error

func (*Client) AssignPullRequestTesters

func (c *Client) AssignPullRequestTesters(ctx context.Context, owner, repo string, number int, testers string) error

func (*Client) BaseURL

func (c *Client) BaseURL() string

BaseURL returns the current base URL of the client.

func (*Client) BlockOrgUser

func (c *Client) BlockOrgUser(ctx context.Context, org, username string) error

BlockOrgUser blocks a user from an organization.

PUT /orgs/{org}/blocks/{username}

func (*Client) ClearHooks

func (c *Client) ClearHooks()

ClearHooks removes all request and response hooks.

func (*Client) CloseIssue

func (c *Client) CloseIssue(ctx context.Context, owner, repo string, number int) (*Issue, error)

func (*Client) ClosePullRequest

func (c *Client) ClosePullRequest(ctx context.Context, owner, repo string, number int) (*PullRequest, error)

func (*Client) CompareCommits

func (c *Client) CompareCommits(ctx context.Context, owner, repo, base, head string) (*CommitComparison, error)

func (*Client) ConcealOrgMembership

func (c *Client) ConcealOrgMembership(ctx context.Context, org, username string) error

ConcealOrgMembership makes the authenticated user's membership private.

DELETE /orgs/{org}/public_members/{username}

func (*Client) ConfigureRepoCLA

func (c *Client) ConfigureRepoCLA(ctx context.Context, owner, repo string, opts *RepoCLA) (*RepoCLA, error)

ConfigureRepoCLA configures the CLA for a repository.

PUT /repos/{owner}/{repo}/clas

func (*Client) CreateAnnotatedTag

func (c *Client) CreateAnnotatedTag(ctx context.Context, owner, repo string, opts CreateAnnotatedTagOptions) (*AnnotatedTag, error)

CreateAnnotatedTag creates a new annotated tag.

POST /repos/{owner}/{repo}/git/tags

func (*Client) CreateBranch

func (c *Client) CreateBranch(ctx context.Context, owner, repo string, opts CreateBranchOptions) (*Branch, error)

func (*Client) CreateBranchProtection

func (c *Client) CreateBranchProtection(ctx context.Context, owner, repo string, opts CreateBranchProtectionOptions) (*BranchProtectionRule, error)

func (*Client) CreateCommitComment

func (c *Client) CreateCommitComment(ctx context.Context, owner, repo, sha string, opts CreateCommitCommentOptions) (*CommitComment, error)

CreateCommitComment creates a new commit comment.

POST /repos/{owner}/{repo}/commits/{sha}/comments

func (*Client) CreateCommitStatus

func (c *Client) CreateCommitStatus(ctx context.Context, owner, repo, sha string, opts CreateCommitStatusOptions) (*CommitStatus, error)

CreateCommitStatus creates a commit status.

POST /repos/{owner}/{repo}/statuses/{sha}

func (*Client) CreateDeployKey

func (c *Client) CreateDeployKey(ctx context.Context, owner, repo string, opts CreateDeployKeyOptions) (*DeployKey, error)

CreateDeployKey creates a new deploy key for a repository.

POST /repos/{owner}/{repo}/keys

func (*Client) CreateEnterpriseLabel

func (c *Client) CreateEnterpriseLabel(ctx context.Context, enterprise string, opts CreateEnterpriseLabelOptions) (*EnterpriseLabel, error)

CreateEnterpriseLabel creates a new enterprise label.

POST /enterprises/{enterprise}/labels

func (*Client) CreateEnterpriseMilestone

func (c *Client) CreateEnterpriseMilestone(ctx context.Context, enterprise string, opts CreateEnterpriseMilestoneOptions) (*EnterpriseMilestone, error)

CreateEnterpriseMilestone creates a new enterprise milestone.

POST /enterprises/{enterprise}/milestones

func (*Client) CreateFile

func (c *Client) CreateFile(ctx context.Context, owner, repo, path string, opts CreateFileOptions) (*FileResult, error)

func (*Client) CreateGitReference

func (c *Client) CreateGitReference(ctx context.Context, owner, repo string, opts CreateReferenceOptions) (*GitReference, error)

CreateGitReference creates a new reference.

POST /repos/{owner}/{repo}/git/refs

func (*Client) CreateIssue

func (c *Client) CreateIssue(ctx context.Context, owner, repo string, opts CreateIssueOptions) (*Issue, error)

func (*Client) CreateIssueComment

func (c *Client) CreateIssueComment(ctx context.Context, owner, repo string, number int, body string) (*IssueComment, error)

func (*Client) CreateIssueCommentReaction

func (c *Client) CreateIssueCommentReaction(ctx context.Context, owner, repo string, commentID int64, content string) (*Reaction, error)

CreateIssueCommentReaction adds a reaction to an issue comment.

POST /repos/{owner}/{repo}/issues/comments/{id}/reactions

func (*Client) CreateIssueDependency

func (c *Client) CreateIssueDependency(ctx context.Context, owner, repo string, number int, dependsOnNumber int) (*IssueDependency, error)

CreateIssueDependency creates a dependency between two issues.

POST /repos/{owner}/{repo}/issues/{index}/dependencies

func (*Client) CreateIssueLabel

func (c *Client) CreateIssueLabel(ctx context.Context, owner, repo string, name, color string) (*Label, error)

func (*Client) CreateIssueReaction

func (c *Client) CreateIssueReaction(ctx context.Context, owner, repo string, number int, content string) (*Reaction, error)

CreateIssueReaction adds a reaction to an issue.

POST /repos/{owner}/{repo}/issues/{index}/reactions

func (*Client) CreateMilestone

func (c *Client) CreateMilestone(ctx context.Context, owner, repo string, title, description string) (*Milestone, error)

func (*Client) CreateMilestoneWithOptions

func (c *Client) CreateMilestoneWithOptions(ctx context.Context, owner, repo string, opts CreateMilestoneOptions) (*Milestone, error)

func (*Client) CreateOrgLabel

func (c *Client) CreateOrgLabel(ctx context.Context, org string, opts CreateOrgLabelOptions) (*OrgLabel, error)

CreateOrgLabel creates a new organization label.

POST /orgs/{org}/labels

func (*Client) CreateOrgRepository

func (c *Client) CreateOrgRepository(ctx context.Context, org string, opts CreateOrgRepoOptions) (*Repository, error)

func (*Client) CreateOrgWebhook

func (c *Client) CreateOrgWebhook(ctx context.Context, org string, opts CreateOrgWebhookOptions) (*OrgWebhook, error)

CreateOrgWebhook creates a new organization webhook.

POST /orgs/{org}/hooks

func (*Client) CreateOrganization

func (c *Client) CreateOrganization(ctx context.Context, opts CreateOrgOptions) (*Organization, error)

CreateOrganization creates a new organization.

POST /orgs

func (*Client) CreateProtectedTag

func (c *Client) CreateProtectedTag(ctx context.Context, owner, repo string, opts CreateProtectedTagOptions) (*ProtectedTag, error)

CreateProtectedTag creates a new protected tag rule.

POST /repos/{owner}/{repo}/protected-tags

func (*Client) CreatePullRequest

func (c *Client) CreatePullRequest(ctx context.Context, owner, repo string, opts CreatePullRequestOptions) (*PullRequest, error)

func (*Client) CreatePullRequestComment

func (c *Client) CreatePullRequestComment(ctx context.Context, owner, repo string, number int, body, path string, position, commitID string) (*PullRequestComment, error)

func (*Client) CreatePullRequestCommentReaction

func (c *Client) CreatePullRequestCommentReaction(ctx context.Context, owner, repo string, commentID int64, content string) (*Reaction, error)

CreatePullRequestCommentReaction adds a reaction to a pull request comment.

POST /repos/{owner}/{repo}/pulls/comments/{id}/reactions

func (*Client) CreatePullRequestInlineComment

func (c *Client) CreatePullRequestInlineComment(ctx context.Context, owner, repo string, number int, opts CreatePullRequestInlineCommentOptions) (*PullRequestComment, error)

func (*Client) CreatePullRequestReview

func (c *Client) CreatePullRequestReview(ctx context.Context, owner, repo string, number int, body, event string) (*PullRequestReview, error)

func (*Client) CreateRelease

func (c *Client) CreateRelease(ctx context.Context, owner, repo string, opts CreateReleaseOptions) (*Release, error)

func (*Client) CreateRepository

func (c *Client) CreateRepository(ctx context.Context, opts CreateRepositoryOptions) (*Repository, error)

func (*Client) CreateSSHKey

func (c *Client) CreateSSHKey(ctx context.Context, opts CreateSSHKeyOptions) (*SSHKey, error)

func (*Client) CreateTag

func (c *Client) CreateTag(ctx context.Context, owner, repo string, opts CreateTagOptions) (*Tag, error)

CreateTag creates a new lightweight tag.

POST /repos/{owner}/{repo}/tags

func (*Client) CreateTeam

func (c *Client) CreateTeam(ctx context.Context, org string, opts CreateTeamOptions) (*Team, error)

CreateTeam creates a new team in an organization.

POST /orgs/{org}/teams

func (*Client) CreateWebhook

func (c *Client) CreateWebhook(ctx context.Context, owner, repo string, opts CreateWebhookOptions) (*Webhook, error)

func (*Client) CreateWikiPage

func (c *Client) CreateWikiPage(ctx context.Context, owner, repo string, opts CreateWikiPageOptions) (*WikiPage, error)

CreateWikiPage creates a new wiki page.

POST /repos/{owner}/{repo}/wiki/new

func (*Client) DeclineRepoInvitation

func (c *Client) DeclineRepoInvitation(ctx context.Context, invitationID int64) error

DeclineRepoInvitation declines a repository invitation.

DELETE /user/repository_invitations/{id}

func (*Client) DeleteActionArtifact

func (c *Client) DeleteActionArtifact(ctx context.Context, owner, repo string, artifactID int64) error

DeleteActionArtifact deletes an artifact.

DELETE /repos/{owner}/{repo}/actions/artifacts/{id}

func (*Client) DeleteBranch

func (c *Client) DeleteBranch(ctx context.Context, owner, repo, branch string) error

func (*Client) DeleteBranchProtection

func (c *Client) DeleteBranchProtection(ctx context.Context, owner, repo, name string) error

func (*Client) DeleteCommitComment

func (c *Client) DeleteCommitComment(ctx context.Context, owner, repo string, commentID int64) error

DeleteCommitComment deletes a commit comment.

DELETE /repos/{owner}/{repo}/comments/{id}

func (*Client) DeleteDeployKey

func (c *Client) DeleteDeployKey(ctx context.Context, owner, repo string, keyID int64) error

DeleteDeployKey deletes a deploy key.

DELETE /repos/{owner}/{repo}/keys/{id}

func (*Client) DeleteEnterpriseLabel

func (c *Client) DeleteEnterpriseLabel(ctx context.Context, enterprise string, labelID int64) error

DeleteEnterpriseLabel deletes an enterprise label.

DELETE /enterprises/{enterprise}/labels/{id}

func (*Client) DeleteEnterpriseMember

func (c *Client) DeleteEnterpriseMember(ctx context.Context, enterprise, username string) error

DeleteEnterpriseMember removes a member from an enterprise.

DELETE /enterprises/{enterprise}/members/{username}

func (*Client) DeleteEnterpriseMilestone

func (c *Client) DeleteEnterpriseMilestone(ctx context.Context, enterprise string, milestoneID int64) error

DeleteEnterpriseMilestone deletes an enterprise milestone.

DELETE /enterprises/{enterprise}/milestones/{id}

func (*Client) DeleteFile

func (c *Client) DeleteFile(ctx context.Context, owner, repo, path string, opts DeleteFileOptions) (*FileResult, error)

func (*Client) DeleteGitReference

func (c *Client) DeleteGitReference(ctx context.Context, owner, repo, ref string) error

DeleteGitReference deletes a reference.

DELETE /repos/{owner}/{repo}/git/refs/{ref}

func (*Client) DeleteIssueComment

func (c *Client) DeleteIssueComment(ctx context.Context, owner, repo string, commentID int64) error

func (*Client) DeleteIssueCommentReaction

func (c *Client) DeleteIssueCommentReaction(ctx context.Context, owner, repo string, commentID, reactionID int64) error

DeleteIssueCommentReaction removes a reaction from an issue comment.

DELETE /repos/{owner}/{repo}/issues/comments/{id}/reactions/{id}

func (*Client) DeleteIssueDependency

func (c *Client) DeleteIssueDependency(ctx context.Context, owner, repo string, number int, dependencyNumber int) error

DeleteIssueDependency removes a dependency between two issues.

DELETE /repos/{owner}/{repo}/issues/{index}/dependencies/{dependency}

func (*Client) DeleteIssueLabel

func (c *Client) DeleteIssueLabel(ctx context.Context, owner, repo string, name string) error

func (*Client) DeleteIssueReaction

func (c *Client) DeleteIssueReaction(ctx context.Context, owner, repo string, number int, reactionID int64) error

DeleteIssueReaction removes a reaction from an issue.

DELETE /repos/{owner}/{repo}/issues/{index}/reactions/{id}

func (*Client) DeleteMilestone

func (c *Client) DeleteMilestone(ctx context.Context, owner, repo string, number int) error

func (*Client) DeleteOrgLabel

func (c *Client) DeleteOrgLabel(ctx context.Context, org string, labelID int64) error

DeleteOrgLabel deletes an organization label.

DELETE /orgs/{org}/labels/{id}

func (*Client) DeleteOrgWebhook

func (c *Client) DeleteOrgWebhook(ctx context.Context, org string, hookID int64) error

DeleteOrgWebhook deletes an organization webhook.

DELETE /orgs/{org}/hooks/{id}

func (*Client) DeleteOrganization

func (c *Client) DeleteOrganization(ctx context.Context, org string) error

DeleteOrganization deletes an organization.

DELETE /orgs/{org}

func (*Client) DeleteProtectedTag

func (c *Client) DeleteProtectedTag(ctx context.Context, owner, repo, tag string) error

DeleteProtectedTag deletes a protected tag rule.

DELETE /repos/{owner}/{repo}/protected-tags/{tag}

func (*Client) DeletePullRequestComment

func (c *Client) DeletePullRequestComment(ctx context.Context, owner, repo string, commentID string) error

func (*Client) DeletePullRequestCommentReaction

func (c *Client) DeletePullRequestCommentReaction(ctx context.Context, owner, repo string, commentID, reactionID int64) error

DeletePullRequestCommentReaction removes a reaction from a pull request comment.

DELETE /repos/{owner}/{repo}/pulls/comments/{id}/reactions/{id}

func (*Client) DeleteRelease

func (c *Client) DeleteRelease(ctx context.Context, owner, repo string, tagName string) error

func (*Client) DeleteReleaseAsset

func (c *Client) DeleteReleaseAsset(ctx context.Context, owner, repo string, assetID int64) error

DeleteReleaseAsset deletes a release asset.

DELETE /repos/{owner}/{repo}/releases/assets/{id}

func (*Client) DeleteReleaseByID

func (c *Client) DeleteReleaseByID(ctx context.Context, owner, repo string, releaseID int64) error

DeleteReleaseByID deletes a release by ID.

DELETE /repos/{owner}/{repo}/releases/{id}

func (*Client) DeleteRepository

func (c *Client) DeleteRepository(ctx context.Context, owner, repo string) error

func (*Client) DeleteRepositoryTopic

func (c *Client) DeleteRepositoryTopic(ctx context.Context, owner, repo, topic string) error

DeleteRepositoryTopic removes a single topic from a repository.

DELETE /repos/{owner}/{repo}/topics/{topic}

func (*Client) DeleteSSHKey

func (c *Client) DeleteSSHKey(ctx context.Context, id int64) error

func (*Client) DeleteTag

func (c *Client) DeleteTag(ctx context.Context, owner, repo, tagName string) error

func (*Client) DeleteTeam

func (c *Client) DeleteTeam(ctx context.Context, teamID int64) error

DeleteTeam deletes a team.

DELETE /teams/{team_id}

func (*Client) DeleteWebhook

func (c *Client) DeleteWebhook(ctx context.Context, owner, repo string, hookID int64) error

func (*Client) DeleteWikiPage

func (c *Client) DeleteWikiPage(ctx context.Context, owner, repo, pageName string) error

DeleteWikiPage deletes a wiki page.

DELETE /repos/{owner}/{repo}/wiki/page/{pageName}

func (*Client) DismissPullRequestReview

func (c *Client) DismissPullRequestReview(ctx context.Context, owner, repo string, number int, reviewID int64, message string) error

DismissPullRequestReview dismisses a pull request review.

PUT /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/dismissals

func (*Client) DownloadActionArtifact

func (c *Client) DownloadActionArtifact(ctx context.Context, owner, repo string, artifactID int64) ([]byte, error)

DownloadActionArtifact downloads an artifact.

GET /repos/{owner}/{repo}/actions/artifacts/{id}/download

func (*Client) DownloadReleaseAsset

func (c *Client) DownloadReleaseAsset(ctx context.Context, owner, repo string, assetID int64) ([]byte, error)

DownloadReleaseAsset downloads a release asset by ID.

GET /repos/{owner}/{repo}/releases/assets/{id}

func (*Client) DownloadRepository

func (c *Client) DownloadRepository(ctx context.Context, owner, repo, format string) ([]byte, error)

DownloadRepository downloads a repository as a zip or tarball.

GET /repos/{owner}/{repo}/{format}

func (*Client) ExitOrganization

func (c *Client) ExitOrganization(ctx context.Context, org string) error

func (*Client) FollowUser

func (c *Client) FollowUser(ctx context.Context, username string) error

FollowUser follows a user.

PUT /user/following/{username}

func (*Client) ForkRepository

func (c *Client) ForkRepository(ctx context.Context, owner, repo string, opts *CreateRepositoryOptions) (*Repository, error)

func (*Client) GenerateRepositoryArchive

func (c *Client) GenerateRepositoryArchive(ctx context.Context, owner, repo, ref, format string) ([]byte, error)

GenerateRepositoryArchive generates a repository archive.

GET /repos/{owner}/{repo}/archive

func (*Client) GetActionArtifact

func (c *Client) GetActionArtifact(ctx context.Context, owner, repo string, artifactID int64) (*ActionArtifact, error)

GetActionArtifact gets a single artifact.

GET /repos/{owner}/{repo}/actions/artifacts/{id}

func (*Client) GetActionJob

func (c *Client) GetActionJob(ctx context.Context, owner, repo string, jobID int64) (*ActionJob, error)

GetActionJob gets a single workflow job.

GET /repos/{owner}/{repo}/actions/jobs/{id}

func (*Client) GetActionJobLogs

func (c *Client) GetActionJobLogs(ctx context.Context, owner, repo string, jobID int64) ([]byte, error)

GetActionJobLogs gets the logs for a workflow job.

GET /repos/{owner}/{repo}/actions/jobs/{id}/logs

func (*Client) GetActionJobStepLogs

func (c *Client) GetActionJobStepLogs(ctx context.Context, owner, repo string, jobID int64) ([]byte, error)

GetActionJobStepLogs gets the step-level logs for a workflow job.

GET /repos/{owner}/{repo}/actions/jobs/{id}/logs/step

func (*Client) GetActionRun

func (c *Client) GetActionRun(ctx context.Context, owner, repo string, runID int64) (*ActionRun, error)

GetActionRun gets a single workflow run.

GET /repos/{owner}/{repo}/actions/runs/{id}

func (*Client) GetAnnotatedTag

func (c *Client) GetAnnotatedTag(ctx context.Context, owner, repo, sha string) (*AnnotatedTag, error)

GetAnnotatedTag gets an annotated tag by SHA.

GET /repos/{owner}/{repo}/git/tags/{sha}

func (*Client) GetArchiveStatus

func (c *Client) GetArchiveStatus(ctx context.Context, owner, repo string) (*ArchiveStatus, error)

func (*Client) GetBlob

func (c *Client) GetBlob(ctx context.Context, owner, repo, sha string) (*GitBlob, error)

func (*Client) GetBranch

func (c *Client) GetBranch(ctx context.Context, owner, repo, branch string) (*Branch, error)

func (*Client) GetCollaboratorPermission

func (c *Client) GetCollaboratorPermission(ctx context.Context, owner, repo, username string) (*CollaboratorPermission, error)

GetCollaboratorPermission gets the permission of a collaborator for a repository.

GET /repos/{owner}/{repo}/collaborators/{username}/permission

func (*Client) GetCombinedStatus

func (c *Client) GetCombinedStatus(ctx context.Context, owner, repo, sha string) (*CombinedStatus, error)

GetCombinedStatus gets the combined status for a commit.

GET /repos/{owner}/{repo/commits/{sha}/status

func (*Client) GetCommit

func (c *Client) GetCommit(ctx context.Context, owner, repo, sha string) (*Commit, error)

func (*Client) GetCommitComment

func (c *Client) GetCommitComment(ctx context.Context, owner, repo string, commentID int64) (*CommitComment, error)

GetCommitComment gets a single commit comment.

GET /repos/{owner}/{repo}/comments/{id}

func (*Client) GetCommitDiff

func (c *Client) GetCommitDiff(ctx context.Context, owner, repo, sha string) ([]byte, error)

GetCommitDiff returns the diff of a commit.

GET /repos/{owner}/{repo}/commits/{sha}.diff

func (*Client) GetCommitPatch

func (c *Client) GetCommitPatch(ctx context.Context, owner, repo, sha string) ([]byte, error)

GetCommitPatch returns the patch of a commit.

GET /repos/{owner}/{repo}/commits/{sha}.patch

func (*Client) GetContributorStatistics

func (c *Client) GetContributorStatistics(ctx context.Context, owner, repo string) ([]*ContributorStatistic, error)

func (*Client) GetCurrentUser

func (c *Client) GetCurrentUser(ctx context.Context) (*User, error)

GetCurrentUser returns the authenticated user's profile.

func (*Client) GetCustomizedRoles

func (c *Client) GetCustomizedRoles(ctx context.Context, owner, repo string) ([]*CustomizedRole, error)

func (*Client) GetDeployKey

func (c *Client) GetDeployKey(ctx context.Context, owner, repo string, keyID int64) (*DeployKey, error)

GetDeployKey gets a single deploy key.

GET /repos/{owner}/{repo}/keys/{id}

func (*Client) GetDiscussion

func (c *Client) GetDiscussion(ctx context.Context, owner, repo string, number int) (*Discussion, error)

GetDiscussion gets a single discussion by number.

GET /repos/{owner}/{repo}/discuss/{number}

func (*Client) GetDownloadStatistics

func (c *Client) GetDownloadStatistics(ctx context.Context, owner, repo string) ([]*DownloadStatistic, error)

func (*Client) GetEnterpriseIssue

func (c *Client) GetEnterpriseIssue(ctx context.Context, enterprise string, number int) (*Issue, error)

func (*Client) GetEnterpriseIssueLinkedPRs

func (c *Client) GetEnterpriseIssueLinkedPRs(ctx context.Context, enterprise string, number int) ([]*PullRequest, error)

func (*Client) GetEnterpriseMember

func (c *Client) GetEnterpriseMember(ctx context.Context, enterprise, username string) (*EnterpriseMember, error)

func (*Client) GetEnterpriseMilestone

func (c *Client) GetEnterpriseMilestone(ctx context.Context, enterprise string, milestoneID int64) (*EnterpriseMilestone, error)

GetEnterpriseMilestone gets a single enterprise milestone.

GET /enterprises/{enterprise}/milestones/{id}

func (*Client) GetExtendedUser

func (c *Client) GetExtendedUser(ctx context.Context, username string) (*ExtendedUser, error)

GetExtendedUser gets extended information about a user.

GET /users/{username}

func (*Client) GetForkSyncStatus

func (c *Client) GetForkSyncStatus(ctx context.Context, owner, repo string) (*ForkSyncStatus, error)

GetForkSyncStatus checks the sync status of a forked repository.

GET /repos/{owner}/{repo}/sync-repo

func (*Client) GetGitReference

func (c *Client) GetGitReference(ctx context.Context, owner, repo, ref string) (*GitReference, error)

GetGitReference gets a single reference.

GET /repos/{owner}/{repo}/git/refs/{ref}

func (*Client) GetGitignoreTemplate

func (c *Client) GetGitignoreTemplate(ctx context.Context, name string) (*GitignoreTemplate, error)

GetGitignoreTemplate gets a gitignore template by name.

GET /gitignore/templates/{name}

func (*Client) GetIssue

func (c *Client) GetIssue(ctx context.Context, owner, repo string, number int) (*Issue, error)

func (*Client) GetIssueComment

func (c *Client) GetIssueComment(ctx context.Context, owner, repo string, commentID int64) (*IssueComment, error)

func (*Client) GetIssueLinkedPRs

func (c *Client) GetIssueLinkedPRs(ctx context.Context, owner, repo string, number int) ([]*PullRequest, error)

func (*Client) GetIssueOperateLogs

func (c *Client) GetIssueOperateLogs(ctx context.Context, owner, repo string, number int) ([]*IssueOperateLog, error)

func (*Client) GetIssueTemplate

func (c *Client) GetIssueTemplate(ctx context.Context, owner, repo, name string) (*IssueTemplate, error)

GetIssueTemplate gets a single issue template by name.

GET /repos/{owner}/{repo}/issue_templates/{name}

func (*Client) GetKanbanBoard

func (c *Client) GetKanbanBoard(ctx context.Context, org string, boardID int64) (*KanbanBoard, error)

GetKanbanBoard gets a single kanban board.

GET /orgs/{org}/kanban/boards/{id}

func (*Client) GetLabelTemplate

func (c *Client) GetLabelTemplate(ctx context.Context, name string) ([]*Label, error)

GetLabelTemplate gets a label template by name.

GET /label/templates/{name}

func (*Client) GetLanguages

func (c *Client) GetLanguages(ctx context.Context, owner, repo string) (Language, error)

func (*Client) GetLatestRelease

func (c *Client) GetLatestRelease(ctx context.Context, owner, repo string) (*Release, error)

GetLatestRelease gets the latest release for a repository.

GET /repos/{owner}/{repo}/releases/latest

func (*Client) GetLicenseTemplate

func (c *Client) GetLicenseTemplate(ctx context.Context, name string) (*LicenseTemplate, error)

GetLicenseTemplate gets a license template by key.

GET /licenses/{name}

func (*Client) GetMilestone

func (c *Client) GetMilestone(ctx context.Context, owner, repo string, number int) (*Milestone, error)

func (*Client) GetNamespace

func (c *Client) GetNamespace(ctx context.Context, path string) (*Namespace, error)

func (*Client) GetNotificationThread

func (c *Client) GetNotificationThread(ctx context.Context, threadID int64) (*NotificationThread, error)

GetNotificationThread gets a single notification thread.

GET /notifications/threads/{id}

func (*Client) GetOrgDiscussion

func (c *Client) GetOrgDiscussion(ctx context.Context, org string, number int) (*OrgDiscussion, error)

GetOrgDiscussion gets a single organization discussion by number.

GET /orgs/{org}/discuss/{number}

func (*Client) GetOrgEnterprise

func (c *Client) GetOrgEnterprise(ctx context.Context, org string) (*OrgEnterprise, error)

GetOrgEnterprise gets the enterprise associated with an organization.

GET /orgs/{org}/enterprise

func (*Client) GetOrgInfo

func (c *Client) GetOrgInfo(ctx context.Context, org string) (*Organization, error)

func (*Client) GetOrgIssueExtendSettings

func (c *Client) GetOrgIssueExtendSettings(ctx context.Context, org string) ([]*IssueExtendSetting, error)

func (*Client) GetOrgLabel

func (c *Client) GetOrgLabel(ctx context.Context, org string, labelID int64) (*OrgLabel, error)

GetOrgLabel gets a single organization label.

GET /orgs/{org}/labels/{id}

func (*Client) GetOrgMemberDetail

func (c *Client) GetOrgMemberDetail(ctx context.Context, org, username string) (*OrgMemberDetail, error)

func (*Client) GetOrgWebhook

func (c *Client) GetOrgWebhook(ctx context.Context, org string, hookID int64) (*OrgWebhook, error)

GetOrgWebhook gets a single organization webhook.

GET /orgs/{org}/hooks/{id}

func (*Client) GetOrganization

func (c *Client) GetOrganization(ctx context.Context, org string) (*Organization, error)

func (*Client) GetPRSettings

func (c *Client) GetPRSettings(ctx context.Context, owner, repo string) (*PRSettings, error)

func (*Client) GetProtectedTag

func (c *Client) GetProtectedTag(ctx context.Context, owner, repo, tag string) (*ProtectedTag, error)

GetProtectedTag gets a single protected tag rule.

GET /repos/{owner}/{repo}/protected-tags/{tag}

func (*Client) GetPullRequest

func (c *Client) GetPullRequest(ctx context.Context, owner, repo string, number int) (*PullRequest, error)

func (*Client) GetPullRequestComment

func (c *Client) GetPullRequestComment(ctx context.Context, owner, repo string, commentID int64) (*PullRequestComment, error)

func (*Client) GetPullRequestDiff

func (c *Client) GetPullRequestDiff(ctx context.Context, owner, repo string, number int) ([]byte, error)

GetPullRequestDiff returns the diff of a pull request.

GET /repos/{owner}/{repo}/pulls/{index}.diff

func (*Client) GetPullRequestLinkedIssues

func (c *Client) GetPullRequestLinkedIssues(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*Issue, error)

func (*Client) GetPullRequestOperateLogs

func (c *Client) GetPullRequestOperateLogs(ctx context.Context, owner, repo string, number int) ([]*PROperateLog, error)

func (*Client) GetPullRequestPatch

func (c *Client) GetPullRequestPatch(ctx context.Context, owner, repo string, number int) ([]byte, error)

GetPullRequestPatch returns the patch of a pull request.

GET /repos/{owner}/{repo}/pulls/{index}.patch

func (*Client) GetPullRequestReview

func (c *Client) GetPullRequestReview(ctx context.Context, owner, repo string, number int, reviewID int64) (*PullRequestReview, error)

GetPullRequestReview gets a single pull request review.

GET /repos/{owner}/{repo}/pulls/{index}/reviews/{id}

func (*Client) GetPushConfig

func (c *Client) GetPushConfig(ctx context.Context, owner, repo string) (*PushConfig, error)

func (*Client) GetRateLimit

func (c *Client) GetRateLimit(ctx context.Context) (*RateLimit, error)

GetRateLimit returns the current rate limit status.

func (*Client) GetRawFile

func (c *Client) GetRawFile(ctx context.Context, owner, repo, path, ref string) ([]byte, error)

func (*Client) GetRelease

func (c *Client) GetRelease(ctx context.Context, owner, repo string, releaseID int64) (*Release, error)

GetRelease gets a single release by ID.

GET /repos/{owner}/{repo}/releases/{id}

func (*Client) GetReleaseAsset

func (c *Client) GetReleaseAsset(ctx context.Context, owner, repo string, assetID int64) (*ReleaseAsset, error)

GetReleaseAsset gets a single release asset.

GET /repos/{owner}/{repo}/releases/assets/{id}

func (*Client) GetReleaseByTag

func (c *Client) GetReleaseByTag(ctx context.Context, owner, repo, tag string) (*Release, error)

GetReleaseByTag gets a release by its tag name.

GET /repos/{owner}/{repo}/releases/tags/{tag}

func (*Client) GetReleaseUploadURL

func (c *Client) GetReleaseUploadURL(ctx context.Context, owner, repo string, releaseID int64, name, label string) (*ReleaseUploadURL, error)

GetReleaseUploadURL gets the upload URL for a release asset.

POST /repos/{owner}/{repo}/releases/{id}/assets/upload_url

func (*Client) GetRepoBranchDetail

func (c *Client) GetRepoBranchDetail(ctx context.Context, owner, repo, branch string) (*RepoBranchInfo, error)

GetRepoBranch gets a single branch with full details.

GET /repos/{owner}/{repo}/branches/{branch}

func (*Client) GetRepoCodeFrequency

func (c *Client) GetRepoCodeFrequency(ctx context.Context, owner, repo string) ([]CodeFrequencyEntry, error)

GetRepoCodeFrequency returns a weekly aggregate of the number of additions and deletions.

GET /repos/{owner}/{repo}/stats/code_frequency

func (*Client) GetRepoCommitActivity

func (c *Client) GetRepoCommitActivity(ctx context.Context, owner, repo string) ([]*CommitActivity, error)

GetRepoCommitActivity returns a weekly aggregate of the number of commits.

GET /repos/{owner}/{repo}/stats/commit_activity

func (*Client) GetRepoLicense

func (c *Client) GetRepoLicense(ctx context.Context, owner, repo string) (*RepoLicense, error)

GetRepoLicense gets the license of a repository.

GET /repos/{owner}/{repo}/license

func (*Client) GetRepoParticipation

func (c *Client) GetRepoParticipation(ctx context.Context, owner, repo string) (*ParticipationStats, error)

GetRepoParticipation returns the total commit counts for the owner and all contributors.

GET /repos/{owner}/{repo}/stats/participation

func (*Client) GetRepoPunchCard

func (c *Client) GetRepoPunchCard(ctx context.Context, owner, repo string) ([]PunchCardEntry, error)

GetRepoPunchCard returns the number of commits per hour in each day.

GET /repos/{owner}/{repo}/stats/punch_card

func (*Client) GetRepoRemoteMirror

func (c *Client) GetRepoRemoteMirror(ctx context.Context, owner, repo string) (*RemoteMirror, error)

GetRepoRemoteMirror gets the remote mirror configuration of a repository.

GET /repos/{owner}/{repo}/repo-remote-mirror

func (*Client) GetRepoSettings

func (c *Client) GetRepoSettings(ctx context.Context, owner, repo string) (*RepoSettings, error)

func (*Client) GetRepoVisibility

func (c *Client) GetRepoVisibility(ctx context.Context, owner, repo string) (bool, error)

GetRepoVisibility returns whether a repository is public or private.

GET /repos/{owner}/{repo}

func (*Client) GetRepository

func (c *Client) GetRepository(ctx context.Context, owner, repo string) (*Repository, error)

func (*Client) GetRepositoryArchive

func (c *Client) GetRepositoryArchive(ctx context.Context, owner, repo, archive string) ([]byte, error)

GetRepositoryArchive downloads a repository archive (tar.gz, zip, etc.).

GET /repos/{owner}/{repo}/archive/{archive}

func (*Client) GetRepositoryContent

func (c *Client) GetRepositoryContent(ctx context.Context, owner, repo, path, ref string) (*RepositoryContent, error)

func (*Client) GetRunnerGroup

func (c *Client) GetRunnerGroup(ctx context.Context, org string, groupID int64) (*RunnerGroup, error)

GetRunnerGroup gets a single runner group.

GET /orgs/{org}/actions/runner-groups/{id}

func (*Client) GetSSHKey

func (c *Client) GetSSHKey(ctx context.Context, id int64) (*SSHKey, error)

func (*Client) GetTag

func (c *Client) GetTag(ctx context.Context, owner, repo, tagName string) (*Tag, error)

GetTag gets a single tag by name.

GET /repos/{owner}/{repo}/tags/{tag}

func (*Client) GetTeam

func (c *Client) GetTeam(ctx context.Context, teamID int64) (*Team, error)

GetTeam gets a team by ID.

GET /teams/{team_id}

func (*Client) GetTeamMember

func (c *Client) GetTeamMember(ctx context.Context, teamID int64, username string) (*User, error)

GetTeamMember gets a team member.

GET /teams/{team_id}/members/{username}

func (*Client) GetTree

func (c *Client) GetTree(ctx context.Context, owner, repo, sha string, recursive bool) (*GitTree, error)

func (*Client) GetUser

func (c *Client) GetUser(ctx context.Context, username string) (*User, error)

GetUser returns a user by username.

func (*Client) GetUserEvents

func (c *Client) GetUserEvents(ctx context.Context, username, year, next string) (*UserEventsResponse, error)

func (*Client) GetUserMembership

func (c *Client) GetUserMembership(ctx context.Context, org string) (*UserMembership, error)

func (*Client) GetWebhook

func (c *Client) GetWebhook(ctx context.Context, owner, repo string, hookID int64) (*Webhook, error)

func (*Client) GetWikiPage

func (c *Client) GetWikiPage(ctx context.Context, owner, repo, pageName string) (*WikiPage, error)

GetWikiPage gets a single wiki page by title.

GET /repos/{owner}/{repo}/wiki/page/{pageName}

func (*Client) HandlePullRequestReview

func (c *Client) HandlePullRequestReview(ctx context.Context, owner, repo string, number int, force bool) error

func (*Client) HandlePullRequestTest

func (c *Client) HandlePullRequestTest(ctx context.Context, owner, repo string, number int, force bool) error

func (*Client) InviteEnterpriseMember

func (c *Client) InviteEnterpriseMember(ctx context.Context, enterprise string, username string, opts InviteMemberOptions) error

InviteEnterpriseMember invites a user to an enterprise.

POST /enterprises/{enterprise}/members

func (*Client) InviteOrgMember

func (c *Client) InviteOrgMember(ctx context.Context, org, username string, opts InviteMemberOptions) (*User, error)

func (*Client) IsCollaborator

func (c *Client) IsCollaborator(ctx context.Context, owner, repo, username string) (bool, error)

IsCollaborator checks if a user is a collaborator of a repository.

GET /repos/{owner}/{repo}/collaborators/{username}

func (*Client) IsFollowing

func (c *Client) IsFollowing(ctx context.Context, username string) (bool, error)

IsFollowing checks if the authenticated user is following a user.

GET /user/following/{username}

func (*Client) IsOrgBlockedUser

func (c *Client) IsOrgBlockedUser(ctx context.Context, org, username string) (bool, error)

IsOrgBlockedUser checks if a user is blocked by an organization.

GET /orgs/{org}/blocks/{username}

func (*Client) IsOrgPublicMember

func (c *Client) IsOrgPublicMember(ctx context.Context, org, username string) (bool, error)

IsOrgPublicMember checks if a user is a public member of an organization.

GET /orgs/{org}/public_members/{username}

func (*Client) IsPullRequestMerged

func (c *Client) IsPullRequestMerged(ctx context.Context, owner, repo string, number int) (bool, error)

func (*Client) IsRepoAssignee

func (c *Client) IsRepoAssignee(ctx context.Context, owner, repo, username string) (bool, error)

IsRepoAssignee checks if a user is an assignee for issues in a repository.

GET /repos/{owner}/{repo}/assignees/{username}

func (*Client) IsRepositoryStarred

func (c *Client) IsRepositoryStarred(ctx context.Context, owner, repo string) (bool, error)

func (*Client) LinkPullRequestIssue

func (c *Client) LinkPullRequestIssue(ctx context.Context, owner, repo string, number int, issueNumber int) error

LinkPullRequestIssue links an issue to a pull request.

POST /repos/{owner}/{repo}/pulls/{number}/linked-issues

func (*Client) ListActionArtifacts

func (c *Client) ListActionArtifacts(ctx context.Context, owner, repo string, opts ListOptions) ([]*ActionArtifact, error)

ListActionArtifacts lists all artifacts for a repository.

GET /repos/{owner}/{repo}/actions/artifacts

func (*Client) ListActionJobs

func (c *Client) ListActionJobs(ctx context.Context, owner, repo string, runID int64, opts ListOptions) ([]*ActionJob, error)

ListActionJobs lists all jobs for a workflow run.

GET /repos/{owner}/{repo}/actions/runs/{id}/jobs

func (*Client) ListActionRunArtifacts

func (c *Client) ListActionRunArtifacts(ctx context.Context, owner, repo string, runID int64, opts ListOptions) ([]*ActionArtifact, error)

ListActionRunArtifacts lists all artifacts for a specific workflow run.

GET /repos/{owner}/{repo}/actions/runs/{id}/artifacts

func (*Client) ListActionRuns

func (c *Client) ListActionRuns(ctx context.Context, owner, repo string, opts ListActionRunsOptions) ([]*ActionRun, error)

ListActionRuns lists all workflow runs for a repository.

GET /repos/{owner}/{repo}/actions/runs

func (*Client) ListActionWorkflows

func (c *Client) ListActionWorkflows(ctx context.Context, owner, repo string, opts ListOptions) ([]*ActionWorkflow, error)

ListActionWorkflows lists all workflows for a repository.

GET /repos/{owner}/{repo}/actions/workflows

func (*Client) ListBranchProtections

func (c *Client) ListBranchProtections(ctx context.Context, owner, repo string) ([]*BranchProtectionRule, error)

func (*Client) ListBranches

func (c *Client) ListBranches(ctx context.Context, owner, repo string) ([]*Branch, error)

func (*Client) ListCollaborators

func (c *Client) ListCollaborators(ctx context.Context, owner, repo string, opts ListOptions) ([]*Collaborator, error)

ListCollaborators lists all collaborators of a repository.

GET /repos/{owner}/{repo}/collaborators

func (*Client) ListCommitComments

func (c *Client) ListCommitComments(ctx context.Context, owner, repo, sha string, opts ListOptions) ([]*CommitComment, error)

ListCommitComments lists all comments for a commit.

GET /repos/{owner}/{repo}/commits/{sha}/comments

func (*Client) ListCommitStatuses

func (c *Client) ListCommitStatuses(ctx context.Context, owner, repo, sha string, opts ListOptions) ([]*CommitStatus, error)

ListCommitStatuses lists all statuses for a commit.

GET /repos/{owner}/{repo}/statuses/{sha}

func (*Client) ListCommits

func (c *Client) ListCommits(ctx context.Context, owner, repo string, opts ListCommitsOptions) ([]*Commit, error)

func (*Client) ListContributors

func (c *Client) ListContributors(ctx context.Context, owner, repo string) ([]*Contributor, error)

func (*Client) ListCurrentUserFollowers

func (c *Client) ListCurrentUserFollowers(ctx context.Context, opts ListOptions) ([]*User, error)

ListCurrentUserFollowers lists the followers of the authenticated user.

GET /user/followers

func (*Client) ListCurrentUserFollowing

func (c *Client) ListCurrentUserFollowing(ctx context.Context, opts ListOptions) ([]*User, error)

ListCurrentUserFollowing lists the users that the authenticated user is following.

GET /user/following

func (*Client) ListCurrentUserRepositories

func (c *Client) ListCurrentUserRepositories(ctx context.Context, opts ListRepositoriesOptions) ([]*Repository, error)

ListCurrentUserRepositories lists the authenticated user's repositories.

GET /user/repos

func (*Client) ListCurrentUserWatchedRepositories

func (c *Client) ListCurrentUserWatchedRepositories(ctx context.Context, opts ListOptions) ([]*Repository, error)

ListCurrentUserWatchedRepositories lists repositories watched by the authenticated user.

GET /user/subscriptions

func (*Client) ListDeployKeys

func (c *Client) ListDeployKeys(ctx context.Context, owner, repo string, opts ListOptions) ([]*DeployKey, error)

ListDeployKeys lists all deploy keys of a repository.

GET /repos/{owner}/{repo}/keys

func (*Client) ListDiscussionCommentReplies

func (c *Client) ListDiscussionCommentReplies(ctx context.Context, owner, repo string, number int, commentID int64, opts ListOptions) ([]*DiscussionCommentReply, error)

ListDiscussionCommentReplies lists all replies for a discussion comment.

GET /repos/{owner}/{repo}/discuss/{number}/comment/{comment_id}/reply

func (*Client) ListDiscussionComments

func (c *Client) ListDiscussionComments(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*DiscussionComment, error)

ListDiscussionComments lists all comments for a discussion.

GET /repos/{owner}/{repo}/discuss/{number}/comment

func (*Client) ListDiscussions

func (c *Client) ListDiscussions(ctx context.Context, owner, repo string, opts ListOptions) ([]*Discussion, error)

ListDiscussions lists all discussions for a repository.

GET /repos/{owner}/{repo}/discuss

func (*Client) ListEmails

func (c *Client) ListEmails(ctx context.Context) ([]*Email, error)

func (*Client) ListEnterpriseCustomizedRoles

func (c *Client) ListEnterpriseCustomizedRoles(ctx context.Context, enterprise string) ([]*EnterpriseCustomizedRole, error)

ListEnterpriseCustomizedRoles lists all customized roles for an enterprise.

GET /enterprises/{enterprise}/customized-roles

func (*Client) ListEnterpriseIssueComments

func (c *Client) ListEnterpriseIssueComments(ctx context.Context, enterprise string, number int, opts ListOptions) ([]*IssueComment, error)

func (*Client) ListEnterpriseIssueCustomFields

func (c *Client) ListEnterpriseIssueCustomFields(ctx context.Context, enterprise string) ([]*IssueCustomField, error)

ListEnterpriseIssueCustomFields lists all custom fields for enterprise issues.

GET /enterprises/{enterprise}/issue-custom-fields

func (*Client) ListEnterpriseIssueLabels

func (c *Client) ListEnterpriseIssueLabels(ctx context.Context, enterprise string, issueID int64) ([]*Label, error)

func (*Client) ListEnterpriseIssueStatuses

func (c *Client) ListEnterpriseIssueStatuses(ctx context.Context, enterprise string) ([]*EnterpriseIssueStatus, error)

ListEnterpriseIssueStatuses lists all enterprise issue statuses.

GET /enterprises/{enterprise}/issue-statuses

func (*Client) ListEnterpriseIssues

func (c *Client) ListEnterpriseIssues(ctx context.Context, enterprise string, opts ListUserIssuesOptions) ([]*Issue, error)

func (*Client) ListEnterpriseLabels

func (c *Client) ListEnterpriseLabels(ctx context.Context, enterprise string) ([]*EnterpriseLabel, error)

func (*Client) ListEnterpriseMembers

func (c *Client) ListEnterpriseMembers(ctx context.Context, enterprise, role string, opts ListOptions) ([]*EnterpriseMember, error)

func (*Client) ListEnterpriseMilestoneRepos

func (c *Client) ListEnterpriseMilestoneRepos(ctx context.Context, enterprise string, milestoneID int64, opts ListOptions) ([]*Repository, error)

ListEnterpriseMilestoneRepos lists repositories that can be associated with an enterprise milestone.

GET /enterprises/{enterprise}/milestones/{id}/repos

func (*Client) ListEnterpriseMilestones

func (c *Client) ListEnterpriseMilestones(ctx context.Context, enterprise string, opts ListMilestonesOptions) ([]*EnterpriseMilestone, error)

ListEnterpriseMilestones lists all milestones for an enterprise.

GET /enterprises/{enterprise}/milestones

func (*Client) ListEnterprisePullRequests

func (c *Client) ListEnterprisePullRequests(ctx context.Context, enterprise string, opts ListEnterprisePRsOptions) ([]*PullRequest, error)

func (*Client) ListFiles

func (c *Client) ListFiles(ctx context.Context, owner, repo string) ([]*FileListEntry, error)

func (*Client) ListForks

func (c *Client) ListForks(ctx context.Context, owner, repo string, opts ListOptions) ([]*Repository, error)

func (*Client) ListGitRefSubPaths

func (c *Client) ListGitRefSubPaths(ctx context.Context, owner, repo, refPrefix string) ([]*GitReference, error)

ListGitRefSubPaths lists references filtered by prefix (e.g. "heads/", "tags/").

GET /repos/{owner}/{repo}/git/refs/{refPrefix}

func (*Client) ListGitReferences

func (c *Client) ListGitReferences(ctx context.Context, owner, repo string, opts ListOptions) ([]*GitReference, error)

ListGitReferences lists all references of a repository.

GET /repos/{owner}/{repo}/git/refs

func (*Client) ListGitignoreTemplates

func (c *Client) ListGitignoreTemplates(ctx context.Context) ([]string, error)

ListGitignoreTemplates lists all available gitignore templates.

GET /gitignore/templates

func (*Client) ListIssueBlockingIssues

func (c *Client) ListIssueBlockingIssues(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*Issue, error)

ListIssueBlockingIssues lists all issues that this issue blocks.

GET /repos/{owner}/{repo}/issues/{index}/blocks

func (*Client) ListIssueCommentModifyHistory

func (c *Client) ListIssueCommentModifyHistory(ctx context.Context, owner, repo string, commentID int64, opts ListOptions) ([]*ModifyHistoryEntry, error)

ListIssueCommentModifyHistory lists the modification history of an issue comment.

GET /repos/{owner}/{repo}/issues/comment/{comment_id}/modify-history

func (*Client) ListIssueCommentReactions

func (c *Client) ListIssueCommentReactions(ctx context.Context, owner, repo string, commentID int64, opts ListOptions) ([]*Reaction, error)

ListIssueCommentReactions lists all reactions for an issue comment.

GET /repos/{owner}/{repo}/issues/comments/{id}/reactions

func (*Client) ListIssueCommentUserReactions

func (c *Client) ListIssueCommentUserReactions(ctx context.Context, owner, repo string, commentID int64, opts ListOptions) ([]*IssueUserReaction, error)

ListIssueCommentUserReactions lists user reactions for an issue comment.

GET /repos/{owner}/{repo}/issues/comment/{comment_id}/user-reactions

func (*Client) ListIssueComments

func (c *Client) ListIssueComments(ctx context.Context, owner, repo string, number int) ([]*IssueComment, error)

func (*Client) ListIssueDependencies

func (c *Client) ListIssueDependencies(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*IssueDependency, error)

ListIssueDependencies lists all dependencies of an issue.

GET /repos/{owner}/{repo}/issues/{index}/dependencies

func (*Client) ListIssueLabels

func (c *Client) ListIssueLabels(ctx context.Context, owner, repo string) ([]*Label, error)

func (*Client) ListIssueModifyHistory

func (c *Client) ListIssueModifyHistory(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*ModifyHistoryEntry, error)

ListIssueModifyHistory lists the modification history of an issue.

GET /repos/{owner}/{repo}/issues/{number}/modify-history

func (*Client) ListIssueReactions

func (c *Client) ListIssueReactions(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*Reaction, error)

ListIssueReactions lists all reactions for an issue.

GET /repos/{owner}/{repo}/issues/{index}/reactions

func (*Client) ListIssueRelatedBranches

func (c *Client) ListIssueRelatedBranches(ctx context.Context, owner, repo string, number int) ([]*IssueRelatedBranch, error)

ListIssueRelatedBranches lists all branches related to an issue.

GET /repos/{owner}/{repo}/issues/{number}/related-branches

func (*Client) ListIssueSubscribers

func (c *Client) ListIssueSubscribers(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*IssueSubscriber, error)

ListIssueSubscribers lists all subscribers of an issue.

GET /repos/{owner}/{repo}/issues/{index}/subscribers

func (*Client) ListIssueTemplates

func (c *Client) ListIssueTemplates(ctx context.Context, owner, repo string) ([]*IssueTemplate, error)

ListIssueTemplates lists all issue templates of a repository.

GET /repos/{owner}/{repo}/issue_templates

func (*Client) ListIssueTimelineEvents

func (c *Client) ListIssueTimelineEvents(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*IssueTimelineEvent, error)

ListIssueTimelineEvents lists all timeline events for an issue.

GET /repos/{owner}/{repo}/issues/{index}/timeline

func (*Client) ListIssueUserReactions

func (c *Client) ListIssueUserReactions(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*IssueUserReaction, error)

ListIssueUserReactions lists user reactions for an issue.

GET /repos/{owner}/{repo}/issues/{number}/user-reactions

func (*Client) ListIssues

func (c *Client) ListIssues(ctx context.Context, owner, repo string, opts ListIssuesOptions) ([]*Issue, error)

func (*Client) ListKanbanBoardItems

func (c *Client) ListKanbanBoardItems(ctx context.Context, org string, boardID int64, opts ListOptions) ([]*KanbanBoardItem, error)

ListKanbanBoardItems lists all items on a kanban board.

GET /orgs/{org}/kanban/boards/{id}/items

func (*Client) ListKanbanBoards

func (c *Client) ListKanbanBoards(ctx context.Context, org string, opts ListOptions) ([]*KanbanBoard, error)

ListKanbanBoards lists all kanban boards for an organization.

GET /orgs/{org}/kanban/boards

func (*Client) ListLabelTemplates

func (c *Client) ListLabelTemplates(ctx context.Context) ([]string, error)

ListLabelTemplates lists all available label templates.

GET /label/templates

func (*Client) ListLicenseTemplates

func (c *Client) ListLicenseTemplates(ctx context.Context) ([]*LicenseTemplate, error)

ListLicenseTemplates lists all available license templates.

GET /licenses

func (*Client) ListMilestones

func (c *Client) ListMilestones(ctx context.Context, owner, repo string) ([]*Milestone, error)

func (*Client) ListMilestonesWithOptions

func (c *Client) ListMilestonesWithOptions(ctx context.Context, owner, repo string, opts ListMilestonesOptions) ([]*Milestone, error)

func (*Client) ListNotifications

func (c *Client) ListNotifications(ctx context.Context) ([]*Notification, error)

func (*Client) ListNotificationsWithOptions

func (c *Client) ListNotificationsWithOptions(ctx context.Context, opts ListNotificationsOptions) ([]*NotificationThread, error)

ListNotificationsWithOptions lists the current user's notifications with options.

GET /notifications

func (*Client) ListOrgBlockedUsers

func (c *Client) ListOrgBlockedUsers(ctx context.Context, org string, opts ListOptions) ([]*User, error)

ListOrgBlockedUsers lists all blocked users of an organization.

GET /orgs/{org}/blocks

func (*Client) ListOrgCustomizedRoles

func (c *Client) ListOrgCustomizedRoles(ctx context.Context, org string) ([]*OrgCustomizedRole, error)

ListOrgCustomizedRoles lists all customized roles for an organization.

GET /org/{org}/customized-roles

func (*Client) ListOrgDiscussionCommentReplies

func (c *Client) ListOrgDiscussionCommentReplies(ctx context.Context, org string, number int, commentID int64, opts ListOptions) ([]*OrgDiscussionCommentReply, error)

ListOrgDiscussionCommentReplies lists all replies for an organization discussion comment.

GET /orgs/{org}/discuss/{number}/comment/{comment_id}/reply

func (*Client) ListOrgDiscussionComments

func (c *Client) ListOrgDiscussionComments(ctx context.Context, org string, number int, opts ListOptions) ([]*OrgDiscussionComment, error)

ListOrgDiscussionComments lists all comments for an organization discussion.

GET /orgs/{org}/discuss/{number}/comment

func (*Client) ListOrgDiscussions

func (c *Client) ListOrgDiscussions(ctx context.Context, org string, opts ListOptions) ([]*OrgDiscussion, error)

ListOrgDiscussions lists all discussions for an organization.

GET /orgs/{org}/discuss

func (*Client) ListOrgFollowers

func (c *Client) ListOrgFollowers(ctx context.Context, org string, opts ListOptions) ([]*OrgFollowers, error)

func (*Client) ListOrgIssues

func (c *Client) ListOrgIssues(ctx context.Context, org string, opts ListUserIssuesOptions) ([]*Issue, error)

func (*Client) ListOrgLabels

func (c *Client) ListOrgLabels(ctx context.Context, org string, opts ListOptions) ([]*OrgLabel, error)

ListOrgLabels lists all labels of an organization.

GET /orgs/{org}/labels

func (*Client) ListOrgMembers

func (c *Client) ListOrgMembers(ctx context.Context, org, role string, opts ListOptions) ([]*OrgMember, error)

func (*Client) ListOrgPublicMembers

func (c *Client) ListOrgPublicMembers(ctx context.Context, org string, opts ListOptions) ([]*User, error)

ListOrgPublicMembers lists all public members of an organization.

GET /orgs/{org}/public_members

func (*Client) ListOrgPullRequests

func (c *Client) ListOrgPullRequests(ctx context.Context, org string, opts ListEnterprisePRsOptions) ([]*PullRequest, error)

func (*Client) ListOrgRepositories

func (c *Client) ListOrgRepositories(ctx context.Context, org, repoType string, opts ListOptions) ([]*Repository, error)

func (*Client) ListOrgRunnerGroups

func (c *Client) ListOrgRunnerGroups(ctx context.Context, org string, opts ListOptions) ([]*RunnerGroup, error)

ListOrgRunnerGroups lists all runner groups for an organization.

GET /orgs/{org}/actions/runner-groups

func (*Client) ListOrgTeams

func (c *Client) ListOrgTeams(ctx context.Context, org string, opts ListOptions) ([]*Team, error)

ListOrgTeams lists all teams in an organization.

GET /orgs/{org}/teams

func (*Client) ListOrgWebhooks

func (c *Client) ListOrgWebhooks(ctx context.Context, org string, opts ListOptions) ([]*OrgWebhook, error)

ListOrgWebhooks lists all webhooks of an organization.

GET /orgs/{org}/hooks

func (*Client) ListOrganizationMembers

func (c *Client) ListOrganizationMembers(ctx context.Context, org string) ([]*Member, error)

func (*Client) ListOrganizations

func (c *Client) ListOrganizations(ctx context.Context) ([]*Organization, error)

func (*Client) ListOrganizationsWithOptions

func (c *Client) ListOrganizationsWithOptions(ctx context.Context, admin bool, opts ListOptions) ([]*Organization, error)

func (*Client) ListPendingRepoInvitations

func (c *Client) ListPendingRepoInvitations(ctx context.Context, opts ListOptions) ([]*RepoInvitation, error)

ListPendingRepoInvitations lists pending repository invitations for the authenticated user.

GET /user/repository_invitations

func (*Client) ListProtectedTags

func (c *Client) ListProtectedTags(ctx context.Context, owner, repo string, opts ListOptions) ([]*ProtectedTag, error)

ListProtectedTags lists all protected tag rules for a repository.

GET /repos/{owner}/{repo}/protected-tags

func (*Client) ListPullRequestAvailableReviewers

func (c *Client) ListPullRequestAvailableReviewers(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*User, error)

ListPullRequestAvailableReviewers lists users available as approval reviewers for a pull request.

GET /repos/{owner}/{repo}/pulls/{number}/option-approval-reviewers

func (*Client) ListPullRequestAvailableTesters

func (c *Client) ListPullRequestAvailableTesters(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*User, error)

ListPullRequestAvailableTesters lists users available as testers for a pull request.

GET /repos/{owner}/{repo}/pulls/{number}/option-approval-testers

func (*Client) ListPullRequestCommentModifyHistory

func (c *Client) ListPullRequestCommentModifyHistory(ctx context.Context, owner, repo string, commentID int64, opts ListOptions) ([]*ModifyHistoryEntry, error)

ListPullRequestCommentModifyHistory lists the modification history of a PR comment.

GET /repos/{owner}/{repo}/pulls/comment/{comment_id}/modify-history

func (*Client) ListPullRequestCommentReactions

func (c *Client) ListPullRequestCommentReactions(ctx context.Context, owner, repo string, commentID int64, opts ListOptions) ([]*Reaction, error)

ListPullRequestCommentReactions lists all reactions for a pull request comment.

GET /repos/{owner}/{repo}/pulls/comments/{id}/reactions

func (*Client) ListPullRequestCommentUserReactions

func (c *Client) ListPullRequestCommentUserReactions(ctx context.Context, owner, repo string, commentID int64, opts ListOptions) ([]*IssueUserReaction, error)

ListPullRequestCommentUserReactions lists user reactions for a PR comment.

GET /repos/{owner}/{repo}/pulls/comment/{comment_id}/user-reactions

func (*Client) ListPullRequestComments

func (c *Client) ListPullRequestComments(ctx context.Context, owner, repo string, number int) ([]*PullRequestComment, error)

func (*Client) ListPullRequestCommits

func (c *Client) ListPullRequestCommits(ctx context.Context, owner, repo string, number int) ([]*Commit, error)

func (*Client) ListPullRequestFiles

func (c *Client) ListPullRequestFiles(ctx context.Context, owner, repo string, number int) ([]*PullRequestFile, error)

func (*Client) ListPullRequestFilesJSON

func (c *Client) ListPullRequestFilesJSON(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*PullRequestFileChange, error)

ListPullRequestFilesJSON lists files changed in a pull request in JSON format.

GET /repos/{owner}/{repo}/pulls/{number}/files.json

func (*Client) ListPullRequestLabels

func (c *Client) ListPullRequestLabels(ctx context.Context, owner, repo string, number int) ([]*Label, error)

func (*Client) ListPullRequestMergeTemplates

func (c *Client) ListPullRequestMergeTemplates(ctx context.Context, owner, repo string) ([]*PRMergeTemplate, error)

ListPullRequestMergeTemplates lists all pull request merge templates of a repository.

GET /repos/{owner}/{repo}/merge_templates

func (*Client) ListPullRequestModifyHistory

func (c *Client) ListPullRequestModifyHistory(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*ModifyHistoryEntry, error)

ListPullRequestModifyHistory lists the modification history of a pull request.

GET /repos/{owner}/{repo}/pulls/{number}/modify-history

func (*Client) ListPullRequestReviewers

func (c *Client) ListPullRequestReviewers(ctx context.Context, owner, repo string, number int) ([]*Reviewer, error)

ListPullRequestReviewers lists all reviewers requested for a pull request.

GET /repos/{owner}/{repo}/pulls/{index}/requested_reviewers

func (*Client) ListPullRequestReviews

func (c *Client) ListPullRequestReviews(ctx context.Context, owner, repo string, number int) ([]*PullRequestReview, error)

func (*Client) ListPullRequestUserReactions

func (c *Client) ListPullRequestUserReactions(ctx context.Context, owner, repo string, number int, opts ListOptions) ([]*IssueUserReaction, error)

ListPullRequestUserReactions lists user reactions for a pull request.

GET /repos/{owner}/{repo}/pulls/{number}/user-reactions

func (*Client) ListPullRequests

func (c *Client) ListPullRequests(ctx context.Context, owner, repo string, opts ListPullRequestsOptions) ([]*PullRequest, error)

func (*Client) ListPushRemoteMirrors

func (c *Client) ListPushRemoteMirrors(ctx context.Context, owner, repo string, opts ListOptions) ([]*RemoteMirror, error)

ListPushRemoteMirrors lists all push remote mirrors of a repository.

GET /repos/{owner}/{repo}/push-remote-mirrors

func (*Client) ListReleaseAssets

func (c *Client) ListReleaseAssets(ctx context.Context, owner, repo string, releaseID int64, opts ListOptions) ([]*ReleaseAsset, error)

ListReleaseAssets lists all assets for a release.

GET /repos/{owner}/{repo}/releases/{id}/assets

func (*Client) ListReleases

func (c *Client) ListReleases(ctx context.Context, owner, repo string) ([]*Release, error)

func (*Client) ListRepoAllIssueComments

func (c *Client) ListRepoAllIssueComments(ctx context.Context, owner, repo string, opts ListOptions) ([]*IssueComment, error)

func (*Client) ListRepoAssignees

func (c *Client) ListRepoAssignees(ctx context.Context, owner, repo string, opts ListOptions) ([]*User, error)

ListRepoAssignees lists all available assignees for issues in a repository.

GET /repos/{owner}/{repo}/assignees

func (*Client) ListRepoBranchesPaginated

func (c *Client) ListRepoBranchesPaginated(ctx context.Context, owner, repo string, opts ListOptions) ([]*RepoBranchInfo, error)

ListRepoBranches lists all branches of a repository with pagination.

GET /repos/{owner}/{repo}/branches

func (*Client) ListRepoCLAs

func (c *Client) ListRepoCLAs(ctx context.Context, owner, repo string) ([]*RepoCLA, error)

ListRepoCLAs lists all CLAs for a repository.

GET /repos/{owner}/{repo}/clas

func (*Client) ListRepoCommitComments

func (c *Client) ListRepoCommitComments(ctx context.Context, owner, repo string, opts ListOptions) ([]*CommitComment, error)

ListRepoCommitComments lists all commit comments for a repository.

GET /repos/{owner}/{repo}/comments

func (*Client) ListRepoEvents

func (c *Client) ListRepoEvents(ctx context.Context, owner, repo string, opts ListOptions) ([]*RepoEvent, error)

func (*Client) ListRepoHostRunners

func (c *Client) ListRepoHostRunners(ctx context.Context, owner, repo string, opts ListOptions) ([]*ActionRunner, error)

ListRepoHostRunners lists all host runners for a repository.

GET /repos/{owner}/{repo}/actions/runners/host

func (*Client) ListRepoK8SRunners

func (c *Client) ListRepoK8SRunners(ctx context.Context, owner, repo string, opts ListOptions) ([]*ActionRunner, error)

ListRepoK8SRunners lists all K8S runners for a repository.

GET /repos/{owner}/{repo}/actions/runners/k8s

func (*Client) ListRepoNotifications

func (c *Client) ListRepoNotifications(ctx context.Context, owner, repo string, opts ListNotificationsOptions) ([]*NotificationThread, error)

ListRepoNotifications lists notifications for a repository.

GET /repos/{owner}/{repo}/notifications

func (*Client) ListRepoReviewers

func (c *Client) ListRepoReviewers(ctx context.Context, owner, repo string, opts ListOptions) ([]*Reviewer, error)

ListRepoReviewers lists all available reviewers for a repository.

GET /repos/{owner}/{repo}/reviewers

func (*Client) ListRepoSharedHostRunners

func (c *Client) ListRepoSharedHostRunners(ctx context.Context, owner, repo string, opts ListOptions) ([]*ActionRunner, error)

ListRepoSharedHostRunners lists all shared host runners for a repository.

GET /repos/{owner}/{repo}/actions/runners/shared-host

func (*Client) ListRepoSharedK8SRunners

func (c *Client) ListRepoSharedK8SRunners(ctx context.Context, owner, repo string, opts ListOptions) ([]*ActionRunner, error)

ListRepoSharedK8SRunners lists all shared K8S runners for a repository.

GET /repos/{owner}/{repo}/actions/runners/shared-k8s

func (*Client) ListRepositories

func (c *Client) ListRepositories(ctx context.Context, opts ListRepositoriesOptions) ([]*Repository, error)

func (*Client) ListRepositoryContents

func (c *Client) ListRepositoryContents(ctx context.Context, owner, repo, path, ref string) ([]*RepositoryContent, error)

func (*Client) ListRepositoryTopics

func (c *Client) ListRepositoryTopics(ctx context.Context, owner, repo string) ([]string, error)

ListRepositoryTopics lists all topics of a repository.

GET /repos/{owner}/{repo}/topics

func (*Client) ListRunnerGroupHostRunners

func (c *Client) ListRunnerGroupHostRunners(ctx context.Context, org string, groupID int64, opts ListOptions) ([]*ActionRunner, error)

ListRunnerGroupHostRunners lists all host runners in a runner group.

GET /orgs/{org}/actions/runner-groups/{id}/host-runners

func (*Client) ListRunnerGroupK8SRunners

func (c *Client) ListRunnerGroupK8SRunners(ctx context.Context, org string, groupID int64, opts ListOptions) ([]*ActionRunner, error)

ListRunnerGroupK8SRunners lists all K8S runners in a runner group.

GET /orgs/{org}/actions/runner-groups/{id}/k8s-runners

func (*Client) ListRunnerGroupRepos

func (c *Client) ListRunnerGroupRepos(ctx context.Context, org string, groupID int64, opts ListOptions) ([]*Repository, error)

ListRunnerGroupRepos lists all repositories that have access to a runner group.

GET /orgs/{org}/actions/runner-groups/{id}/repos

func (*Client) ListSSHKeys

func (c *Client) ListSSHKeys(ctx context.Context, opts ListOptions) ([]*SSHKey, error)

func (*Client) ListStargazers

func (c *Client) ListStargazers(ctx context.Context, owner, repo string, opts ListOptions) ([]*User, error)

func (*Client) ListStarredRepositories

func (c *Client) ListStarredRepositories(ctx context.Context, opts ListStarredReposOptions) ([]*Repository, error)

func (*Client) ListTags

func (c *Client) ListTags(ctx context.Context, owner, repo string) ([]*Tag, error)

func (*Client) ListTagsWithOptions

func (c *Client) ListTagsWithOptions(ctx context.Context, owner, repo string, opts ListOptions) ([]*Tag, error)

ListTagsWithOptions lists all tags with pagination options.

GET /repos/{owner}/{repo}/tags

func (*Client) ListTeamMembers

func (c *Client) ListTeamMembers(ctx context.Context, teamID int64, opts ListOptions) ([]*TeamMember, error)

ListTeamMembers lists all members of a team.

GET /teams/{team_id}/members

func (*Client) ListTeamRepositories

func (c *Client) ListTeamRepositories(ctx context.Context, teamID int64, opts ListOptions) ([]*Repository, error)

ListTeamRepositories lists all repositories of a team.

GET /teams/{team_id}/repos

func (*Client) ListUserFollowers

func (c *Client) ListUserFollowers(ctx context.Context, username string, opts ListOptions) ([]*User, error)

ListUserFollowers lists the followers of a user.

GET /users/{username}/followers

func (*Client) ListUserFollowing

func (c *Client) ListUserFollowing(ctx context.Context, username string, opts ListOptions) ([]*User, error)

ListUserFollowing lists the users that a user is following.

GET /users/{username}/following

func (*Client) ListUserIssues

func (c *Client) ListUserIssues(ctx context.Context, opts ListUserIssuesOptions) ([]*Issue, error)

func (*Client) ListUserOrganizations

func (c *Client) ListUserOrganizations(ctx context.Context, username string, opts ListOptions) ([]*Organization, error)

func (*Client) ListUserPullRequests

func (c *Client) ListUserPullRequests(ctx context.Context, opts ListPullRequestsOptions) ([]*PullRequest, error)

ListUserPullRequests lists pull requests for the authenticated user.

GET /users/merge-requests

func (*Client) ListUserRepositories

func (c *Client) ListUserRepositories(ctx context.Context, username string, opts ListOptions) ([]*Repository, error)

ListUserRepositories lists a user's public repositories.

GET /users/{username}/repos

func (*Client) ListUserWatchedRepositories

func (c *Client) ListUserWatchedRepositories(ctx context.Context, username string, opts ListOptions) ([]*Repository, error)

ListUserWatchedRepositories lists repositories watched by a user.

GET /users/{username}/subscriptions

func (*Client) ListWatchers

func (c *Client) ListWatchers(ctx context.Context, owner, repo string, opts ListOptions) ([]*User, error)

func (*Client) ListWebhooks

func (c *Client) ListWebhooks(ctx context.Context, owner, repo string) ([]*Webhook, error)

func (*Client) ListWikiPages

func (c *Client) ListWikiPages(ctx context.Context, owner, repo string, opts ListOptions) ([]*WikiPage, error)

ListWikiPages lists all wiki pages of a repository.

GET /repos/{owner}/{repo}/wiki/pages

func (*Client) MarkNotificationThreadAsRead

func (c *Client) MarkNotificationThreadAsRead(ctx context.Context, threadID int64) error

MarkNotificationThreadAsRead marks a single notification thread as read.

PATCH /notifications/threads/{id}

func (*Client) MarkNotificationsAsRead

func (c *Client) MarkNotificationsAsRead(ctx context.Context, opts MarkNotificationsOptions) error

MarkNotificationsAsRead marks all notifications as read.

PUT /notifications

func (*Client) MarkRepoNotificationsAsRead

func (c *Client) MarkRepoNotificationsAsRead(ctx context.Context, owner, repo string, opts MarkNotificationsOptions) error

MarkRepoNotificationsAsRead marks all notifications for a repository as read.

PUT /repos/{owner}/{repo}/notifications

func (*Client) MergePullRequest

func (c *Client) MergePullRequest(ctx context.Context, owner, repo string, number int, opts *MergePullRequestOptions) error

func (*Client) ParseIssueEvent

func (c *Client) ParseIssueEvent(payload []byte) (*IssueWebhookEvent, error)

func (*Client) ParseNoteEvent

func (c *Client) ParseNoteEvent(payload []byte) (*NoteWebhookEvent, error)

func (*Client) ParsePullRequestEvent

func (c *Client) ParsePullRequestEvent(payload []byte) (*PullRequestWebhookEvent, error)

func (*Client) ParsePushEvent

func (c *Client) ParsePushEvent(payload []byte) (*PushEvent, error)

func (*Client) ParseTagPushEvent

func (c *Client) ParseTagPushEvent(payload []byte) (*TagPushEvent, error)

func (*Client) PublicizeOrgMembership

func (c *Client) PublicizeOrgMembership(ctx context.Context, org, username string) error

PublicizeOrgMembership makes the authenticated user's membership public.

PUT /orgs/{org}/public_members/{username}

func (*Client) RefreshPullRequestCommentPosition

func (c *Client) RefreshPullRequestCommentPosition(ctx context.Context, owner, repo string, number int) error

RefreshPullRequestCommentPosition refreshes the position/expired status of PR comments.

POST /repos/{owner}/{repo}/pulls/{number}/refresh-position

func (*Client) RemoveAllIssueLabels

func (c *Client) RemoveAllIssueLabels(ctx context.Context, owner, repo string, number int) error

func (*Client) RemoveCollaborator

func (c *Client) RemoveCollaborator(ctx context.Context, owner, repo, username string) error

RemoveCollaborator removes a collaborator from a repository.

DELETE /repos/{owner}/{repo}/collaborators/{username}

func (*Client) RemoveFromKanbanBoard

func (c *Client) RemoveFromKanbanBoard(ctx context.Context, org string, boardID, itemID int64) error

RemoveFromKanbanBoard removes an item from a kanban board.

DELETE /orgs/{org}/kanban/boards/{id}/items/{item_id}

func (*Client) RemoveIssueAssignees

func (c *Client) RemoveIssueAssignees(ctx context.Context, owner, repo string, number int, assignees []string) (*Issue, error)

RemoveIssueAssignees removes assignees from an issue.

DELETE /repos/{owner}/{repo}/issues/{index}/assignees

func (*Client) RemoveIssueLabel

func (c *Client) RemoveIssueLabel(ctx context.Context, owner, repo string, number int, name string) error

func (*Client) RemoveOrgMember

func (c *Client) RemoveOrgMember(ctx context.Context, org, username string) error

func (*Client) RemovePullRequestLabel

func (c *Client) RemovePullRequestLabel(ctx context.Context, owner, repo string, number int, name string) error

func (*Client) RemovePullRequestReviewer

func (c *Client) RemovePullRequestReviewer(ctx context.Context, owner, repo string, number int, opts PullRequestReviewRequest) error

RemovePullRequestReviewer removes a requested reviewer from a pull request.

DELETE /repos/{owner}/{repo}/pulls/{index}/requested_reviewers

func (*Client) RemoveTeamMember

func (c *Client) RemoveTeamMember(ctx context.Context, teamID int64, username string) error

RemoveTeamMember removes a member from a team.

DELETE /teams/{team_id}/members/{username}

func (*Client) RemoveTeamRepository

func (c *Client) RemoveTeamRepository(ctx context.Context, teamID int64, org, repo string) error

RemoveTeamRepository removes a repository from a team.

DELETE /teams/{team_id}/repos/{org}/{repo}

func (*Client) RenderMarkdown

func (c *Client) RenderMarkdown(ctx context.Context, text, mode, context string) (string, error)

RenderMarkdown renders a markdown document as HTML.

POST /markdown

func (*Client) RenderMarkdownRaw

func (c *Client) RenderMarkdownRaw(ctx context.Context, markdown string) (string, error)

RenderMarkdownRaw renders raw markdown as HTML.

POST /markdown/raw

func (*Client) ReopenIssue

func (c *Client) ReopenIssue(ctx context.Context, owner, repo string, number int) (*Issue, error)

func (*Client) ReopenPullRequest

func (c *Client) ReopenPullRequest(ctx context.Context, owner, repo string, number int) (*PullRequest, error)

func (*Client) ReplaceIssueLabels

func (c *Client) ReplaceIssueLabels(ctx context.Context, owner, repo string, number int, labels []string) error

func (*Client) ReplacePullRequestLabels

func (c *Client) ReplacePullRequestLabels(ctx context.Context, owner, repo string, number int, labels []string) error

func (*Client) ReplyPullRequestComment

func (c *Client) ReplyPullRequestComment(ctx context.Context, owner, repo string, number int, discussionID string, body string) (*PRDiscussionComment, error)

ReplyPullRequestComment replies to a pull request review comment.

POST /repos/{owner}/{repo}/pulls/{number}/discussions/{discussions_id}/comments

func (*Client) RequestPullRequestReviewers

func (c *Client) RequestPullRequestReviewers(ctx context.Context, owner, repo string, number int, opts PullRequestReviewRequest) error

RequestPullRequestReviewers requests reviewers for a pull request.

POST /repos/{owner}/{repo}/pulls/{index}/requested_reviewers

func (*Client) ResetPullRequestReviewStatus

func (c *Client) ResetPullRequestReviewStatus(ctx context.Context, owner, repo string, number int, resetAll bool) error

func (*Client) ResetPullRequestTestStatus

func (c *Client) ResetPullRequestTestStatus(ctx context.Context, owner, repo string, number int, resetAll bool) error

func (*Client) ResolvePullRequestDiscussion

func (c *Client) ResolvePullRequestDiscussion(ctx context.Context, owner, repo string, number int, discussionID string, resolved bool) error

ResolvePullRequestDiscussion resolves or unresolves a review discussion.

PUT /repos/{owner}/{repo}/pulls/{number}/comments/discussions/{id}

func (*Client) RunActionWorkflow

func (c *Client) RunActionWorkflow(ctx context.Context, owner, repo string, opts RunActionWorkflowOptions) error

RunActionWorkflow manually triggers a workflow run.

POST /repos/{owner}/{repo}/actions/run

func (*Client) SearchIssues

func (c *Client) SearchIssues(ctx context.Context, opts SearchIssuesOptions) ([]*SearchIssueResult, error)

func (*Client) SearchRepositories

func (c *Client) SearchRepositories(ctx context.Context, opts SearchRepositoriesOptions) ([]*SearchRepositoryResult, error)

func (*Client) SearchUsers

func (c *Client) SearchUsers(ctx context.Context, opts SearchUsersOptions) ([]*SearchUserResult, error)

func (*Client) SetAuthStyle

func (c *Client) SetAuthStyle(style AuthStyle)

SetAuthStyle sets the authentication style for the client.

func (*Client) SetBaseURL

func (c *Client) SetBaseURL(baseURL string)

SetBaseURL sets a custom base URL for the client. This is useful for switching to a private GitCode deployment after construction.

func (*Client) SetHTTPClient

func (c *Client) SetHTTPClient(client *http.Client)

SetHTTPClient sets a custom HTTP client.

func (*Client) SetIssueRelatedBranches

func (c *Client) SetIssueRelatedBranches(ctx context.Context, owner, repo string, number int, branches []string) error

SetIssueRelatedBranches sets the branches related to an issue.

PUT /repos/{owner}/{repo}/issues/{number}/related-branches

func (*Client) SetModuleSetting

func (c *Client) SetModuleSetting(ctx context.Context, owner, repo string, setting ModuleSetting) error

func (*Client) SetRepoVisibility

func (c *Client) SetRepoVisibility(ctx context.Context, owner, repo string, private bool) (*Repository, error)

SetRepoVisibility sets a repository's visibility (public/private).

PATCH /repos/{owner}/{repo}

func (*Client) SetRetryPolicy

func (c *Client) SetRetryPolicy(policy RetryPolicy)

SetRetryPolicy sets the retry policy for the client.

func (*Client) StarRepository

func (c *Client) StarRepository(ctx context.Context, owner, repo string) error

func (*Client) SubmitPullRequestReview

func (c *Client) SubmitPullRequestReview(ctx context.Context, owner, repo string, number int, reviewID int64, body, event string) (*PullRequestReview, error)

SubmitPullRequestReview submits a pull request review.

POST /repos/{owner}/{repo}/pulls/{index}/reviews/{id}

func (*Client) SubscribeToIssue

func (c *Client) SubscribeToIssue(ctx context.Context, owner, repo string, number int, username string) error

SubscribeToIssue subscribes the authenticated user to an issue.

PUT /repos/{owner}/{repo}/issues/{index}/subscribers/{username}

func (*Client) SyncForkRepository

func (c *Client) SyncForkRepository(ctx context.Context, owner, repo string) error

SyncForkRepository syncs a forked repository with its upstream.

PUT /repos/{owner}/{repo}/sync-repo

func (*Client) TestWebhook

func (c *Client) TestWebhook(ctx context.Context, owner, repo string, hookID int64) error

func (*Client) TransferRepository

func (c *Client) TransferRepository(ctx context.Context, owner, repo string, opts TransferRepoOptions) error

func (*Client) TransferToOrg

func (c *Client) TransferToOrg(ctx context.Context, org, repo, newOwner string) error

func (*Client) UnassignPullRequestApprovalReviewers

func (c *Client) UnassignPullRequestApprovalReviewers(ctx context.Context, owner, repo string, number int, reviewers string) error

UnassignPullRequestApprovalReviewers removes approval reviewers from a pull request.

DELETE /repos/{owner}/{repo}/pulls/{number}/approval-reviewers

func (*Client) UnassignPullRequestReviewers

func (c *Client) UnassignPullRequestReviewers(ctx context.Context, owner, repo string, number int, assignees string) error

func (*Client) UnassignPullRequestTesters

func (c *Client) UnassignPullRequestTesters(ctx context.Context, owner, repo string, number int, testers string) error

UnassignPullRequestTesters removes testers from a pull request.

DELETE /repos/{owner}/{repo}/pulls/{number}/testers

func (*Client) UnblockOrgUser

func (c *Client) UnblockOrgUser(ctx context.Context, org, username string) error

UnblockOrgUser unblocks a user from an organization.

DELETE /orgs/{org}/blocks/{username}

func (*Client) UnfollowUser

func (c *Client) UnfollowUser(ctx context.Context, username string) error

UnfollowUser unfollows a user.

DELETE /user/following/{username}

func (*Client) UnlinkPullRequestIssue

func (c *Client) UnlinkPullRequestIssue(ctx context.Context, owner, repo string, number int, issueNumber int) error

UnlinkPullRequestIssue removes an issue link from a pull request.

DELETE /repos/{owner}/{repo}/pulls/{number}/issues

func (*Client) UnstarRepository

func (c *Client) UnstarRepository(ctx context.Context, owner, repo string) error

func (*Client) UnsubscribeFromIssue

func (c *Client) UnsubscribeFromIssue(ctx context.Context, owner, repo string, number int, username string) error

UnsubscribeFromIssue unsubscribes the authenticated user from an issue.

DELETE /repos/{owner}/{repo}/issues/{index}/subscribers/{username}

func (*Client) UpdateBranchProtection

func (c *Client) UpdateBranchProtection(ctx context.Context, owner, repo, wildcard string, opts UpdateBranchProtectionOptions) error

func (*Client) UpdateCommitComment

func (c *Client) UpdateCommitComment(ctx context.Context, owner, repo string, commentID int64, opts UpdateCommitCommentOptions) (*CommitComment, error)

UpdateCommitComment updates a commit comment.

PATCH /repos/{owner}/{repo}/comments/{id}

func (*Client) UpdateCurrentUser

func (c *Client) UpdateCurrentUser(ctx context.Context, opts UpdateCurrentUserOptions) (*User, error)

UpdateCurrentUser updates the authenticated user's profile.

PATCH /user

func (*Client) UpdateEnterpriseLabel

func (c *Client) UpdateEnterpriseLabel(ctx context.Context, enterprise string, labelID int64, opts UpdateEnterpriseLabelOptions) (*EnterpriseLabel, error)

UpdateEnterpriseLabel updates an enterprise label.

PATCH /enterprises/{enterprise}/labels/{id}

func (*Client) UpdateEnterpriseMember

func (c *Client) UpdateEnterpriseMember(ctx context.Context, enterprise, username string, opts UpdateEnterpriseMemberOptions) (*EnterpriseMember, error)

func (*Client) UpdateEnterpriseMilestone

func (c *Client) UpdateEnterpriseMilestone(ctx context.Context, enterprise string, milestoneID int64, opts UpdateEnterpriseMilestoneOptions) (*EnterpriseMilestone, error)

UpdateEnterpriseMilestone updates an enterprise milestone.

PATCH /enterprises/{enterprise}/milestones/{id}

func (*Client) UpdateFile

func (c *Client) UpdateFile(ctx context.Context, owner, repo, path string, opts UpdateFileOptions) (*FileResult, error)

func (*Client) UpdateGitReference

func (c *Client) UpdateGitReference(ctx context.Context, owner, repo, ref string, opts UpdateReferenceOptions) (*GitReference, error)

UpdateGitReference updates a reference.

PATCH /repos/{owner}/{repo}/git/refs/{ref}

func (*Client) UpdateIssue

func (c *Client) UpdateIssue(ctx context.Context, owner, repo string, number int, opts UpdateIssueOptions) (*Issue, error)

func (*Client) UpdateIssueComment

func (c *Client) UpdateIssueComment(ctx context.Context, owner, repo string, commentID int64, body string) (*IssueComment, error)

func (*Client) UpdateIssueKanbanValues

func (c *Client) UpdateIssueKanbanValues(ctx context.Context, owner, repo string, number int, values []KanbanValue) error

UpdateIssueKanbanValues updates the kanban field values of an issue.

PUT /repos/{owner}/{repo}/issues/{number}/kanban-values

func (*Client) UpdateIssueLabel

func (c *Client) UpdateIssueLabel(ctx context.Context, owner, repo, originalName string, opts UpdateLabelOptions) (*Label, error)

func (*Client) UpdateKanbanBoardItem

func (c *Client) UpdateKanbanBoardItem(ctx context.Context, org string, boardID, itemID int64, opts UpdateKanbanBoardItemOptions) (*KanbanBoardItem, error)

UpdateKanbanBoardItem updates an item on a kanban board.

PUT /orgs/{org}/kanban/boards/{id}/items/{item_id}

func (*Client) UpdateKanbanBoardStatus

func (c *Client) UpdateKanbanBoardStatus(ctx context.Context, org string, boardID int64, opts UpdateKanbanBoardStatusOptions) error

UpdateKanbanBoardStatus updates the statuses of a kanban board.

PUT /orgs/{org}/kanban/boards/{id}/status

func (*Client) UpdateMilestone

func (c *Client) UpdateMilestone(ctx context.Context, owner, repo string, number int, opts UpdateMilestoneOptions) (*Milestone, error)

func (*Client) UpdateOrgLabel

func (c *Client) UpdateOrgLabel(ctx context.Context, org string, labelID int64, opts UpdateOrgLabelOptions) (*OrgLabel, error)

UpdateOrgLabel updates an organization label.

PATCH /orgs/{org}/labels/{id}

func (*Client) UpdateOrgRepoStatus

func (c *Client) UpdateOrgRepoStatus(ctx context.Context, org, repo, status string) error

func (*Client) UpdateOrgWebhook

func (c *Client) UpdateOrgWebhook(ctx context.Context, org string, hookID int64, opts UpdateOrgWebhookOptions) (*OrgWebhook, error)

UpdateOrgWebhook updates an organization webhook.

PATCH /orgs/{org}/hooks/{id}

func (*Client) UpdateOrganization

func (c *Client) UpdateOrganization(ctx context.Context, org string, opts UpdateOrgOptions) (*Organization, error)

func (*Client) UpdatePRSettings

func (c *Client) UpdatePRSettings(ctx context.Context, owner, repo string, settings *PRSettings) error

func (*Client) UpdateProtectedTag

func (c *Client) UpdateProtectedTag(ctx context.Context, owner, repo, tag string, opts UpdateProtectedTagOptions) (*ProtectedTag, error)

UpdateProtectedTag updates a protected tag rule.

PUT /repos/{owner}/{repo}/protected-tags/{tag}

func (*Client) UpdatePullRequest

func (c *Client) UpdatePullRequest(ctx context.Context, owner, repo string, number int, opts UpdatePullRequestOptions) (*PullRequest, error)

func (*Client) UpdatePullRequestComment

func (c *Client) UpdatePullRequestComment(ctx context.Context, owner, repo string, commentID string, body string) (*PullRequestComment, error)

func (*Client) UpdatePushConfig

func (c *Client) UpdatePushConfig(ctx context.Context, owner, repo string, config *PushConfig) error

func (*Client) UpdateRelease

func (c *Client) UpdateRelease(ctx context.Context, owner, repo string, releaseID int64, opts UpdateReleaseOptions) (*Release, error)

UpdateRelease updates a release.

PATCH /repos/{owner}/{repo}/releases/{id}

func (*Client) UpdateRepoMember

func (c *Client) UpdateRepoMember(ctx context.Context, owner, repo, username string, opts UpdateMemberOptions) error

func (*Client) UpdateRepoSettings

func (c *Client) UpdateRepoSettings(ctx context.Context, owner, repo string, opts *RepoSettings) (*RepoSettings, error)

func (*Client) UpdateRepository

func (c *Client) UpdateRepository(ctx context.Context, owner, repo string, opts UpdateRepositoryOptions) (*Repository, error)

func (*Client) UpdateRepositoryTopics

func (c *Client) UpdateRepositoryTopics(ctx context.Context, owner, repo string, topics []string) ([]string, error)

UpdateRepositoryTopics replaces all topics of a repository.

PUT /repos/{owner}/{repo}/topics

func (*Client) UpdateReviewerConfig

func (c *Client) UpdateReviewerConfig(ctx context.Context, owner, repo string, config ReviewerConfig) error

func (*Client) UpdateTeam

func (c *Client) UpdateTeam(ctx context.Context, teamID int64, opts UpdateTeamOptions) (*Team, error)

UpdateTeam updates a team.

PATCH /teams/{team_id}

func (*Client) UpdateWebhook

func (c *Client) UpdateWebhook(ctx context.Context, owner, repo string, hookID int64, opts UpdateWebhookOptions) (*Webhook, error)

func (*Client) UpdateWikiPage

func (c *Client) UpdateWikiPage(ctx context.Context, owner, repo, pageName string, opts UpdateWikiPageOptions) (*WikiPage, error)

UpdateWikiPage updates an existing wiki page.

PATCH /repos/{owner}/{repo}/wiki/page/{pageName}

func (*Client) UploadFile

func (c *Client) UploadFile(ctx context.Context, owner, repo string, filePath string) (*FileUploadResult, error)

func (*Client) UploadFileBytes

func (c *Client) UploadFileBytes(ctx context.Context, owner, repo, filename string, data []byte) (*FileUploadResult, error)

UploadFileBytes uploads file bytes using multipart form data.

func (*Client) UploadFileReader

func (c *Client) UploadFileReader(ctx context.Context, owner, repo, filename string, reader io.Reader) (*FileUploadResult, error)

UploadFileReader uploads a file using multipart form data. This is the proper way to upload file contents (as opposed to UploadFile which takes a path).

POST /repos/{owner}/{repo}/file/upload

func (*Client) UploadFileWithPath

func (c *Client) UploadFileWithPath(ctx context.Context, owner, repo, localPath string) (*FileUploadResult, error)

UploadFileWithPath uploads a file from a local path using multipart form data.

func (*Client) UploadImage

func (c *Client) UploadImage(ctx context.Context, owner, repo string, filePath string) (*FileUploadResult, error)

func (*Client) UploadImageReader

func (c *Client) UploadImageReader(ctx context.Context, owner, repo, filename string, reader io.Reader) (*FileUploadResult, error)

UploadImageReader uploads an image using multipart form data.

POST /repos/{owner}/{repo}/img/upload

func (*Client) ValidateWorkflowYAML

func (c *Client) ValidateWorkflowYAML(ctx context.Context, owner, repo string, yamlContent string) error

ValidateWorkflowYAML validates a workflow YAML file.

POST /repos/{owner}/{repo}/actions/validate

type CodeFrequencyEntry

type CodeFrequencyEntry []int

CodeFrequencyEntry represents a [additions, deletions, timestamp] tuple.

type Collaborator

type Collaborator struct {
	ID         int64  `json:"id"`
	Login      string `json:"login"`
	Name       string `json:"name"`
	AvatarURL  string `json:"avatar_url"`
	HTMLURL    string `json:"html_url"`
	Permission string `json:"permission,omitempty"`
}

Collaborator represents a repository collaborator.

type CollaboratorPermission

type CollaboratorPermission struct {
	Permission string `json:"permission"`
	RoleName   string `json:"role_name"`
}

CollaboratorPermission represents a collaborator's permission level.

type CombinedStatus

type CombinedStatus struct {
	SHA        string          `json:"sha"`
	TotalCount int             `json:"total_count"`
	Statuses   []*CommitStatus `json:"statuses"`
	Repository *Repository     `json:"repository"`
	CommitURL  string          `json:"commit_url"`
	URL        string          `json:"url"`
}

CombinedStatus represents the combined status for a commit.

type Commit

type Commit struct {
	SHA       string    `json:"sha"`
	Message   string    `json:"message"`
	Author    *User     `json:"author"`
	Committer *User     `json:"committer"`
	CreatedAt time.Time `json:"created_at"`
	URL       string    `json:"url,omitempty"`
}

type CommitActivity

type CommitActivity struct {
	Days  []int `json:"days"` // Sun-Sat
	Total int   `json:"total"`
	Week  int64 `json:"week"` // Unix timestamp
}

CommitActivity represents weekly commit activity.

type CommitAuthor

type CommitAuthor struct {
	Name  string `json:"name"`
	Email string `json:"email"`
	Date  string `json:"date"`
}

type CommitComment

type CommitComment struct {
	ID        int64     `json:"id"`
	Body      string    `json:"body"`
	Path      string    `json:"path,omitempty"`
	Position  int       `json:"position,omitempty"`
	Line      int       `json:"line,omitempty"`
	CommitID  string    `json:"commit_id"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
	HTMLURL   string    `json:"html_url,omitempty"`
}

CommitComment represents a comment on a commit.

type CommitComparison

type CommitComparison struct {
	TotalCommits int                `json:"total_commits"`
	AheadBy      int                `json:"ahead_by"`
	BehindBy     int                `json:"behind_by"`
	Commits      []*Commit          `json:"commits"`
	Files        []*PullRequestFile `json:"files"`
}

type CommitStatus

type CommitStatus struct {
	ID          int64     `json:"id"`
	SHA         string    `json:"sha"`
	State       string    `json:"state"` // pending, success, error, failure
	TargetURL   string    `json:"target_url"`
	Description string    `json:"description"`
	Context     string    `json:"context"`
	Creator     *User     `json:"creator"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

CommitStatus represents a commit status.

type ConflictError

type ConflictError struct {
	*APIError
}

ConflictError represents a 409 Conflict error.

func (*ConflictError) Error

func (e *ConflictError) Error() string

type Contributor

type Contributor struct {
	ID            string `json:"id"`
	Login         string `json:"login"`
	AvatarURL     string `json:"avatar_url"`
	Contributions int    `json:"contributions"`
}

type ContributorStatistic

type ContributorStatistic struct {
	Author *User `json:"author"`
	Total  int   `json:"total"`
	Weeks  []*struct {
		W string `json:"w"`
		A int    `json:"a"`
		D int    `json:"d"`
		C int    `json:"c"`
	} `json:"weeks"`
}

type CreateAnnotatedTagOptions

type CreateAnnotatedTagOptions struct {
	Tag     string `json:"tag"`
	Message string `json:"message"`
	Object  string `json:"object"` // SHA of the object to tag
	Type    string `json:"type"`   // commit, tree, blob
	Tagger  *struct {
		Name  string `json:"name"`
		Email string `json:"email"`
		Date  string `json:"date"`
	} `json:"tagger,omitempty"`
}

CreateAnnotatedTagOptions specifies options for creating an annotated tag.

type CreateBranchOptions

type CreateBranchOptions struct {
	BranchName string `json:"branch_name"`
	Refs       string `json:"refs"`
	Ref        string `json:"ref,omitempty"`
}

type CreateBranchProtectionOptions

type CreateBranchProtectionOptions struct {
	Name                     string `json:"name"`
	RequiredStatusChecks     bool   `json:"required_status_checks"`
	RequiredApprovingReviews int    `json:"required_approving_reviews"`
	AllowForcePushes         bool   `json:"allow_force_pushes"`
	AllowDeletions           bool   `json:"allow_deletions"`
}

type CreateCommitCommentOptions

type CreateCommitCommentOptions struct {
	Body     string `json:"body"`
	Path     string `json:"path,omitempty"`
	Position int    `json:"position,omitempty"`
	Line     int    `json:"line,omitempty"`
}

CreateCommitCommentOptions specifies options for creating a commit comment.

type CreateCommitStatusOptions

type CreateCommitStatusOptions struct {
	State       string `json:"state"` // pending, success, error, failure
	TargetURL   string `json:"target_url,omitempty"`
	Description string `json:"description,omitempty"`
	Context     string `json:"context,omitempty"`
}

CreateCommitStatusOptions specifies options for creating a commit status.

type CreateDeployKeyOptions

type CreateDeployKeyOptions struct {
	Title    string `json:"title"`
	Key      string `json:"key"`
	ReadOnly *bool  `json:"read_only,omitempty"`
}

CreateDeployKeyOptions specifies options for creating a deploy key.

type CreateEnterpriseLabelOptions

type CreateEnterpriseLabelOptions struct {
	Name  string `json:"name"`
	Color string `json:"color"`
}

CreateEnterpriseLabelOptions specifies options for creating an enterprise label.

type CreateEnterpriseMilestoneOptions

type CreateEnterpriseMilestoneOptions struct {
	Title       string `json:"title"`
	Description string `json:"description,omitempty"`
	DueOn       string `json:"due_on,omitempty"`
}

CreateEnterpriseMilestoneOptions specifies options for creating an enterprise milestone.

type CreateFileOptions

type CreateFileOptions struct {
	Message string `json:"message"`
	Content string `json:"content"`
	Branch  string `json:"branch,omitempty"`
}

type CreateIssueOptions

type CreateIssueOptions struct {
	Title     string   `json:"title"`
	Body      string   `json:"body,omitempty"`
	Assignee  string   `json:"assignee,omitempty"`
	Assignees []string `json:"assignees,omitempty"`
	Milestone int64    `json:"milestone,omitempty"`
	Labels    []string `json:"labels,omitempty"`
}

func (CreateIssueOptions) MarshalJSON

func (o CreateIssueOptions) MarshalJSON() ([]byte, error)

type CreateMilestoneOptions

type CreateMilestoneOptions struct {
	Title       string `json:"title"`
	Description string `json:"description,omitempty"`
	DueOn       string `json:"due_on"`
}

type CreateOrgLabelOptions

type CreateOrgLabelOptions struct {
	Name      string `json:"name"`
	Color     string `json:"color"`
	Exclusive *bool  `json:"exclusive,omitempty"`
	Template  *bool  `json:"template,omitempty"`
}

CreateOrgLabelOptions specifies options for creating an organization label.

type CreateOrgOptions

type CreateOrgOptions struct {
	Username    string `json:"username"`
	Name        string `json:"name,omitempty"`
	Description string `json:"description,omitempty"`
	Email       string `json:"email,omitempty"`
	Location    string `json:"location,omitempty"`
	Website     string `json:"website,omitempty"`
	Visibility  string `json:"visibility,omitempty"` // public, limited, private
}

CreateOrgOptions specifies options for creating an organization.

type CreateOrgRepoOptions

type CreateOrgRepoOptions struct {
	Name              string `json:"name"`
	Description       string `json:"description,omitempty"`
	Homepage          string `json:"homepage,omitempty"`
	HasIssues         *bool  `json:"has_issues,omitempty"`
	HasWiki           *bool  `json:"has_wiki,omitempty"`
	CanComment        *bool  `json:"can_comment,omitempty"`
	Public            *int   `json:"public,omitempty"`
	Private           *bool  `json:"private,omitempty"`
	AutoInit          *bool  `json:"auto_init,omitempty"`
	GitignoreTemplate string `json:"gitignore_template,omitempty"`
	LicenseTemplate   string `json:"license_template,omitempty"`
	Path              string `json:"path,omitempty"`
	DefaultBranch     string `json:"default_branch,omitempty"`
}

type CreateOrgWebhookOptions

type CreateOrgWebhookOptions struct {
	URL    string         `json:"url"`
	Secret string         `json:"secret,omitempty"`
	Events []string       `json:"events,omitempty"`
	Active *bool          `json:"active,omitempty"`
	Config *WebhookConfig `json:"config,omitempty"`
}

CreateOrgWebhookOptions specifies options for creating an organization webhook.

type CreateProtectedTagOptions

type CreateProtectedTagOptions struct {
	NamePattern string   `json:"name_pattern"`
	Owners      []string `json:"owners,omitempty"`
}

CreateProtectedTagOptions specifies options for creating a protected tag.

type CreatePullRequestInlineCommentOptions

type CreatePullRequestInlineCommentOptions struct {
	Body     string `json:"body"`
	Path     string `json:"path"`
	Line     int    `json:"line"`
	Side     string `json:"side"`
	CommitID string `json:"commit_id,omitempty"`
}

type CreatePullRequestOptions

type CreatePullRequestOptions struct {
	Title string `json:"title"`
	Body  string `json:"body,omitempty"`
	Head  string `json:"head"`
	Base  string `json:"base"`
	Draft bool   `json:"draft,omitempty"`
}

type CreateReactionOptions

type CreateReactionOptions struct {
	Content string `json:"content"`
}

CreateReactionOptions specifies options for creating a reaction.

type CreateReferenceOptions

type CreateReferenceOptions struct {
	Ref string `json:"ref"` // e.g. "refs/heads/feature" or "refs/tags/v1.0"
	SHA string `json:"sha"` // The SHA of the object to point to
}

CreateReferenceOptions specifies options for creating a reference.

type CreateReleaseOptions

type CreateReleaseOptions struct {
	TagName    string `json:"tag_name"`
	Target     string `json:"target_commitish,omitempty"`
	Title      string `json:"name"`
	Body       string `json:"body,omitempty"`
	Draft      bool   `json:"draft"`
	Prerelease bool   `json:"prerelease"`
}

type CreateRepositoryOptions

type CreateRepositoryOptions struct {
	Name        string `json:"name"`
	Description string `json:"description,omitempty"`
	Private     *bool  `json:"private,omitempty"`
	AutoInit    *bool  `json:"auto_init,omitempty"`
}

type CreateSSHKeyOptions

type CreateSSHKeyOptions struct {
	Title string `json:"title"`
	Key   string `json:"key"`
}

type CreateTagOptions

type CreateTagOptions struct {
	TagName string `json:"tag_name"`
	Target  string `json:"target"` // SHA
	Message string `json:"message,omitempty"`
}

CreateTagOptions specifies options for creating a lightweight tag.

type CreateTeamOptions

type CreateTeamOptions struct {
	Name             string `json:"name"`
	Description      string `json:"description,omitempty"`
	Permission       string `json:"permission,omitempty"` // none, read, write, admin
	Privacy          string `json:"privacy,omitempty"`    // closed, secret
	CanCreateOrgRepo *bool  `json:"can_create_org_repo,omitempty"`
	ParentTeamID     int64  `json:"parent_team_id,omitempty"`
}

CreateTeamOptions specifies options for creating a team.

type CreateWebhookOptions

type CreateWebhookOptions struct {
	URL    string   `json:"url"`
	Secret string   `json:"secret,omitempty"`
	Events []string `json:"events,omitempty"`
	Active *bool    `json:"active,omitempty"`
}

type CreateWikiPageOptions

type CreateWikiPageOptions struct {
	Title         string `json:"title"`
	ContentBase64 string `json:"content_base64,omitempty"` // base64 encoded content
	Message       string `json:"message,omitempty"`
}

CreateWikiPageOptions specifies options for creating a wiki page.

type CustomizedRole

type CustomizedRole struct {
	ID          int64  `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description"`
}

type DeleteFileOptions

type DeleteFileOptions struct {
	Message string `json:"message"`
	SHA     string `json:"sha"`
	Branch  string `json:"branch,omitempty"`
}

type DeployKey

type DeployKey struct {
	ID        int64     `json:"id"`
	Key       string    `json:"key"`
	Title     string    `json:"title"`
	CreatedAt time.Time `json:"created_at"`
	ReadOnly  bool      `json:"read_only"`
	URL       string    `json:"url,omitempty"`
}

DeployKey represents a repository deploy key.

type Discussion

type Discussion struct {
	ID        int64     `json:"id"`
	Number    int       `json:"number"`
	Title     string    `json:"title"`
	Body      string    `json:"body"`
	State     string    `json:"state"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	Labels    []*Label  `json:"labels"`
	HTMLURL   string    `json:"html_url,omitempty"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

Discussion represents a repository discussion.

type DiscussionComment

type DiscussionComment struct {
	ID        int64     `json:"id"`
	Body      string    `json:"body"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

DiscussionComment represents a comment on a discussion.

type DiscussionCommentReply

type DiscussionCommentReply struct {
	ID        int64     `json:"id"`
	Body      string    `json:"body"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	ReplyToID int64     `json:"reply_to_id,omitempty"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

DiscussionCommentReply represents a reply to a discussion comment.

type DownloadStatistic

type DownloadStatistic struct {
	Name  string `json:"name"`
	Count int    `json:"count"`
}

type Email

type Email struct {
	Email string `json:"email"`
	State string `json:"state"`
}

type EnterpriseCustomizedRole

type EnterpriseCustomizedRole struct {
	ID          int64  `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description,omitempty"`
	Permission  string `json:"permission,omitempty"`
}

EnterpriseCustomizedRole represents a customized role in an enterprise.

type EnterpriseIssueStatus

type EnterpriseIssueStatus struct {
	ID        int64  `json:"id"`
	Name      string `json:"name"`
	Color     string `json:"color,omitempty"`
	Sort      int    `json:"sort,omitempty"`
	IsDefault bool   `json:"is_default,omitempty"`
}

EnterpriseIssueStatus represents an enterprise-level issue status.

type EnterpriseLabel

type EnterpriseLabel struct {
	ID        int64  `json:"id"`
	Name      string `json:"name"`
	Color     string `json:"color"`
	CreatedAt string `json:"created_at"`
	UpdatedAt string `json:"updated_at"`
}

type EnterpriseMember

type EnterpriseMember struct {
	User       *User  `json:"user"`
	URL        string `json:"url"`
	Active     bool   `json:"active"`
	Role       string `json:"role"`
	Enterprise *struct {
		ID  int64  `json:"id"`
		URL string `json:"url"`
	} `json:"enterprise"`
}

type EnterpriseMilestone

type EnterpriseMilestone struct {
	ID          int64      `json:"id"`
	Title       string     `json:"title"`
	Description string     `json:"description,omitempty"`
	State       string     `json:"state"`
	DueDate     *time.Time `json:"due_date,omitempty"`
	CreatedAt   time.Time  `json:"created_at"`
	UpdatedAt   time.Time  `json:"updated_at"`
}

EnterpriseMilestone represents an enterprise milestone.

type Error

type Error struct {
	Message string `json:"message"`
	Errors  []struct {
		Resource string `json:"resource"`
		Field    string `json:"field"`
		Code     string `json:"code"`
	} `json:"errors"`
}

func (*Error) Error

func (e *Error) Error() string

type ExtendedUser

type ExtendedUser struct {
	ID                int64  `json:"id"`
	Login             string `json:"login"`
	Name              string `json:"name"`
	Email             string `json:"email"`
	AvatarURL         string `json:"avatar_url"`
	HTMLURL           string `json:"html_url"`
	Type              string `json:"type"`
	Bio               string `json:"bio,omitempty"`
	Location          string `json:"location,omitempty"`
	Website           string `json:"website,omitempty"`
	FullName          string `json:"full_name,omitempty"`
	FollowersCount    int    `json:"followers_count,omitempty"`
	FollowingCount    int    `json:"following_count,omitempty"`
	StarredReposCount int    `json:"starred_repos_count,omitempty"`
	Username          string `json:"username,omitempty"`
}

ExtendedUser represents extended user information.

type FieldError

type FieldError struct {
	Resource string `json:"resource"`
	Field    string `json:"field"`
	Code     string `json:"code"`
	Message  string `json:"message,omitempty"`
}

FieldError represents a field-level validation error.

type FileListEntry

type FileListEntry struct {
	Name string `json:"name"`
	Path string `json:"path"`
	Type string `json:"type"`
}

type FileResult

type FileResult struct {
	Content *RepositoryContent `json:"content"`
	Commit  *Commit            `json:"commit"`
}

type FileUploadResult

type FileUploadResult struct {
	FilePath string `json:"file_path"`
}

type FlexInt

type FlexInt int

func (*FlexInt) UnmarshalJSON

func (fi *FlexInt) UnmarshalJSON(data []byte) error

type FlexString

type FlexString string

func (*FlexString) UnmarshalJSON

func (fs *FlexString) UnmarshalJSON(data []byte) error

type ForbiddenError

type ForbiddenError struct {
	*APIError
}

ForbiddenError represents a 403 Forbidden error.

func (*ForbiddenError) Error

func (e *ForbiddenError) Error() string

type ForkSyncStatus

type ForkSyncStatus struct {
	Synced    bool   `json:"synced"`
	BehindBy  int    `json:"behind_by"`
	AheadBy   int    `json:"ahead_by"`
	MergeBase string `json:"merge_base,omitempty"`
}

ForkSyncStatus represents the sync status of a forked repository.

type GitBlob

type GitBlob struct {
	SHA      string `json:"sha"`
	Size     int64  `json:"size"`
	URL      string `json:"url"`
	Content  string `json:"content"`
	Encoding string `json:"encoding"`
}

type GitObject

type GitObject struct {
	SHA  string `json:"sha"`
	Type string `json:"type"`
	URL  string `json:"url"`
}

GitObject represents a git object (commit, tree, blob, tag).

type GitReference

type GitReference struct {
	Ref    string     `json:"ref"`
	URL    string     `json:"url"`
	Object *GitObject `json:"object"`
}

GitReference represents a git reference.

type GitTree

type GitTree struct {
	SHA       string          `json:"sha"`
	URL       string          `json:"url"`
	Truncated bool            `json:"truncated"`
	Tree      []*GitTreeEntry `json:"tree"`
}

type GitTreeEntry

type GitTreeEntry struct {
	Path string `json:"path"`
	Mode string `json:"mode"`
	Type string `json:"type"`
	SHA  string `json:"sha"`
	Size int64  `json:"size"`
	URL  string `json:"url"`
}

type GitignoreTemplate

type GitignoreTemplate struct {
	Name   string `json:"name"`
	Source string `json:"source"`
}

GitignoreTemplate represents a gitignore template.

type InviteMemberOptions

type InviteMemberOptions struct {
	Permission string `json:"permission,omitempty"`
	RoleID     string `json:"role_id,omitempty"`
}

type Issue

type Issue struct {
	ID        int64      `json:"id"`
	Number    FlexInt    `json:"number"`
	Title     string     `json:"title"`
	Body      string     `json:"body"`
	State     IssueState `json:"state"`
	User      *User      `json:"user"`
	Author    *User      `json:"author"`
	Assignees []*User    `json:"assignees"`
	Labels    []*Label   `json:"labels"`
	Milestone *Milestone `json:"milestone"`
	HTMLURL   string     `json:"html_url"`
	CreatedAt time.Time  `json:"created_at"`
	UpdatedAt time.Time  `json:"updated_at"`
	ClosedAt  *time.Time `json:"closed_at"`
}

type IssueAssigneeResult

type IssueAssigneeResult struct {
	Assignees []*User `json:"assignees"`
}

IssueAssignee represents an issue assignee operation result.

type IssueComment

type IssueComment struct {
	ID        int64     `json:"id"`
	Body      string    `json:"body"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

type IssueCustomField

type IssueCustomField struct {
	ID       int64  `json:"id"`
	Name     string `json:"name"`
	Type     string `json:"type"`
	Required bool   `json:"required"`
	Options  []struct {
		ID   int64  `json:"id"`
		Name string `json:"name"`
	} `json:"options,omitempty"`
}

IssueCustomField represents a custom field for enterprise issues.

type IssueDependency

type IssueDependency struct {
	ID    int64  `json:"id"`
	Issue *Issue `json:"issue"`
}

IssueDependency represents a dependency between issues.

type IssueExtendSetting

type IssueExtendSetting struct {
	TypeName string `json:"type_name"`
	TypeID   int    `json:"type_id"`
	TypeDesc string `json:"type_desc"`
	Status   []*struct {
		StatusName         string `json:"status_name"`
		StatusID           int    `json:"status_id"`
		StatusDesc         string `json:"status_desc"`
		GitcodeIssueStatus int    `json:"gitcode_issue_status"`
	} `json:"status"`
}

type IssueOperateLog

type IssueOperateLog struct {
	ID        int64  `json:"id"`
	Action    string `json:"action"`
	CreatedAt string `json:"created_at"`
	User      *User  `json:"user"`
}

type IssueRelatedBranch

type IssueRelatedBranch struct {
	BranchName string `json:"branch_name"`
	RepoName   string `json:"repo_name,omitempty"`
}

IssueRelatedBranch represents a branch related to an issue.

type IssueState

type IssueState string
const (
	IssueStateOpen   IssueState = "open"
	IssueStateClosed IssueState = "closed"
)

type IssueSubscriber

type IssueSubscriber struct {
	ID        int64  `json:"id"`
	Login     string `json:"login"`
	Name      string `json:"name"`
	AvatarURL string `json:"avatar_url"`
}

IssueSubscriber represents a user subscribed to an issue.

type IssueTemplate

type IssueTemplate struct {
	Name        string   `json:"name"`
	FileName    string   `json:"file_name,omitempty"`
	Title       string   `json:"title"`
	Body        string   `json:"body"`
	Labels      []string `json:"labels,omitempty"`
	Assignees   []string `json:"assignees,omitempty"`
	Description string   `json:"description,omitempty"`
}

IssueTemplate represents a repository issue template.

type IssueTimelineEvent

type IssueTimelineEvent struct {
	ID        int64      `json:"id"`
	Action    string     `json:"action"`
	Body      string     `json:"body,omitempty"`
	User      *User      `json:"user"`
	Author    *User      `json:"author"`
	CreatedAt time.Time  `json:"created_at"`
	UpdatedAt time.Time  `json:"updated_at"`
	CommitID  string     `json:"commit_id,omitempty"`
	EventType string     `json:"event,omitempty"`
	Label     *Label     `json:"label,omitempty"`
	Milestone *Milestone `json:"milestone,omitempty"`
	Rename    *struct {
		From string `json:"from"`
		To   string `json:"to"`
	} `json:"rename,omitempty"`
}

IssueTimelineEvent represents an event in an issue's timeline.

type IssueUserReaction

type IssueUserReaction struct {
	ID        int64     `json:"id"`
	Content   string    `json:"content"`
	User      *User     `json:"user"`
	CreatedAt time.Time `json:"created_at"`
}

IssueUserReaction represents a user's reaction to an issue.

type IssueWebhookEvent

type IssueWebhookEvent struct {
	Action     string      `json:"action"`
	Issue      *Issue      `json:"issue"`
	Repository *Repository `json:"repository"`
	Sender     *User       `json:"sender"`
}

type KanbanBoard

type KanbanBoard struct {
	ID          int64     `json:"id"`
	Name        string    `json:"name"`
	Description string    `json:"description,omitempty"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

KanbanBoard represents a kanban board.

type KanbanBoardItem

type KanbanBoardItem struct {
	ID          int64  `json:"id"`
	BoardID     int64  `json:"board_id"`
	IssueNumber int    `json:"issue_number,omitempty"`
	PRNumber    int    `json:"pr_number,omitempty"`
	Status      string `json:"status"`
	Sort        int    `json:"sort,omitempty"`
}

KanbanBoardItem represents an item on a kanban board.

type KanbanBoardStatus

type KanbanBoardStatus struct {
	ID        int64  `json:"id"`
	Name      string `json:"name"`
	Color     string `json:"color,omitempty"`
	Sort      int    `json:"sort,omitempty"`
	IsDefault bool   `json:"is_default,omitempty"`
}

KanbanBoardStatus represents a kanban board status.

type KanbanValue

type KanbanValue struct {
	FieldID   int64  `json:"field_id"`
	FieldName string `json:"field_name"`
	ValueID   int64  `json:"value_id"`
	ValueName string `json:"value_name"`
}

KanbanValue represents a kanban field value for an issue.

type Label

type Label struct {
	ID    int64  `json:"id"`
	Name  string `json:"name"`
	Color string `json:"color"`
}

type Language

type Language map[string]int

type LicenseTemplate

type LicenseTemplate struct {
	Key         string   `json:"key"`
	Name        string   `json:"name"`
	URL         string   `json:"url,omitempty"`
	HTMLURL     string   `json:"html_url,omitempty"`
	HTMLContent string   `json:"html_content,omitempty"`
	Body        string   `json:"body,omitempty"`
	Featured    bool     `json:"featured,omitempty"`
	Conditions  []string `json:"conditions,omitempty"`
	Permissions []string `json:"permissions,omitempty"`
	Limitations []string `json:"limitations,omitempty"`
}

LicenseTemplate represents a license template.

type ListActionRunsOptions

type ListActionRunsOptions struct {
	ListOptions
	Status string `json:"status,omitempty"` // queued, in_progress, completed
	Branch string `json:"branch,omitempty"`
	Event  string `json:"event,omitempty"`
}

ListActionRunsOptions specifies options for listing action runs.

type ListBranchProtectionOptions

type ListBranchProtectionOptions struct {
	ListOptions
}

type ListCommitsOptions

type ListCommitsOptions struct {
	ListOptions
	Branch string `json:"branch,omitempty"`
	Since  string `json:"since,omitempty"`
	Until  string `json:"until,omitempty"`
}

type ListEnterprisePRsOptions

type ListEnterprisePRsOptions struct {
	ListOptions
	State       string `json:"state,omitempty"`
	IssueNumber int    `json:"issue_number,omitempty"`
	Sort        string `json:"sort,omitempty"`
	Direction   string `json:"direction,omitempty"`
}

type ListIssuesOptions

type ListIssuesOptions struct {
	ListOptions
	State     IssueState `json:"state,omitempty"`
	Assignee  string     `json:"assignee,omitempty"`
	Creator   string     `json:"creator,omitempty"`
	Milestone string     `json:"milestone,omitempty"`
	Labels    string     `json:"labels,omitempty"`
	Sort      string     `json:"sort,omitempty"`
	Direction string     `json:"direction,omitempty"`
	Since     string     `json:"since,omitempty"`
}

type ListMilestonesOptions

type ListMilestonesOptions struct {
	ListOptions
	State     string `json:"state,omitempty"`
	Sort      string `json:"sort,omitempty"`
	Direction string `json:"direction,omitempty"`
}

type ListNotificationsOptions

type ListNotificationsOptions struct {
	ListOptions
	All    bool   `json:"all,omitempty"`    // Include read notifications
	Since  string `json:"since,omitempty"`  // Only notifications updated after this time
	Before string `json:"before,omitempty"` // Only notifications updated before this time
	Status string `json:"status,omitempty"` // unread, read, pinned
}

ListNotificationsOptions specifies options for listing notifications.

type ListOptions

type ListOptions struct {
	Page    int `json:"page"`
	PerPage int `json:"per_page"`
}

ListOptions contains pagination parameters for list requests.

type ListPullRequestsOptions

type ListPullRequestsOptions struct {
	ListOptions
	State     PullRequestState `json:"state,omitempty"`
	Sort      string           `json:"sort,omitempty"`
	Direction string           `json:"direction,omitempty"`
	Head      string           `json:"head,omitempty"`
	Base      string           `json:"base,omitempty"`
}

type ListRepositoriesOptions

type ListRepositoriesOptions struct {
	ListOptions
	Owner string `json:"owner,omitempty"`
	Type  string `json:"type,omitempty"`
	Sort  string `json:"sort,omitempty"`
}

type ListStarredReposOptions

type ListStarredReposOptions struct {
	ListOptions
	Sort      string `json:"sort,omitempty"`
	Direction string `json:"direction,omitempty"`
}

type ListUserIssuesOptions

type ListUserIssuesOptions struct {
	ListOptions
	Filter    string `json:"filter,omitempty"`
	State     string `json:"state,omitempty"`
	Labels    string `json:"labels,omitempty"`
	Sort      string `json:"sort,omitempty"`
	Direction string `json:"direction,omitempty"`
	Since     string `json:"since,omitempty"`
}

type MarkNotificationsOptions

type MarkNotificationsOptions struct {
	LastReadAt string `json:"last_read_at,omitempty"` // ISO 8601 timestamp
	All        bool   `json:"all,omitempty"`
}

MarkNotificationsOptions specifies options for marking notifications.

type Member

type Member struct {
	ID    string `json:"id"`
	Login string `json:"login"`
	Role  string `json:"role"`
}

type MergePullRequestOptions

type MergePullRequestOptions struct {
	CommitMessage string `json:"commit_message,omitempty"`
	Squash        bool   `json:"squash,omitempty"`
}

type Milestone

type Milestone struct {
	ID          int64      `json:"id"`
	Title       string     `json:"title"`
	Description string     `json:"description"`
	State       string     `json:"state"`
	DueDate     *time.Time `json:"due_date"`
	CreatedAt   time.Time  `json:"created_at"`
	UpdatedAt   time.Time  `json:"updated_at"`
}

type ModifyHistoryEntry

type ModifyHistoryEntry struct {
	ID        int64     `json:"id"`
	Action    string    `json:"action"`
	Field     string    `json:"field,omitempty"`
	OldValue  string    `json:"old_value,omitempty"`
	NewValue  string    `json:"new_value,omitempty"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	CreatedAt time.Time `json:"created_at"`
}

ModifyHistoryEntry represents a modification history entry.

type ModuleSetting

type ModuleSetting struct {
	Issues   bool `json:"issues"`
	Wiki     bool `json:"wiki"`
	Releases bool `json:"releases"`
}

type Namespace

type Namespace struct {
	ID      int64  `json:"id"`
	Path    string `json:"path"`
	Name    string `json:"name"`
	HTMLURL string `json:"html_url"`
	Type    string `json:"type"`
}

type NotFoundError

type NotFoundError struct {
	*APIError
	Resource string `json:"resource,omitempty"` // e.g. "repository", "issue", "user"
}

NotFoundError represents a 404 Not Found error.

func (*NotFoundError) Error

func (e *NotFoundError) Error() string

type NoteWebhookEvent

type NoteWebhookEvent struct {
	NoteType   string      `json:"noteable_type"` //nolint:misspell // API field name
	NoteID     int64       `json:"id"`
	Body       string      `json:"body"`
	Author     *User       `json:"author"`
	Repository *Repository `json:"repository"`
	Sender     *User       `json:"sender"`
}

type Notification

type Notification struct {
	ID      string `json:"id"`
	Reason  string `json:"reason"`
	Unread  bool   `json:"unread"`
	Subject struct {
		Title string `json:"title"`
		URL   string `json:"url"`
		Type  string `json:"type"`
	} `json:"subject"`
	CreatedAt time.Time `json:"created_at"`
}

type NotificationSubject

type NotificationSubject struct {
	Title            string `json:"title"`
	URL              string `json:"url"`
	LatestCommentURL string `json:"latest_comment_url"`
	Type             string `json:"type"` // Issue, PullRequest, Commit, Repository
}

NotificationSubject represents the subject of a notification.

type NotificationThread

type NotificationThread struct {
	ID         int64                `json:"id"`
	Unread     bool                 `json:"unread"`
	Pinned     bool                 `json:"pinned,omitempty"`
	UpdatedAt  time.Time            `json:"updated_at"`
	Subject    *NotificationSubject `json:"subject"`
	Repository *Repository          `json:"repository"`
	URL        string               `json:"url"`
}

NotificationThread represents a detailed notification thread.

type NullableTime

type NullableTime struct {
	time.Time
	Valid bool
}

func (*NullableTime) UnmarshalJSON

func (nt *NullableTime) UnmarshalJSON(data []byte) error

type OAuthClient

type OAuthClient struct {
	// contains filtered or unexported fields
}

func NewOAuthClient

func NewOAuthClient(clientID, clientSecret, redirectURI string) *OAuthClient

func NewOAuthClientWithBaseURL

func NewOAuthClientWithBaseURL(clientID, clientSecret, redirectURI, baseURL string) *OAuthClient

NewOAuthClientWithBaseURL creates an OAuthClient for a private GitCode deployment.

func (*OAuthClient) AuthorizeURL

func (o *OAuthClient) AuthorizeURL(scope, state string) string

func (*OAuthClient) ExchangeToken

func (o *OAuthClient) ExchangeToken(ctx context.Context, code string) (*OAuthToken, error)

func (*OAuthClient) NewClient

func (o *OAuthClient) NewClient(token *OAuthToken) *Client

NewClient creates a new API Client from an OAuthToken, preserving the OAuthClient's base URL. The resulting client uses the same host as the OAuthClient, which is correct for private deployments.

func (*OAuthClient) RefreshToken

func (o *OAuthClient) RefreshToken(ctx context.Context, refreshToken string) (*OAuthToken, error)

func (*OAuthClient) SetBaseURL

func (o *OAuthClient) SetBaseURL(baseURL string)

type OAuthToken

type OAuthToken struct {
	AccessToken  string    `json:"access_token"`
	ExpiresIn    int       `json:"expires_in"`
	RefreshToken string    `json:"refresh_token"`
	Scope        string    `json:"scope"`
	CreatedAt    time.Time `json:"created_at"`
}

type OrgCustomizedRole

type OrgCustomizedRole struct {
	ID          int64  `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description,omitempty"`
	Permission  string `json:"permission,omitempty"`
}

OrgCustomizedRole represents a customized role in an organization.

type OrgDiscussion

type OrgDiscussion struct {
	ID        int64     `json:"id"`
	Number    int       `json:"number"`
	Title     string    `json:"title"`
	Body      string    `json:"body"`
	State     string    `json:"state"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	Labels    []*Label  `json:"labels"`
	HTMLURL   string    `json:"html_url,omitempty"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

OrgDiscussion represents a discussion in an organization.

type OrgDiscussionComment

type OrgDiscussionComment struct {
	ID        int64     `json:"id"`
	Body      string    `json:"body"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

OrgDiscussionComment represents a comment on an organization discussion.

type OrgDiscussionCommentReply

type OrgDiscussionCommentReply struct {
	ID        int64     `json:"id"`
	Body      string    `json:"body"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	ReplyToID int64     `json:"reply_to_id,omitempty"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

OrgDiscussionCommentReply represents a reply to an organization discussion comment.

type OrgEnterprise

type OrgEnterprise struct {
	ID   int64  `json:"id"`
	Name string `json:"name"`
	Path string `json:"path"`
	URL  string `json:"url"`
}

OrgEnterprise represents the enterprise associated with an organization.

type OrgFollowers

type OrgFollowers struct {
	ID        int64  `json:"id"`
	Login     string `json:"login"`
	Name      string `json:"name"`
	AvatarURL string `json:"avatar_url"`
	WatchAt   string `json:"watch_at"`
}

type OrgLabel

type OrgLabel struct {
	ID        int64     `json:"id"`
	Name      string    `json:"name"`
	Color     string    `json:"color"`
	Exclusive bool      `json:"exclusive,omitempty"`
	Template  bool      `json:"template,omitempty"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

OrgLabel represents an organization-level label.

type OrgMember

type OrgMember struct {
	AvatarURL  string `json:"avatar_url"`
	HTMLURL    string `json:"html_url"`
	ID         string `json:"id"`
	Login      string `json:"login"`
	MemberRole string `json:"member_role"`
	Name       string `json:"name"`
	Type       string `json:"type"`
}

type OrgMemberDetail

type OrgMemberDetail struct {
	ID        int64  `json:"id"`
	Path      string `json:"path"`
	Name      string `json:"name"`
	URL       string `json:"url"`
	AvatarURL string `json:"avatar_url"`
	User      *User  `json:"user"`
}

type OrgWebhook

type OrgWebhook struct {
	ID                  int64          `json:"id"`
	URL                 string         `json:"url"`
	Events              []string       `json:"events"`
	Active              bool           `json:"active"`
	Config              *WebhookConfig `json:"config,omitempty"`
	CreatedAt           time.Time      `json:"created_at"`
	UpdatedAt           time.Time      `json:"updated_at"`
	PushEvents          bool           `json:"push_events"`
	TagPushEvents       bool           `json:"tag_push_events"`
	IssuesEvents        bool           `json:"issues_events"`
	NoteEvents          bool           `json:"note_events"`
	MergeRequestsEvents bool           `json:"merge_requests_events"`
}

OrgWebhook represents an organization webhook.

type Organization

type Organization struct {
	ID          int64  `json:"id"`
	Login       string `json:"login"`
	Name        string `json:"name"`
	Description string `json:"description"`
	AvatarURL   string `json:"avatar_url"`
}

type PRDiscussionComment

type PRDiscussionComment struct {
	ID           int64     `json:"id"`
	Body         string    `json:"body"`
	User         *User     `json:"user"`
	Author       *User     `json:"author"`
	DiscussionID string    `json:"discussion_id,omitempty"`
	CreatedAt    time.Time `json:"created_at"`
	UpdatedAt    time.Time `json:"updated_at"`
}

PRDiscussionComment represents a reply to a PR review comment.

type PRMergeTemplate

type PRMergeTemplate struct {
	Name string `json:"name"`
	Body string `json:"body"`
}

PRMergeTemplate represents a pull request merge template.

type PROperateLog

type PROperateLog struct {
	ID        int64  `json:"id"`
	Action    string `json:"action"`
	CreatedAt string `json:"created_at"`
	User      *User  `json:"user"`
}

type PRSettings

type PRSettings struct {
	DefaultMergeMethod string `json:"default_merge_method"`
	AutoCloseIssues    bool   `json:"auto_close_issues"`
}

type PageResult

type PageResult[T any] struct {
	Items []T
	Page  int
}

PageResult represents a single page of results.

type ParticipationStats

type ParticipationStats struct {
	All   []int `json:"all"`
	Owner []int `json:"owner"`
}

ParticipationStats represents participation statistics (weekly commits).

type ProtectedTag

type ProtectedTag struct {
	ID          int64     `json:"id"`
	NamePattern string    `json:"name_pattern"`
	Owners      []*User   `json:"owners,omitempty"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

ProtectedTag represents a protected tag rule.

type PullRequest

type PullRequest struct {
	ID          int64              `json:"id"`
	Number      int                `json:"number"`
	IID         int                `json:"iid,omitempty"`
	Title       string             `json:"title"`
	Body        string             `json:"body"`
	Description string             `json:"description,omitempty"`
	State       PullRequestState   `json:"state"`
	User        *User              `json:"user"`
	Author      *User              `json:"author"`
	Head        *PullRequestBranch `json:"head"`
	Base        *PullRequestBranch `json:"base"`
	Merged      bool               `json:"merged"`
	Mergeable   *bool              `json:"mergeable"`
	HTMLURL     string             `json:"html_url"`
	DiffURL     string             `json:"diff_url,omitempty"`
	PatchURL    string             `json:"patch_url,omitempty"`
	Draft       bool               `json:"draft,omitempty"`
	CreatedAt   time.Time          `json:"created_at"`
	UpdatedAt   time.Time          `json:"updated_at"`
	ClosedAt    NullableTime       `json:"closed_at,omitempty"`
	MergedAt    NullableTime       `json:"merged_at,omitempty"`
}

type PullRequestBranch

type PullRequestBranch struct {
	Ref  string `json:"ref"`
	SHA  string `json:"sha"`
	Repo *struct {
		FullName string `json:"full_name"`
		Name     string `json:"name"`
		Path     string `json:"path"`
		HTMLURL  string `json:"html_url"`
	} `json:"repo"`
}

type PullRequestComment

type PullRequestComment struct {
	ID        FlexString `json:"id"`
	Body      string     `json:"body"`
	User      *User      `json:"user"`
	Author    *User      `json:"author"`
	Path      string     `json:"path"`
	Position  int        `json:"position"`
	Line      int        `json:"line"`
	Side      string     `json:"side"`
	CommitID  string     `json:"commit_id"`
	CreatedAt time.Time  `json:"created_at"`
	UpdatedAt time.Time  `json:"updated_at"`
}

type PullRequestDiff

type PullRequestDiff struct {
	Content string `json:"content"`
}

PullRequestDiff represents the diff of a pull request.

type PullRequestFile

type PullRequestFile struct {
	Filename         string      `json:"filename"`
	PreviousFilename string      `json:"previous_filename,omitempty"`
	Status           string      `json:"status"`
	Additions        int         `json:"additions"`
	Deletions        int         `json:"deletions"`
	Changes          int         `json:"changes"`
	Patch            interface{} `json:"patch,omitempty"`
}

type PullRequestFileChange

type PullRequestFileChange struct {
	Filename         string `json:"filename"`
	PreviousFilename string `json:"previous_filename,omitempty"`
	Status           string `json:"status"`
	Additions        int    `json:"additions"`
	Deletions        int    `json:"deletions"`
	Changes          int    `json:"changes"`
	BlobURL          string `json:"blob_url,omitempty"`
	RawURL           string `json:"raw_url,omitempty"`
	ContentsURL      string `json:"contents_url,omitempty"`
	Patch            string `json:"patch,omitempty"`
}

PullRequestFileChange represents a file change in a pull request (JSON format).

type PullRequestReview

type PullRequestReview struct {
	ID        int64     `json:"id"`
	Body      string    `json:"body"`
	State     string    `json:"state"`
	User      *User     `json:"user"`
	Author    *User     `json:"author"`
	CommitID  string    `json:"commit_id"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

type PullRequestReviewRequest

type PullRequestReviewRequest struct {
	Reviewers     []string `json:"reviewers,omitempty"`
	TeamReviewers []string `json:"team_reviewers,omitempty"`
}

PullRequestReviewRequest represents a review request.

type PullRequestState

type PullRequestState string
const (
	PullRequestStateOpen   PullRequestState = "open"
	PullRequestStateOpened PullRequestState = "opened"
	PullRequestStateClosed PullRequestState = "closed"
	PullRequestStateMerged PullRequestState = "merged"
)

type PullRequestWebhookEvent

type PullRequestWebhookEvent struct {
	Action      string       `json:"action"`
	Number      int          `json:"number"`
	PullRequest *PullRequest `json:"pull_request"`
	Repository  *Repository  `json:"repository"`
	Sender      *User        `json:"sender"`
}

type PunchCardEntry

type PunchCardEntry []int

PunchCardEntry represents a [day, hour, commits] tuple.

type PushConfig

type PushConfig struct {
	MaxFileSize        int      `json:"max_file_size"`
	ProhibitedFiles    []string `json:"prohibited_files"`
	CommitMessageRegex string   `json:"commit_message_regex"`
}

type PushEvent

type PushEvent struct {
	Ref        string      `json:"ref"`
	Before     string      `json:"before"`
	After      string      `json:"after"`
	Repository *Repository `json:"repository"`
	Commits    []*Commit   `json:"commits"`
	Sender     *User       `json:"sender"`
}

type RateLimit

type RateLimit struct {
	Limit     int       `json:"limit"`
	Remaining int       `json:"remaining"`
	Reset     time.Time `json:"reset"`
}

RateLimit contains rate limit information.

type RateLimitError

type RateLimitError struct {
	*APIError
	RetryAfter int `json:"retry_after,omitempty"` // seconds to wait
}

RateLimitError represents a 429 Too Many Requests error.

func (*RateLimitError) Error

func (e *RateLimitError) Error() string

type Reaction

type Reaction struct {
	ID        int64     `json:"id"`
	User      *User     `json:"user"`
	Content   string    `json:"content"` // +1, -1, laugh, confused, heart, hooray, rocket, eyes
	CreatedAt time.Time `json:"created_at"`
}

Reaction represents an emoji reaction.

type Release

type Release struct {
	ID              int64     `json:"id"`
	TagName         string    `json:"tag_name"`
	TargetCommitish string    `json:"target_commitish,omitempty"`
	Name            string    `json:"name"`
	Body            string    `json:"body"`
	HTMLURL         string    `json:"html_url,omitempty"`
	Draft           bool      `json:"draft"`
	Prerelease      bool      `json:"prerelease"`
	CreatedAt       time.Time `json:"created_at"`
	PublishedAt     time.Time `json:"published_at,omitempty"`
}

type ReleaseAsset

type ReleaseAsset struct {
	ID                 int64     `json:"id"`
	Name               string    `json:"name"`
	ContentType        string    `json:"content_type"`
	Size               int64     `json:"size"`
	DownloadCount      int       `json:"download_count"`
	BrowserDownloadURL string    `json:"browser_download_url"`
	CreatedAt          time.Time `json:"created_at"`
	UpdatedAt          time.Time `json:"updated_at"`
}

ReleaseAsset represents a release asset.

type ReleaseUploadURL

type ReleaseUploadURL struct {
	UploadURL string `json:"upload_url"`
	AssetID   int64  `json:"asset_id,omitempty"`
}

ReleaseUploadURL represents the upload URL for a release asset.

type RemoteMirror

type RemoteMirror struct {
	ID            int64  `json:"id"`
	RemoteURL     string `json:"remote_url"`
	Enabled       bool   `json:"enabled"`
	OnlyProtected bool   `json:"only_protected"`
	LastError     string `json:"last_error,omitempty"`
	LastUpdateAt  string `json:"last_update_at,omitempty"`
}

RemoteMirror represents a remote mirror configuration.

type RepoBranchInfo

type RepoBranchInfo struct {
	Name   string `json:"name"`
	Commit *struct {
		SHA string `json:"sha"`
		URL string `json:"url"`
	} `json:"commit"`
	Protected bool `json:"protected"`
}

RepoBranchInfo represents branch information for listing.

type RepoCLA

type RepoCLA struct {
	ID      int64  `json:"id"`
	Name    string `json:"name"`
	Content string `json:"content,omitempty"`
	Enabled bool   `json:"enabled"`
}

RepoCLA represents a repository CLA (Contributor License Agreement).

type RepoEvent

type RepoEvent struct {
	ID        int64  `json:"id"`
	Type      string `json:"type"`
	CreatedAt string `json:"created_at"`
	PushData  *struct {
		Ref string `json:"ref"`
	} `json:"push_data"`
}

type RepoInvitation

type RepoInvitation struct {
	ID         int64       `json:"id"`
	Repo       *Repository `json:"repo"`
	Invitee    *User       `json:"invitee"`
	Inviter    *User       `json:"inviter"`
	Permission string      `json:"permission"`
	CreatedAt  time.Time   `json:"created_at"`
	URL        string      `json:"url"`
	HTMLURL    string      `json:"html_url,omitempty"`
}

RepoInvitation represents a repository invitation.

type RepoLicense

type RepoLicense struct {
	Key     string `json:"key"`
	Name    string `json:"name"`
	URL     string `json:"url,omitempty"`
	HTMLURL string `json:"html_url,omitempty"`
	Body    string `json:"body,omitempty"`
}

RepoLicense represents a repository license.

type RepoSettings

type RepoSettings struct {
	ID            int64  `json:"id"`
	Name          string `json:"name"`
	Description   string `json:"description"`
	DefaultBranch string `json:"default_branch"`
	HasIssues     bool   `json:"has_issues"`
	HasWiki       bool   `json:"has_wiki"`
	CanComment    bool   `json:"can_comment"`
	Private       bool   `json:"private"`
}

type RepoStats

type RepoStats struct {
	Participation *ParticipationStats `json:"participation,omitempty"`
}

RepoStats represents repository statistics.

type Repository

type Repository struct {
	ID        int64  `json:"id"`
	FullName  string `json:"full_name"`
	Name      string `json:"name"`
	Path      string `json:"path,omitempty"`
	Owner     *User  `json:"owner"`
	Namespace *struct {
		ID   int64  `json:"id"`
		Name string `json:"name"`
		Path string `json:"path"`
	} `json:"namespace,omitempty"`
	Description     string     `json:"description"`
	CloneURL        string     `json:"http_url_to_repo"`
	SSHURL          string     `json:"ssh_url_to_repo"`
	HTMLURL         string     `json:"web_url"`
	DefaultBranch   string     `json:"default_branch"`
	Private         bool       `json:"private"`
	Public          bool       `json:"public,omitempty"`
	Fork            bool       `json:"fork"`
	StarsCount      int        `json:"stargazers_count"`
	ForksCount      int        `json:"forks_count"`
	WatchersCount   int        `json:"watchers_count"`
	OpenIssuesCount int        `json:"open_issues_count"`
	Language        string     `json:"language,omitempty"`
	CreatedAt       time.Time  `json:"created_at"`
	UpdatedAt       time.Time  `json:"updated_at"`
	PushedAt        *time.Time `json:"pushed_at,omitempty"`
}

type RepositoryContent

type RepositoryContent struct {
	Name     string `json:"name"`
	Path     string `json:"path"`
	Size     int64  `json:"size"`
	Type     string `json:"type"`
	Content  string `json:"content,omitempty"`
	Encoding string `json:"encoding,omitempty"`
	SHA      string `json:"sha"`
	Links    struct {
		Self string `json:"self"`
		Git  string `json:"git"`
	} `json:"_links"`
}

type RepositoryTopics

type RepositoryTopics struct {
	Topics []string `json:"topics"`
}

RepositoryTopics represents the topics of a repository.

type RequestHook

type RequestHook func(req *http.Request) error

RequestHook is a function called before each HTTP request. It can modify the request or return an error to cancel the request.

type ResponseHook

type ResponseHook func(resp *http.Response) error

ResponseHook is a function called after each HTTP response.

type RetryPolicy

type RetryPolicy struct {
	// MaxRetries is the maximum number of retry attempts. Default: 0 (no retry).
	MaxRetries int
	// InitialBackoff is the initial wait time before the first retry. Default: 1s.
	InitialBackoff time.Duration
	// MaxBackoff is the maximum wait time between retries. Default: 30s.
	MaxBackoff time.Duration
	// Multiplier is the backoff multiplier for exponential backoff. Default: 2.0.
	Multiplier float64
	// RetryableStatusCodes defines which HTTP status codes should trigger a retry.
	// Default: [429, 500, 502, 503, 504]
	RetryableStatusCodes []int
}

RetryPolicy defines the retry behavior for failed requests.

func DefaultRetryPolicy

func DefaultRetryPolicy() RetryPolicy

DefaultRetryPolicy returns a sensible default retry policy.

type Reviewer

type Reviewer struct {
	ID        int64  `json:"id"`
	Login     string `json:"login"`
	Name      string `json:"name"`
	AvatarURL string `json:"avatar_url"`
}

Reviewer represents a potential reviewer for a pull request.

type ReviewerConfig

type ReviewerConfig struct {
	MinApprovingReviews int  `json:"min_approving_reviews"`
	RequireCodeOwner    bool `json:"require_code_owner"`
}

type RunActionWorkflowOptions

type RunActionWorkflowOptions struct {
	Ref    string            `json:"ref"`
	Inputs map[string]string `json:"inputs,omitempty"`
}

RunActionWorkflowOptions specifies options for manually running a workflow.

type RunnerGroup

type RunnerGroup struct {
	ID          int64  `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description,omitempty"`
	Visibility  string `json:"visibility,omitempty"`
	RunnersURL  string `json:"runners_url,omitempty"`
}

RunnerGroup represents a runner group.

type SSHKey

type SSHKey struct {
	ID        int64     `json:"id"`
	Title     string    `json:"title"`
	Key       string    `json:"key"`
	CreatedAt time.Time `json:"created_at"`
	URL       string    `json:"url"`
}

type SearchIssueResult

type SearchIssueResult struct {
	ID         int64     `json:"id"`
	HTMLURL    string    `json:"html_url"`
	Number     string    `json:"number"`
	State      string    `json:"state"`
	Title      string    `json:"title"`
	Body       string    `json:"body"`
	CreatedAt  time.Time `json:"created_at"`
	UpdatedAt  time.Time `json:"updated_at"`
	Labels     []*Label  `json:"labels"`
	Priority   int       `json:"priority"`
	Comments   int       `json:"comments"`
	Repository *struct {
		ID        int64  `json:"id"`
		FullName  string `json:"full_name"`
		HumanName string `json:"human_name"`
		Path      string `json:"path"`
		Name      string `json:"name"`
		URL       string `json:"url"`
		Owner     *User  `json:"owner"`
	} `json:"repository"`
}

type SearchIssuesOptions

type SearchIssuesOptions struct {
	ListOptions
	Query string `json:"q"`
	Sort  string `json:"sort,omitempty"`
	Order string `json:"order,omitempty"`
	Repo  string `json:"repo,omitempty"`
	State string `json:"state,omitempty"`
}

type SearchOptions

type SearchOptions struct {
	ListOptions
	Query string `json:"q"`
	Order string `json:"order,omitempty"`
}

type SearchRepositoriesOptions

type SearchRepositoriesOptions struct {
	ListOptions
	Query    string `json:"q"`
	Sort     string `json:"sort,omitempty"`
	Order    string `json:"order,omitempty"`
	Owner    string `json:"owner,omitempty"`
	Fork     string `json:"fork,omitempty"`
	Language string `json:"language,omitempty"`
}

type SearchRepositoryResult

type SearchRepositoryResult struct {
	ID              int64     `json:"id"`
	FullName        string    `json:"full_name"`
	HumanName       string    `json:"human_name"`
	Path            string    `json:"path"`
	Name            string    `json:"name"`
	Description     string    `json:"description"`
	SSHURLToRepo    string    `json:"ssh_url_to_repo"`
	HTTPURLToRepo   string    `json:"http_url_to_repo"`
	WebURL          string    `json:"web_url"`
	ForksCount      int       `json:"forks_count"`
	StargazersCount int       `json:"stargazers_count"`
	WatchersCount   int       `json:"watchers_count"`
	DefaultBranch   string    `json:"default_branch"`
	OpenIssuesCount int       `json:"open_issues_count"`
	Private         bool      `json:"private"`
	Public          bool      `json:"public"`
	Fork            bool      `json:"fork"`
	CreatedAt       time.Time `json:"created_at"`
	UpdatedAt       time.Time `json:"updated_at"`
	PushedAt        string    `json:"pushed_at"`
	Owner           *User     `json:"owner"`
	Namespace       *struct {
		ID      int64  `json:"id"`
		Type    string `json:"type"`
		Name    string `json:"name"`
		Path    string `json:"path"`
		HTMLURL string `json:"html_url"`
	} `json:"namespace"`
}

type SearchResult

type SearchResult struct {
	TotalCount int           `json:"total_count"`
	Items      []*Repository `json:"items"`
}

type SearchUserResult

type SearchUserResult struct {
	ID        string    `json:"id"`
	Login     string    `json:"login"`
	Name      string    `json:"name"`
	AvatarURL string    `json:"avatar_url"`
	HTMLURL   string    `json:"html_url"`
	CreatedAt time.Time `json:"created_at"`
}

type SearchUsersOptions

type SearchUsersOptions struct {
	ListOptions
	Query string `json:"q"`
	Sort  string `json:"sort,omitempty"`
	Order string `json:"order,omitempty"`
}

type Star

type Star struct {
	StarredAt time.Time `json:"starred_at"`
}

type Tag

type Tag struct {
	Name   string `json:"name"`
	Commit struct {
		SHA string `json:"sha"`
	} `json:"commit"`
}

type TagPushEvent

type TagPushEvent struct {
	Ref        string      `json:"ref"`
	Before     string      `json:"before"`
	After      string      `json:"after"`
	Repository *Repository `json:"repository"`
	Sender     *User       `json:"sender"`
}

type TagWithRelease

type TagWithRelease struct {
	Name    string `json:"name"`
	Message string `json:"message,omitempty"`
	Commit  *struct {
		SHA string `json:"sha"`
		URL string `json:"url"`
	} `json:"commit"`
	ZipballURL string    `json:"zipball_url,omitempty"`
	TarballURL string    `json:"tarball_url,omitempty"`
	CreatedAt  time.Time `json:"created_at,omitempty"`
}

TagWithRelease represents a tag with its associated release info.

type Team

type Team struct {
	ID               int64  `json:"id"`
	Name             string `json:"name"`
	Description      string `json:"description,omitempty"`
	Permission       string `json:"permission,omitempty"` // read, write, admin
	Privacy          string `json:"privacy,omitempty"`    // closed, secret
	CanCreateOrgRepo bool   `json:"can_create_org_repo,omitempty"`
	HTMLURL          string `json:"html_url,omitempty"`
	Parent           *Team  `json:"parent,omitempty"`
}

Team represents an organization team.

type TeamMember

type TeamMember struct {
	ID        int64     `json:"id"`
	Login     string    `json:"login"`
	Name      string    `json:"name"`
	Email     string    `json:"email"`
	AvatarURL string    `json:"avatar_url"`
	CreatedAt time.Time `json:"created_at"`
}

TeamMember represents a team member.

type Timestamp

type Timestamp struct {
	time.Time
}

func (*Timestamp) UnmarshalJSON

func (t *Timestamp) UnmarshalJSON(data []byte) error

type TransferRepoOptions

type TransferRepoOptions struct {
	NewOwner string `json:"new_owner"`
}

type UnauthorizedError

type UnauthorizedError struct {
	*APIError
}

UnauthorizedError represents a 401 Unauthorized error.

func (*UnauthorizedError) Error

func (e *UnauthorizedError) Error() string

type UpdateBranchProtectionOptions

type UpdateBranchProtectionOptions struct {
	Pusher string `json:"pusher"`
	Merger string `json:"merger"`
}

type UpdateCommitCommentOptions

type UpdateCommitCommentOptions struct {
	Body string `json:"body"`
}

UpdateCommitCommentOptions specifies options for updating a commit comment.

type UpdateCurrentUserOptions

type UpdateCurrentUserOptions struct {
	Name     string `json:"name,omitempty"`
	Email    string `json:"email,omitempty"`
	Bio      string `json:"bio,omitempty"`
	Location string `json:"location,omitempty"`
	Website  string `json:"website,omitempty"`
}

UpdateCurrentUserOptions specifies options for updating the authenticated user's profile.

type UpdateEnterpriseLabelOptions

type UpdateEnterpriseLabelOptions struct {
	Name  string `json:"name,omitempty"`
	Color string `json:"color,omitempty"`
}

UpdateEnterpriseLabelOptions specifies options for updating an enterprise label.

type UpdateEnterpriseMemberOptions

type UpdateEnterpriseMemberOptions struct {
	Role string `json:"role"`
}

type UpdateEnterpriseMilestoneOptions

type UpdateEnterpriseMilestoneOptions struct {
	Title       string `json:"title,omitempty"`
	Description string `json:"description,omitempty"`
	State       string `json:"state,omitempty"`
	DueOn       string `json:"due_on,omitempty"`
}

UpdateEnterpriseMilestoneOptions specifies options for updating an enterprise milestone.

type UpdateFileOptions

type UpdateFileOptions struct {
	Message string `json:"message"`
	Content string `json:"content"`
	SHA     string `json:"sha"`
	Branch  string `json:"branch,omitempty"`
}

type UpdateIssueOptions

type UpdateIssueOptions struct {
	Title      string     `json:"title,omitempty"`
	Body       string     `json:"body,omitempty"`
	State      IssueState `json:"state,omitempty"`
	StateEvent string     `json:"state_event,omitempty"`
	Assignee   string     `json:"assignee,omitempty"`
	Assignees  []string   `json:"assignees,omitempty"`
	Milestone  int64      `json:"milestone,omitempty"`
	Labels     []string   `json:"labels,omitempty"`
}

type UpdateKanbanBoardItemOptions

type UpdateKanbanBoardItemOptions struct {
	Status string `json:"status,omitempty"`
	Sort   int    `json:"sort,omitempty"`
}

UpdateKanbanBoardItemOptions specifies options for updating a kanban board item.

type UpdateKanbanBoardStatusOptions

type UpdateKanbanBoardStatusOptions struct {
	Statuses []KanbanBoardStatus `json:"statuses"`
}

UpdateKanbanBoardStatusOptions specifies options for updating a kanban board status.

type UpdateLabelOptions

type UpdateLabelOptions struct {
	Name  string `json:"name,omitempty"`
	Color string `json:"color,omitempty"`
}

type UpdateMemberOptions

type UpdateMemberOptions struct {
	Permission string `json:"permission"`
}

type UpdateMilestoneOptions

type UpdateMilestoneOptions struct {
	Title       string `json:"title"`
	State       string `json:"state,omitempty"`
	Description string `json:"description,omitempty"`
	DueOn       string `json:"due_on"`
}

type UpdateOrgLabelOptions

type UpdateOrgLabelOptions struct {
	Name      string `json:"name,omitempty"`
	Color     string `json:"color,omitempty"`
	Exclusive *bool  `json:"exclusive,omitempty"`
	Template  *bool  `json:"template,omitempty"`
}

UpdateOrgLabelOptions specifies options for updating an organization label.

type UpdateOrgOptions

type UpdateOrgOptions struct {
	Name        string `json:"name,omitempty"`
	Email       string `json:"email,omitempty"`
	Location    string `json:"location,omitempty"`
	Description string `json:"description,omitempty"`
	HTMLURL     string `json:"html_url,omitempty"`
}

type UpdateOrgWebhookOptions

type UpdateOrgWebhookOptions struct {
	URL    string         `json:"url,omitempty"`
	Secret string         `json:"secret,omitempty"`
	Events []string       `json:"events,omitempty"`
	Active *bool          `json:"active,omitempty"`
	Config *WebhookConfig `json:"config,omitempty"`
}

UpdateOrgWebhookOptions specifies options for updating an organization webhook.

type UpdateProtectedTagOptions

type UpdateProtectedTagOptions struct {
	NamePattern string   `json:"name_pattern,omitempty"`
	Owners      []string `json:"owners,omitempty"`
}

UpdateProtectedTagOptions specifies options for updating a protected tag.

type UpdatePullRequestOptions

type UpdatePullRequestOptions struct {
	Title      string           `json:"title,omitempty"`
	Body       string           `json:"body,omitempty"`
	State      PullRequestState `json:"state,omitempty"`
	StateEvent string           `json:"state_event,omitempty"`
	Base       string           `json:"base,omitempty"`
}

type UpdateReferenceOptions

type UpdateReferenceOptions struct {
	SHA   string `json:"sha"`
	Force bool   `json:"force,omitempty"`
}

UpdateReferenceOptions specifies options for updating a reference.

type UpdateReleaseOptions

type UpdateReleaseOptions struct {
	TagName         string `json:"tag_name,omitempty"`
	TargetCommitish string `json:"target_commitish,omitempty"`
	Name            string `json:"name,omitempty"`
	Body            string `json:"body,omitempty"`
	Draft           *bool  `json:"draft,omitempty"`
	Prerelease      *bool  `json:"prerelease,omitempty"`
}

UpdateReleaseOptions specifies options for updating a release.

type UpdateRepositoryOptions

type UpdateRepositoryOptions struct {
	Name          string `json:"name,omitempty"`
	Description   string `json:"description,omitempty"`
	DefaultBranch string `json:"default_branch,omitempty"`
	Private       *bool  `json:"private,omitempty"`
}

type UpdateTeamOptions

type UpdateTeamOptions struct {
	Name             string `json:"name,omitempty"`
	Description      string `json:"description,omitempty"`
	Permission       string `json:"permission,omitempty"`
	Privacy          string `json:"privacy,omitempty"`
	CanCreateOrgRepo *bool  `json:"can_create_org_repo,omitempty"`
	ParentTeamID     int64  `json:"parent_team_id,omitempty"`
}

UpdateTeamOptions specifies options for updating a team.

type UpdateWebhookOptions

type UpdateWebhookOptions struct {
	URL    string   `json:"url,omitempty"`
	Secret string   `json:"secret,omitempty"`
	Events []string `json:"events,omitempty"`
	Active *bool    `json:"active,omitempty"`
}

type UpdateWikiPageOptions

type UpdateWikiPageOptions struct {
	ContentBase64 string `json:"content_base64,omitempty"` // base64 encoded content
	Message       string `json:"message,omitempty"`
}

UpdateWikiPageOptions specifies options for updating a wiki page.

type User

type User struct {
	ID        FlexString `json:"id"`
	Login     string     `json:"login"`
	Name      string     `json:"name"`
	Email     string     `json:"email"`
	AvatarURL string     `json:"avatar_url"`
	HTMLURL   string     `json:"html_url,omitempty"`
	Type      string     `json:"type,omitempty"`
}

User represents a GitCode user.

type UserEvent

type UserEvent struct {
	Action         int    `json:"action"`
	ActionName     string `json:"action_name"`
	AuthorID       int64  `json:"author_id"`
	AuthorUsername string `json:"author_username"`
	ProjectID      int64  `json:"project_id"`
	ProjectName    string `json:"project_name"`
	CreatedAt      string `json:"created_at"`
	PushData       *struct {
		CommitCount int    `json:"commit_count"`
		Action      string `json:"action"`
		RefType     string `json:"ref_type"`
		Ref         string `json:"ref"`
		CommitFrom  string `json:"commit_from"`
		CommitTo    string `json:"commit_to"`
		CommitTitle string `json:"commit_title"`
	} `json:"push_data"`
}

type UserEventsResponse

type UserEventsResponse struct {
	Events map[string][]*UserEvent `json:"events"`
	Next   string                  `json:"next"`
}

type UserMembership

type UserMembership struct {
	ID           int64  `json:"id"`
	Path         string `json:"path"`
	Name         string `json:"name"`
	URL          string `json:"url"`
	AvatarURL    string `json:"avatar_url"`
	User         *User  `json:"user"`
	Active       bool   `json:"active"`
	Role         string `json:"role"`
	Organization *struct {
		ID    int64  `json:"id"`
		Login string `json:"login"`
		Name  string `json:"name"`
	} `json:"organization"`
}

type ValidationError

type ValidationError struct {
	*APIError
	Errors []FieldError `json:"errors,omitempty"`
}

ValidationError represents a 422 Unprocessable Entity error.

func (*ValidationError) Error

func (e *ValidationError) Error() string

type ValidationErrorField

type ValidationErrorField struct {
	Field   string
	Message string
}

ValidationErrorField represents a client-side validation error.

func (*ValidationErrorField) Error

func (e *ValidationErrorField) Error() string

type Webhook

type Webhook struct {
	ID                  int64     `json:"id"`
	URL                 string    `json:"url"`
	Events              []string  `json:"events"`
	PushEvents          bool      `json:"push_events"`
	TagPushEvents       bool      `json:"tag_push_events"`
	IssuesEvents        bool      `json:"issues_events"`
	MergeRequestsEvents bool      `json:"merge_requests_events"`
	NoteEvents          bool      `json:"note_events"`
	Active              bool      `json:"active"`
	CreatedAt           time.Time `json:"created_at"`
	UpdatedAt           time.Time `json:"updated_at"`
}

type WebhookConfig

type WebhookConfig struct {
	URL         string `json:"url"`
	ContentType string `json:"content_type,omitempty"`
	Secret      string `json:"secret,omitempty"`
	InsecureSSL bool   `json:"insecure_ssl,omitempty"`
}

WebhookConfig represents the configuration of a webhook.

type WebhookEvent

type WebhookEvent struct {
	Ref        string      `json:"ref"`
	Before     string      `json:"before"`
	After      string      `json:"after"`
	Repository *Repository `json:"repository"`
	Commits    []*Commit   `json:"commits"`
	Sender     *User       `json:"sender"`
}

type WikiPage

type WikiPage struct {
	Title      string `json:"title"`
	Content    string `json:"content,omitempty"`
	HTMLURL    string `json:"html_url,omitempty"`
	CommitSHA  string `json:"commit_sha,omitempty"`
	Sidebar    string `json:"sidebar,omitempty"`
	Footer     string `json:"footer,omitempty"`
	LastCommit *struct {
		SHA     string `json:"sha"`
		Message string `json:"message"`
	} `json:"last_commit,omitempty"`
}

WikiPage represents a wiki page.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL