# `Pristine.SDK.OpenAPI.Client`
[🔗](https://github.com/nshkrdotcom/pristine/blob/pristine-v0.4.0/lib/pristine/sdk/openapi/client.ex#L1)

SDK-facing request contracts for generated provider SDKs.

# `request_spec_t`

```elixir
@type request_spec_t() :: %{
  :method =&gt; atom() | String.t(),
  :path =&gt; String.t(),
  :path_params =&gt; map(),
  :query =&gt; map(),
  :body =&gt; term() | nil,
  :form_data =&gt; term() | nil,
  :headers =&gt; map() | nil,
  :auth =&gt; term() | nil,
  :security =&gt; [map()] | nil,
  :request_schema =&gt; term() | nil,
  :response_schema =&gt; term() | nil,
  :id =&gt; String.t() | nil,
  optional(:circuit_breaker) =&gt; String.t() | nil,
  optional(:rate_limit) =&gt; String.t() | nil,
  optional(:resource) =&gt; String.t() | nil,
  optional(:retry) =&gt; String.t() | nil,
  optional(:telemetry) =&gt; term(),
  optional(:timeout) =&gt; pos_integer() | nil,
  optional(:use_default_auth) =&gt; boolean(),
  optional(:pagination) =&gt; map() | nil
}
```

# `request_t`

```elixir
@type request_t() :: %{
  :method =&gt; atom() | String.t(),
  :path_template =&gt; String.t(),
  optional(:id) =&gt; String.t() | nil,
  optional(:path_params) =&gt; map(),
  optional(:query) =&gt; map(),
  optional(:body) =&gt; term() | nil,
  optional(:form_data) =&gt; term() | nil,
  optional(:headers) =&gt; map(),
  optional(:auth) =&gt; map() | term() | nil,
  optional(:security) =&gt; [map()] | nil,
  optional(:request_schema) =&gt; term() | nil,
  optional(:response_schema) =&gt; term() | nil,
  optional(:response_schemas) =&gt; map(),
  optional(:pagination) =&gt; map() | nil,
  optional(:resource) =&gt; String.t() | nil,
  optional(:retry) =&gt; String.t() | nil,
  optional(:circuit_breaker) =&gt; String.t() | nil,
  optional(:rate_limit) =&gt; String.t() | nil,
  optional(:telemetry) =&gt; term(),
  optional(:timeout) =&gt; pos_integer() | nil,
  optional(:use_default_auth) =&gt; boolean(),
  optional(:opts) =&gt; keyword(),
  optional(:args) =&gt; map(),
  optional(:call) =&gt; {module(), atom()}
}
```

# `items`

```elixir
@spec items(request_t(), term()) :: term()
```

# `next_page_request`

```elixir
@spec next_page_request(request_t(), term()) :: request_t() | nil
```

# `partition`

```elixir
@spec partition(map(), Pristine.Operation.partition_spec()) ::
  Pristine.Operation.partition_t()
```

# `request`

```elixir
@spec request(request_t()) :: {:ok, request_t()}
```

# `to_operation`

```elixir
@spec to_operation(request_t()) :: Pristine.Operation.t()
```

# `to_request_spec`

```elixir
@spec to_request_spec(request_t()) :: request_spec_t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
