Represents a metadata entry with both value and visibility level.
Each metadata entry in a Trogon error contains not just the value, but also its visibility level which determines who can see this metadata.
Visibility Levels
:INTERNAL- Only visible to internal systems and developers (default):PRIVATE- Visible to authenticated users but not public:PUBLIC- Visible to everyone including end users
Examples
iex> Trogon.Error.MetadataValue.new("secret data", :PRIVATE)
%Trogon.Error.MetadataValue{value: "secret data", visibility: :PRIVATE}
iex> Trogon.Error.MetadataValue.new(123)
%Trogon.Error.MetadataValue{value: "123", visibility: :INTERNAL}
Summary
Functions
Creates a MetadataValue with :INTERNAL visibility. See new/2 for explicit visibility.
Creates a MetadataValue with explicit visibility. Non-string values are converted via to_string/1.
Types
@type raw() :: String.t() | {String.t(), visibility()}
Raw input format for creating a MetadataValue.
Simple string: defaults to
:INTERNALvisibilityTuple
{value, visibility}: explicit visibility control"user_id" # => %MetadataValue{value: "user_id", visibility: :INTERNAL} {"secret", :PRIVATE} # => %MetadataValue{value: "secret", visibility: :PRIVATE}
@type t() :: %Trogon.Error.MetadataValue{value: String.t(), visibility: visibility()}
@type visibility() :: :INTERNAL | :PRIVATE | :PUBLIC
Functions
Creates a MetadataValue with :INTERNAL visibility. See new/2 for explicit visibility.
Examples
iex> Trogon.Error.MetadataValue.new("secret")
%Trogon.Error.MetadataValue{value: "secret", visibility: :INTERNAL}
@spec new(term(), visibility()) :: t()
Creates a MetadataValue with explicit visibility. Non-string values are converted via to_string/1.
Examples
iex> Trogon.Error.MetadataValue.new("secret", :PRIVATE)
%Trogon.Error.MetadataValue{value: "secret", visibility: :PRIVATE}
iex> Trogon.Error.MetadataValue.new(123, :PUBLIC)
%Trogon.Error.MetadataValue{value: "123", visibility: :PUBLIC}