# Generated by `mix github.gen` from docs/github-api/api.github.com.json. # Do not edit by hand; re-run the task instead. defmodule Noizu.Github.Api.Repos do @moduledoc """ GitHub `repos` API. """ import Noizu.Github @doc """ Accept a repository invitation @see https://docs.github.com/rest/collaborators/invitations#accept-a-repository-invitation """ def accept_invitation_for_authenticated_user(invitation_id, body, options \\ nil) do url = github_base() <> "/user/repository_invitations/#{invitation_id}" body = body api_call(:patch, url, body, Noizu.Github.Raw, options) end @doc """ Add app access restrictions @see https://docs.github.com/rest/branches/branch-protection#add-app-access-restrictions """ def add_app_access_restrictions(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/apps" body = body api_call(:post, url, body, Noizu.Github.Collection.Integration, options) end @doc """ Add a repository collaborator @see https://docs.github.com/rest/collaborators/collaborators#add-a-repository-collaborator """ def add_collaborator(username, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/collaborators/#{username}" body = body api_call(:put, url, body, Noizu.Github.RepositoryInvitation, options) end @doc """ Add status check contexts @see https://docs.github.com/rest/branches/branch-protection#add-status-check-contexts """ def add_status_check_contexts(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_status_checks/contexts" body = body api_call(:post, url, body, Noizu.Github.Collection, options) end @doc """ Add team access restrictions @see https://docs.github.com/rest/branches/branch-protection#add-team-access-restrictions """ def add_team_access_restrictions(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/teams" body = body api_call(:post, url, body, Noizu.Github.Collection.Team, options) end @doc """ Add user access restrictions @see https://docs.github.com/rest/branches/branch-protection#add-user-access-restrictions """ def add_user_access_restrictions(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/users" body = body api_call(:post, url, body, Noizu.Github.Collection.SimpleUser, options) end @doc """ Cancel a GitHub Pages deployment @see https://docs.github.com/rest/pages/pages#cancel-a-github-pages-deployment """ def cancel_pages_deployment(pages_deployment_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages/deployments/#{pages_deployment_id}/cancel" body = body api_call(:post, url, body, Noizu.Github.Raw, options) end @doc """ Check if Dependabot security updates are enabled for a repository @see https://docs.github.com/rest/repos/repos#check-if-dependabot-security-updates-are-enabled-for-a-repository """ def check_automated_security_fixes(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/automated-security-fixes" body = %{} api_call(:get, url, body, Noizu.Github.CheckAutomatedSecurityFixes, options) end @doc """ Check if a user is a repository collaborator @see https://docs.github.com/rest/collaborators/collaborators#check-if-a-user-is-a-repository-collaborator """ def check_collaborator(username, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/collaborators/#{username}" body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ Check if immutable releases are enabled for a repository @see https://docs.github.com/rest/repos/repos#check-if-immutable-releases-are-enabled-for-a-repository """ def check_immutable_releases(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/immutable-releases" body = %{} api_call(:get, url, body, Noizu.Github.CheckImmutableReleases, options) end @doc """ Check if private vulnerability reporting is enabled for a repository @see https://docs.github.com/rest/repos/repos#check-if-private-vulnerability-reporting-is-enabled-for-a-repository """ def check_private_vulnerability_reporting(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/private-vulnerability-reporting" body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ Check if vulnerability alerts are enabled for a repository @see https://docs.github.com/rest/repos/repos#check-if-vulnerability-alerts-are-enabled-for-a-repository """ def check_vulnerability_alerts(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/vulnerability-alerts" body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ List CODEOWNERS errors @see https://docs.github.com/rest/repos/repos#list-codeowners-errors """ def codeowners_errors(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:ref, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/codeowners/errors" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.CodeownersErrors, options) end @doc """ Compare two commits @see https://docs.github.com/rest/commits/commits#compare-two-commits """ def compare_commits(basehead, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:page, options, nil), get_field(:per_page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/compare/#{basehead}" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.CommitComparison, options) end @doc """ Create an attestation @see https://docs.github.com/rest/repos/attestations#create-an-attestation """ def create_attestation(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/attestations" body = body api_call(:post, url, body, Noizu.Github.Raw, options) end @doc """ Create an autolink reference for a repository @see https://docs.github.com/rest/repos/autolinks#create-an-autolink-reference-for-a-repository """ def create_autolink(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/autolinks" body = body api_call(:post, url, body, Noizu.Github.Autolink, options) end @doc """ Create a commit comment @see https://docs.github.com/rest/commits/comments#create-a-commit-comment """ def create_commit_comment(commit_sha, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/commits/#{commit_sha}/comments" body = body api_call(:post, url, body, Noizu.Github.CommitComment, options) end @doc """ Create commit signature protection @see https://docs.github.com/rest/branches/branch-protection#create-commit-signature-protection """ def create_commit_signature_protection(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_signatures" body = body api_call(:post, url, body, Noizu.Github.ProtectedBranchAdminEnforced, options) end @doc """ Create a commit status @see https://docs.github.com/rest/commits/statuses#create-a-commit-status """ def create_commit_status(sha, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/statuses/#{sha}" body = body api_call(:post, url, body, Noizu.Github.Status, options) end @doc """ Create a deploy key @see https://docs.github.com/rest/deploy-keys/deploy-keys#create-a-deploy-key """ def create_deploy_key(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/keys" body = body api_call(:post, url, body, Noizu.Github.DeployKey, options) end @doc """ Create a deployment @see https://docs.github.com/rest/deployments/deployments#create-a-deployment """ def create_deployment(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/deployments" body = body api_call(:post, url, body, Noizu.Github.Deployment, options) end @doc """ Create a deployment branch policy @see https://docs.github.com/rest/deployments/branch-policies#create-a-deployment-branch-policy """ def create_deployment_branch_policy(environment_name, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment-branch-policies" body = body api_call(:post, url, body, Noizu.Github.DeploymentBranchPolicy, options) end @doc """ Create a custom deployment protection rule on an environment @see https://docs.github.com/rest/deployments/protection-rules#create-a-custom-deployment-protection-rule-on-an-environment """ def create_deployment_protection_rule(environment_name, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment_protection_rules" body = body api_call(:post, url, body, Noizu.Github.DeploymentProtectionRule, options) end @doc """ Create a deployment status @see https://docs.github.com/rest/deployments/statuses#create-a-deployment-status """ def create_deployment_status(deployment_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/deployments/#{deployment_id}/statuses" body = body api_call(:post, url, body, Noizu.Github.DeploymentStatus, options) end @doc """ Create a repository dispatch event @see https://docs.github.com/rest/repos/repos#create-a-repository-dispatch-event """ def create_dispatch_event(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/dispatches" body = body api_call(:post, url, body, Noizu.Github.Raw, options) end @doc """ Create a repository for the authenticated user @see https://docs.github.com/rest/repos/repos#create-a-repository-for-the-authenticated-user """ def create_for_authenticated_user(body, options \\ nil) do url = github_base() <> "/user/repos" body = body api_call(:post, url, body, Noizu.Github.FullRepository, options) end @doc """ Create a fork @see https://docs.github.com/rest/repos/forks#create-a-fork """ def create_fork(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/forks" body = body api_call(:post, url, body, Noizu.Github.FullRepository, options) end @doc """ Create an organization repository @see https://docs.github.com/rest/repos/repos#create-an-organization-repository """ def create_in_org(org, body, options \\ nil) do url = github_base() <> "/orgs/#{org}/repos" body = body api_call(:post, url, body, Noizu.Github.FullRepository, options) end @doc """ Create or update an environment @see https://docs.github.com/rest/deployments/environments#create-or-update-an-environment """ def create_or_update_environment(environment_name, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}" body = body api_call(:put, url, body, Noizu.Github.Environment, options) end @doc """ Create or update file contents @see https://docs.github.com/rest/repos/contents#create-or-update-file-contents """ def create_or_update_file_contents(path, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/contents/#{path}" body = body api_call(:put, url, body, Noizu.Github.FileCommit, options) end @doc """ Create an organization repository ruleset @see https://docs.github.com/rest/orgs/rules#create-an-organization-repository-ruleset """ def create_org_ruleset(org, body, options \\ nil) do url = github_base() <> "/orgs/#{org}/rulesets" body = body api_call(:post, url, body, Noizu.Github.RepositoryRuleset, options) end @doc """ Create a GitHub Pages deployment @see https://docs.github.com/rest/pages/pages#create-a-github-pages-deployment """ def create_pages_deployment(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages/deployments" body = body api_call(:post, url, body, Noizu.Github.PageDeployment, options) end @doc """ Create a GitHub Pages site @see https://docs.github.com/rest/pages/pages#create-a-apiname-pages-site """ def create_pages_site(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages" body = body api_call(:post, url, body, Noizu.Github.Page, options) end @doc """ Create a release @see https://docs.github.com/rest/releases/releases#create-a-release """ def create_release(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases" body = body api_call(:post, url, body, Noizu.Github.Release, options) end @doc """ Create a repository ruleset @see https://docs.github.com/rest/repos/rules#create-a-repository-ruleset """ def create_repo_ruleset(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/rulesets" body = body api_call(:post, url, body, Noizu.Github.RepositoryRuleset, options) end @doc """ Create a repository using a template @see https://docs.github.com/rest/repos/repos#create-a-repository-using-a-template """ def create_using_template(template_owner, template_repo, body, options \\ nil) do url = github_base() <> "/repos/#{template_owner}/#{template_repo}/generate" body = body api_call(:post, url, body, Noizu.Github.FullRepository, options) end @doc """ Create a repository webhook @see https://docs.github.com/rest/repos/webhooks#create-a-repository-webhook """ def create_webhook(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks" body = body api_call(:post, url, body, Noizu.Github.Hook, options) end @doc """ Create or update custom property values for a repository @see https://docs.github.com/rest/repos/custom-properties#create-or-update-custom-property-values-for-a-repository """ def custom_properties_for_repos_create_or_update_repository_values(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/properties/values" body = body api_call(:patch, url, body, Noizu.Github.Raw, options) end @doc """ Get all custom property values for a repository @see https://docs.github.com/rest/repos/custom-properties#get-all-custom-property-values-for-a-repository """ def custom_properties_for_repos_get_repository_values(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/properties/values" body = %{} api_call(:get, url, body, Noizu.Github.Collection.CustomPropertyValue, options) end @doc """ Decline a repository invitation @see https://docs.github.com/rest/collaborators/invitations#decline-a-repository-invitation """ def decline_invitation_for_authenticated_user(invitation_id, options \\ nil) do url = github_base() <> "/user/repository_invitations/#{invitation_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a repository @see https://docs.github.com/rest/repos/repos#delete-a-repository """ def delete(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete access restrictions @see https://docs.github.com/rest/branches/branch-protection#delete-access-restrictions """ def delete_access_restrictions(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete admin branch protection @see https://docs.github.com/rest/branches/branch-protection#delete-admin-branch-protection """ def delete_admin_branch_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/enforce_admins" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete an environment @see https://docs.github.com/rest/deployments/environments#delete-an-environment """ def delete_an_environment(environment_name, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete an autolink reference from a repository @see https://docs.github.com/rest/repos/autolinks#delete-an-autolink-reference-from-a-repository """ def delete_autolink(autolink_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/autolinks/#{autolink_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete branch protection @see https://docs.github.com/rest/branches/branch-protection#delete-branch-protection """ def delete_branch_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a commit comment @see https://docs.github.com/rest/commits/comments#delete-a-commit-comment """ def delete_commit_comment(comment_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/comments/#{comment_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete commit signature protection @see https://docs.github.com/rest/branches/branch-protection#delete-commit-signature-protection """ def delete_commit_signature_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_signatures" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a deploy key @see https://docs.github.com/rest/deploy-keys/deploy-keys#delete-a-deploy-key """ def delete_deploy_key(key_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/keys/#{key_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a deployment @see https://docs.github.com/rest/deployments/deployments#delete-a-deployment """ def delete_deployment(deployment_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/deployments/#{deployment_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a deployment branch policy @see https://docs.github.com/rest/deployments/branch-policies#delete-a-deployment-branch-policy """ def delete_deployment_branch_policy(environment_name, branch_policy_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment-branch-policies/#{branch_policy_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a file @see https://docs.github.com/rest/repos/contents#delete-a-file """ def delete_file(path, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/contents/#{path}" body = body api_call(:delete, url, body, Noizu.Github.FileCommit, options) end @doc """ Delete a repository invitation @see https://docs.github.com/rest/collaborators/invitations#delete-a-repository-invitation """ def delete_invitation(invitation_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/invitations/#{invitation_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete an organization repository ruleset @see https://docs.github.com/rest/orgs/rules#delete-an-organization-repository-ruleset """ def delete_org_ruleset(org, ruleset_id, options \\ nil) do url = github_base() <> "/orgs/#{org}/rulesets/#{ruleset_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a GitHub Pages site @see https://docs.github.com/rest/pages/pages#delete-a-apiname-pages-site """ def delete_pages_site(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete pull request review protection @see https://docs.github.com/rest/branches/branch-protection#delete-pull-request-review-protection """ def delete_pull_request_review_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_pull_request_reviews" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a release @see https://docs.github.com/rest/releases/releases#delete-a-release """ def delete_release(release_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases/#{release_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a release asset @see https://docs.github.com/rest/releases/assets#delete-a-release-asset """ def delete_release_asset(asset_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases/assets/#{asset_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a repository ruleset @see https://docs.github.com/rest/repos/rules#delete-a-repository-ruleset """ def delete_repo_ruleset(ruleset_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/rulesets/#{ruleset_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Delete a repository webhook @see https://docs.github.com/rest/repos/webhooks#delete-a-repository-webhook """ def delete_webhook(hook_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Disable Dependabot security updates @see https://docs.github.com/rest/repos/repos#disable-dependabot-security-updates """ def disable_automated_security_fixes(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/automated-security-fixes" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Disable a custom protection rule for an environment @see https://docs.github.com/rest/deployments/protection-rules#disable-a-custom-protection-rule-for-an-environment """ def disable_deployment_protection_rule(environment_name, protection_rule_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment_protection_rules/#{protection_rule_id}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Disable immutable releases @see https://docs.github.com/rest/repos/repos#disable-immutable-releases """ def disable_immutable_releases(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/immutable-releases" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Disable private vulnerability reporting for a repository @see https://docs.github.com/rest/repos/repos#disable-private-vulnerability-reporting-for-a-repository """ def disable_private_vulnerability_reporting(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/private-vulnerability-reporting" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Disable vulnerability alerts @see https://docs.github.com/rest/repos/repos#disable-vulnerability-alerts """ def disable_vulnerability_alerts(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/vulnerability-alerts" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Download a repository archive (tar) @see https://docs.github.com/rest/repos/contents#download-a-repository-archive-tar """ def download_tarball_archive(ref, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/tarball/#{ref}" body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ Download a repository archive (zip) @see https://docs.github.com/rest/repos/contents#download-a-repository-archive-zip """ def download_zipball_archive(ref, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/zipball/#{ref}" body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ Enable Dependabot security updates @see https://docs.github.com/rest/repos/repos#enable-dependabot-security-updates """ def enable_automated_security_fixes(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/automated-security-fixes" body = body api_call(:put, url, body, Noizu.Github.Raw, options) end @doc """ Enable immutable releases @see https://docs.github.com/rest/repos/repos#enable-immutable-releases """ def enable_immutable_releases(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/immutable-releases" body = body api_call(:put, url, body, Noizu.Github.Raw, options) end @doc """ Enable private vulnerability reporting for a repository @see https://docs.github.com/rest/repos/repos#enable-private-vulnerability-reporting-for-a-repository """ def enable_private_vulnerability_reporting(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/private-vulnerability-reporting" body = body api_call(:put, url, body, Noizu.Github.Raw, options) end @doc """ Enable vulnerability alerts @see https://docs.github.com/rest/repos/repos#enable-vulnerability-alerts """ def enable_vulnerability_alerts(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/vulnerability-alerts" body = body api_call(:put, url, body, Noizu.Github.Raw, options) end @doc """ Generate release notes content for a release @see https://docs.github.com/rest/releases/releases#generate-release-notes-content-for-a-release """ def generate_release_notes(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases/generate-notes" body = body api_call(:post, url, body, Noizu.Github.ReleaseNotesContent, options) end @doc """ Get a repository @see https://docs.github.com/rest/repos/repos#get-a-repository """ def get(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}" body = %{} api_call(:get, url, body, Noizu.Github.FullRepository, options) end @doc """ Get access restrictions @see https://docs.github.com/rest/branches/branch-protection#get-access-restrictions """ def get_access_restrictions(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions" body = %{} api_call(:get, url, body, Noizu.Github.BranchRestrictionPolicy, options) end @doc """ Get admin branch protection @see https://docs.github.com/rest/branches/branch-protection#get-admin-branch-protection """ def get_admin_branch_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/enforce_admins" body = %{} api_call(:get, url, body, Noizu.Github.ProtectedBranchAdminEnforced, options) end @doc """ Get all deployment protection rules for an environment @see https://docs.github.com/rest/deployments/protection-rules#get-all-deployment-protection-rules-for-an-environment """ def get_all_deployment_protection_rules(environment_name, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment_protection_rules" body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ List environments @see https://docs.github.com/rest/deployments/environments#list-environments """ def get_all_environments(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/environments" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ Get all status check contexts @see https://docs.github.com/rest/branches/branch-protection#get-all-status-check-contexts """ def get_all_status_check_contexts(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_status_checks/contexts" body = %{} api_call(:get, url, body, Noizu.Github.Collection, options) end @doc """ Get all repository topics @see https://docs.github.com/rest/repos/repos#get-all-repository-topics """ def get_all_topics(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:page, options, nil), get_field(:per_page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/topics" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Topic, options) end @doc """ Get apps with access to the protected branch @see https://docs.github.com/rest/branches/branch-protection#get-apps-with-access-to-the-protected-branch """ def get_apps_with_access_to_protected_branch(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/apps" body = %{} api_call(:get, url, body, Noizu.Github.Collection.Integration, options) end @doc """ Get an autolink reference of a repository @see https://docs.github.com/rest/repos/autolinks#get-an-autolink-reference-of-a-repository """ def get_autolink(autolink_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/autolinks/#{autolink_id}" body = %{} api_call(:get, url, body, Noizu.Github.Autolink, options) end @doc """ Get a branch @see https://docs.github.com/rest/branches/branches#get-a-branch """ def get_branch(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}" body = %{} api_call(:get, url, body, Noizu.Github.BranchWithProtection, options) end @doc """ Get branch protection @see https://docs.github.com/rest/branches/branch-protection#get-branch-protection """ def get_branch_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection" body = %{} api_call(:get, url, body, Noizu.Github.BranchProtection, options) end @doc """ Get rules for a branch @see https://docs.github.com/rest/repos/rules#get-rules-for-a-branch """ def get_branch_rules(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/rules/branches/#{branch}" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection, options) end @doc """ Get repository clones @see https://docs.github.com/rest/metrics/traffic#get-repository-clones """ def get_clones(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/traffic/clones" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.CloneTraffic, options) end @doc """ Get the weekly commit activity @see https://docs.github.com/rest/metrics/statistics#get-the-weekly-commit-activity """ def get_code_frequency_stats(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/stats/code_frequency" body = %{} api_call(:get, url, body, Noizu.Github.Collection, options) end @doc """ Get repository permissions for a user @see https://docs.github.com/rest/collaborators/collaborators#get-repository-permissions-for-a-user """ def get_collaborator_permission_level(username, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/collaborators/#{username}/permission" body = %{} api_call(:get, url, body, Noizu.Github.RepositoryCollaboratorPermission, options) end @doc """ Get the combined status for a specific reference @see https://docs.github.com/rest/commits/statuses#get-the-combined-status-for-a-specific-reference """ def get_combined_status_for_ref(ref, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/commits/#{ref}/status" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.CombinedCommitStatus, options) end @doc """ Get a commit @see https://docs.github.com/rest/commits/commits#get-a-commit """ def get_commit(ref, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:page, options, nil), get_field(:per_page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/commits/#{ref}" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Commit, options) end @doc """ Get the last year of commit activity @see https://docs.github.com/rest/metrics/statistics#get-the-last-year-of-commit-activity """ def get_commit_activity_stats(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/stats/commit_activity" body = %{} api_call(:get, url, body, Noizu.Github.Collection.CommitActivity, options) end @doc """ Get a commit comment @see https://docs.github.com/rest/commits/comments#get-a-commit-comment """ def get_commit_comment(comment_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/comments/#{comment_id}" body = %{} api_call(:get, url, body, Noizu.Github.CommitComment, options) end @doc """ Get commit signature protection @see https://docs.github.com/rest/branches/branch-protection#get-commit-signature-protection """ def get_commit_signature_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_signatures" body = %{} api_call(:get, url, body, Noizu.Github.ProtectedBranchAdminEnforced, options) end @doc """ Get community profile metrics @see https://docs.github.com/rest/metrics/community#get-community-profile-metrics """ def get_community_profile_metrics(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/community/profile" body = %{} api_call(:get, url, body, Noizu.Github.CommunityProfile, options) end @doc """ Get repository content @see https://docs.github.com/rest/repos/contents#get-repository-content """ def get_content(path, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:ref, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/contents/#{path}" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ Get all contributor commit activity @see https://docs.github.com/rest/metrics/statistics#get-all-contributor-commit-activity """ def get_contributors_stats(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/stats/contributors" body = %{} api_call(:get, url, body, Noizu.Github.Collection.ContributorActivity, options) end @doc """ Get a custom deployment protection rule @see https://docs.github.com/rest/deployments/protection-rules#get-a-custom-deployment-protection-rule """ def get_custom_deployment_protection_rule(environment_name, protection_rule_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment_protection_rules/#{protection_rule_id}" body = %{} api_call(:get, url, body, Noizu.Github.DeploymentProtectionRule, options) end @doc """ Get a deploy key @see https://docs.github.com/rest/deploy-keys/deploy-keys#get-a-deploy-key """ def get_deploy_key(key_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/keys/#{key_id}" body = %{} api_call(:get, url, body, Noizu.Github.DeployKey, options) end @doc """ Get a deployment @see https://docs.github.com/rest/deployments/deployments#get-a-deployment """ def get_deployment(deployment_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/deployments/#{deployment_id}" body = %{} api_call(:get, url, body, Noizu.Github.Deployment, options) end @doc """ Get a deployment branch policy @see https://docs.github.com/rest/deployments/branch-policies#get-a-deployment-branch-policy """ def get_deployment_branch_policy(environment_name, branch_policy_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment-branch-policies/#{branch_policy_id}" body = %{} api_call(:get, url, body, Noizu.Github.DeploymentBranchPolicy, options) end @doc """ Get a deployment status @see https://docs.github.com/rest/deployments/statuses#get-a-deployment-status """ def get_deployment_status(deployment_id, status_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/deployments/#{deployment_id}/statuses/#{status_id}" body = %{} api_call(:get, url, body, Noizu.Github.DeploymentStatus, options) end @doc """ Get an environment @see https://docs.github.com/rest/deployments/environments#get-an-environment """ def get_environment(environment_name, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}" body = %{} api_call(:get, url, body, Noizu.Github.Environment, options) end @doc """ Get the hash algorithm for a repository @see https://docs.github.com/rest/repos/repos#get-the-hash-algorithm-for-a-repository """ def get_hash_algorithm(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hash-algorithm" body = %{} api_call(:get, url, body, Noizu.Github.RepositoryHashAlgorithm, options) end @doc """ Get latest Pages build @see https://docs.github.com/rest/pages/pages#get-latest-pages-build """ def get_latest_pages_build(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages/builds/latest" body = %{} api_call(:get, url, body, Noizu.Github.PageBuild, options) end @doc """ Get the latest release @see https://docs.github.com/rest/releases/releases#get-the-latest-release """ def get_latest_release(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases/latest" body = %{} api_call(:get, url, body, Noizu.Github.Release, options) end @doc """ Get an organization rule suite @see https://docs.github.com/rest/orgs/rule-suites#get-an-organization-rule-suite """ def get_org_rule_suite(org, rule_suite_id, options \\ nil) do url = github_base() <> "/orgs/#{org}/rulesets/rule-suites/#{rule_suite_id}" body = %{} api_call(:get, url, body, Noizu.Github.RuleSuite, options) end @doc """ List organization rule suites @see https://docs.github.com/rest/orgs/rule-suites#list-organization-rule-suites """ def get_org_rule_suites(org, options \\ nil) do url = ( query = [ get_field(:ref, options, nil), get_field(:repository_name, options, nil), get_field(:time_period, options, nil), get_field(:actor_name, options, nil), get_field(:rule_suite_result, options, nil), get_field(:evaluate_status, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/orgs/#{org}/rulesets/rule-suites" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ Get an organization repository ruleset @see https://docs.github.com/rest/orgs/rules#get-an-organization-repository-ruleset """ def get_org_ruleset(org, ruleset_id, options \\ nil) do url = github_base() <> "/orgs/#{org}/rulesets/#{ruleset_id}" body = %{} api_call(:get, url, body, Noizu.Github.RepositoryRuleset, options) end @doc """ Get all organization repository rulesets @see https://docs.github.com/rest/orgs/rules#get-all-organization-repository-rulesets """ def get_org_rulesets(org, options \\ nil) do url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil), get_field(:targets, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/orgs/#{org}/rulesets" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.RepositoryRuleset, options) end @doc """ Get a GitHub Pages site @see https://docs.github.com/rest/pages/pages#get-a-apiname-pages-site """ def get_pages(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages" body = %{} api_call(:get, url, body, Noizu.Github.Page, options) end @doc """ Get GitHub Pages build @see https://docs.github.com/rest/pages/pages#get-apiname-pages-build """ def get_pages_build(build_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages/builds/#{build_id}" body = %{} api_call(:get, url, body, Noizu.Github.PageBuild, options) end @doc """ Get the status of a GitHub Pages deployment @see https://docs.github.com/rest/pages/pages#get-the-status-of-a-github-pages-deployment """ def get_pages_deployment(pages_deployment_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages/deployments/#{pages_deployment_id}" body = %{} api_call(:get, url, body, Noizu.Github.PagesDeploymentStatus, options) end @doc """ Get a DNS health check for GitHub Pages @see https://docs.github.com/rest/pages/pages#get-a-dns-health-check-for-github-pages """ def get_pages_health_check(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages/health" body = %{} api_call(:get, url, body, Noizu.Github.PagesHealthCheck, options) end @doc """ Get the weekly commit count @see https://docs.github.com/rest/metrics/statistics#get-the-weekly-commit-count """ def get_participation_stats(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/stats/participation" body = %{} api_call(:get, url, body, Noizu.Github.ParticipationStats, options) end @doc """ Get pull request review protection @see https://docs.github.com/rest/branches/branch-protection#get-pull-request-review-protection """ def get_pull_request_review_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_pull_request_reviews" body = %{} api_call(:get, url, body, Noizu.Github.ProtectedBranchPullRequestReview, options) end @doc """ Get the hourly commit count for each day @see https://docs.github.com/rest/metrics/statistics#get-the-hourly-commit-count-for-each-day """ def get_punch_card_stats(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/stats/punch_card" body = %{} api_call(:get, url, body, Noizu.Github.Collection, options) end @doc """ Get a repository README @see https://docs.github.com/rest/repos/contents#get-a-repository-readme """ def get_readme(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:ref, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/readme" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.ContentFile, options) end @doc """ Get a repository README for a directory @see https://docs.github.com/rest/repos/contents#get-a-repository-readme-for-a-directory """ def get_readme_in_directory(dir, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:ref, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/readme/#{dir}" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.ContentFile, options) end @doc """ Get a release @see https://docs.github.com/rest/releases/releases#get-a-release """ def get_release(release_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases/#{release_id}" body = %{} api_call(:get, url, body, Noizu.Github.Release, options) end @doc """ Get a release asset @see https://docs.github.com/rest/releases/assets#get-a-release-asset """ def get_release_asset(asset_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases/assets/#{asset_id}" body = %{} api_call(:get, url, body, Noizu.Github.ReleaseAsset, options) end @doc """ Get a release by tag name @see https://docs.github.com/rest/releases/releases#get-a-release-by-tag-name """ def get_release_by_tag(tag, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases/tags/#{tag}" body = %{} api_call(:get, url, body, Noizu.Github.Release, options) end @doc """ Get a repository rule suite @see https://docs.github.com/rest/repos/rule-suites#get-a-repository-rule-suite """ def get_repo_rule_suite(rule_suite_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/rulesets/rule-suites/#{rule_suite_id}" body = %{} api_call(:get, url, body, Noizu.Github.RuleSuite, options) end @doc """ List repository rule suites @see https://docs.github.com/rest/repos/rule-suites#list-repository-rule-suites """ def get_repo_rule_suites(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:ref, options, nil), get_field(:time_period, options, nil), get_field(:actor_name, options, nil), get_field(:rule_suite_result, options, nil), get_field(:evaluate_status, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/rulesets/rule-suites" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ Get a repository ruleset @see https://docs.github.com/rest/repos/rules#get-a-repository-ruleset """ def get_repo_ruleset(ruleset_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:includes_parents, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/rulesets/#{ruleset_id}" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.RepositoryRuleset, options) end @doc """ Get repository ruleset history @see https://docs.github.com/rest/repos/rules#get-repository-ruleset-history """ def get_repo_ruleset_history(ruleset_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/rulesets/#{ruleset_id}/history" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.RulesetVersion, options) end @doc """ Get repository ruleset version @see https://docs.github.com/rest/repos/rules#get-repository-ruleset-version """ def get_repo_ruleset_version(ruleset_id, version_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/rulesets/#{ruleset_id}/history/#{version_id}" body = %{} api_call(:get, url, body, Noizu.Github.RulesetVersionWithState, options) end @doc """ Get all repository rulesets @see https://docs.github.com/rest/repos/rules#get-all-repository-rulesets """ def get_repo_rulesets(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil), get_field(:includes_parents, options, nil), get_field(:targets, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/rulesets" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.RepositoryRuleset, options) end @doc """ Get status checks protection @see https://docs.github.com/rest/branches/branch-protection#get-status-checks-protection """ def get_status_checks_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_status_checks" body = %{} api_call(:get, url, body, Noizu.Github.StatusCheckPolicy, options) end @doc """ Get teams with access to the protected branch @see https://docs.github.com/rest/branches/branch-protection#get-teams-with-access-to-the-protected-branch """ def get_teams_with_access_to_protected_branch(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/teams" body = %{} api_call(:get, url, body, Noizu.Github.Collection.Team, options) end @doc """ Get top referral paths @see https://docs.github.com/rest/metrics/traffic#get-top-referral-paths """ def get_top_paths(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/traffic/popular/paths" body = %{} api_call(:get, url, body, Noizu.Github.Collection.ContentTraffic, options) end @doc """ Get top referral sources @see https://docs.github.com/rest/metrics/traffic#get-top-referral-sources """ def get_top_referrers(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/traffic/popular/referrers" body = %{} api_call(:get, url, body, Noizu.Github.Collection.ReferrerTraffic, options) end @doc """ Get users with access to the protected branch @see https://docs.github.com/rest/branches/branch-protection#get-users-with-access-to-the-protected-branch """ def get_users_with_access_to_protected_branch(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/users" body = %{} api_call(:get, url, body, Noizu.Github.Collection.SimpleUser, options) end @doc """ Get page views @see https://docs.github.com/rest/metrics/traffic#get-page-views """ def get_views(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/traffic/views" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.ViewTraffic, options) end @doc """ Get a repository webhook @see https://docs.github.com/rest/repos/webhooks#get-a-repository-webhook """ def get_webhook(hook_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}" body = %{} api_call(:get, url, body, Noizu.Github.Hook, options) end @doc """ Get a webhook configuration for a repository @see https://docs.github.com/rest/repos/webhooks#get-a-webhook-configuration-for-a-repository """ def get_webhook_config_for_repo(hook_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}/config" body = %{} api_call(:get, url, body, Noizu.Github.WebhookConfig, options) end @doc """ Get a delivery for a repository webhook @see https://docs.github.com/rest/repos/webhooks#get-a-delivery-for-a-repository-webhook """ def get_webhook_delivery(hook_id, delivery_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}/deliveries/#{delivery_id}" body = %{} api_call(:get, url, body, Noizu.Github.HookDelivery, options) end @doc """ List repository activities @see https://docs.github.com/rest/repos/repos#list-repository-activities """ def list_activities(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:direction, options, nil), get_field(:per_page, options, nil), get_field(:before, options, nil), get_field(:after, options, nil), get_field(:ref, options, nil), get_field(:actor, options, nil), get_field(:time_period, options, nil), get_field(:activity_type, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/activity" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Activity, options) end @doc """ List attestations @see https://docs.github.com/rest/repos/attestations#list-attestations """ def list_attestations(subject_digest, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:before, options, nil), get_field(:after, options, nil), get_field(:predicate_type, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/attestations/#{subject_digest}" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ Get all autolinks of a repository @see https://docs.github.com/rest/repos/autolinks#get-all-autolinks-of-a-repository """ def list_autolinks(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/autolinks" body = %{} api_call(:get, url, body, Noizu.Github.Collection.Autolink, options) end @doc """ List branches @see https://docs.github.com/rest/branches/branches#list-branches """ def list_branches(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:protected, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/branches" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.ShortBranch, options) end @doc """ List branches for HEAD commit @see https://docs.github.com/rest/commits/commits#list-branches-for-head-commit """ def list_branches_for_head_commit(commit_sha, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/commits/#{commit_sha}/branches-where-head" body = %{} api_call(:get, url, body, Noizu.Github.Collection.BranchShort, options) end @doc """ List repository collaborators @see https://docs.github.com/rest/collaborators/collaborators#list-repository-collaborators """ def list_collaborators(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:affiliation, options, nil), get_field(:permission, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/collaborators" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Collaborator, options) end @doc """ List commit comments @see https://docs.github.com/rest/commits/comments#list-commit-comments """ def list_comments_for_commit(commit_sha, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/commits/#{commit_sha}/comments" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.CommitComment, options) end @doc """ List commit comments for a repository @see https://docs.github.com/rest/commits/comments#list-commit-comments-for-a-repository """ def list_commit_comments_for_repo(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/comments" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.CommitComment, options) end @doc """ List commit statuses for a reference @see https://docs.github.com/rest/commits/statuses#list-commit-statuses-for-a-reference """ def list_commit_statuses_for_ref(ref, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/commits/#{ref}/statuses" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Status, options) end @doc """ List commits @see https://docs.github.com/rest/commits/commits#list-commits """ def list_commits(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:sha, options, nil), get_field(:path, options, nil), get_field(:author, options, nil), get_field(:committer, options, nil), get_field(:since, options, nil), get_field(:until, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/commits" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Commit, options) end @doc """ List repository contributors @see https://docs.github.com/rest/repos/repos#list-repository-contributors """ def list_contributors(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:anon, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/contributors" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Contributor, options) end @doc """ List custom deployment rule integrations available for an environment @see https://docs.github.com/rest/deployments/protection-rules#list-custom-deployment-rule-integrations-available-for-an-environment """ def list_custom_deployment_rule_integrations(environment_name, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:page, options, nil), get_field(:per_page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment_protection_rules/apps" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ List deploy keys @see https://docs.github.com/rest/deploy-keys/deploy-keys#list-deploy-keys """ def list_deploy_keys(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/keys" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.DeployKey, options) end @doc """ List deployment branch policies @see https://docs.github.com/rest/deployments/branch-policies#list-deployment-branch-policies """ def list_deployment_branch_policies(environment_name, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment-branch-policies" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ List deployment statuses @see https://docs.github.com/rest/deployments/statuses#list-deployment-statuses """ def list_deployment_statuses(deployment_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/deployments/#{deployment_id}/statuses" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.DeploymentStatus, options) end @doc """ List deployments @see https://docs.github.com/rest/deployments/deployments#list-deployments """ def list_deployments(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:sha, options, nil), get_field(:ref, options, nil), get_field(:task, options, nil), get_field(:environment, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/deployments" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Deployment, options) end @doc """ List repositories for the authenticated user @see https://docs.github.com/rest/repos/repos#list-repositories-for-the-authenticated-user """ def list_for_authenticated_user(options \\ nil) do url = ( query = [ get_field(:visibility, options, nil), get_field(:affiliation, options, nil), get_field(:type, options, nil), get_field(:sort, options, nil), get_field(:direction, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil), get_field(:since, options, nil), get_field(:before, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/user/repos" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Repository, options) end @doc """ List organization repositories @see https://docs.github.com/rest/repos/repos#list-organization-repositories """ def list_for_org(org, options \\ nil) do url = ( query = [ get_field(:type, options, nil), get_field(:sort, options, nil), get_field(:direction, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/orgs/#{org}/repos" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.MinimalRepository, options) end @doc """ List repositories for a user @see https://docs.github.com/rest/repos/repos#list-repositories-for-a-user """ def list_for_user(username, options \\ nil) do url = ( query = [ get_field(:type, options, nil), get_field(:sort, options, nil), get_field(:direction, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/users/#{username}/repos" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.MinimalRepository, options) end @doc """ List forks @see https://docs.github.com/rest/repos/forks#list-forks """ def list_forks(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:sort, options, nil), get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/forks" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.MinimalRepository, options) end @doc """ List repository invitations @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations """ def list_invitations(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/invitations" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.RepositoryInvitation, options) end @doc """ List repository invitations for the authenticated user @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations-for-the-authenticated-user """ def list_invitations_for_authenticated_user(options \\ nil) do url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/user/repository_invitations" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.RepositoryInvitation, options) end @doc """ List issue types for a repository @see https://docs.github.com/rest/repos/issue-types#list-issue-types-for-a-repository """ def list_issue_types(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/issue-types" body = %{} api_call(:get, url, body, Noizu.Github.Collection.IssueType, options) end @doc """ List repository languages @see https://docs.github.com/rest/repos/repos#list-repository-languages """ def list_languages(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/languages" body = %{} api_call(:get, url, body, Noizu.Github.Raw, options) end @doc """ List GitHub Pages builds @see https://docs.github.com/rest/pages/pages#list-apiname-pages-builds """ def list_pages_builds(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/pages/builds" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.PageBuild, options) end @doc """ List public repositories @see https://docs.github.com/rest/repos/repos#list-public-repositories """ def list_public(options \\ nil) do url = ( query = [ get_field(:since, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repositories" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.MinimalRepository, options) end @doc """ List pull requests associated with a commit @see https://docs.github.com/rest/commits/commits#list-pull-requests-associated-with-a-commit """ def list_pull_requests_associated_with_commit(commit_sha, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/commits/#{commit_sha}/pulls" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.PullRequestSimple, options) end @doc """ List release assets @see https://docs.github.com/rest/releases/assets#list-release-assets """ def list_release_assets(release_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/releases/#{release_id}/assets" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.ReleaseAsset, options) end @doc """ List releases @see https://docs.github.com/rest/releases/releases#list-releases """ def list_releases(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/releases" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Release, options) end @doc """ List repository tags @see https://docs.github.com/rest/repos/repos#list-repository-tags """ def list_tags(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/tags" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Tag, options) end @doc """ List repository teams @see https://docs.github.com/rest/repos/repos#list-repository-teams """ def list_teams(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/teams" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Team, options) end @doc """ List deliveries for a repository webhook @see https://docs.github.com/rest/repos/webhooks#list-deliveries-for-a-repository-webhook """ def list_webhook_deliveries(hook_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:cursor, options, nil), get_field(:status, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}/deliveries" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.HookDeliveryItem, options) end @doc """ List repository webhooks @see https://docs.github.com/rest/repos/webhooks#list-repository-webhooks """ def list_webhooks(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:per_page, options, nil), get_field(:page, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/hooks" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.Hook, options) end @doc """ Merge a branch @see https://docs.github.com/rest/branches/branches#merge-a-branch """ def merge(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/merges" body = body api_call(:post, url, body, Noizu.Github.Commit, options) end @doc """ Sync a fork branch with the upstream repository @see https://docs.github.com/rest/branches/branches#sync-a-fork-branch-with-the-upstream-repository """ def merge_upstream(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/merge-upstream" body = body api_call(:post, url, body, Noizu.Github.MergedUpstream, options) end @doc """ Ping a repository webhook @see https://docs.github.com/rest/repos/webhooks#ping-a-repository-webhook """ def ping_webhook(hook_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}/pings" body = body api_call(:post, url, body, Noizu.Github.Raw, options) end @doc """ Redeliver a delivery for a repository webhook @see https://docs.github.com/rest/repos/webhooks#redeliver-a-delivery-for-a-repository-webhook """ def redeliver_webhook_delivery(hook_id, delivery_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}/deliveries/#{delivery_id}/attempts" body = body api_call(:post, url, body, Noizu.Github.Raw, options) end @doc """ Remove app access restrictions @see https://docs.github.com/rest/branches/branch-protection#remove-app-access-restrictions """ def remove_app_access_restrictions(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/apps" body = body api_call(:delete, url, body, Noizu.Github.Collection.Integration, options) end @doc """ Remove a repository collaborator @see https://docs.github.com/rest/collaborators/collaborators#remove-a-repository-collaborator """ def remove_collaborator(username, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/collaborators/#{username}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Remove status check contexts @see https://docs.github.com/rest/branches/branch-protection#remove-status-check-contexts """ def remove_status_check_contexts(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_status_checks/contexts" body = body api_call(:delete, url, body, Noizu.Github.Collection, options) end @doc """ Remove status check protection @see https://docs.github.com/rest/branches/branch-protection#remove-status-check-protection """ def remove_status_check_protection(branch, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_status_checks" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Remove team access restrictions @see https://docs.github.com/rest/branches/branch-protection#remove-team-access-restrictions """ def remove_team_access_restrictions(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/teams" body = body api_call(:delete, url, body, Noizu.Github.Collection.Team, options) end @doc """ Remove user access restrictions @see https://docs.github.com/rest/branches/branch-protection#remove-user-access-restrictions """ def remove_user_access_restrictions(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/users" body = body api_call(:delete, url, body, Noizu.Github.Collection.SimpleUser, options) end @doc """ Rename a branch @see https://docs.github.com/rest/branches/branches#rename-a-branch """ def rename_branch(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/rename" body = body api_call(:post, url, body, Noizu.Github.BranchWithProtection, options) end @doc """ Replace all repository topics @see https://docs.github.com/rest/repos/repos#replace-all-repository-topics """ def replace_all_topics(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/topics" body = body api_call(:put, url, body, Noizu.Github.Topic, options) end @doc """ Request a GitHub Pages build @see https://docs.github.com/rest/pages/pages#request-a-apiname-pages-build """ def request_pages_build(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages/builds" body = body api_call(:post, url, body, Noizu.Github.PageBuildStatus, options) end @doc """ Set admin branch protection @see https://docs.github.com/rest/branches/branch-protection#set-admin-branch-protection """ def set_admin_branch_protection(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/enforce_admins" body = body api_call(:post, url, body, Noizu.Github.ProtectedBranchAdminEnforced, options) end @doc """ Set app access restrictions @see https://docs.github.com/rest/branches/branch-protection#set-app-access-restrictions """ def set_app_access_restrictions(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/apps" body = body api_call(:put, url, body, Noizu.Github.Collection.Integration, options) end @doc """ Set status check contexts @see https://docs.github.com/rest/branches/branch-protection#set-status-check-contexts """ def set_status_check_contexts(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_status_checks/contexts" body = body api_call(:put, url, body, Noizu.Github.Collection, options) end @doc """ Set team access restrictions @see https://docs.github.com/rest/branches/branch-protection#set-team-access-restrictions """ def set_team_access_restrictions(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/teams" body = body api_call(:put, url, body, Noizu.Github.Collection.Team, options) end @doc """ Set user access restrictions @see https://docs.github.com/rest/branches/branch-protection#set-user-access-restrictions """ def set_user_access_restrictions(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/restrictions/users" body = body api_call(:put, url, body, Noizu.Github.Collection.SimpleUser, options) end @doc """ Test the push repository webhook @see https://docs.github.com/rest/repos/webhooks#test-the-push-repository-webhook """ def test_push_webhook(hook_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}/tests" body = body api_call(:post, url, body, Noizu.Github.Raw, options) end @doc """ Transfer a repository @see https://docs.github.com/rest/repos/repos#transfer-a-repository """ def transfer(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/transfer" body = body api_call(:post, url, body, Noizu.Github.MinimalRepository, options) end @doc """ Update a repository @see https://docs.github.com/rest/repos/repos#update-a-repository """ def update(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}" body = body api_call(:patch, url, body, Noizu.Github.FullRepository, options) end @doc """ Update branch protection @see https://docs.github.com/rest/branches/branch-protection#update-branch-protection """ def update_branch_protection(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection" body = body api_call(:put, url, body, Noizu.Github.ProtectedBranch, options) end @doc """ Update a commit comment @see https://docs.github.com/rest/commits/comments#update-a-commit-comment """ def update_commit_comment(comment_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/comments/#{comment_id}" body = body api_call(:patch, url, body, Noizu.Github.CommitComment, options) end @doc """ Update a deployment branch policy @see https://docs.github.com/rest/deployments/branch-policies#update-a-deployment-branch-policy """ def update_deployment_branch_policy(environment_name, branch_policy_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/environments/#{environment_name}/deployment-branch-policies/#{branch_policy_id}" body = body api_call(:put, url, body, Noizu.Github.DeploymentBranchPolicy, options) end @doc """ Update information about a GitHub Pages site @see https://docs.github.com/rest/pages/pages#update-information-about-a-apiname-pages-site """ def update_information_about_pages_site(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/pages" body = body api_call(:put, url, body, Noizu.Github.Raw, options) end @doc """ Update a repository invitation @see https://docs.github.com/rest/collaborators/invitations#update-a-repository-invitation """ def update_invitation(invitation_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/invitations/#{invitation_id}" body = body api_call(:patch, url, body, Noizu.Github.RepositoryInvitation, options) end @doc """ Update an organization repository ruleset @see https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset """ def update_org_ruleset(org, ruleset_id, body, options \\ nil) do url = github_base() <> "/orgs/#{org}/rulesets/#{ruleset_id}" body = body api_call(:put, url, body, Noizu.Github.RepositoryRuleset, options) end @doc """ Update pull request review protection @see https://docs.github.com/rest/branches/branch-protection#update-pull-request-review-protection """ def update_pull_request_review_protection(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_pull_request_reviews" body = body api_call(:patch, url, body, Noizu.Github.ProtectedBranchPullRequestReview, options) end @doc """ Update a release @see https://docs.github.com/rest/releases/releases#update-a-release """ def update_release(release_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases/#{release_id}" body = body api_call(:patch, url, body, Noizu.Github.Release, options) end @doc """ Update a release asset @see https://docs.github.com/rest/releases/assets#update-a-release-asset """ def update_release_asset(asset_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/releases/assets/#{asset_id}" body = body api_call(:patch, url, body, Noizu.Github.ReleaseAsset, options) end @doc """ Update a repository ruleset @see https://docs.github.com/rest/repos/rules#update-a-repository-ruleset """ def update_repo_ruleset(ruleset_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/rulesets/#{ruleset_id}" body = body api_call(:put, url, body, Noizu.Github.RepositoryRuleset, options) end @doc """ Update status check protection @see https://docs.github.com/rest/branches/branch-protection#update-status-check-protection """ def update_status_check_protection(branch, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/branches/#{branch}/protection/required_status_checks" body = body api_call(:patch, url, body, Noizu.Github.StatusCheckPolicy, options) end @doc """ Update a repository webhook @see https://docs.github.com/rest/repos/webhooks#update-a-repository-webhook """ def update_webhook(hook_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}" body = body api_call(:patch, url, body, Noizu.Github.Hook, options) end @doc """ Update a webhook configuration for a repository @see https://docs.github.com/rest/repos/webhooks#update-a-webhook-configuration-for-a-repository """ def update_webhook_config_for_repo(hook_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/hooks/#{hook_id}/config" body = body api_call(:patch, url, body, Noizu.Github.WebhookConfig, options) end @doc """ Upload a release asset @see https://docs.github.com/rest/releases/assets#upload-a-release-asset """ def upload_release_asset(release_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:name, options, nil), get_field(:label, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/releases/#{release_id}/assets" <> qs ) body = body api_call(:post, url, body, Noizu.Github.ReleaseAsset, options) end end