Provider-specific runtime profile for shared error normalization and result classification.
Summary
Types
@type retry_group_selector() :: :all | [String.t()] | nil
@type status_retry_override() :: %{ optional(:retry?) => boolean(), optional(:retry_groups) => retry_group_selector(), optional(:telemetry_classification) => atom(), optional(:breaker_outcome) => :success | :failure | :ignore, optional(:limiter_backoff_ms) => non_neg_integer() | :retry_after }
@type t() :: %Pristine.SDK.ProviderProfile{ additional_data_fields: [String.t()], body_code_fields: [String.t()], body_code_map: %{optional(String.t()) => atom()}, body_request_id_fields: [String.t()], connection_code: atom(), default_retry_group: String.t() | nil, documentation_url_fields: [String.t()], message_fields: [String.t()], provider: atom() | String.t(), rate_limit_code: atom(), rate_limit_detector: (integer(), map(), term() -> boolean()) | nil, rate_limit_retry_groups: retry_group_selector(), request_id_headers: [String.t()], response_error_code: atom(), retry_after_reset_at_headers: [String.t()], retryable_groups: retry_group_selector(), status_code_map: %{optional(integer()) => atom()}, status_retry_overrides: %{optional(integer()) => status_retry_override()}, status_retry_ranges: [map()], transport_retry_groups: retry_group_selector(), validation_code: atom() }
Functions
@spec override_applies?(status_retry_override(), t() | nil, map() | nil) :: boolean()
@spec override_retry?(status_retry_override(), t() | nil, map() | nil) :: boolean()
@spec retry_after_ms(t() | nil, map() | list()) :: non_neg_integer() | nil
@spec status_retry_override(t() | nil, integer() | nil) :: status_retry_override() | nil