Solaris.Client (Solaris v1.0.0)

Copy Markdown View Source

Core HTTP client for all Solaris API requests.

Features:

  • OAuth2 Bearer token injection (via Solaris.Auth)
  • Automatic retry with exponential back-off on 429/5xx
  • Telemetry events on every request
  • Auto-generated idempotency keys on POST/PUT/PATCH (override with :idempotency_key)
  • Multipart/form-data support for document uploads
  • Per-request config overrides via keyword opts

All functions return {:ok, body} or {:error, %Solaris.Error{}}.

Summary

Functions

Performs an authenticated DELETE request.

Performs an authenticated GET request.

Performs an authenticated PATCH request.

Performs an authenticated POST request.

Performs an authenticated PUT request.

Uploads a file as multipart/form-data.

Functions

delete(path, opts \\ [])

@spec delete(
  String.t(),
  keyword()
) :: {:ok, term()} | {:error, Solaris.Error.t()}

Performs an authenticated DELETE request.

get(path, opts \\ [])

@spec get(
  String.t(),
  keyword()
) :: {:ok, term()} | {:error, Solaris.Error.t()}

Performs an authenticated GET request.

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

@spec patch(String.t(), body(), keyword()) ::
  {:ok, term()} | {:error, Solaris.Error.t()}

Performs an authenticated PATCH request.

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

@spec post(String.t(), body(), keyword()) ::
  {:ok, term()} | {:error, Solaris.Error.t()}

Performs an authenticated POST request.

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

@spec put(String.t(), body(), keyword()) ::
  {:ok, term()} | {:error, Solaris.Error.t()}

Performs an authenticated PUT request.

upload(path, file_data, opts \\ [])

@spec upload(String.t(), binary(), keyword()) ::
  {:ok, term()} | {:error, Solaris.Error.t()}

Uploads a file as multipart/form-data.

Used for document upload endpoints. Pass the raw binary file data and use opts to supply :document_type, :filename, :content_type, :fields.

Examples

Client.upload("/v1/persons/cper_123/documents", pdf_bytes,
  document_type: "BANK_STATEMENT",
  filename: "statement.pdf",
  content_type: "application/pdf"
)