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
@spec delete( String.t(), keyword() ) :: {:ok, term()} | {:error, Solaris.Error.t()}
Performs an authenticated DELETE request.
@spec get( String.t(), keyword() ) :: {:ok, term()} | {:error, Solaris.Error.t()}
Performs an authenticated GET request.
@spec patch(String.t(), body(), keyword()) :: {:ok, term()} | {:error, Solaris.Error.t()}
Performs an authenticated PATCH request.
@spec post(String.t(), body(), keyword()) :: {:ok, term()} | {:error, Solaris.Error.t()}
Performs an authenticated POST request.
@spec put(String.t(), body(), keyword()) :: {:ok, term()} | {:error, Solaris.Error.t()}
Performs an authenticated PUT request.
@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"
)