# 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.SecurityAdvisories do @moduledoc """ GitHub `security-advisories` API. """ import Noizu.Github @doc """ Create a temporary private fork @see https://docs.github.com/rest/security-advisories/repository-advisories#create-a-temporary-private-fork """ def create_fork(ghsa_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/security-advisories/#{ghsa_id}/forks" body = body api_call(:post, url, body, Noizu.Github.FullRepository, options) end @doc """ Privately report a security vulnerability @see https://docs.github.com/rest/security-advisories/repository-advisories#privately-report-a-security-vulnerability """ def create_private_vulnerability_report(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/security-advisories/reports" body = body api_call(:post, url, body, Noizu.Github.RepositoryAdvisory, options) end @doc """ Create a repository security advisory @see https://docs.github.com/rest/security-advisories/repository-advisories#create-a-repository-security-advisory """ def create_repository_advisory(body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/security-advisories" body = body api_call(:post, url, body, Noizu.Github.RepositoryAdvisory, options) end @doc """ Request a CVE for a repository security advisory @see https://docs.github.com/rest/security-advisories/repository-advisories#request-a-cve-for-a-repository-security-advisory """ def create_repository_advisory_cve_request(ghsa_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/security-advisories/#{ghsa_id}/cve" body = body api_call(:post, url, body, Noizu.Github.Raw, options) end @doc """ Get a global security advisory @see https://docs.github.com/rest/security-advisories/global-advisories#get-a-global-security-advisory """ def get_global_advisory(ghsa_id, options \\ nil) do url = github_base() <> "/advisories/#{ghsa_id}" body = %{} api_call(:get, url, body, Noizu.Github.GlobalAdvisory, options) end @doc """ Get a repository security advisory @see https://docs.github.com/rest/security-advisories/repository-advisories#get-a-repository-security-advisory """ def get_repository_advisory(ghsa_id, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/security-advisories/#{ghsa_id}" body = %{} api_call(:get, url, body, Noizu.Github.RepositoryAdvisory, options) end @doc """ List global security advisories @see https://docs.github.com/rest/security-advisories/global-advisories#list-global-security-advisories """ def list_global_advisories(options \\ nil) do url = ( query = [ get_field(:ghsa_id, options, nil), get_field(:type, options, nil), get_field(:cve_id, options, nil), get_field(:ecosystem, options, nil), get_field(:severity, options, nil), get_field(:cwes, options, nil), get_field(:is_withdrawn, options, nil), get_field(:affects, options, nil), get_field(:published, options, nil), get_field(:updated, options, nil), get_field(:modified, options, nil), get_field(:epss_percentage, options, nil), get_field(:epss_percentile, options, nil), get_field(:before, options, nil), get_field(:after, options, nil), get_field(:direction, options, nil), get_field(:per_page, options, nil), get_field(:sort, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/advisories" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.GlobalAdvisory, options) end @doc """ List repository security advisories for an organization @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories-for-an-organization """ def list_org_repository_advisories(org, options \\ nil) do url = ( query = [ get_field(:direction, options, nil), get_field(:sort, options, nil), get_field(:before, options, nil), get_field(:after, options, nil), get_field(:per_page, options, nil), get_field(:state, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/orgs/#{org}/security-advisories" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.RepositoryAdvisory, options) end @doc """ List repository security advisories @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories """ def list_repository_advisories(options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = ( query = [ get_field(:direction, options, nil), get_field(:sort, options, nil), get_field(:before, options, nil), get_field(:after, options, nil), get_field(:per_page, options, nil), get_field(:state, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/repos/#{owner}/#{repo}/security-advisories" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.RepositoryAdvisory, options) end @doc """ Update a repository security advisory @see https://docs.github.com/rest/security-advisories/repository-advisories#update-a-repository-security-advisory """ def update_repository_advisory(ghsa_id, body, options \\ nil) do owner = repo_owner(options) repo = repo_name(options) url = github_base() <> "/repos/#{owner}/#{repo}/security-advisories/#{ghsa_id}" body = body api_call(:patch, url, body, Noizu.Github.RepositoryAdvisory, options) end end