lib/boruta/oauth/contexts/clients.ex

defmodule Boruta.Oauth.Clients do
  @moduledoc """
  Client context
  """

  @doc """
  Returns a `Boruta.Oauth.Client` given id.
  """
  @callback get_client(id :: any()) :: client :: Boruta.Oauth.Client.t() | nil

  @doc """
  Returns client authorized scopes. The scopes will be granted for every requests to the given client.
  """
  @callback authorized_scopes(client :: Boruta.Oauth.Client.t()) :: list(Boruta.Oauth.Scope.t())

  @doc """
  Returns all clients jwk public keys
  """
  @callback list_clients_jwk() :: list(%JOSE.JWK{})

  @optional_callbacks [list_clients_jwk: 0]
end