lib/notion/user.ex

defmodule Notion.User do
  @moduledoc """
  User
  """

  use Tesla

  def retrieve_user(client, id, query), do: get(client, "/users/" <> id, query: query)

  def list_users(client, query), do: get(client, "/users", query: query)

  alias Notion.{Bot, Person}

  import EnumType

  defenum Type do
    value(Person, "person")
    value(Bot, "bot")
  end

  @enforce_keys [:object]
  defstruct object: "user",
            id: nil,
            type: nil,
            person: nil,
            bot: nil,
            name: nil,
            avatar_url: nil

  @type t() :: %__MODULE__{
          object: String.t(),
          id: String.t(),
          type: Type.t(),
          person: Person.t() | nil,
          #          bot: Bot.t() | nil,
          name: String.t(),
          avatar_url: String.t() | nil
        }
end