commit c74638b12924edeba9ea910242e8be85e6aa1292 parent b298fb872eb2c7e71662c8b0eff5c2f3433d61db Author: Christian Grothoff <christian@grothoff.org> Date: Wed, 4 Mar 2026 11:18:09 +0100 saner naming Diffstat:
13 files changed, 349 insertions(+), 339 deletions(-)
diff --git a/core/api-merchant.rst b/core/api-merchant.rst @@ -403,19 +403,17 @@ Inspecting instances .. _instances: .. include:: merchant/get-management-instances.rst - .. include:: merchant/get-management-instances-INSTANCE.rst Getting statistics ^^^^^^^^^^^^^^^^^^ -.. include:: merchant/get-management-instances-INSTANCE-statistics-amount-SLUG.rst - -.. include:: merchant/get-management-instances-INSTANCE-statistics-counter-SLUG.rst +.. include:: merchant/get-private-statistics-amount-SLUG.rst +.. include:: merchant/get-private-statistics-counter-SLUG.rst -.. include:: merchant/get-management-instances-INSTANCE-statistics-report-NAME.rst +.. include:: merchant/get-private-statistics-report-NAME.rst Deleting instances diff --git a/core/exchange/get-config.rst b/core/exchange/get-config.rst @@ -34,12 +34,6 @@ // @since protocol **v21**. shopping_url?: string; - // Open banking gateway base URL where wallets can - // initiate wire transfers to withdraw - // digital cash from this exchange. - // @since protocol **v30**. - open_banking_gateway?: string; - // How wallets should render this currency. currency_specification: CurrencySpecification; diff --git a/core/exchange/get-keys.rst b/core/exchange/get-keys.rst @@ -35,18 +35,6 @@ // @since protocol **v21**. shopping_url?: string; - // Open banking gateway base URL where wallets can - // initiate wire transfers to withdraw - // digital cash from this exchange. - // @since protocol **v30**. - open_banking_gateway?: string; - - // Wire transfer gateway base URL where wallets and merchants can - // request (short) wire transfer subjects to wire funds to this - // exchange without having to encode the full public key. - // @since protocol **v33**. - wire_transfer_gateway?: string; - // Instructs wallets to use certain bank-specific // language (for buttons) and/or other UI/UX customization // for compliance with the rules of that bank. @@ -204,6 +192,18 @@ // conversion is applicable. conversion_url?: string; + // Open banking gateway base URL where wallets can + // initiate wire transfers to withdraw + // digital cash from this exchange. + // @since protocol **v33**. + open_banking_gateway?: string; + + // Wire transfer gateway base URL where wallets and merchants can + // request (short) wire transfer subjects to wire funds to this + // exchange without having to encode the full public key. + // @since protocol **v33**. + wire_transfer_gateway?: string; + // Restrictions that apply to bank accounts that would send // funds to the exchange (crediting this exchange bank account). // Optional, empty array for unrestricted. diff --git a/core/exchange/post-management-wire.rst b/core/exchange/post-management-wire.rst @@ -4,7 +4,7 @@ **Request:** - The request must be a `WireSetupMessage`. + The request must be a `WireSetupRequest`. **Response:** @@ -17,9 +17,9 @@ **Details:** - .. ts:def:: WireSetupMessage + .. ts:def:: WireSetupRequest - interface WireSetupMessage { + interface WireSetupRequest { // Full ``payto://`` URL identifying the account and wire method payto_uri: string; @@ -42,6 +42,24 @@ // become active immediately! Used ONLY to detect replay attacks. validity_start: Timestamp; + // Base URL of a conversion service. + // Only given if available. + conversion_url?: string; + + // Base URL of a open banking gateway service. + // Only given if available. + open_banking_gateway?: string; + + // Base URL of a wire transfer gateway service. + // Only given if available. + wire_transfer_gateway?: string; + + // Restrictions imposed on crediting the account. + credit_restrictions: AccountRestriction[]; + + // Restrictions imposed on debiting the account. + debit_restrictions: AccountRestriction[]; + // Display label wallets should use to show this // bank account. // @since protocol **v19**. diff --git a/core/merchant/get-management-instances-INSTANCE-kyc.rst b/core/merchant/get-management-instances-INSTANCE-kyc.rst @@ -1,191 +0,0 @@ -.. http:GET:: /management/instances/$INSTANCE/kyc -.. http:GET:: /instances/$INSTANCE/private/kyc - - Check KYC status of a particular payment target. - Prompts the exchange to inquire with the bank - as to the KYC status of the respective account - and returns the result. - - **Required permission:** ``instances-kyc-read`` - - **Request:** - - :query h_wire=H_WIRE: *Optional*. If specified, the KYC check should - return the KYC status only for this wire account. Otherwise, for all wire accounts. - :query exchange_url=URL: *Optional*. If specified, the KYC check should - return the KYC status only for the given exchange. Otherwise, for all exchanges we interacted with. - :query lpt=TARGET: *Optional*. - Specifies what status change we are long-polling for. - Use 1 to wait for the KYC auth transfer (access token available), - 2 to wait for an AML investigation to be done, - and 3 to wait for the KYC status to be OK. - If multiple accounts or exchanges match the query, - any account reaching the TARGET state will cause - the response to be returned. - @since protocol **v17**. @deprecated with **v25**, use ``lp_*``-query parameters instead. - :query lp_status=STATUS: *Optional*. - Specifies what status change we are long-polling for. - If specified, the endpoint will only return once the status *matches* the given value. - If multiple accounts or exchanges match the query, - any account reaching the STATUS will cause the response to be returned. - @since protocol **v25**. - :query lp_not_status=STATUS: *Optional*. - Specifies what status change we are long-polling for. - If specified, the endpoint will only return once the status no longer matches the given value. - If multiple accounts or exchanges *no longer matches* the given STATUS - will cause the response to be returned. - @since protocol **v25**. - :query lp_not_etag=ETAG: *Optional*. - Specifies what status change we are long-polling for. - If specified, the endpoint will only return once the returned "Etag" - would differ from the ETAG specified by the client. The "Etag" - is computed over the entire response body, and thus assured to change - whenever any data point in the response changes. This is ideal for - clients that want to learn about any change in the response. Clients - using this query parameter should probably also set a "If-none-match" - HTTP header so that if the ``timeout_ms`` expires, they can get back - a "304 Not modified" with an empty body if nothing changed. - @since protocol **v25**. - :query timeout_ms=NUMBER: *Optional.* If specified, the merchant will - wait up to ``timeout_ms`` milliseconds for the exchanges to confirm completion of the KYC process(es). - - **Response:** - - If different exchanges cause different errors when processing - the request, the largest HTTP status code that is applicable - is returned. - - :http:statuscode:`200 Ok`: - The user may be redirected to the provided locations to perform - KYC checks. - The response will be a `MerchantAccountKycRedirectsResponse` object. - Uses this status code and format only since protocol **v17**. - :http:statuscode:`204 No content`: - No possibilities for KYC operations exist. - @since protocol **v25** only returned if this instance has no bank - accounts or no exchanges are configured for the merchant backend. - :http:statuscode:`304 Not modified`: - The ``ETag`` in the response did not change compared to the one - given in the ``If-none-match`` HTTP header specified by the client. - @since protocol **v25**. - - **Details:** - - .. ts:def:: MerchantAccountKycRedirectsResponse - - interface MerchantAccountKycRedirectsResponse { - - // Array of KYC status information for - // the exchanges and bank accounts selected - // by the query. - kyc_data: MerchantAccountKycRedirect[]; - - } - - .. ts:def:: MerchantAccountKycRedirect - - interface MerchantAccountKycRedirect { - - // Summary of the status of the KYC process. Possible values are: - // - // o "unsupported-account": this exchange does not support the given account (this is unlikely to change automatically, but could be perfectly normal if the account is supported by at least one other exchange). @since protocol **v25**. - // o "no-exchange-keys": we do not (yet) have the /keys of the exchange - // - "kyc-wire-impossible": KYC auth transfer needed but not possible - // (see also: auth_conflict). - // @ "kyc-wire-required": KYC auth transfer still needed and possible - // @ "kyc-required": merchant must supply KYC data to proceed (incl. - // in case of exposed zero-limits on deposit/aggregation) - // + "awaiting-aml-review": account under review by payment provider - // + "ready": everything is fine, account can be fully used - // - "logic-bug": merchant backend logic bug - // o "merchant-internal-error": merchant had an internal error - // o "exchange-internal-error": exchange had an internal error - // o "exchange-gateway-timeout": network timeout at gateway - // o "exchange-unreachable": exchange did not respond at all to our KYC status inquiry - // this can be briefly the case even if an exchange is online, as any HTTP request - // takes time to be processed; as a result, the KYC status for this account is unknown - // - "exchange-status-invalid": exchange violated protocol in reply - // - // "+" are perfectly normal states, "@" are states where the user - // must performn an action (show link!); "o" are reasonable transient - // states that could happen and are we are expected to likely recover - // from automatically but that we should inform the user about - // (show in yellow?), "-" are hard error states from which - // there is likely no good automatic recovery from (show in red?). - status: string; - - // Full payto URI of the bank wire account this is about. - payto_uri: string; - - // Currency used by the exchange. - // @since protocol **v25**. - exchange_currency: string; - - // Hash of the salted payto://-URI of our bank wire - // account this is about. - // @since protocol **v17**. - h_wire: string; - - // Base URL of the exchange this is about. - exchange_url: string; - - // HTTP status code returned by the exchange when we asked for - // information about the KYC status. - // @since protocol **v17**. - exchange_http_status: Integer; - - // True if we did not get a ``/keys`` response from - // the exchange and thus cannot do certain checks, such as - // determining default account limits or account eligibility. - no_keys: boolean; - - // True if the given account cannot do KYC at the - // given exchange because no wire method exists that could - // be used to do the KYC auth wire transfer. - auth_conflict: boolean; - - // Numeric `error code <error-codes>` indicating errors the exchange - // returned, or TALER_EC_INVALID for none. - // Optional (as there may not always have - // been an error code). - // @since protocol **v17**. - exchange_code?: Integer; - - // Access token needed to open the KYC SPA and/or - // access the ``/kyc-info/`` endpoint. - // Optional as without the KYC auth wire transfer we - // may simply not have an access token yet. - access_token?: AccountAccessToken; - - // Array with limitations that currently apply to this - // account and that may be increased or lifted if the - // KYC check is passed. - // Note that additional limits *may* exist and not be - // communicated to the client. If such limits are - // reached, this *may* be indicated by the account - // going into ``aml_review`` state. However, it is - // also possible that the exchange may legally have - // to deny operations without being allowed to provide - // any justification. - // The limits should be used by the client to - // possibly structure their operations (e.g. withdraw - // what is possible below the limit, ask the user to - // pass KYC checks or withdraw the rest after the time - // limit is passed, warn the user to not withdraw too - // much or even prevent the user from generating a - // request that would cause it to exceed hard limits). - limits?: AccountLimit[]; - - // Array of full payto://-URIs with - // wire transfer instructions (including - // optional amount and subject) for a KYC auth wire - // transfer. Set only if this is (still) required - // to get the given exchange working. - // Array because the exchange may have multiple - // bank accounts, in which case any of these - // accounts will do. - // Optional. - // @since protocol **v17**. - payto_kycauths?: string[]; - - } diff --git a/core/merchant/get-management-instances-INSTANCE-statistics-report-NAME.rst b/core/merchant/get-management-instances-INSTANCE-statistics-report-NAME.rst @@ -1,109 +0,0 @@ -.. http:get:: /management/instances/$INSTANCE/statistics-report/$NAME -.. http:get:: [/instances/$INSTANCE]/private/statistics-report/$NAME - - This request will return be used to generate a specific - report based on $NAME. The backend **MAY** support generating - the report in various formats. Supported values for ``$NAME`` include: - - * "transactions" (total revenue, total refunds, fees - as well as number of transactions), since **v25** - * "money-pots" (changes to totals in money pots), since **v25** - * "taxes" (amount of taxes withheld by tax class), since **vTAXES**, - * "sales-funnel" (number and volume of orders - created, claimed, paid, refunded and settled), since **vXXX**, - - The overall endpoint family exists since protocol **v25**. - - **Required permission:** ``statistics-read`` - - **Request:** - - *Accept*: - The client may specify the desired MIME-type for the result. - Supported are the usual "application/json", but also - "application/pdf". - - :query granularity: *Optional*. Determines the bucket granularity - to return. Accepted are "hour", "day", "week", - "month", "quarter" and "year". Defaults to "month". - :query count: *Optional*. Number of buckets to return. Defaults depends - on the granularity. - - **Response:** - - :http:statuscode:`200 Ok`: - If JSON is requested, the body will be - a `MerchantStatisticsReportResponse`, otherwise a PDF. - :http:statuscode:`401 Unauthorized`: - The request is unauthorized. - :http:statuscode:`404 Not found`: - The instance is unknown to the backend. - :http:statuscode:`410 Gone`: - The requested statistical data is unavailable because - it is not kept at the requested granularity for this long. - :http:statuscode:`501 Not implemented`: - The requested functionality is not implemented. - Usually returned if the PDF generator is not available - at this backend and the requested format was application/pdf. - - **Details:** - - .. ts:def:: MerchantStatisticsReportResponse - - interface MerchantStatisticsReportResponse { - - // Name of the business for which the report is generated. - business_name: string; - - // Starting date for the report. - start_date: Timestamp; - - // End date for the report. - end_date: Timestamp; - - // Period of time covered by each bucket (aka granularity). - bucket_period: RelativeTime; - - // Charts to include in the report. - charts: MerchantReportChart[]; - - } - - .. ts:def:: MerchantReportChart - - interface MerchantReportChart { - - // Name of the chart. - chart_name: string; - - // Label to use for the y-axis of the chart. - // (x-axis is always time). - y_label: string; - - // Statistical values for the respective time windows, - // one entry per ``bucket_period`` in between ``start_date`` - // and ``end_date``. - data_groups: BucketDataGroup[]; - - // Human-readable labels for the ``values`` in each of the - // ``data_groups``. Length of the array must match the - // length of the ``values`` arrays. - labels: string[]; - - // Should the ``values`` in each of the ``data_groups`` - // be rendered cumulatively or using a grouped representation? - cumulative: boolean; - - } - - .. ts:def:: BucketDataGroup - - interface BucketDataGroup { - - // Starting data for this group - start_date: Timestamp; - - // Values in the data group. - values: Float[]; - - } diff --git a/core/merchant/get-management-instances-INSTANCE.rst b/core/merchant/get-management-instances-INSTANCE.rst @@ -1,5 +1,5 @@ -.. http:get:: /management/instances/$INSTANCE .. http:get:: [/instances/$INSTANCE]/private +.. http:get:: /management/instances/$INSTANCE This is used to query a specific merchant instance. GET operations against an instance are authenticated by checking that an authorization is provided diff --git a/core/merchant/get-priate-statistics-report-NAME.rst b/core/merchant/get-priate-statistics-report-NAME.rst @@ -0,0 +1,109 @@ +.. http:get:: [/instances/$INSTANCE]/private/statistics-report/$NAME +.. http:get:: /management/instances/$INSTANCE/statistics-report/$NAME + + This request will return be used to generate a specific + report based on $NAME. The backend **MAY** support generating + the report in various formats. Supported values for ``$NAME`` include: + + * "transactions" (total revenue, total refunds, fees + as well as number of transactions), since **v25** + * "money-pots" (changes to totals in money pots), since **v25** + * "taxes" (amount of taxes withheld by tax class), since **vTAXES**, + * "sales-funnel" (number and volume of orders + created, claimed, paid, refunded and settled), since **vXXX**, + + The overall endpoint family exists since protocol **v25**. + + **Required permission:** ``statistics-read`` + + **Request:** + + *Accept*: + The client may specify the desired MIME-type for the result. + Supported are the usual "application/json", but also + "application/pdf". + + :query granularity: *Optional*. Determines the bucket granularity + to return. Accepted are "hour", "day", "week", + "month", "quarter" and "year". Defaults to "month". + :query count: *Optional*. Number of buckets to return. Defaults depends + on the granularity. + + **Response:** + + :http:statuscode:`200 Ok`: + If JSON is requested, the body will be + a `MerchantStatisticsReportResponse`, otherwise a PDF. + :http:statuscode:`401 Unauthorized`: + The request is unauthorized. + :http:statuscode:`404 Not found`: + The instance is unknown to the backend. + :http:statuscode:`410 Gone`: + The requested statistical data is unavailable because + it is not kept at the requested granularity for this long. + :http:statuscode:`501 Not implemented`: + The requested functionality is not implemented. + Usually returned if the PDF generator is not available + at this backend and the requested format was application/pdf. + + **Details:** + + .. ts:def:: MerchantStatisticsReportResponse + + interface MerchantStatisticsReportResponse { + + // Name of the business for which the report is generated. + business_name: string; + + // Starting date for the report. + start_date: Timestamp; + + // End date for the report. + end_date: Timestamp; + + // Period of time covered by each bucket (aka granularity). + bucket_period: RelativeTime; + + // Charts to include in the report. + charts: MerchantReportChart[]; + + } + + .. ts:def:: MerchantReportChart + + interface MerchantReportChart { + + // Name of the chart. + chart_name: string; + + // Label to use for the y-axis of the chart. + // (x-axis is always time). + y_label: string; + + // Statistical values for the respective time windows, + // one entry per ``bucket_period`` in between ``start_date`` + // and ``end_date``. + data_groups: BucketDataGroup[]; + + // Human-readable labels for the ``values`` in each of the + // ``data_groups``. Length of the array must match the + // length of the ``values`` arrays. + labels: string[]; + + // Should the ``values`` in each of the ``data_groups`` + // be rendered cumulatively or using a grouped representation? + cumulative: boolean; + + } + + .. ts:def:: BucketDataGroup + + interface BucketDataGroup { + + // Starting data for this group + start_date: Timestamp; + + // Values in the data group. + values: Float[]; + + } diff --git a/core/merchant/get-private-kyc.rst b/core/merchant/get-private-kyc.rst @@ -0,0 +1,191 @@ +.. http:GET:: [/instances/$INSTANCE]/private/kyc +.. http:GET:: /management/instances/$INSTANCE/kyc + + Check KYC status of a particular payment target. + Prompts the exchange to inquire with the bank + as to the KYC status of the respective account + and returns the result. + + **Required permission:** ``instances-kyc-read`` + + **Request:** + + :query h_wire=H_WIRE: *Optional*. If specified, the KYC check should + return the KYC status only for this wire account. Otherwise, for all wire accounts. + :query exchange_url=URL: *Optional*. If specified, the KYC check should + return the KYC status only for the given exchange. Otherwise, for all exchanges we interacted with. + :query lpt=TARGET: *Optional*. + Specifies what status change we are long-polling for. + Use 1 to wait for the KYC auth transfer (access token available), + 2 to wait for an AML investigation to be done, + and 3 to wait for the KYC status to be OK. + If multiple accounts or exchanges match the query, + any account reaching the TARGET state will cause + the response to be returned. + @since protocol **v17**. @deprecated with **v25**, use ``lp_*``-query parameters instead. + :query lp_status=STATUS: *Optional*. + Specifies what status change we are long-polling for. + If specified, the endpoint will only return once the status *matches* the given value. + If multiple accounts or exchanges match the query, + any account reaching the STATUS will cause the response to be returned. + @since protocol **v25**. + :query lp_not_status=STATUS: *Optional*. + Specifies what status change we are long-polling for. + If specified, the endpoint will only return once the status no longer matches the given value. + If multiple accounts or exchanges *no longer matches* the given STATUS + will cause the response to be returned. + @since protocol **v25**. + :query lp_not_etag=ETAG: *Optional*. + Specifies what status change we are long-polling for. + If specified, the endpoint will only return once the returned "Etag" + would differ from the ETAG specified by the client. The "Etag" + is computed over the entire response body, and thus assured to change + whenever any data point in the response changes. This is ideal for + clients that want to learn about any change in the response. Clients + using this query parameter should probably also set a "If-none-match" + HTTP header so that if the ``timeout_ms`` expires, they can get back + a "304 Not modified" with an empty body if nothing changed. + @since protocol **v25**. + :query timeout_ms=NUMBER: *Optional.* If specified, the merchant will + wait up to ``timeout_ms`` milliseconds for the exchanges to confirm completion of the KYC process(es). + + **Response:** + + If different exchanges cause different errors when processing + the request, the largest HTTP status code that is applicable + is returned. + + :http:statuscode:`200 Ok`: + The user may be redirected to the provided locations to perform + KYC checks. + The response will be a `MerchantAccountKycRedirectsResponse` object. + Uses this status code and format only since protocol **v17**. + :http:statuscode:`204 No content`: + No possibilities for KYC operations exist. + @since protocol **v25** only returned if this instance has no bank + accounts or no exchanges are configured for the merchant backend. + :http:statuscode:`304 Not modified`: + The ``ETag`` in the response did not change compared to the one + given in the ``If-none-match`` HTTP header specified by the client. + @since protocol **v25**. + + **Details:** + + .. ts:def:: MerchantAccountKycRedirectsResponse + + interface MerchantAccountKycRedirectsResponse { + + // Array of KYC status information for + // the exchanges and bank accounts selected + // by the query. + kyc_data: MerchantAccountKycRedirect[]; + + } + + .. ts:def:: MerchantAccountKycRedirect + + interface MerchantAccountKycRedirect { + + // Summary of the status of the KYC process. Possible values are: + // + // o "unsupported-account": this exchange does not support the given account (this is unlikely to change automatically, but could be perfectly normal if the account is supported by at least one other exchange). @since protocol **v25**. + // o "no-exchange-keys": we do not (yet) have the /keys of the exchange + // - "kyc-wire-impossible": KYC auth transfer needed but not possible + // (see also: auth_conflict). + // @ "kyc-wire-required": KYC auth transfer still needed and possible + // @ "kyc-required": merchant must supply KYC data to proceed (incl. + // in case of exposed zero-limits on deposit/aggregation) + // + "awaiting-aml-review": account under review by payment provider + // + "ready": everything is fine, account can be fully used + // - "logic-bug": merchant backend logic bug + // o "merchant-internal-error": merchant had an internal error + // o "exchange-internal-error": exchange had an internal error + // o "exchange-gateway-timeout": network timeout at gateway + // o "exchange-unreachable": exchange did not respond at all to our KYC status inquiry + // this can be briefly the case even if an exchange is online, as any HTTP request + // takes time to be processed; as a result, the KYC status for this account is unknown + // - "exchange-status-invalid": exchange violated protocol in reply + // + // "+" are perfectly normal states, "@" are states where the user + // must performn an action (show link!); "o" are reasonable transient + // states that could happen and are we are expected to likely recover + // from automatically but that we should inform the user about + // (show in yellow?), "-" are hard error states from which + // there is likely no good automatic recovery from (show in red?). + status: string; + + // Full payto URI of the bank wire account this is about. + payto_uri: string; + + // Currency used by the exchange. + // @since protocol **v25**. + exchange_currency: string; + + // Hash of the salted payto://-URI of our bank wire + // account this is about. + // @since protocol **v17**. + h_wire: string; + + // Base URL of the exchange this is about. + exchange_url: string; + + // HTTP status code returned by the exchange when we asked for + // information about the KYC status. + // @since protocol **v17**. + exchange_http_status: Integer; + + // True if we did not get a ``/keys`` response from + // the exchange and thus cannot do certain checks, such as + // determining default account limits or account eligibility. + no_keys: boolean; + + // True if the given account cannot do KYC at the + // given exchange because no wire method exists that could + // be used to do the KYC auth wire transfer. + auth_conflict: boolean; + + // Numeric `error code <error-codes>` indicating errors the exchange + // returned, or TALER_EC_INVALID for none. + // Optional (as there may not always have + // been an error code). + // @since protocol **v17**. + exchange_code?: Integer; + + // Access token needed to open the KYC SPA and/or + // access the ``/kyc-info/`` endpoint. + // Optional as without the KYC auth wire transfer we + // may simply not have an access token yet. + access_token?: AccountAccessToken; + + // Array with limitations that currently apply to this + // account and that may be increased or lifted if the + // KYC check is passed. + // Note that additional limits *may* exist and not be + // communicated to the client. If such limits are + // reached, this *may* be indicated by the account + // going into ``aml_review`` state. However, it is + // also possible that the exchange may legally have + // to deny operations without being allowed to provide + // any justification. + // The limits should be used by the client to + // possibly structure their operations (e.g. withdraw + // what is possible below the limit, ask the user to + // pass KYC checks or withdraw the rest after the time + // limit is passed, warn the user to not withdraw too + // much or even prevent the user from generating a + // request that would cause it to exceed hard limits). + limits?: AccountLimit[]; + + // Array of full payto://-URIs with + // wire transfer instructions (including + // optional amount and subject) for a KYC auth wire + // transfer. Set only if this is (still) required + // to get the given exchange working. + // Array because the exchange may have multiple + // bank accounts, in which case any of these + // accounts will do. + // Optional. + // @since protocol **v17**. + payto_kycauths?: string[]; + + } diff --git a/core/merchant/get-management-instances-INSTANCE-statistics-amount-SLUG.rst b/core/merchant/get-private-statistics-amount-SLUG.rst diff --git a/core/merchant/get-management-instances-INSTANCE-statistics-counter-SLUG.rst b/core/merchant/get-private-statistics-counter-SLUG.rst diff --git a/manpages/taler-exchange-offline.1.rst b/manpages/taler-exchange-offline.1.rst @@ -275,6 +275,18 @@ Afterwards, optional arguments can be given: REST API that allows merchants and wallets to determine the current conversion rate. + * ``open-banking-gateway`` $URL: specifies an + URL where wallets can find an open banking gateway to + initiate wire transfers when withdrawing digital cash + from this exchange. Optional (as obviously not every + exchange will have an open banking gateway attached). + + * ``wire-transfer-gateway`` $URL: specifies a + wire transfer gateway base URL where wallets and merchants can + request (short) wire transfer subjects to wire funds to this + exchange without having to encode the full public key. + See also design document 80. + * ``display-hint`` $PRIORITY $LABEL: specifies that this bank account should be shown to the user with the given numeric $PRIORITY (higher is earlier, zero is hidden for manual withdrawal) and with the given $LABEL. This is useful to ensure that if an exchange diff --git a/manpages/taler-exchange.conf.5.rst b/manpages/taler-exchange.conf.5.rst @@ -132,18 +132,6 @@ SHOPPING_URL Web URL where users can discover shops that accept digital cash offered by this exchange. Optional, but highly recommended. -OPEN_BANKING_GATEWAY_URL - URL where wallets can find an open banking gateway to - initiate wire transfers when withdrawing digital cash - from this exchange. Optional (as obviously not every - exchange will have an open banking gateway attached). - -WIRE_TRANSFER_GATEWAY_URL - Wire transfer gateway base URL where wallets and merchants can - request (short) wire transfer subjects to wire funds to this - exchange without having to encode the full public key. - See also design document 80. - AML_SPA_DIALECT Determines the variant of the AML SPA that should be shown. This will determine the set of forms shown to AML staff, statistics to