Files
firezone/elixir/apps/api/lib/api/controllers/gateway_group_json.ex
Brian Manifold 79c815fbbc feat(portal): Add REST API (#5579)
Why:

* In order to manage a large number of Firezone Sites, Resources,
Policies, etc... a REST API is needed as clicking through the UI is too
time consuming, as well as prone to error. By providing a REST API
Firezone customers will be able to manage things within their Firezone
accounts with code.
2024-07-20 04:20:43 +00:00

59 lines
1.1 KiB
Elixir

defmodule API.GatewayGroupJSON do
alias API.Pagination
alias Domain.Gateways
@doc """
Renders a list of Sites / Gateway Groups.
"""
def index(%{gateway_groups: gateway_groups, metadata: metadata}) do
%{
data: Enum.map(gateway_groups, &data/1),
metadata: Pagination.metadata(metadata)
}
end
@doc """
Render a single Site / Gateway Group
"""
def show(%{gateway_group: group}) do
%{data: data(group)}
end
@doc """
Render a Gateway Group Token
"""
def token(%{gateway_token: token, encoded_token: encoded_token}) do
%{
data: %{
id: token.id,
token: encoded_token
}
}
end
@doc """
Render a deleted Gateway Group Token
"""
def deleted_token(%{gateway_token: token}) do
%{
data: %{
id: token.id
}
}
end
@doc """
Render all deleted Gateway Group Tokens
"""
def deleted_tokens(%{tokens: tokens}) do
%{data: for(token <- tokens, do: %{id: token.id})}
end
defp data(%Gateways.Group{} = group) do
%{
id: group.id,
name: group.name
}
end
end