defmodule GitHub.Packages do
@moduledoc """
Provides API endpoints related to packages
"""
@default_client GitHub.Client
@doc """
Delete a package for the authenticated user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#delete-a-package-for-the-authenticated-user)
"""
@spec delete_package_for_authenticated_user(String.t(), String.t(), keyword) ::
:ok | {:error, GitHub.Error.t()}
def delete_package_for_authenticated_user(package_type, package_name, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :delete_package_for_authenticated_user},
url: "/user/packages/#{package_type}/#{package_name}",
method: :delete,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Delete a package for an organization
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#delete-a-package-for-an-organization)
"""
@spec delete_package_for_org(String.t(), String.t(), String.t(), keyword) ::
:ok | {:error, GitHub.Error.t()}
def delete_package_for_org(org, package_type, package_name, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [org: org, package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :delete_package_for_org},
url: "/orgs/#{org}/packages/#{package_type}/#{package_name}",
method: :delete,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Delete a package for a user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#delete-a-package-for-a-user)
"""
@spec delete_package_for_user(String.t(), String.t(), String.t(), keyword) ::
:ok | {:error, GitHub.Error.t()}
def delete_package_for_user(username, package_type, package_name, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [username: username, package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :delete_package_for_user},
url: "/users/#{username}/packages/#{package_type}/#{package_name}",
method: :delete,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Delete a package version for the authenticated user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#delete-a-package-version-for-the-authenticated-user)
"""
@spec delete_package_version_for_authenticated_user(String.t(), String.t(), integer, keyword) ::
:ok | {:error, GitHub.Error.t()}
def delete_package_version_for_authenticated_user(
package_type,
package_name,
package_version_id,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [
package_type: package_type,
package_name: package_name,
package_version_id: package_version_id
],
call: {GitHub.Packages, :delete_package_version_for_authenticated_user},
url: "/user/packages/#{package_type}/#{package_name}/versions/#{package_version_id}",
method: :delete,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Delete package version for an organization
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#delete-a-package-version-for-an-organization)
"""
@spec delete_package_version_for_org(String.t(), String.t(), String.t(), integer, keyword) ::
:ok | {:error, GitHub.Error.t()}
def delete_package_version_for_org(
org,
package_type,
package_name,
package_version_id,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [
org: org,
package_type: package_type,
package_name: package_name,
package_version_id: package_version_id
],
call: {GitHub.Packages, :delete_package_version_for_org},
url: "/orgs/#{org}/packages/#{package_type}/#{package_name}/versions/#{package_version_id}",
method: :delete,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Delete package version for a user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#delete-a-package-version-for-a-user)
"""
@spec delete_package_version_for_user(String.t(), String.t(), String.t(), integer, keyword) ::
:ok | {:error, GitHub.Error.t()}
def delete_package_version_for_user(
username,
package_type,
package_name,
package_version_id,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [
username: username,
package_type: package_type,
package_name: package_name,
package_version_id: package_version_id
],
call: {GitHub.Packages, :delete_package_version_for_user},
url:
"/users/#{username}/packages/#{package_type}/#{package_name}/versions/#{package_version_id}",
method: :delete,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
List package versions for a package owned by the authenticated user
## Options
* `page` (integer): Page number of the results to fetch.
* `per_page` (integer): The number of results per page (max 100).
* `state` (String.t()): The state of the package, either active or deleted.
## Resources
* [API method documentation](https://docs.github.com/rest/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user)
"""
@spec get_all_package_versions_for_package_owned_by_authenticated_user(
String.t(),
String.t(),
keyword
) :: {:ok, [GitHub.PackageVersion.t()]} | {:error, GitHub.Error.t()}
def get_all_package_versions_for_package_owned_by_authenticated_user(
package_type,
package_name,
opts \\ []
) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:page, :per_page, :state])
client.request(%{
args: [package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :get_all_package_versions_for_package_owned_by_authenticated_user},
url: "/user/packages/#{package_type}/#{package_name}/versions",
method: :get,
query: query,
response: [
{200, {:array, {GitHub.PackageVersion, :t}}},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
List package versions for a package owned by an organization
## Options
* `page` (integer): Page number of the results to fetch.
* `per_page` (integer): The number of results per page (max 100).
* `state` (String.t()): The state of the package, either active or deleted.
## Resources
* [API method documentation](https://docs.github.com/rest/packages#get-all-package-versions-for-a-package-owned-by-an-organization)
"""
@spec get_all_package_versions_for_package_owned_by_org(
String.t(),
String.t(),
String.t(),
keyword
) :: {:ok, [GitHub.PackageVersion.t()]} | {:error, GitHub.Error.t()}
def get_all_package_versions_for_package_owned_by_org(
org,
package_type,
package_name,
opts \\ []
) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:page, :per_page, :state])
client.request(%{
args: [org: org, package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :get_all_package_versions_for_package_owned_by_org},
url: "/orgs/#{org}/packages/#{package_type}/#{package_name}/versions",
method: :get,
query: query,
response: [
{200, {:array, {GitHub.PackageVersion, :t}}},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
List package versions for a package owned by a user
## Resources
* [API method documentation](https://docs.github.com/rest/packages#get-all-package-versions-for-a-package-owned-by-a-user)
"""
@spec get_all_package_versions_for_package_owned_by_user(
String.t(),
String.t(),
String.t(),
keyword
) :: {:ok, [GitHub.PackageVersion.t()]} | {:error, GitHub.Error.t()}
def get_all_package_versions_for_package_owned_by_user(
username,
package_type,
package_name,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [username: username, package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :get_all_package_versions_for_package_owned_by_user},
url: "/users/#{username}/packages/#{package_type}/#{package_name}/versions",
method: :get,
response: [
{200, {:array, {GitHub.PackageVersion, :t}}},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Get a package for the authenticated user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#get-a-package-for-the-authenticated-user)
"""
@spec get_package_for_authenticated_user(String.t(), String.t(), keyword) ::
{:ok, GitHub.Package.t()} | {:error, GitHub.Error.t()}
def get_package_for_authenticated_user(package_type, package_name, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :get_package_for_authenticated_user},
url: "/user/packages/#{package_type}/#{package_name}",
method: :get,
response: [{200, {GitHub.Package, :t}}],
opts: opts
})
end
@doc """
Get a package for an organization
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#get-a-package-for-an-organization)
"""
@spec get_package_for_organization(String.t(), String.t(), String.t(), keyword) ::
{:ok, GitHub.Package.t()} | {:error, GitHub.Error.t()}
def get_package_for_organization(org, package_type, package_name, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [org: org, package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :get_package_for_organization},
url: "/orgs/#{org}/packages/#{package_type}/#{package_name}",
method: :get,
response: [{200, {GitHub.Package, :t}}],
opts: opts
})
end
@doc """
Get a package for a user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#get-a-package-for-a-user)
"""
@spec get_package_for_user(String.t(), String.t(), String.t(), keyword) ::
{:ok, GitHub.Package.t()} | {:error, GitHub.Error.t()}
def get_package_for_user(username, package_type, package_name, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [username: username, package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :get_package_for_user},
url: "/users/#{username}/packages/#{package_type}/#{package_name}",
method: :get,
response: [{200, {GitHub.Package, :t}}],
opts: opts
})
end
@doc """
Get a package version for the authenticated user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#get-a-package-version-for-the-authenticated-user)
"""
@spec get_package_version_for_authenticated_user(String.t(), String.t(), integer, keyword) ::
{:ok, GitHub.PackageVersion.t()} | {:error, GitHub.Error.t()}
def get_package_version_for_authenticated_user(
package_type,
package_name,
package_version_id,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [
package_type: package_type,
package_name: package_name,
package_version_id: package_version_id
],
call: {GitHub.Packages, :get_package_version_for_authenticated_user},
url: "/user/packages/#{package_type}/#{package_name}/versions/#{package_version_id}",
method: :get,
response: [{200, {GitHub.PackageVersion, :t}}],
opts: opts
})
end
@doc """
Get a package version for an organization
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#get-a-package-version-for-an-organization)
"""
@spec get_package_version_for_organization(String.t(), String.t(), String.t(), integer, keyword) ::
{:ok, GitHub.PackageVersion.t()} | {:error, GitHub.Error.t()}
def get_package_version_for_organization(
org,
package_type,
package_name,
package_version_id,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [
org: org,
package_type: package_type,
package_name: package_name,
package_version_id: package_version_id
],
call: {GitHub.Packages, :get_package_version_for_organization},
url: "/orgs/#{org}/packages/#{package_type}/#{package_name}/versions/#{package_version_id}",
method: :get,
response: [{200, {GitHub.PackageVersion, :t}}],
opts: opts
})
end
@doc """
Get a package version for a user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#get-a-package-version-for-a-user)
"""
@spec get_package_version_for_user(String.t(), String.t(), String.t(), integer, keyword) ::
{:ok, GitHub.PackageVersion.t()} | {:error, GitHub.Error.t()}
def get_package_version_for_user(
username,
package_type,
package_name,
package_version_id,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [
username: username,
package_type: package_type,
package_name: package_name,
package_version_id: package_version_id
],
call: {GitHub.Packages, :get_package_version_for_user},
url:
"/users/#{username}/packages/#{package_type}/#{package_name}/versions/#{package_version_id}",
method: :get,
response: [{200, {GitHub.PackageVersion, :t}}],
opts: opts
})
end
@doc """
Get list of conflicting packages during Docker migration for authenticated-user
## Resources
* [API method documentation](https://docs.github.com/rest/packages#list-docker-migration-conflicting-packages-for-authenticated-user)
"""
@spec list_docker_migration_conflicting_packages_for_authenticated_user(keyword) ::
{:ok, [GitHub.Package.t()]} | {:error, GitHub.Error.t()}
def list_docker_migration_conflicting_packages_for_authenticated_user(opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
call: {GitHub.Packages, :list_docker_migration_conflicting_packages_for_authenticated_user},
url: "/user/docker/conflicts",
method: :get,
response: [{200, {:array, {GitHub.Package, :t}}}],
opts: opts
})
end
@doc """
Get list of conflicting packages during Docker migration for organization
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#list-docker-migration-conflicting-packages-for-organization)
"""
@spec list_docker_migration_conflicting_packages_for_organization(String.t(), keyword) ::
{:ok, [GitHub.Package.t()]} | {:error, GitHub.Error.t()}
def list_docker_migration_conflicting_packages_for_organization(org, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [org: org],
call: {GitHub.Packages, :list_docker_migration_conflicting_packages_for_organization},
url: "/orgs/#{org}/docker/conflicts",
method: :get,
response: [
{200, {:array, {GitHub.Package, :t}}},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Get list of conflicting packages during Docker migration for user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#list-docker-migration-conflicting-packages-for-user)
"""
@spec list_docker_migration_conflicting_packages_for_user(String.t(), keyword) ::
{:ok, [GitHub.Package.t()]} | {:error, GitHub.Error.t()}
def list_docker_migration_conflicting_packages_for_user(username, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [username: username],
call: {GitHub.Packages, :list_docker_migration_conflicting_packages_for_user},
url: "/users/#{username}/docker/conflicts",
method: :get,
response: [
{200, {:array, {GitHub.Package, :t}}},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
List packages for the authenticated user's namespace
## Options
* `package_type` (String.t()): The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry.
* `visibility` (String.t()): The selected visibility of the packages. This parameter is optional and only filters an existing result set.
The `internal` visibility is only supported for GitHub Packages registries that allow for granular permissions. For other ecosystems `internal` is synonymous with `private`.
For the list of GitHub Packages registries that support granular permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
* `page` (integer): Page number of the results to fetch.
* `per_page` (integer): The number of results per page (max 100).
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#list-packages-for-the-authenticated-user)
"""
@spec list_packages_for_authenticated_user(keyword) ::
{:ok, [GitHub.Package.t()]} | {:error, GitHub.Error.t()}
def list_packages_for_authenticated_user(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:package_type, :page, :per_page, :visibility])
client.request(%{
call: {GitHub.Packages, :list_packages_for_authenticated_user},
url: "/user/packages",
method: :get,
query: query,
response: [{200, {:array, {GitHub.Package, :t}}}, {400, nil}],
opts: opts
})
end
@doc """
List packages for an organization
## Options
* `package_type` (String.t()): The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry.
* `visibility` (String.t()): The selected visibility of the packages. This parameter is optional and only filters an existing result set.
The `internal` visibility is only supported for GitHub Packages registries that allow for granular permissions. For other ecosystems `internal` is synonymous with `private`.
For the list of GitHub Packages registries that support granular permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
* `page` (integer): Page number of the results to fetch.
* `per_page` (integer): The number of results per page (max 100).
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#list-packages-for-an-organization)
"""
@spec list_packages_for_organization(String.t(), keyword) ::
{:ok, [GitHub.Package.t()]} | {:error, GitHub.Error.t()}
def list_packages_for_organization(org, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:package_type, :page, :per_page, :visibility])
client.request(%{
args: [org: org],
call: {GitHub.Packages, :list_packages_for_organization},
url: "/orgs/#{org}/packages",
method: :get,
query: query,
response: [
{200, {:array, {GitHub.Package, :t}}},
{400, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
List packages for a user
## Options
* `package_type` (String.t()): The type of supported package. Packages in GitHub's Gradle registry have the type `maven`. Docker images pushed to GitHub's Container registry (`ghcr.io`) have the type `container`. You can use the type `docker` to find images that were pushed to GitHub's Docker registry (`docker.pkg.github.com`), even if these have now been migrated to the Container registry.
* `visibility` (String.t()): The selected visibility of the packages. This parameter is optional and only filters an existing result set.
The `internal` visibility is only supported for GitHub Packages registries that allow for granular permissions. For other ecosystems `internal` is synonymous with `private`.
For the list of GitHub Packages registries that support granular permissions, see "[About permissions for GitHub Packages](https://docs.github.com/packages/learn-github-packages/about-permissions-for-github-packages#granular-permissions-for-userorganization-scoped-packages)."
* `page` (integer): Page number of the results to fetch.
* `per_page` (integer): The number of results per page (max 100).
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#list-packages-for-user)
"""
@spec list_packages_for_user(String.t(), keyword) ::
{:ok, [GitHub.Package.t()]} | {:error, GitHub.Error.t()}
def list_packages_for_user(username, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:package_type, :page, :per_page, :visibility])
client.request(%{
args: [username: username],
call: {GitHub.Packages, :list_packages_for_user},
url: "/users/#{username}/packages",
method: :get,
query: query,
response: [
{200, {:array, {GitHub.Package, :t}}},
{400, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Restore a package for the authenticated user
## Options
* `token` (String.t()): package token
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#restore-a-package-for-the-authenticated-user)
"""
@spec restore_package_for_authenticated_user(String.t(), String.t(), keyword) ::
:ok | {:error, GitHub.Error.t()}
def restore_package_for_authenticated_user(package_type, package_name, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:token])
client.request(%{
args: [package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :restore_package_for_authenticated_user},
url: "/user/packages/#{package_type}/#{package_name}/restore",
method: :post,
query: query,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Restore a package for an organization
## Options
* `token` (String.t()): package token
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#restore-a-package-for-an-organization)
"""
@spec restore_package_for_org(String.t(), String.t(), String.t(), keyword) ::
:ok | {:error, GitHub.Error.t()}
def restore_package_for_org(org, package_type, package_name, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:token])
client.request(%{
args: [org: org, package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :restore_package_for_org},
url: "/orgs/#{org}/packages/#{package_type}/#{package_name}/restore",
method: :post,
query: query,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Restore a package for a user
## Options
* `token` (String.t()): package token
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#restore-a-package-for-a-user)
"""
@spec restore_package_for_user(String.t(), String.t(), String.t(), keyword) ::
:ok | {:error, GitHub.Error.t()}
def restore_package_for_user(username, package_type, package_name, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:token])
client.request(%{
args: [username: username, package_type: package_type, package_name: package_name],
call: {GitHub.Packages, :restore_package_for_user},
url: "/users/#{username}/packages/#{package_type}/#{package_name}/restore",
method: :post,
query: query,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Restore a package version for the authenticated user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#restore-a-package-version-for-the-authenticated-user)
"""
@spec restore_package_version_for_authenticated_user(String.t(), String.t(), integer, keyword) ::
:ok | {:error, GitHub.Error.t()}
def restore_package_version_for_authenticated_user(
package_type,
package_name,
package_version_id,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [
package_type: package_type,
package_name: package_name,
package_version_id: package_version_id
],
call: {GitHub.Packages, :restore_package_version_for_authenticated_user},
url:
"/user/packages/#{package_type}/#{package_name}/versions/#{package_version_id}/restore",
method: :post,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Restore package version for an organization
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#restore-a-package-version-for-an-organization)
"""
@spec restore_package_version_for_org(String.t(), String.t(), String.t(), integer, keyword) ::
:ok | {:error, GitHub.Error.t()}
def restore_package_version_for_org(
org,
package_type,
package_name,
package_version_id,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [
org: org,
package_type: package_type,
package_name: package_name,
package_version_id: package_version_id
],
call: {GitHub.Packages, :restore_package_version_for_org},
url:
"/orgs/#{org}/packages/#{package_type}/#{package_name}/versions/#{package_version_id}/restore",
method: :post,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
@doc """
Restore package version for a user
## Resources
* [API method documentation](https://docs.github.com/rest/reference/packages#restore-a-package-version-for-a-user)
"""
@spec restore_package_version_for_user(String.t(), String.t(), String.t(), integer, keyword) ::
:ok | {:error, GitHub.Error.t()}
def restore_package_version_for_user(
username,
package_type,
package_name,
package_version_id,
opts \\ []
) do
client = opts[:client] || @default_client
client.request(%{
args: [
username: username,
package_type: package_type,
package_name: package_name,
package_version_id: package_version_id
],
call: {GitHub.Packages, :restore_package_version_for_user},
url:
"/users/#{username}/packages/#{package_type}/#{package_name}/versions/#{package_version_id}/restore",
method: :post,
response: [
{204, nil},
{401, {GitHub.BasicError, :t}},
{403, {GitHub.BasicError, :t}},
{404, {GitHub.BasicError, :t}}
],
opts: opts
})
end
end