TypeSafeSDK.Error exception (TypeSafeSDK v0.1.0)

Copy Markdown View Source

Normalized TypeSafe SDK error.

HTTP status mapping follows the supplied Python SDK: 400, 401, 403, 404, 422, 429, and 5xx receive dedicated type values; other unsuccessful statuses use :api_error. Transport and response validation failures are distinct.

Summary

Types

error_type()

@type error_type() ::
  :configuration
  | :bad_request
  | :authentication
  | :permission_denied
  | :not_found
  | :unprocessable_entity
  | :rate_limit
  | :internal_server
  | :api_error
  | :connection
  | :timeout
  | :response_validation

t()

@type t() :: %TypeSafeSDK.Error{
  __exception__: true,
  body: term(),
  details: map(),
  endpoint: String.t() | nil,
  field_path: String.t() | nil,
  headers: map(),
  message: String.t(),
  raw_http_response: Pristine.Response.t() | nil,
  request_id: String.t() | nil,
  retry_after_ms: non_neg_integer() | nil,
  status: integer() | nil,
  type: error_type()
}

Functions

configuration(message)

@spec configuration(String.t()) :: t()

extract_message(body)

@spec extract_message(term()) :: String.t() | nil

parse_retry_after(headers)

@spec parse_retry_after(map() | list()) :: non_neg_integer() | nil

response_validation(field_path, body \\ nil)

@spec response_validation(String.t(), term()) :: t()