TypeSafeSDK.SystemOneResponse (TypeSafeSDK v0.4.0)

Copy Markdown View Source

Typed System One response with grouped convenience accessors.

Responses produced by the HTTP client retain request metadata separately from the decoded API payload. request_id!/1 and raw_http_response!/1 mirror the Python SDK's metadata access without polluting the wire fields.

Summary

Types

answer()

t()

@type t() :: %TypeSafeSDK.SystemOneResponse{
  answers: %{required(atom() | String.t()) => answer()},
  batch_index: non_neg_integer() | nil,
  elapsed_ms: number(),
  model: String.t(),
  prepared_fingerprint: String.t() | nil,
  raw: map() | nil,
  raw_http_response: Pristine.Response.t() | nil,
  request_id: String.t() | nil,
  retries: non_neg_integer(),
  runtime_elapsed_ms: number() | nil,
  unknown_answers: map(),
  usage: TypeSafeSDK.Usage.t()
}

Functions

choices(system_one_response)

@spec choices(t()) :: %{required(atom() | String.t()) => TypeSafeSDK.ChoiceAnswer.t()}

decode(transport)

@spec decode(term()) :: {:ok, t()} | {:error, TypeSafeSDK.Error.t()}

fetch(system_one_response, id)

@spec fetch(t(), atom() | String.t()) :: {:ok, answer()} | :error

Fetch an answer using its exact caller key (or wire key for system_one).

fetch!(response, id)

@spec fetch!(t(), atom() | String.t()) :: answer()

Fetch an answer or raise a KeyError listing the available IDs.

nouls(system_one_response)

@spec nouls(t()) :: %{required(atom() | String.t()) => TypeSafeSDK.NoulAnswer.t()}

raw_http_response!(system_one_response)

@spec raw_http_response!(t()) :: Pristine.Response.t()

request_id!(system_one_response)

@spec request_id!(t()) :: String.t()

scores(system_one_response)

@spec scores(t()) :: %{required(atom() | String.t()) => TypeSafeSDK.ScoreAnswer.t()}