# 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