# `RequestSeal.JOSE.Error`
[🔗](https://github.com/baselabs/request_seal/blob/v0.5.2/lib/request_seal/jose/error.ex#L1)

Closed, redacted JOSE errors. Only `:deadline_exceeded` is retryable.

Input errors: `:invalid_options`, `:invalid_policy`, `:limit`,
`:invalid_serialization`, `:invalid_base64`, `:invalid_header`,
`:duplicate_member`, `:unsupported_header`, `:unsupported_serialization`,
`:compression_unsupported`, `:detached_payload`, `:invalid_iv`, `:invalid_tag`.
Selection errors: `:algorithm_not_permitted`, `:algorithm_mismatch`,
`:unsupported_critical_header`, `:unknown_key`, `:key_resolver_failed`.
Operation errors: `:invalid_signature`, `:signer_failed`, `:decryption_failed`,
`:entropy_failure`, `:deadline_exceeded`, `:nesting_depth`, `:content_type_mismatch`.
Unwrap and authentication failures share `:decryption_failed`; no bytes, key
identifiers, callback reason, or exception text is retained. Correlation is nil.
Layers identify `:input`, `:key`, `:crypto`, or `:nesting`.

# `reason`

```elixir
@type reason() ::
  :content_type_mismatch
  | :nesting_depth
  | :deadline_exceeded
  | :entropy_failure
  | :decryption_failed
  | :invalid_tag
  | :invalid_iv
  | :signer_failed
  | :invalid_signature
  | :key_resolver_failed
  | :unknown_key
  | :unsupported_critical_header
  | :algorithm_mismatch
  | :algorithm_not_permitted
  | :detached_payload
  | :compression_unsupported
  | :unsupported_serialization
  | :unsupported_header
  | :duplicate_member
  | :invalid_header
  | :invalid_base64
  | :invalid_serialization
  | :limit
  | :invalid_policy
  | :invalid_options
```

# `t`

```elixir
@type t() :: %RequestSeal.JOSE.Error{
  correlation: nil,
  layer: atom(),
  reason: reason(),
  retryable: boolean()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
