# 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.Campaigns do
@moduledoc """
GitHub `campaigns` API.
"""
import Noizu.Github
@doc """
Create a campaign for an organization
@see https://docs.github.com/rest/campaigns/campaigns#create-a-campaign-for-an-organization
"""
def create_campaign(org, body, options \\ nil) do
url = github_base() <> "/orgs/#{org}/campaigns"
body = body
api_call(:post, url, body, Noizu.Github.CampaignSummary, options)
end
@doc """
Delete a campaign for an organization
@see https://docs.github.com/rest/campaigns/campaigns#delete-a-campaign-for-an-organization
"""
def delete_campaign(org, campaign_number, options \\ nil) do
url = github_base() <> "/orgs/#{org}/campaigns/#{campaign_number}"
body = %{}
api_call(:delete, url, body, Noizu.Github.Raw, options)
end
@doc """
Get a campaign for an organization
@see https://docs.github.com/rest/campaigns/campaigns#get-a-campaign-for-an-organization
"""
def get_campaign_summary(org, campaign_number, options \\ nil) do
url = github_base() <> "/orgs/#{org}/campaigns/#{campaign_number}"
body = %{}
api_call(:get, url, body, Noizu.Github.CampaignSummary, options)
end
@doc """
List campaigns for an organization
@see https://docs.github.com/rest/campaigns/campaigns#list-campaigns-for-an-organization
"""
def list_org_campaigns(org, options \\ nil) do
url =
(
query =
[
get_field(:page, options, nil),
get_field(:per_page, options, nil),
get_field(:direction, options, nil),
get_field(:state, options, nil),
get_field(:sort, options, nil)
]
|> Enum.filter(& &1)
qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")
github_base() <> "/orgs/#{org}/campaigns" <> qs
)
body = %{}
api_call(:get, url, body, Noizu.Github.Collection.CampaignSummary, options)
end
@doc """
Update a campaign
@see https://docs.github.com/rest/campaigns/campaigns#update-a-campaign
"""
def update_campaign(org, campaign_number, body, options \\ nil) do
url = github_base() <> "/orgs/#{org}/campaigns/#{campaign_number}"
body = body
api_call(:patch, url, body, Noizu.Github.CampaignSummary, options)
end
end