taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit 62843c15344c2fbbd84d5589ec50fab0734ca09d
parent 807bb00e42ede21d559746f6f43f11378638efbf
Author: Florian Dold <florian@dold.me>
Date:   Tue, 16 Dec 2025 14:28:45 +0100

update wallet-core docs

Diffstat:
Mwallet/wallet-core.md | 281+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 267 insertions(+), 14 deletions(-)

diff --git a/wallet/wallet-core.md b/wallet/wallet-core.md @@ -123,10 +123,12 @@ This file is auto-generated from the [taler-typescript-core](https://git.taler.n * [InitiatePeerPullCreditOp](#initiatepeerpullcreditop) * [PreparePeerPullDebitOp](#preparepeerpulldebitop) * [ConfirmPeerPullDebitOp](#confirmpeerpulldebitop) -### Data Validation +### Data Validation and Conversion * [ValidateIbanOp](#validateibanop) * [CanonicalizeBaseUrlOp](#canonicalizebaseurlop) * [GetQrCodesForPaytoOp](#getqrcodesforpaytoop) +* [ConvertIbanAccountFieldToPaytoOp](#convertibanaccountfieldtopaytoop) +* [ConvertIbanPaytoToAccountFieldOp](#convertibanpaytotoaccountfieldop) * [GetBankingChoicesForPaytoOp](#getbankingchoicesforpaytoop) ### Database Management * [ExportDbOp](#exportdbop) @@ -545,20 +547,20 @@ export interface WalletBalance { available: AmountString; pendingIncoming: AmountString; pendingOutgoing: AmountString; + flags: BalanceFlag[]; /** - * Does the balance for this currency have a pending - * transaction? - * - * @deprecated use flags and pendingIncoming/pendingOutgoing instead + * Available URLs for pages that list + * where money in this scope can be spent. */ - hasPendingTransactions: boolean; + shoppingUrls?: string[]; /** - * Is there a transaction that requires user input? - * - * @deprecated use flags instead + * Are p2p payments disabled for this scope? */ - requiresUserInput: boolean; - flags: BalanceFlag[]; + disablePeerPayments?: boolean; + /** + * Are wallet deposits enabled for this scope? + */ + disableDirectDeposits?: boolean; } ``` @@ -630,9 +632,23 @@ export interface PaymentBalanceDetails { balanceAgeAcceptable: AmountJson; /** * Balance of type "receiver-acceptable" (see balance.ts for definition). + * + * @deprecated (2025-12-05) use balanceReceiver[...]Acceptable instead. */ balanceReceiverAcceptable: AmountJson; /** + * Balance of type "receiver-exchange-url-acceptable" (see balance.ts for definition). + */ + balanceReceiverExchangeUrlAcceptable: AmountJson; + /** + * Balance of type "receiver-exchange-pub-acceptable" (see balance.ts for definition). + */ + balanceReceiverExchangePubAcceptable: AmountJson; + /** + * Balance of type "receiver-auditor-url-acceptable" (see balance.ts for definition). + */ + balanceReceiverAuditorUrlAcceptable: AmountJson; + /** * Balance of type "receiver-depositable" (see balance.ts for definition). */ balanceReceiverDepositable: AmountJson; @@ -894,8 +910,20 @@ export interface GetTransactionsV2Request { * Filter transactions by their state / state category. * * If not specified, all transactions are returned. + * + * final: Transactions in any final state + * nonfinal: Transactions in any state but the final states + * nonfinal-dialog: nonfinal transactions that require confirmation / some + * choice by the user + * nonfinal-approved: nonfinal transactions that need no further user approval + * done: Transactions in the "done" major state */ - filterByState?: "final" | "nonfinal" | "done"; + filterByState?: + | "final" + | "nonfinal" + | "done" + | "nonfinal-approved" + | "nonfinal-dialog"; } ``` @@ -3360,6 +3388,10 @@ export interface PreparePeerPushCreditResponse { amountRaw: AmountString; amountEffective: AmountString; transactionId: TransactionIdStr; + /** + * State of the existing or newly created transaction. + */ + txState: TransactionState; exchangeBaseUrl: string; scopeInfo: ScopeInfo; /** @@ -3505,6 +3537,10 @@ export interface PreparePeerPullDebitResponse { amountRaw: AmountString; amountEffective: AmountString; transactionId: TransactionIdStr; + /** + * State of the existing or newly created transaction. + */ + txState: TransactionState; exchangeBaseUrl: string; scopeInfo: ScopeInfo; /** @@ -3629,6 +3665,60 @@ export interface QrCodeSpec { ``` +### ConvertIbanAccountFieldToPaytoOp +```typescript +export type ConvertIbanAccountFieldToPaytoOp = { + op: WalletApiOperation.ConvertIbanAccountFieldToPayto; + request: ConvertIbanAccountFieldToPaytoRequest; + response: ConvertIbanAccountFieldToPaytoResponse; +}; +// ConvertIbanAccountFieldToPayto = "convertIbanAccountFieldToPayto" + +``` +```typescript +export interface ConvertIbanAccountFieldToPaytoRequest { + value: string; + currency: string; +} + +``` +```typescript +export type ConvertIbanAccountFieldToPaytoResponse = + | { + ok: true; + type: "iban" | "bban"; + paytoUri: string; + } + | { + ok: false; + }; + +``` + +### ConvertIbanPaytoToAccountFieldOp +```typescript +export type ConvertIbanPaytoToAccountFieldOp = { + op: WalletApiOperation.ConvertIbanPaytoToAccountField; + request: ConvertIbanPaytoToAccountFieldRequest; + response: ConvertIbanPaytoToAccountFieldResponse; +}; +// ConvertIbanPaytoToAccountField = "convertIbanPaytoToAccountField" + +``` +```typescript +export interface ConvertIbanPaytoToAccountFieldRequest { + paytoUri: string; +} + +``` +```typescript +export interface ConvertIbanPaytoToAccountFieldResponse { + type: "iban" | "bban"; + value: string; +} + +``` + ### GetBankingChoicesForPaytoOp ```typescript export type GetBankingChoicesForPaytoOp = { @@ -4514,6 +4604,10 @@ export interface ContactEntry { * may be a URI */ source: string; + /** + * The local petname of the contact + */ + petname: string; } ``` ```typescript @@ -4522,6 +4616,7 @@ export interface MailboxConfiguration { privateKey: EddsaPrivateKeyString; privateEncryptionKey: string; expiration: Timestamp; + payUri?: TalerUri; } ``` ```typescript @@ -4535,6 +4630,129 @@ export interface TalerProtocolTimestamp { ``` ```typescript /** + * A parsed taler URI. + */ +export type TalerUri = + | PayUriResult + | PayTemplateUriResult + | DevExperimentUri + | PayPullUriResult + | PayPushUriResult + | BackupRestoreUri + | RefundUriResult + | WithdrawUriResult + | WithdrawExchangeUri + | AddExchangeUri + | WithdrawalTransferResultUri + | AddContactUri; +``` +```typescript +/** + * + */ +export interface PayUriResult { + type: TalerUriAction.Pay; + merchantBaseUrl: HostPortPath; + orderId: string; + sessionId: string; + claimToken?: string; + /** + * Nonce priv, only present in the + * "continue on mobile" payment flow. + */ + noncePriv?: string; +} +``` +```typescript +export type HostPortPath = string & { + [__hostport_str]: true; +}; +``` +```typescript +export interface PayTemplateUriResult { + type: TalerUriAction.PayTemplate; + merchantBaseUrl: HostPortPath; + templateId: string; +} +``` +```typescript +export interface DevExperimentUri { + type: TalerUriAction.DevExperiment; + devExperimentId: string; + query?: URLSearchParams; +} +``` +```typescript +interface URLSearchParams extends _URLSearchParams {} +``` +```typescript +export interface PayPullUriResult { + type: TalerUriAction.PayPull; + exchangeBaseUrl: HostPortPath; + contractPriv: string; +} +``` +```typescript +export interface PayPushUriResult { + type: TalerUriAction.PayPush; + exchangeBaseUrl: HostPortPath; + contractPriv: string; +} +``` +```typescript +export interface BackupRestoreUri { + type: TalerUriAction.Restore; + walletRootPriv: string; + providers: Array<HostPortPath>; +} +``` +```typescript +export interface RefundUriResult { + type: TalerUriAction.Refund; + merchantBaseUrl: HostPortPath; + orderId: string; +} +``` +```typescript +export interface WithdrawUriResult { + type: TalerUriAction.Withdraw; + bankIntegrationApiBaseUrl: HostPortPath; + withdrawalOperationId: string; + externalConfirmation?: boolean; +} +``` +```typescript +export interface WithdrawExchangeUri { + type: TalerUriAction.WithdrawExchange; + exchangeBaseUrl: HostPortPath; + amount?: AmountString; +} +``` +```typescript +export interface AddExchangeUri { + type: TalerUriAction.AddExchange; + exchangeBaseUrl: HostPortPath; +} +``` +```typescript +export interface WithdrawalTransferResultUri { + type: TalerUriAction.WithdrawalTransferResult; + ref: string; + status?: "success" | "aborted"; +} +``` +```typescript +export interface AddContactUri { + type: TalerUriAction.AddContact; + alias: string; + aliasType: string; + mailboxBaseUri: string; + mailboxIdentity: HashCodeString; + sourceBaseUrl: string; +} +``` +```typescript +/** * Record metadata for mailbox messages */ export interface MailboxMessageRecord { @@ -5599,6 +5817,7 @@ export interface ExchangeListItem { * (e.g. because no global fees are configured). */ peerPaymentsDisabled: boolean; + directDepositsDisabled: boolean; /** Set to true if this exchange doesn't charge any fees. */ noFees: boolean; /** Most general scope that the exchange is a part of. */ @@ -5615,7 +5834,6 @@ export interface ExchangeListItem { * to update the exchange info. */ lastUpdateErrorInfo?: OperationErrorInfo; - unavailableReason?: TalerErrorDetail; } ``` ```typescript @@ -5738,10 +5956,24 @@ export interface PaymentInsufficientBalanceDetails { */ balanceAgeAcceptable: AmountString; /** - * Balance of type "merchant-acceptable" (see balance.ts for definition). + * Balance of type "receiver-acceptable" (see balance.ts for definition). + * + * @deprecated (2025-12-05) use balanceReceiver[...]Acceptable instead. */ balanceReceiverAcceptable: AmountString; /** + * Balance of type "receiver-exchange-url-acceptable" (see balance.ts for definition). + */ + balanceReceiverExchangeUrlAcceptable: AmountString; + /** + * Balance of type "receiver-exchange-pub-acceptable" (see balance.ts for definition). + */ + balanceReceiverExchangePubAcceptable: AmountString; + /** + * Balance of type "receiver-auditor-url-acceptable" (see balance.ts for definition). + */ + balanceReceiverAuditorUrlAcceptable: AmountString; + /** * Balance of type "merchant-depositable" (see balance.ts for definition). */ balanceReceiverDepositable: AmountString; @@ -5757,10 +5989,21 @@ export interface PaymentInsufficientBalanceDetails { balanceMaterial: AmountString; balanceExchangeDepositable: AmountString; balanceAgeAcceptable: AmountString; + /** + * @deprecated (2025-12-05) use balanceReceiver[...]Acceptable instead. + */ balanceReceiverAcceptable: AmountString; + balanceReceiverExchangeUrlAcceptable: AmountString; + balanceReceiverExchangePubAcceptable: AmountString; + balanceReceiverAuditorUrlAcceptable: AmountString; balanceReceiverDepositable: AmountString; maxEffectiveSpendAmount: AmountString; /** + * The exchange master public key configured by the merchant + * backend differs from the one of the coins stored in the wallet. + */ + exchangeMasterPubMismatch: boolean; + /** * Exchange doesn't have global fees configured for the relevant year, * p2p payments aren't possible. * @@ -5962,6 +6205,16 @@ export interface AcceptExchangeTosRequest { export interface WireTypeDetails { paymentTargetType: string; /** + * Only applicable for payment target type IBAN. + * + * Specifies whether the user wants to preferably + * enter their bank account details as an IBAN + * or as a BBAN. + * + * Mandatory for paymentTargetType="iban". + */ + preferredEntryType?: "iban" | "bban"; + /** * Allowed hostnames for the deposit payto URI. * Only applicable to x-taler-bank. */