Column.Client (Column v1.0.0)

Copy Markdown View Source

Low-level HTTP client for the Column API.

Handles:

  • HTTP Basic Auth (blank username, API key as password)
  • JSON encoding / decoding via Jason
  • Automatic retry with exponential backoff + jitter for transient errors
  • Idempotency-Key header injection on POST requests
  • Rate limit header parsing (X-RateLimit-*)
  • Telemetry events via Column.Telemetry
  • Multipart file upload support
  • Structured Column.Error on all failure paths
  • Request ID extraction from response headers

You should not call this module directly — use the resource modules (Column.ACH, Column.BankAccounts, etc.) which delegate here.

Summary

Functions

Perform a DELETE request.

Perform a GET request.

Perform a PATCH request.

Perform a POST request.

Perform a multipart POST (for file uploads).

Types

body()

@type body() :: map() | nil

opts()

@type opts() :: keyword()

path()

@type path() :: String.t()

req_headers()

@type req_headers() :: %{optional(String.t()) => [String.t()]}

response()

@type response() :: {:ok, map() | list()} | {:error, Column.Error.t()}

Functions

delete(path, opts \\ [])

@spec delete(path(), opts()) :: response()

Perform a DELETE request.

get(path, opts \\ [])

@spec get(path(), opts()) :: response()

Perform a GET request.

patch(path, body \\ nil, opts \\ [])

@spec patch(path(), body(), opts()) :: response()

Perform a PATCH request.

post(path, body \\ nil, opts \\ [])

@spec post(path(), body(), opts()) :: response()

Perform a POST request.

post_multipart(path, parts, opts \\ [])

@spec post_multipart(path(), list(), opts()) :: response()

Perform a multipart POST (for file uploads).