simple-deno-import-gitea/gitea_api.d.ts

2339 lines
56 KiB
TypeScript
Raw Permalink Normal View History

2023-03-24 01:40:08 +09:00
/**
* APIError is an api error with a message
*/
export interface APIError {
message?: string;
url?: string;
}
/**
* AccessToken represents an API access token.
*/
export interface AccessToken {
id?: number; // int64
name?: string;
scopes?: string[];
sha1?: string;
token_last_eight?: string;
}
/**
* ActivityPub type
*/
export interface ActivityPub {
"@context"?: string;
}
/**
* AddCollaboratorOption options when adding a user as a collaborator of a repository
*/
export interface AddCollaboratorOption {
permission?: string;
}
/**
* AddTimeOption options for adding time to an issue
*/
export interface AddTimeOption {
created?: string; // date-time
/**
* time in seconds
*/
time: number; // int64
/**
* User who spent the time (optional)
*/
user_name?: string;
}
/**
* AnnotatedTag represents an annotated tag
*/
export interface AnnotatedTag {
message?: string;
object?: AnnotatedTagObject;
sha?: string;
tag?: string;
tagger?: CommitUser;
url?: string;
verification?: PayloadCommitVerification;
}
/**
* AnnotatedTagObject contains meta information of the tag object
*/
export interface AnnotatedTagObject {
sha?: string;
type?: string;
url?: string;
}
/**
* Attachment a generic attachment
*/
export interface Attachment {
browser_download_url?: string;
created_at?: string; // date-time
download_count?: number; // int64
id?: number; // int64
name?: string;
size?: number; // int64
uuid?: string;
}
/**
* Branch represents a repository branch
*/
export interface Branch {
commit?: PayloadCommit;
effective_branch_protection_name?: string;
enable_status_check?: boolean;
name?: string;
protected?: boolean;
required_approvals?: number; // int64
status_check_contexts?: string[];
user_can_merge?: boolean;
user_can_push?: boolean;
}
/**
* BranchProtection represents a branch protection for a repository
*/
export interface BranchProtection {
approvals_whitelist_teams?: string[];
approvals_whitelist_username?: string[];
block_on_official_review_requests?: boolean;
block_on_outdated_branch?: boolean;
block_on_rejected_reviews?: boolean;
/**
* Deprecated: true
*/
branch_name?: string;
created_at?: string; // date-time
dismiss_stale_approvals?: boolean;
enable_approvals_whitelist?: boolean;
enable_merge_whitelist?: boolean;
enable_push?: boolean;
enable_push_whitelist?: boolean;
enable_status_check?: boolean;
merge_whitelist_teams?: string[];
merge_whitelist_usernames?: string[];
protected_file_patterns?: string;
push_whitelist_deploy_keys?: boolean;
push_whitelist_teams?: string[];
push_whitelist_usernames?: string[];
require_signed_commits?: boolean;
required_approvals?: number; // int64
rule_name?: string;
status_check_contexts?: string[];
unprotected_file_patterns?: string;
updated_at?: string; // date-time
}
/**
* ChangedFile store information about files affected by the pull request
*/
export interface ChangedFile {
additions?: number; // int64
changes?: number; // int64
contents_url?: string;
deletions?: number; // int64
filename?: string;
html_url?: string;
previous_filename?: string;
raw_url?: string;
status?: string;
}
/**
* CombinedStatus holds the combined state of several statuses for a single commit
*/
export interface CombinedStatus {
commit_url?: string;
repository?: Repository;
sha?: string;
state?: CommitStatusState;
statuses?: CommitStatus[];
total_count?: number; // int64
url?: string;
}
/**
* Comment represents a comment on a commit or issue
*/
export interface Comment {
assets?: Attachment[];
body?: string;
created_at?: string; // date-time
html_url?: string;
id?: number; // int64
issue_url?: string;
original_author?: string;
original_author_id?: number; // int64
pull_request_url?: string;
updated_at?: string; // date-time
user?: User;
}
/**
* Commit contains information generated from a Git commit.
*/
export interface Commit {
author?: User;
commit?: RepoCommit;
committer?: User;
created?: string; // date-time
files?: CommitAffectedFiles[];
html_url?: string;
parents?: CommitMeta[];
sha?: string;
stats?: CommitStats;
url?: string;
}
/**
* CommitAffectedFiles store information about files affected by the commit
*/
export interface CommitAffectedFiles {
filename?: string;
}
/**
* CommitDateOptions store dates for GIT_AUTHOR_DATE and GIT_COMMITTER_DATE
*/
export interface CommitDateOptions {
author?: string; // date-time
committer?: string; // date-time
}
/**
* CommitMeta contains meta information of a commit in terms of API.
*/
export interface CommitMeta {
created?: string; // date-time
sha?: string;
url?: string;
}
/**
* CommitStats is statistics for a RepoCommit
*/
export interface CommitStats {
additions?: number; // int64
deletions?: number; // int64
total?: number; // int64
}
/**
* CommitStatus holds a single status of a single Commit
*/
export interface CommitStatus {
context?: string;
created_at?: string; // date-time
creator?: User;
description?: string;
id?: number; // int64
status?: CommitStatusState;
target_url?: string;
updated_at?: string; // date-time
url?: string;
}
/**
* CommitStatusState holds the state of a CommitStatus
* It can be "pending", "success", "error", "failure", and "warning"
*/
export type CommitStatusState = string;
/**
* CommitUser contains information of a user in the context of a commit.
*/
export interface CommitUser {
date?: string;
email?: string; // email
name?: string;
}
/**
* ContentsResponse contains information about a repo's entry's (dir, file, symlink, submodule) metadata and content
*/
export interface ContentsResponse {
_links?: FileLinksResponse;
/**
* `content` is populated when `type` is `file`, otherwise null
*/
content?: string;
download_url?: string;
/**
* `encoding` is populated when `type` is `file`, otherwise null
*/
encoding?: string;
git_url?: string;
html_url?: string;
last_commit_sha?: string;
name?: string;
path?: string;
sha?: string;
size?: number; // int64
/**
* `submodule_git_url` is populated when `type` is `submodule`, otherwise null
*/
submodule_git_url?: string;
/**
* `target` is populated when `type` is `symlink`, otherwise null
*/
target?: string;
/**
* `type` will be `file`, `dir`, `symlink`, or `submodule`
*/
type?: string;
url?: string;
}
/**
* CreateAccessTokenOption options when create access token
*/
export interface CreateAccessTokenOption {
name: string;
scopes?: string[];
}
/**
* CreateBranchProtectionOption options for creating a branch protection
*/
export interface CreateBranchProtectionOption {
approvals_whitelist_teams?: string[];
approvals_whitelist_username?: string[];
block_on_official_review_requests?: boolean;
block_on_outdated_branch?: boolean;
block_on_rejected_reviews?: boolean;
/**
* Deprecated: true
*/
branch_name?: string;
dismiss_stale_approvals?: boolean;
enable_approvals_whitelist?: boolean;
enable_merge_whitelist?: boolean;
enable_push?: boolean;
enable_push_whitelist?: boolean;
enable_status_check?: boolean;
merge_whitelist_teams?: string[];
merge_whitelist_usernames?: string[];
protected_file_patterns?: string;
push_whitelist_deploy_keys?: boolean;
push_whitelist_teams?: string[];
push_whitelist_usernames?: string[];
require_signed_commits?: boolean;
required_approvals?: number; // int64
rule_name?: string;
status_check_contexts?: string[];
unprotected_file_patterns?: string;
}
/**
* CreateBranchRepoOption options when creating a branch in a repository
*/
export interface CreateBranchRepoOption {
/**
* Name of the branch to create
*/
new_branch_name: string;
/**
* Name of the old branch to create from
*/
old_branch_name?: string;
}
/**
* CreateEmailOption options when creating email addresses
*/
export interface CreateEmailOption {
/**
* email addresses to add
*/
emails?: string[];
}
/**
* CreateFileOptions options for creating files
* Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used)
*/
export interface CreateFileOptions {
author?: Identity;
/**
* branch (optional) to base this file from. if not given, the default branch is used
*/
branch?: string;
committer?: Identity;
/**
* content must be base64 encoded
*/
content: string;
dates?: CommitDateOptions;
/**
* message (optional) for the commit of this file. if not supplied, a default message will be used
*/
message?: string;
/**
* new_branch (optional) will make a new branch from `branch` before creating the file
*/
new_branch?: string;
/**
* Add a Signed-off-by trailer by the committer at the end of the commit log message.
*/
signoff?: boolean;
}
/**
* CreateForkOption options for creating a fork
*/
export interface CreateForkOption {
/**
* name of the forked repository
*/
name?: string;
/**
* organization name, if forking into an organization
*/
organization?: string;
}
/**
* CreateGPGKeyOption options create user GPG key
*/
export interface CreateGPGKeyOption {
/**
* An armored GPG key to add
*/
armored_public_key: string;
armored_signature?: string;
}
/**
* CreateHookOption options when create a hook
*/
export interface CreateHookOption {
active?: boolean;
authorization_header?: string;
branch_filter?: string;
config: CreateHookOptionConfig;
events?: string[];
type: "dingtalk" | "discord" | "gitea" | "gogs" | "msteams" | "slack" | "telegram" | "feishu" | "wechatwork" | "packagist";
}
/**
* CreateHookOptionConfig has all config options in it
* required are "content_type" and "url" Required
*/
export interface CreateHookOptionConfig {
[name: string]: string;
}
/**
* CreateIssueCommentOption options for creating a comment on an issue
*/
export interface CreateIssueCommentOption {
body: string;
}
/**
* CreateIssueOption options to create one issue
*/
export interface CreateIssueOption {
/**
* deprecated
*/
assignee?: string;
assignees?: string[];
body?: string;
closed?: boolean;
due_date?: string; // date-time
/**
* list of label ids
*/
labels?: number /* int64 */ [];
/**
* milestone id
*/
milestone?: number; // int64
ref?: string;
title: string;
}
/**
* CreateKeyOption options when creating a key
*/
export interface CreateKeyOption {
/**
* An armored SSH key to add
*/
key: string;
/**
* Describe if the key has only read access or read/write
*/
read_only?: boolean;
/**
* Title of the key to add
*/
title: string;
}
/**
* CreateLabelOption options for creating a label
*/
export interface CreateLabelOption {
/**
* example:
* #00aabb
*/
color: string;
description?: string;
/**
* example:
* false
*/
exclusive?: boolean;
name: string;
}
/**
* CreateMilestoneOption options for creating a milestone
*/
export interface CreateMilestoneOption {
description?: string;
due_on?: string; // date-time
state?: "open" | "closed";
title?: string;
}
/**
* CreateOAuth2ApplicationOptions holds options to create an oauth2 application
*/
export interface CreateOAuth2ApplicationOptions {
confidential_client?: boolean;
name?: string;
redirect_uris?: string[];
}
/**
* CreateOrgOption options for creating an organization
*/
export interface CreateOrgOption {
description?: string;
full_name?: string;
location?: string;
repo_admin_change_team_access?: boolean;
username: string;
/**
* possible values are `public` (default), `limited` or `private`
*/
visibility?: "public" | "limited" | "private";
website?: string;
}
/**
* CreatePullRequestOption options when creating a pull request
*/
export interface CreatePullRequestOption {
assignee?: string;
assignees?: string[];
base?: string;
body?: string;
due_date?: string; // date-time
head?: string;
labels?: number /* int64 */ [];
milestone?: number; // int64
title?: string;
}
/**
* CreatePullReviewComment represent a review comment for creation api
*/
export interface CreatePullReviewComment {
body?: string;
/**
* if comment to new file line or 0
*/
new_position?: number; // int64
/**
* if comment to old file line or 0
*/
old_position?: number; // int64
/**
* the tree path
*/
path?: string;
}
/**
* CreatePullReviewOptions are options to create a pull review
*/
export interface CreatePullReviewOptions {
body?: string;
comments?: CreatePullReviewComment[];
commit_id?: string;
event?: ReviewStateType;
}
/**
* CreatePushMirrorOption represents need information to create a push mirror of a repository.
*/
export interface CreatePushMirrorOption {
interval?: string;
remote_address?: string;
remote_password?: string;
remote_username?: string;
sync_on_commit?: boolean;
}
/**
* CreateReleaseOption options when creating a release
*/
export interface CreateReleaseOption {
body?: string;
draft?: boolean;
name?: string;
prerelease?: boolean;
tag_name: string;
target_commitish?: string;
}
/**
* CreateRepoOption options when creating repository
*/
export interface CreateRepoOption {
/**
* Whether the repository should be auto-initialized?
*/
auto_init?: boolean;
/**
* DefaultBranch of the repository (used when initializes and in template)
*/
default_branch?: string;
/**
* Description of the repository to create
*/
description?: string;
/**
* Gitignores to use
*/
gitignores?: string;
/**
* Label-Set to use
*/
issue_labels?: string;
/**
* License to use
*/
license?: string;
/**
* Name of the repository to create
*/
name: string;
/**
* Whether the repository is private
*/
private?: boolean;
/**
* Readme of the repository to create
*/
readme?: string;
/**
* Whether the repository is template
*/
template?: boolean;
/**
* TrustModel of the repository
*/
trust_model?: "default" | "collaborator" | "committer" | "collaboratorcommitter";
}
/**
* CreateStatusOption holds the information needed to create a new CommitStatus for a Commit
*/
export interface CreateStatusOption {
context?: string;
description?: string;
state?: CommitStatusState;
target_url?: string;
}
/**
* CreateTagOption options when creating a tag
*/
export interface CreateTagOption {
message?: string;
tag_name: string;
target?: string;
}
/**
* CreateTeamOption options for creating a team
*/
export interface CreateTeamOption {
can_create_org_repo?: boolean;
description?: string;
includes_all_repositories?: boolean;
name: string;
permission?: "read" | "write" | "admin";
/**
* example:
* repo.code,repo.issues,repo.ext_issues,repo.wiki,repo.pulls,repo.releases,repo.projects,repo.ext_wiki
*/
units?: string[];
/**
* example:
* [object Object]
*/
units_map?: {
[name: string]: string;
};
}
/**
* CreateUserOption create user options
*/
export interface CreateUserOption {
/**
* For explicitly setting the user creation timestamp. Useful when users are
* migrated from other systems. When omitted, the user's creation timestamp
* will be set to "now".
*/
created_at?: string; // date-time
email: string; // email
full_name?: string;
login_name?: string;
must_change_password?: boolean;
password: string;
restricted?: boolean;
send_notify?: boolean;
source_id?: number; // int64
username: string;
visibility?: string;
}
/**
* CreateWikiPageOptions form for creating wiki
*/
export interface CreateWikiPageOptions {
/**
* content must be base64 encoded
*/
content_base64?: string;
/**
* optional commit message summarizing the change
*/
message?: string;
/**
* page title. leave empty to keep unchanged
*/
title?: string;
}
/**
* Cron represents a Cron task
*/
export interface Cron {
exec_times?: number; // int64
name?: string;
next?: string; // date-time
prev?: string; // date-time
schedule?: string;
}
/**
* DeleteEmailOption options when deleting email addresses
*/
export interface DeleteEmailOption {
/**
* email addresses to delete
*/
emails?: string[];
}
/**
* DeleteFileOptions options for deleting files (used for other File structs below)
* Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used)
*/
export interface DeleteFileOptions {
author?: Identity;
/**
* branch (optional) to base this file from. if not given, the default branch is used
*/
branch?: string;
committer?: Identity;
dates?: CommitDateOptions;
/**
* message (optional) for the commit of this file. if not supplied, a default message will be used
*/
message?: string;
/**
* new_branch (optional) will make a new branch from `branch` before creating the file
*/
new_branch?: string;
/**
* sha is the SHA for the file that already exists
*/
sha: string;
/**
* Add a Signed-off-by trailer by the committer at the end of the commit log message.
*/
signoff?: boolean;
}
/**
* DeployKey a deploy key
*/
export interface DeployKey {
created_at?: string; // date-time
fingerprint?: string;
id?: number; // int64
key?: string;
key_id?: number; // int64
read_only?: boolean;
repository?: Repository;
title?: string;
url?: string;
}
/**
* DismissPullReviewOptions are options to dismiss a pull review
*/
export interface DismissPullReviewOptions {
message?: string;
priors?: boolean;
}
/**
* EditAttachmentOptions options for editing attachments
*/
export interface EditAttachmentOptions {
name?: string;
}
/**
* EditBranchProtectionOption options for editing a branch protection
*/
export interface EditBranchProtectionOption {
approvals_whitelist_teams?: string[];
approvals_whitelist_username?: string[];
block_on_official_review_requests?: boolean;
block_on_outdated_branch?: boolean;
block_on_rejected_reviews?: boolean;
dismiss_stale_approvals?: boolean;
enable_approvals_whitelist?: boolean;
enable_merge_whitelist?: boolean;
enable_push?: boolean;
enable_push_whitelist?: boolean;
enable_status_check?: boolean;
merge_whitelist_teams?: string[];
merge_whitelist_usernames?: string[];
protected_file_patterns?: string;
push_whitelist_deploy_keys?: boolean;
push_whitelist_teams?: string[];
push_whitelist_usernames?: string[];
require_signed_commits?: boolean;
required_approvals?: number; // int64
status_check_contexts?: string[];
unprotected_file_patterns?: string;
}
/**
* EditDeadlineOption options for creating a deadline
*/
export interface EditDeadlineOption {
due_date: string; // date-time
}
/**
* EditGitHookOption options when modifying one Git hook
*/
export interface EditGitHookOption {
content?: string;
}
/**
* EditHookOption options when modify one hook
*/
export interface EditHookOption {
active?: boolean;
authorization_header?: string;
branch_filter?: string;
config?: {
[name: string]: string;
};
events?: string[];
}
/**
* EditIssueCommentOption options for editing a comment
*/
export interface EditIssueCommentOption {
body: string;
}
/**
* EditIssueOption options for editing an issue
*/
export interface EditIssueOption {
/**
* deprecated
*/
assignee?: string;
assignees?: string[];
body?: string;
due_date?: string; // date-time
milestone?: number; // int64
ref?: string;
state?: string;
title?: string;
unset_due_date?: boolean;
}
/**
* EditLabelOption options for editing a label
*/
export interface EditLabelOption {
/**
* example:
* #00aabb
*/
color?: string;
description?: string;
/**
* example:
* false
*/
exclusive?: boolean;
name?: string;
}
/**
* EditMilestoneOption options for editing a milestone
*/
export interface EditMilestoneOption {
description?: string;
due_on?: string; // date-time
state?: string;
title?: string;
}
/**
* EditOrgOption options for editing an organization
*/
export interface EditOrgOption {
description?: string;
full_name?: string;
location?: string;
repo_admin_change_team_access?: boolean;
/**
* possible values are `public`, `limited` or `private`
*/
visibility?: "public" | "limited" | "private";
website?: string;
}
/**
* EditPullRequestOption options when modify pull request
*/
export interface EditPullRequestOption {
allow_maintainer_edit?: boolean;
assignee?: string;
assignees?: string[];
base?: string;
body?: string;
due_date?: string; // date-time
labels?: number /* int64 */ [];
milestone?: number; // int64
state?: string;
title?: string;
unset_due_date?: boolean;
}
/**
* EditReactionOption contain the reaction type
*/
export interface EditReactionOption {
content?: string;
}
/**
* EditReleaseOption options when editing a release
*/
export interface EditReleaseOption {
body?: string;
draft?: boolean;
name?: string;
prerelease?: boolean;
tag_name?: string;
target_commitish?: string;
}
/**
* EditRepoOption options when editing a repository's properties
*/
export interface EditRepoOption {
/**
* either `true` to allow mark pr as merged manually, or `false` to prevent it.
*/
allow_manual_merge?: boolean;
/**
* either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
*/
allow_merge_commits?: boolean;
/**
* either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
*/
allow_rebase?: boolean;
/**
* either `true` to allow rebase with explicit merge commits (--no-ff), or `false` to prevent rebase with explicit merge commits.
*/
allow_rebase_explicit?: boolean;
/**
* either `true` to allow updating pull request branch by rebase, or `false` to prevent it.
*/
allow_rebase_update?: boolean;
/**
* either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
*/
allow_squash_merge?: boolean;
/**
* set to `true` to archive this repository.
*/
archived?: boolean;
/**
* either `true` to enable AutodetectManualMerge, or `false` to prevent it. Note: In some special cases, misjudgments can occur.
*/
autodetect_manual_merge?: boolean;
/**
* set to `true` to allow edits from maintainers by default
*/
default_allow_maintainer_edit?: boolean;
/**
* sets the default branch for this repository.
*/
default_branch?: string;
/**
* set to `true` to delete pr branch after merge by default
*/
default_delete_branch_after_merge?: boolean;
/**
* set to a merge style to be used by this repository: "merge", "rebase", "rebase-merge", or "squash".
*/
default_merge_style?: string;
/**
* a short description of the repository.
*/
description?: string;
/**
* enable prune - remove obsolete remote-tracking references
*/
enable_prune?: boolean;
external_tracker?: ExternalTracker;
external_wiki?: ExternalWiki;
/**
* either `true` to enable issues for this repository or `false` to disable them.
*/
has_issues?: boolean;
/**
* either `true` to enable project unit, or `false` to disable them.
*/
has_projects?: boolean;
/**
* either `true` to allow pull requests, or `false` to prevent pull request.
*/
has_pull_requests?: boolean;
/**
* either `true` to enable the wiki for this repository or `false` to disable it.
*/
has_wiki?: boolean;
/**
* either `true` to ignore whitespace for conflicts, or `false` to not ignore whitespace.
*/
ignore_whitespace_conflicts?: boolean;
internal_tracker?: InternalTracker;
/**
* set to a string like `8h30m0s` to set the mirror interval time
*/
mirror_interval?: string;
/**
* name of the repository
*/
name?: string;
/**
* either `true` to make the repository private or `false` to make it public.
* Note: you will get a 422 error if the organization restricts changing repository visibility to organization
* owners and a non-owner tries to change the value of private.
*/
private?: boolean;
/**
* either `true` to make this repository a template or `false` to make it a normal repository
*/
template?: boolean;
/**
* a URL with more information about the repository.
*/
website?: string;
}
/**
* EditTeamOption options for editing a team
*/
export interface EditTeamOption {
can_create_org_repo?: boolean;
description?: string;
includes_all_repositories?: boolean;
name: string;
permission?: "read" | "write" | "admin";
/**
* example:
* repo.code,repo.issues,repo.ext_issues,repo.wiki,repo.pulls,repo.releases,repo.projects,repo.ext_wiki
*/
units?: string[];
/**
* example:
* [object Object]
*/
units_map?: {
[name: string]: string;
};
}
/**
* EditUserOption edit user options
*/
export interface EditUserOption {
active?: boolean;
admin?: boolean;
allow_create_organization?: boolean;
allow_git_hook?: boolean;
allow_import_local?: boolean;
description?: string;
email?: string; // email
full_name?: string;
location?: string;
login_name: string;
max_repo_creation?: number; // int64
must_change_password?: boolean;
password?: string;
prohibit_login?: boolean;
restricted?: boolean;
source_id: number; // int64
visibility?: string;
website?: string;
}
/**
* Email an email address belonging to a user
*/
export interface Email {
email?: string; // email
primary?: boolean;
verified?: boolean;
}
/**
* ExternalTracker represents settings for external tracker
*/
export interface ExternalTracker {
/**
* External Issue Tracker URL Format. Use the placeholders {user}, {repo} and {index} for the username, repository name and issue index.
*/
external_tracker_format?: string;
/**
* External Issue Tracker issue regular expression
*/
external_tracker_regexp_pattern?: string;
/**
* External Issue Tracker Number Format, either `numeric`, `alphanumeric`, or `regexp`
*/
external_tracker_style?: string;
/**
* URL of external issue tracker.
*/
external_tracker_url?: string;
}
/**
* ExternalWiki represents setting for external wiki
*/
export interface ExternalWiki {
/**
* URL of external wiki.
*/
external_wiki_url?: string;
}
/**
* FileCommitResponse contains information generated from a Git commit for a repo's file.
*/
export interface FileCommitResponse {
author?: CommitUser;
committer?: CommitUser;
created?: string; // date-time
html_url?: string;
message?: string;
parents?: CommitMeta[];
sha?: string;
tree?: CommitMeta;
url?: string;
}
/**
* FileDeleteResponse contains information about a repo's file that was deleted
*/
export interface FileDeleteResponse {
commit?: FileCommitResponse;
content?: any;
verification?: PayloadCommitVerification;
}
/**
* FileLinksResponse contains the links for a repo's file
*/
export interface FileLinksResponse {
git?: string;
html?: string;
self?: string;
}
/**
* FileResponse contains information about a repo's file
*/
export interface FileResponse {
commit?: FileCommitResponse;
content?: ContentsResponse;
verification?: PayloadCommitVerification;
}
/**
* GPGKey a user GPG key to sign commit and tag in repository
*/
export interface GPGKey {
can_certify?: boolean;
can_encrypt_comms?: boolean;
can_encrypt_storage?: boolean;
can_sign?: boolean;
created_at?: string; // date-time
emails?: GPGKeyEmail[];
expires_at?: string; // date-time
id?: number; // int64
key_id?: string;
primary_key_id?: string;
public_key?: string;
subkeys?: GPGKey[];
verified?: boolean;
}
/**
* GPGKeyEmail an email attached to a GPGKey
*/
export interface GPGKeyEmail {
email?: string;
verified?: boolean;
}
/**
* GeneralAPISettings contains global api settings exposed by it
*/
export interface GeneralAPISettings {
default_git_trees_per_page?: number; // int64
default_max_blob_size?: number; // int64
default_paging_num?: number; // int64
max_response_items?: number; // int64
}
/**
* GeneralAttachmentSettings contains global Attachment settings exposed by API
*/
export interface GeneralAttachmentSettings {
allowed_types?: string;
enabled?: boolean;
max_files?: number; // int64
max_size?: number; // int64
}
/**
* GeneralRepoSettings contains global repository settings exposed by API
*/
export interface GeneralRepoSettings {
http_git_disabled?: boolean;
lfs_disabled?: boolean;
migrations_disabled?: boolean;
mirrors_disabled?: boolean;
stars_disabled?: boolean;
time_tracking_disabled?: boolean;
}
/**
* GeneralUISettings contains global ui settings exposed by API
*/
export interface GeneralUISettings {
allowed_reactions?: string[];
custom_emojis?: string[];
default_theme?: string;
}
/**
* GenerateRepoOption options when creating repository using a template
*/
export interface GenerateRepoOption {
/**
* include avatar of the template repo
*/
avatar?: boolean;
/**
* Default branch of the new repository
*/
default_branch?: string;
/**
* Description of the repository to create
*/
description?: string;
/**
* include git content of default branch in template repo
*/
git_content?: boolean;
/**
* include git hooks in template repo
*/
git_hooks?: boolean;
/**
* include labels in template repo
*/
labels?: boolean;
/**
* Name of the repository to create
*/
name: string;
/**
* The organization or person who will own the new repository
*/
owner: string;
/**
* Whether the repository is private
*/
private?: boolean;
/**
* include topics in template repo
*/
topics?: boolean;
/**
* include webhooks in template repo
*/
webhooks?: boolean;
}
/**
* GitBlobResponse represents a git blob
*/
export interface GitBlobResponse {
content?: string;
encoding?: string;
sha?: string;
size?: number; // int64
url?: string;
}
/**
* GitEntry represents a git tree
*/
export interface GitEntry {
mode?: string;
path?: string;
sha?: string;
size?: number; // int64
type?: string;
url?: string;
}
/**
* GitHook represents a Git repository hook
*/
export interface GitHook {
content?: string;
is_active?: boolean;
name?: string;
}
/**
* GitObject represents a Git object.
*/
export interface GitObject {
sha?: string;
type?: string;
url?: string;
}
/**
* GitTreeResponse returns a git tree
*/
export interface GitTreeResponse {
page?: number; // int64
sha?: string;
total_count?: number; // int64
tree?: GitEntry[];
truncated?: boolean;
url?: string;
}
/**
* Hook a hook is a web hook when one repository changed
*/
export interface Hook {
active?: boolean;
authorization_header?: string;
config?: {
[name: string]: string;
};
created_at?: string; // date-time
events?: string[];
id?: number; // int64
type?: string;
updated_at?: string; // date-time
}
/**
* Identity for a person's identity like an author or committer
*/
export interface Identity {
email?: string; // email
name?: string;
}
/**
* InternalTracker represents settings for internal tracker
*/
export interface InternalTracker {
/**
* Let only contributors track time (Built-in issue tracker)
*/
allow_only_contributors_to_track_time?: boolean;
/**
* Enable dependencies for issues and pull requests (Built-in issue tracker)
*/
enable_issue_dependencies?: boolean;
/**
* Enable time tracking (Built-in issue tracker)
*/
enable_time_tracker?: boolean;
}
/**
* Issue represents an issue in a repository
*/
export interface Issue {
assets?: Attachment[];
assignee?: User;
assignees?: User[];
body?: string;
closed_at?: string; // date-time
comments?: number; // int64
created_at?: string; // date-time
due_date?: string; // date-time
html_url?: string;
id?: number; // int64
is_locked?: boolean;
labels?: Label[];
milestone?: Milestone;
number?: number; // int64
original_author?: string;
original_author_id?: number; // int64
pull_request?: PullRequestMeta;
ref?: string;
repository?: RepositoryMeta;
state?: StateType;
title?: string;
updated_at?: string; // date-time
url?: string;
user?: User;
}
/**
* IssueDeadline represents an issue deadline
*/
export interface IssueDeadline {
due_date?: string; // date-time
}
/**
* IssueFormField represents a form field
*/
export interface IssueFormField {
attributes?: {
[name: string]: any;
};
id?: string;
type?: IssueFormFieldType;
validations?: {
[name: string]: any;
};
}
/**
* IssueFormFieldType defines issue form field type, can be "markdown", "textarea", "input", "dropdown" or "checkboxes"
*/
export type IssueFormFieldType = string;
/**
* IssueLabelsOption a collection of labels
*/
export interface IssueLabelsOption {
/**
* list of label IDs
*/
labels?: number /* int64 */ [];
}
/**
* IssueTemplate represents an issue template for a repository
*/
export interface IssueTemplate {
about?: string;
body?: IssueFormField[];
content?: string;
file_name?: string;
labels?: IssueTemplateLabels;
name?: string;
ref?: string;
title?: string;
}
export type IssueTemplateLabels = string[];
/**
* Label a label to an issue or a pr
*/
export interface Label {
/**
* example:
* 00aabb
*/
color?: string;
description?: string;
/**
* example:
* false
*/
exclusive?: boolean;
id?: number; // int64
name?: string;
url?: string;
}
/**
* MarkdownOption markdown options
*/
export interface MarkdownOption {
/**
* Context to render
*
* in: body
*/
Context?: string;
/**
* Mode to render
*
* in: body
*/
Mode?: string;
/**
* Text markdown to render
*
* in: body
*/
Text?: string;
/**
* Is it a wiki page ?
*
* in: body
*/
Wiki?: boolean;
}
/**
* MergePullRequestForm form for merging Pull Request
*/
export interface MergePullRequestOption {
Do: "merge" | "rebase" | "rebase-merge" | "squash" | "manually-merged";
MergeCommitID?: string;
MergeMessageField?: string;
MergeTitleField?: string;
delete_branch_after_merge?: boolean;
force_merge?: boolean;
head_commit_id?: string;
merge_when_checks_succeed?: boolean;
}
/**
* MigrateRepoOptions options for migrating repository's
* this is used to interact with api v1
*/
export interface MigrateRepoOptions {
auth_password?: string;
auth_token?: string;
auth_username?: string;
clone_addr: string;
description?: string;
issues?: boolean;
labels?: boolean;
lfs?: boolean;
lfs_endpoint?: string;
milestones?: boolean;
mirror?: boolean;
mirror_interval?: string;
private?: boolean;
pull_requests?: boolean;
releases?: boolean;
repo_name: string;
/**
* Name of User or Organisation who will own Repo after migration
*/
repo_owner?: string;
service?: "git" | "github" | "gitea" | "gitlab";
/**
* deprecated (only for backwards compatibility)
*/
uid?: number; // int64
wiki?: boolean;
}
/**
* Milestone milestone is a collection of issues on one repository
*/
export interface Milestone {
closed_at?: string; // date-time
closed_issues?: number; // int64
created_at?: string; // date-time
description?: string;
due_on?: string; // date-time
id?: number; // int64
open_issues?: number; // int64
state?: StateType;
title?: string;
updated_at?: string; // date-time
}
/**
* NodeInfo contains standardized way of exposing metadata about a server running one of the distributed social networks
*/
export interface NodeInfo {
metadata?: {
};
openRegistrations?: boolean;
protocols?: string[];
services?: NodeInfoServices;
software?: NodeInfoSoftware;
usage?: NodeInfoUsage;
version?: string;
}
/**
* NodeInfoServices contains the third party sites this server can connect to via their application API
*/
export interface NodeInfoServices {
inbound?: string[];
outbound?: string[];
}
/**
* NodeInfoSoftware contains Metadata about server software in use
*/
export interface NodeInfoSoftware {
homepage?: string;
name?: string;
repository?: string;
version?: string;
}
/**
* NodeInfoUsage contains usage statistics for this server
*/
export interface NodeInfoUsage {
localComments?: number; // int64
localPosts?: number; // int64
users?: NodeInfoUsageUsers;
}
/**
* NodeInfoUsageUsers contains statistics about the users of this server
*/
export interface NodeInfoUsageUsers {
activeHalfyear?: number; // int64
activeMonth?: number; // int64
total?: number; // int64
}
/**
* Note contains information related to a git note
*/
export interface Note {
commit?: Commit;
message?: string;
}
/**
* NotificationCount number of unread notifications
*/
export interface NotificationCount {
new?: number; // int64
}
/**
* NotificationSubject contains the notification subject (Issue/Pull/Commit)
*/
export interface NotificationSubject {
html_url?: string;
latest_comment_html_url?: string;
latest_comment_url?: string;
state?: StateType;
title?: string;
type?: NotifySubjectType;
url?: string;
}
/**
* NotificationThread expose Notification on API
*/
export interface NotificationThread {
id?: number; // int64
pinned?: boolean;
repository?: Repository;
subject?: NotificationSubject;
unread?: boolean;
updated_at?: string; // date-time
url?: string;
}
/**
* NotifySubjectType represent type of notification subject
*/
export type NotifySubjectType = string;
/**
* OAuth2Application represents an OAuth2 application.
*/
export interface OAuth2Application {
client_id?: string;
client_secret?: string;
confidential_client?: boolean;
created?: string; // date-time
id?: number; // int64
name?: string;
redirect_uris?: string[];
}
/**
* Organization represents an organization
*/
export interface Organization {
avatar_url?: string;
description?: string;
full_name?: string;
id?: number; // int64
location?: string;
name?: string;
repo_admin_change_team_access?: boolean;
/**
* deprecated
*/
username?: string;
visibility?: string;
website?: string;
}
/**
* OrganizationPermissions list different users permissions on an organization
*/
export interface OrganizationPermissions {
can_create_repository?: boolean;
can_read?: boolean;
can_write?: boolean;
is_admin?: boolean;
is_owner?: boolean;
}
/**
* PRBranchInfo information about a branch
*/
export interface PRBranchInfo {
label?: string;
ref?: string;
repo?: Repository;
repo_id?: number; // int64
sha?: string;
}
/**
* Package represents a package
*/
export interface Package {
created_at?: string; // date-time
creator?: User;
id?: number; // int64
name?: string;
owner?: User;
repository?: Repository;
type?: string;
version?: string;
}
/**
* PackageFile represents a package file
*/
export interface PackageFile {
Size?: number; // int64
id?: number; // int64
md5?: string;
name?: string;
sha1?: string;
sha256?: string;
sha512?: string;
}
/**
* PayloadCommit represents a commit
*/
export interface PayloadCommit {
added?: string[];
author?: PayloadUser;
committer?: PayloadUser;
/**
* sha1 hash of the commit
*/
id?: string;
message?: string;
modified?: string[];
removed?: string[];
timestamp?: string; // date-time
url?: string;
verification?: PayloadCommitVerification;
}
/**
* PayloadCommitVerification represents the GPG verification of a commit
*/
export interface PayloadCommitVerification {
payload?: string;
reason?: string;
signature?: string;
signer?: PayloadUser;
verified?: boolean;
}
/**
* PayloadUser represents the author or committer of a commit
*/
export interface PayloadUser {
email?: string; // email
/**
* Full name of the commit author
*/
name?: string;
username?: string;
}
/**
* Permission represents a set of permissions
*/
export interface Permission {
admin?: boolean;
pull?: boolean;
push?: boolean;
}
/**
* PublicKey publickey is a user key to push code to repository
*/
export interface PublicKey {
created_at?: string; // date-time
fingerprint?: string;
id?: number; // int64
key?: string;
key_type?: string;
read_only?: boolean;
title?: string;
url?: string;
user?: User;
}
/**
* PullRequest represents a pull request
*/
export interface PullRequest {
allow_maintainer_edit?: boolean;
assignee?: User;
assignees?: User[];
base?: PRBranchInfo;
body?: string;
closed_at?: string; // date-time
comments?: number; // int64
created_at?: string; // date-time
diff_url?: string;
due_date?: string; // date-time
head?: PRBranchInfo;
html_url?: string;
id?: number; // int64
is_locked?: boolean;
labels?: Label[];
merge_base?: string;
merge_commit_sha?: string;
mergeable?: boolean;
merged?: boolean;
merged_at?: string; // date-time
merged_by?: User;
milestone?: Milestone;
number?: number; // int64
patch_url?: string;
state?: StateType;
title?: string;
updated_at?: string; // date-time
url?: string;
user?: User;
}
/**
* PullRequestMeta PR info if an issue is a PR
*/
export interface PullRequestMeta {
merged?: boolean;
merged_at?: string; // date-time
}
/**
* PullReview represents a pull request review
*/
export interface PullReview {
body?: string;
comments_count?: number; // int64
commit_id?: string;
dismissed?: boolean;
html_url?: string;
id?: number; // int64
official?: boolean;
pull_request_url?: string;
stale?: boolean;
state?: ReviewStateType;
submitted_at?: string; // date-time
team?: Team;
updated_at?: string; // date-time
user?: User;
}
/**
* PullReviewComment represents a comment on a pull request review
*/
export interface PullReviewComment {
body?: string;
commit_id?: string;
created_at?: string; // date-time
diff_hunk?: string;
html_url?: string;
id?: number; // int64
original_commit_id?: string;
original_position?: number; // uint64
path?: string;
position?: number; // uint64
pull_request_review_id?: number; // int64
pull_request_url?: string;
resolver?: User;
updated_at?: string; // date-time
user?: User;
}
/**
* PullReviewRequestOptions are options to add or remove pull review requests
*/
export interface PullReviewRequestOptions {
reviewers?: string[];
team_reviewers?: string[];
}
/**
* PushMirror represents information of a push mirror
*/
export interface PushMirror {
created?: string;
interval?: string;
last_error?: string;
last_update?: string;
remote_address?: string;
remote_name?: string;
repo_name?: string;
sync_on_commit?: boolean;
}
/**
* Reaction contain one reaction
*/
export interface Reaction {
content?: string;
created_at?: string; // date-time
user?: User;
}
/**
* Reference represents a Git reference.
*/
export interface Reference {
object?: GitObject;
ref?: string;
url?: string;
}
/**
* Release represents a repository release
*/
export interface Release {
assets?: Attachment[];
author?: User;
body?: string;
created_at?: string; // date-time
draft?: boolean;
html_url?: string;
id?: number; // int64
name?: string;
prerelease?: boolean;
published_at?: string; // date-time
tag_name?: string;
tarball_url?: string;
target_commitish?: string;
url?: string;
zipball_url?: string;
}
/**
* RepoCollaboratorPermission to get repository permission for a collaborator
*/
export interface RepoCollaboratorPermission {
permission?: string;
role_name?: string;
user?: User;
}
/**
* RepoCommit contains information of a commit in the context of a repository.
*/
export interface RepoCommit {
author?: CommitUser;
committer?: CommitUser;
message?: string;
tree?: CommitMeta;
url?: string;
verification?: PayloadCommitVerification;
}
/**
* RepoTopicOptions a collection of repo topic names
*/
export interface RepoTopicOptions {
/**
* list of topic names
*/
topics?: string[];
}
/**
* RepoTransfer represents a pending repo transfer
*/
export interface RepoTransfer {
doer?: User;
recipient?: User;
teams?: Team[];
}
/**
* Repository represents a repository
*/
export interface Repository {
allow_merge_commits?: boolean;
allow_rebase?: boolean;
allow_rebase_explicit?: boolean;
allow_rebase_update?: boolean;
allow_squash_merge?: boolean;
archived?: boolean;
avatar_url?: string;
clone_url?: string;
created_at?: string; // date-time
default_allow_maintainer_edit?: boolean;
default_branch?: string;
default_delete_branch_after_merge?: boolean;
default_merge_style?: string;
description?: string;
empty?: boolean;
external_tracker?: ExternalTracker;
external_wiki?: ExternalWiki;
fork?: boolean;
forks_count?: number; // int64
full_name?: string;
has_issues?: boolean;
has_projects?: boolean;
has_pull_requests?: boolean;
has_wiki?: boolean;
html_url?: string;
id?: number; // int64
ignore_whitespace_conflicts?: boolean;
internal?: boolean;
internal_tracker?: InternalTracker;
language?: string;
languages_url?: string;
link?: string;
mirror?: boolean;
mirror_interval?: string;
mirror_updated?: string; // date-time
name?: string;
open_issues_count?: number; // int64
open_pr_counter?: number; // int64
original_url?: string;
owner?: User;
parent?: Repository;
permissions?: Permission;
private?: boolean;
release_counter?: number; // int64
repo_transfer?: RepoTransfer;
size?: number; // int64
ssh_url?: string;
stars_count?: number; // int64
template?: boolean;
updated_at?: string; // date-time
watchers_count?: number; // int64
website?: string;
}
/**
* RepositoryMeta basic repository information
*/
export interface RepositoryMeta {
full_name?: string;
id?: number; // int64
name?: string;
owner?: string;
}
/**
* ReviewStateType review state type
*/
export type ReviewStateType = string;
/**
* SearchResults results of a successful search
*/
export interface SearchResults {
data?: Repository[];
ok?: boolean;
}
/**
* ServerVersion wraps the version of the server
*/
export interface ServerVersion {
version?: string;
}
/**
* StateType issue state type
*/
export type StateType = string;
/**
* StopWatch represent a running stopwatch
*/
export interface StopWatch {
created?: string; // date-time
duration?: string;
issue_index?: number; // int64
issue_title?: string;
repo_name?: string;
repo_owner_name?: string;
seconds?: number; // int64
}
/**
* SubmitPullReviewOptions are options to submit a pending pull review
*/
export interface SubmitPullReviewOptions {
body?: string;
event?: ReviewStateType;
}
/**
* Tag represents a repository tag
*/
export interface Tag {
commit?: CommitMeta;
id?: string;
message?: string;
name?: string;
tarball_url?: string;
zipball_url?: string;
}
/**
* Team represents a team in an organization
*/
export interface Team {
can_create_org_repo?: boolean;
description?: string;
id?: number; // int64
includes_all_repositories?: boolean;
name?: string;
organization?: Organization;
permission?: "none" | "read" | "write" | "admin" | "owner";
/**
* example:
* repo.code,repo.issues,repo.ext_issues,repo.wiki,repo.pulls,repo.releases,repo.projects,repo.ext_wiki
*/
units?: string[];
/**
* example:
* [object Object]
*/
units_map?: {
[name: string]: string;
};
}
/**
* TimeStamp defines a timestamp
*/
export type TimeStamp = number; // int64
/**
* TimelineComment represents a timeline comment (comment of any type) on a commit or issue
*/
export interface TimelineComment {
assignee?: User;
assignee_team?: Team;
body?: string;
created_at?: string; // date-time
dependent_issue?: Issue;
html_url?: string;
id?: number; // int64
issue_url?: string;
label?: Label;
milestone?: Milestone;
new_ref?: string;
new_title?: string;
old_milestone?: Milestone;
old_project_id?: number; // int64
old_ref?: string;
old_title?: string;
project_id?: number; // int64
pull_request_url?: string;
ref_action?: string;
ref_comment?: Comment;
/**
* commit SHA where issue/PR was referenced
*/
ref_commit_sha?: string;
ref_issue?: Issue;
/**
* whether the assignees were removed or added
*/
removed_assignee?: boolean;
resolve_doer?: User;
review_id?: number; // int64
tracked_time?: TrackedTime;
type?: string;
updated_at?: string; // date-time
user?: User;
}
/**
* TopicName a list of repo topic names
*/
export interface TopicName {
topics?: string[];
}
/**
* TopicResponse for returning topics
*/
export interface TopicResponse {
created?: string; // date-time
id?: number; // int64
repo_count?: number; // int64
topic_name?: string;
updated?: string; // date-time
}
/**
* TrackedTime worked time for an issue / pr
*/
export interface TrackedTime {
created?: string; // date-time
id?: number; // int64
issue?: Issue;
/**
* deprecated (only for backwards compatibility)
*/
issue_id?: number; // int64
/**
* Time in seconds
*/
time?: number; // int64
/**
* deprecated (only for backwards compatibility)
*/
user_id?: number; // int64
user_name?: string;
}
/**
* TransferRepoOption options when transfer a repository's ownership
*/
export interface TransferRepoOption {
new_owner: string;
/**
* ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.
*/
team_ids?: number /* int64 */ [];
}
/**
* UpdateFileOptions options for updating files
* Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used)
*/
export interface UpdateFileOptions {
author?: Identity;
/**
* branch (optional) to base this file from. if not given, the default branch is used
*/
branch?: string;
committer?: Identity;
/**
* content must be base64 encoded
*/
content: string;
dates?: CommitDateOptions;
/**
* from_path (optional) is the path of the original file which will be moved/renamed to the path in the URL
*/
from_path?: string;
/**
* message (optional) for the commit of this file. if not supplied, a default message will be used
*/
message?: string;
/**
* new_branch (optional) will make a new branch from `branch` before creating the file
*/
new_branch?: string;
/**
* sha is the SHA for the file that already exists
*/
sha: string;
/**
* Add a Signed-off-by trailer by the committer at the end of the commit log message.
*/
signoff?: boolean;
}
/**
* User represents a user
*/
export interface User {
/**
* Is user active
*/
active?: boolean;
/**
* URL to the user's avatar
*/
avatar_url?: string;
created?: string; // date-time
/**
* the user's description
*/
description?: string;
email?: string; // email
/**
* user counts
*/
followers_count?: number; // int64
following_count?: number; // int64
/**
* the user's full name
*/
full_name?: string;
/**
* the user's id
*/
id?: number; // int64
/**
* Is the user an administrator
*/
is_admin?: boolean;
/**
* User locale
*/
language?: string;
last_login?: string; // date-time
/**
* the user's location
*/
location?: string;
/**
* the user's username
*/
login?: string;
/**
* the user's authentication sign-in name.
*/
login_name?: string;
/**
* Is user login prohibited
*/
prohibit_login?: boolean;
/**
* Is user restricted
*/
restricted?: boolean;
starred_repos_count?: number; // int64
/**
* User visibility level option: public, limited, private
*/
visibility?: string;
/**
* the user's website
*/
website?: string;
}
/**
* UserHeatmapData represents the data needed to create a heatmap
*/
export interface UserHeatmapData {
contributions?: number; // int64
timestamp?: TimeStamp; // int64
}
/**
* UserSettings represents user settings
*/
export interface UserSettings {
description?: string;
diff_view_style?: string;
full_name?: string;
hide_activity?: boolean;
/**
* Privacy
*/
hide_email?: boolean;
language?: string;
location?: string;
theme?: string;
website?: string;
}
/**
* UserSettingsOptions represents options to change user settings
*/
export interface UserSettingsOptions {
description?: string;
diff_view_style?: string;
full_name?: string;
hide_activity?: boolean;
/**
* Privacy
*/
hide_email?: boolean;
language?: string;
location?: string;
theme?: string;
website?: string;
}
/**
* WatchInfo represents an API watch status of one repository
*/
export interface WatchInfo {
created_at?: string; // date-time
ignored?: boolean;
reason?: any;
repository_url?: string;
subscribed?: boolean;
url?: string;
}
/**
* WikiCommit page commit/revision
*/
export interface WikiCommit {
author?: CommitUser;
commiter?: CommitUser;
message?: string;
sha?: string;
}
/**
* WikiCommitList commit/revision list
*/
export interface WikiCommitList {
commits?: WikiCommit[];
count?: number; // int64
}
/**
* WikiPage a wiki page
*/
export interface WikiPage {
commit_count?: number; // int64
/**
* Page content, base64 encoded
*/
content_base64?: string;
footer?: string;
html_url?: string;
last_commit?: WikiCommit;
sidebar?: string;
sub_url?: string;
title?: string;
}
/**
* WikiPageMetaData wiki page meta information
*/
export interface WikiPageMetaData {
html_url?: string;
last_commit?: WikiCommit;
sub_url?: string;
title?: string;
}