TruelayerClient.Data (truelayer_client v1.0.0)

Copy Markdown View Source

TrueLayer Data API v1.

Requires a user-delegated Data-scoped token obtained via TruelayerClient.Auth.exchange_code/3 with Data scopes.

Data tokens and Payments tokens are strictly isolated — a Data token cannot authorise a Payments API call and vice versa.

Lazy streaming

transaction_stream/3 returns a lazy Stream.t() backed by Stream.resource/3. This allows functional composition without loading all transactions into memory:

client
|> TruelayerClient.Data.transaction_stream(account_id,
     from: ~U[2024-01-01 00:00:00Z], to: ~U[2024-03-31 23:59:59Z])
|> Stream.filter(&(&1["transaction_type"] == "CREDIT"))
|> Stream.map(& &1["amount"])
|> Enum.sum()

Summary

Functions

Extend an existing connection's consent period.

Generate a direct bank authentication link.

Generate a re-authentication link for an existing connection.

Get a single account (GET /data/v1/accounts/{id}).

Get the balance for an account (GET /data/v1/accounts/{id}/balance).

Get a single card (GET /data/v1/cards/{id}).

Get the balance for a card (GET /data/v1/cards/{id}/balance).

Get settled transactions for a card.

Get connection metadata for the current token (GET /data/v1/me).

Get direct debits for an account.

Get pending transactions for an account.

Get standing orders for an account.

Get settled transactions for an account (GET /data/v1/accounts/{id}/transactions).

Get identity info for the authenticated user (GET /data/v1/info).

List all bank accounts (GET /data/v1/accounts).

List all cards (GET /data/v1/cards).

List available data providers (GET /data/v1/providers).

Return a lazy Stream.t() of settled transactions for an account.

Functions

extend_connection(client, params \\ %{})

@spec extend_connection(TruelayerClient.t(), map()) ::
  :ok | {:error, TruelayerClient.Error.t()}

Extend an existing connection's consent period.

generate_direct_auth_link(client, params \\ %{})

@spec generate_direct_auth_link(TruelayerClient.t(), map()) ::
  {:ok, map()} | {:error, TruelayerClient.Error.t()}

Generate a direct bank authentication link.

generate_reauth_link(client, params \\ %{})

@spec generate_reauth_link(TruelayerClient.t(), map()) ::
  {:ok, map()} | {:error, TruelayerClient.Error.t()}

Generate a re-authentication link for an existing connection.

get_account(client, account_id)

@spec get_account(TruelayerClient.t(), String.t()) ::
  {:ok, map()} | {:error, TruelayerClient.Error.t()}

Get a single account (GET /data/v1/accounts/{id}).

get_account_balance(client, account_id)

@spec get_account_balance(TruelayerClient.t(), String.t()) ::
  {:ok, map()} | {:error, TruelayerClient.Error.t()}

Get the balance for an account (GET /data/v1/accounts/{id}/balance).

get_card(client, account_id)

@spec get_card(TruelayerClient.t(), String.t()) ::
  {:ok, map()} | {:error, TruelayerClient.Error.t()}

Get a single card (GET /data/v1/cards/{id}).

get_card_balance(client, account_id)

@spec get_card_balance(TruelayerClient.t(), String.t()) ::
  {:ok, map()} | {:error, TruelayerClient.Error.t()}

Get the balance for a card (GET /data/v1/cards/{id}/balance).

get_card_pending_transactions(client, account_id, opts \\ [])

@spec get_card_pending_transactions(TruelayerClient.t(), String.t(), keyword()) ::
  {:ok, [map()]} | {:error, TruelayerClient.Error.t()}

Get pending transactions for a card.

get_card_transactions(client, account_id, opts \\ [])

@spec get_card_transactions(TruelayerClient.t(), String.t(), keyword()) ::
  {:ok, [map()]} | {:error, TruelayerClient.Error.t()}

Get settled transactions for a card.

get_connection_meta(client)

@spec get_connection_meta(TruelayerClient.t()) ::
  {:ok, map()} | {:error, TruelayerClient.Error.t()}

Get connection metadata for the current token (GET /data/v1/me).

get_direct_debits(client, account_id)

@spec get_direct_debits(TruelayerClient.t(), String.t()) ::
  {:ok, [map()]} | {:error, TruelayerClient.Error.t()}

Get direct debits for an account.

get_pending_transactions(client, account_id, opts \\ [])

@spec get_pending_transactions(TruelayerClient.t(), String.t(), keyword()) ::
  {:ok, [map()]} | {:error, TruelayerClient.Error.t()}

Get pending transactions for an account.

get_standing_orders(client, account_id)

@spec get_standing_orders(TruelayerClient.t(), String.t()) ::
  {:ok, [map()]} | {:error, TruelayerClient.Error.t()}

Get standing orders for an account.

get_transactions(client, account_id, opts \\ [])

@spec get_transactions(TruelayerClient.t(), String.t(), keyword()) ::
  {:ok, [map()]} | {:error, TruelayerClient.Error.t()}

Get settled transactions for an account (GET /data/v1/accounts/{id}/transactions).

Options

get_user_info(client)

@spec get_user_info(TruelayerClient.t()) ::
  {:ok, map()} | {:error, TruelayerClient.Error.t()}

Get identity info for the authenticated user (GET /data/v1/info).

list_accounts(client)

@spec list_accounts(TruelayerClient.t()) ::
  {:ok, [map()]} | {:error, TruelayerClient.Error.t()}

List all bank accounts (GET /data/v1/accounts).

list_cards(client)

@spec list_cards(TruelayerClient.t()) ::
  {:ok, [map()]} | {:error, TruelayerClient.Error.t()}

List all cards (GET /data/v1/cards).

list_providers(client)

@spec list_providers(TruelayerClient.t()) ::
  {:ok, [map()]} | {:error, TruelayerClient.Error.t()}

List available data providers (GET /data/v1/providers).

transaction_stream(client, account_id, opts \\ [])

@spec transaction_stream(TruelayerClient.t(), String.t(), keyword()) :: Enumerable.t()

Return a lazy Stream.t() of settled transactions for an account.

The stream fetches transactions on first consumption and yields them one at a time. Compose with Stream.filter/2, Stream.map/2, Enum.take/2, etc.

Example

client
|> TruelayerClient.Data.transaction_stream("acc-001", from: ~U[2024-01-01 00:00:00Z])
|> Stream.filter(&(&1["amount"] < 0))
|> Enum.to_list()