Skip to main content

lib/api/dependabot/dependabot.ex

# 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.Dependabot do
  @moduledoc """
  GitHub `dependabot` API.
  """
  import Noizu.Github

  @doc """
  Add selected repository to an organization secret

  @see https://docs.github.com/rest/dependabot/secrets#add-selected-repository-to-an-organization-secret
  """
  def add_selected_repo_to_org_secret(org, secret_name, repository_id, body, options \\ nil) do
    url =
      github_base() <>
        "/orgs/#{org}/dependabot/secrets/#{secret_name}/repositories/#{repository_id}"

    body = body
    api_call(:put, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Create or update an organization secret

  @see https://docs.github.com/rest/dependabot/secrets#create-or-update-an-organization-secret
  """
  def create_or_update_org_secret(org, secret_name, body, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/dependabot/secrets/#{secret_name}"
    body = body
    api_call(:put, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Create or update a repository secret

  @see https://docs.github.com/rest/dependabot/secrets#create-or-update-a-repository-secret
  """
  def create_or_update_repo_secret(secret_name, body, options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/dependabot/secrets/#{secret_name}"
    body = body
    api_call(:put, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Delete an organization secret

  @see https://docs.github.com/rest/dependabot/secrets#delete-an-organization-secret
  """
  def delete_org_secret(org, secret_name, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/dependabot/secrets/#{secret_name}"
    body = %{}
    api_call(:delete, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Delete a repository secret

  @see https://docs.github.com/rest/dependabot/secrets#delete-a-repository-secret
  """
  def delete_repo_secret(secret_name, options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/dependabot/secrets/#{secret_name}"
    body = %{}
    api_call(:delete, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Get a Dependabot alert

  @see https://docs.github.com/rest/dependabot/alerts#get-a-dependabot-alert
  """
  def get_alert(alert_number, options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/dependabot/alerts/#{alert_number}"
    body = %{}
    api_call(:get, url, body, Noizu.Github.DependabotAlert, options)
  end

  @doc """
  Get an organization public key

  @see https://docs.github.com/rest/dependabot/secrets#get-an-organization-public-key
  """
  def get_org_public_key(org, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/dependabot/secrets/public-key"
    body = %{}
    api_call(:get, url, body, Noizu.Github.DependabotPublicKey, options)
  end

  @doc """
  Get an organization secret

  @see https://docs.github.com/rest/dependabot/secrets#get-an-organization-secret
  """
  def get_org_secret(org, secret_name, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/dependabot/secrets/#{secret_name}"
    body = %{}
    api_call(:get, url, body, Noizu.Github.OrganizationDependabotSecret, options)
  end

  @doc """
  Get a repository public key

  @see https://docs.github.com/rest/dependabot/secrets#get-a-repository-public-key
  """
  def get_repo_public_key(options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/dependabot/secrets/public-key"
    body = %{}
    api_call(:get, url, body, Noizu.Github.DependabotPublicKey, options)
  end

  @doc """
  Get a repository secret

  @see https://docs.github.com/rest/dependabot/secrets#get-a-repository-secret
  """
  def get_repo_secret(secret_name, options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/dependabot/secrets/#{secret_name}"
    body = %{}
    api_call(:get, url, body, Noizu.Github.DependabotSecret, options)
  end

  @doc """
  List Dependabot alerts for an enterprise

  @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-enterprise
  """
  def list_alerts_for_enterprise(enterprise, options \\ nil) do
    url =
      (
        query =
          [
            get_field(:classification, options, nil),
            get_field(:state, options, nil),
            get_field(:severity, options, nil),
            get_field(:ecosystem, options, nil),
            get_field(:package, options, nil),
            get_field(:epss_percentage, options, nil),
            get_field(:has, options, nil),
            get_field(:assignee, options, nil),
            get_field(:scope, options, nil),
            get_field(:sort, options, nil),
            get_field(:direction, options, nil),
            get_field(:before, options, nil),
            get_field(:after, options, nil),
            get_field(:per_page, options, nil)
          ]
          |> Enum.filter(& &1)

        qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")
        github_base() <> "/enterprises/#{enterprise}/dependabot/alerts" <> qs
      )

    body = %{}
    api_call(:get, url, body, Noizu.Github.Collection.DependabotAlertWithRepository, options)
  end

  @doc """
  List Dependabot alerts for an organization

  @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-organization
  """
  def list_alerts_for_org(org, options \\ nil) do
    url =
      (
        query =
          [
            get_field(:classification, options, nil),
            get_field(:state, options, nil),
            get_field(:severity, options, nil),
            get_field(:ecosystem, options, nil),
            get_field(:package, options, nil),
            get_field(:epss_percentage, options, nil),
            get_field(:artifact_registry_url, options, nil),
            get_field(:artifact_registry, options, nil),
            get_field(:has, options, nil),
            get_field(:assignee, options, nil),
            get_field(:runtime_risk, options, nil),
            get_field(:scope, options, nil),
            get_field(:sort, options, nil),
            get_field(:direction, options, nil),
            get_field(:before, options, nil),
            get_field(:after, options, nil),
            get_field(:per_page, options, nil)
          ]
          |> Enum.filter(& &1)

        qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")
        github_base() <> "/orgs/#{org}/dependabot/alerts" <> qs
      )

    body = %{}
    api_call(:get, url, body, Noizu.Github.Collection.DependabotAlertWithRepository, options)
  end

  @doc """
  List Dependabot alerts for a repository

  @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-a-repository
  """
  def list_alerts_for_repo(options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)

    url =
      (
        query =
          [
            get_field(:classification, options, nil),
            get_field(:state, options, nil),
            get_field(:severity, options, nil),
            get_field(:ecosystem, options, nil),
            get_field(:package, options, nil),
            get_field(:manifest, options, nil),
            get_field(:epss_percentage, options, nil),
            get_field(:has, options, nil),
            get_field(:assignee, options, nil),
            get_field(:scope, options, nil),
            get_field(:sort, options, nil),
            get_field(:direction, options, nil),
            get_field(:before, options, nil),
            get_field(:after, options, nil),
            get_field(:per_page, options, nil)
          ]
          |> Enum.filter(& &1)

        qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")
        github_base() <> "/repos/#{owner}/#{repo}/dependabot/alerts" <> qs
      )

    body = %{}
    api_call(:get, url, body, Noizu.Github.Collection.DependabotAlert, options)
  end

  @doc """
  List organization secrets

  @see https://docs.github.com/rest/dependabot/secrets#list-organization-secrets
  """
  def list_org_secrets(org, 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() <> "/orgs/#{org}/dependabot/secrets" <> qs
      )

    body = %{}
    api_call(:get, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  List repository secrets

  @see https://docs.github.com/rest/dependabot/secrets#list-repository-secrets
  """
  def list_repo_secrets(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}/dependabot/secrets" <> qs
      )

    body = %{}
    api_call(:get, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  List selected repositories for an organization secret

  @see https://docs.github.com/rest/dependabot/secrets#list-selected-repositories-for-an-organization-secret
  """
  def list_selected_repos_for_org_secret(org, secret_name, options \\ nil) do
    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() <> "/orgs/#{org}/dependabot/secrets/#{secret_name}/repositories" <> qs
      )

    body = %{}
    api_call(:get, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Remove selected repository from an organization secret

  @see https://docs.github.com/rest/dependabot/secrets#remove-selected-repository-from-an-organization-secret
  """
  def remove_selected_repo_from_org_secret(org, secret_name, repository_id, options \\ nil) do
    url =
      github_base() <>
        "/orgs/#{org}/dependabot/secrets/#{secret_name}/repositories/#{repository_id}"

    body = %{}
    api_call(:delete, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Lists the repositories Dependabot can access in an enterprise

  @see https://docs.github.com/rest/dependabot/repository-access#lists-the-repositories-dependabot-can-access-in-an-enterprise
  """
  def repository_access_for_enterprise(enterprise, options \\ nil) do
    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() <> "/enterprises/#{enterprise}/dependabot/repository-access" <> qs
      )

    body = %{}
    api_call(:get, url, body, Noizu.Github.DependabotRepositoryAccessDetails, options)
  end

  @doc """
  Lists the repositories Dependabot can access in an organization

  @see https://docs.github.com/rest/dependabot/repository-access#lists-the-repositories-dependabot-can-access-in-an-organization
  """
  def repository_access_for_org(org, options \\ nil) do
    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() <> "/orgs/#{org}/dependabot/repository-access" <> qs
      )

    body = %{}
    api_call(:get, url, body, Noizu.Github.DependabotRepositoryAccessDetails, options)
  end

  @doc """
  Set the default repository access level for Dependabot

  @see https://docs.github.com/rest/dependabot/repository-access#set-the-default-repository-access-level-for-dependabot
  """
  def set_repository_access_default_level(org, body, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/dependabot/repository-access/default-level"
    body = body
    api_call(:put, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Set the default repository access level for Dependabot in an enterprise

  @see https://docs.github.com/rest/dependabot/repository-access#set-the-default-repository-access-level-for-dependabot-in-an-enterprise
  """
  def set_repository_access_default_level_for_enterprise(enterprise, body, options \\ nil) do
    url = github_base() <> "/enterprises/#{enterprise}/dependabot/repository-access/default-level"
    body = body
    api_call(:put, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Set selected repositories for an organization secret

  @see https://docs.github.com/rest/dependabot/secrets#set-selected-repositories-for-an-organization-secret
  """
  def set_selected_repos_for_org_secret(org, secret_name, body, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/dependabot/secrets/#{secret_name}/repositories"
    body = body
    api_call(:put, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Update a Dependabot alert

  @see https://docs.github.com/rest/dependabot/alerts#update-a-dependabot-alert
  """
  def update_alert(alert_number, body, options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/dependabot/alerts/#{alert_number}"
    body = body
    api_call(:patch, url, body, Noizu.Github.DependabotAlert, options)
  end

  @doc """
  Updates Dependabot's repository access list for an enterprise

  @see https://docs.github.com/rest/dependabot/repository-access#updates-dependabots-repository-access-list-for-an-enterprise
  """
  def update_repository_access_for_enterprise(enterprise, body, options \\ nil) do
    url = github_base() <> "/enterprises/#{enterprise}/dependabot/repository-access"
    body = body
    api_call(:patch, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Updates Dependabot's repository access list for an organization

  @see https://docs.github.com/rest/dependabot/repository-access#updates-dependabots-repository-access-list-for-an-organization
  """
  def update_repository_access_for_org(org, body, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/dependabot/repository-access"
    body = body
    api_call(:patch, url, body, Noizu.Github.Raw, options)
  end
end