Pristine.Operation (Pristine v0.4.0)

Copy Markdown View Source

Normalized runtime operation envelope rendered by generated providers.

Summary

Types

auth_t()

@type auth_t() :: %{
  use_client_default?: boolean(),
  override: term(),
  security_schemes: [String.t()]
}

key_spec()

@type key_spec() :: {String.t(), atom()}

pagination_t()

@type pagination_t() :: %{
  strategy: :cursor | :keyset | :link_header | :offset_limit | :page_number,
  request_mapping: map(),
  response_mapping: map(),
  default_limit: pos_integer() | nil,
  items_path: [term()] | nil
}

partition_spec()

@type partition_spec() :: %{
  optional(:auth) => key_spec() | payload_spec(),
  optional(:headers) => [key_spec()],
  optional(:path) => [key_spec()],
  optional(:query) => [key_spec()],
  optional(:body) => payload_spec(),
  optional(:form_data) => payload_spec()
}

partition_t()

@type partition_t() :: %{
  path_params: map(),
  query: map(),
  headers: map(),
  body: term(),
  form_data: term(),
  auth: term()
}

payload_spec()

@type payload_spec() ::
  %{mode: :keys, keys: [key_spec()]}
  | %{mode: :key, key: key_spec()}
  | %{mode: :remaining}
  | %{mode: :none}

runtime_t()

@type runtime_t() :: %{
  resource: String.t() | nil,
  retry_group: String.t() | nil,
  circuit_breaker: String.t() | nil,
  rate_limit_group: String.t() | nil,
  telemetry_event: term(),
  timeout_ms: non_neg_integer() | nil
}

t()

@type t() :: %Pristine.Operation{
  auth: auth_t(),
  body: term(),
  form_data: term(),
  headers: map(),
  id: String.t(),
  method: atom() | String.t(),
  pagination: pagination_t() | nil,
  path_params: map(),
  path_template: String.t(),
  query: map(),
  request_schema: term(),
  response_schemas: map(),
  runtime: runtime_t()
}

Functions

items(operation, response_or_body)

@spec items(t(), term()) :: term()

new(attrs \\ %{})

@spec new(map() | keyword()) :: t()

next_page(operation, response_or_body)

@spec next_page(t(), term()) :: t() | nil

partition(params, spec)

@spec partition(map(), partition_spec()) :: partition_t()

render_path(path_template, path_params)

@spec render_path(String.t(), map()) :: String.t()

response_schema(operation, status \\ nil)

@spec response_schema(t(), integer() | nil) :: term()