TypeSafeSDK.Error exception (TypeSafeSDK v0.4.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

Functions

A local request validation failure, with unambiguous path components.

Stable, bounded structural metadata safe for telemetry and diagnostics.

Retry-After advice in milliseconds, when supplied by the service.

Whether the error is eligible under the given retry policy (default: SDK default).

Types

error_type()

@type error_type() ::
  :invalid_request
  | :task_exit
  | :runtime_capability
  | :configuration
  | :bad_request
  | :authentication
  | :permission_denied
  | :not_found
  | :unprocessable_entity
  | :rate_limit
  | :internal_server
  | :api_error
  | :connection
  | :timeout
  | :cancelled
  | :response_contract
  | :request_too_large
  | :model_not_found
  | :ambiguous_model
  | :unordered_model_catalog
  | :response_validation

t()

@type t() :: %TypeSafeSDK.Error{
  __exception__: true,
  body: term(),
  cause: term(),
  details: map(),
  endpoint: String.t() | nil,
  field_path: String.t() | nil,
  headers: map(),
  message: String.t(),
  path: [String.t()] | nil,
  prepared_fingerprint: String.t() | nil,
  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

invalid_request(path, reason, details \\ %{})

@spec invalid_request([String.t()], String.t(), map()) :: t()

A local request validation failure, with unambiguous path components.

metadata(error)

@spec metadata(t()) :: map()

Stable, bounded structural metadata safe for telemetry and diagnostics.

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() | [String.t()], term()) :: t()

retry_after(error)

@spec retry_after(t()) :: non_neg_integer() | nil

Retry-After advice in milliseconds, when supplied by the service.

retryable?(error, policy \\ %TypeSafeSDK.RetryPolicy{})

@spec retryable?(t(), TypeSafeSDK.RetryPolicy.t() | false) :: boolean()

Whether the error is eligible under the given retry policy (default: SDK default).