lib/yousign/document.ex

defmodule Yousign.Document do
  @doc """
  Models a document to be signed
  """

  use TypedStruct

  @type document_nature :: :attachment | :signable_document
  @type intials :: %{
          alignement: :left | :center | :right,
          y: non_neg_integer()
        }

  typedstruct do
    field :id, String.t(), enforce: true
    field :filename, String.t(), enforce: true
    field :nature, document_nature(), enforce: true
    field :content_type, String.t(), enforce: true
    field :sha256, String.t(), enforce: true
    field :is_protected, boolean(), enforce: true
    field :is_signed, boolean(), enforce: true
    field :created_at, DateTime.t(), enforce: true
    field :total_pages, non_neg_integer(), enforce: true
    field :is_locked, boolean(), enforce: true
    field :initials, intials(), enforce: true
    field :total_anchors, non_neg_integer(), enforce: true
  end
end