gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] 07/07: wip, MerchantRefundResponse is deprecated


From: gnunet
Subject: [taler-wallet-core] 07/07: wip, MerchantRefundResponse is deprecated
Date: Wed, 20 Mar 2024 14:30:19 +0100

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

commit 62d5a5ef7b1ff9f9c63d9a4eba21620aa8a2fad9
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Wed Mar 20 00:19:29 2024 -0300

    wip, MerchantRefundResponse is deprecated
---
 packages/taler-util/src/http-client/merchant.ts | 359 ++++++++++++++++++++++--
 packages/taler-util/src/http-client/types.ts    | 248 +++++++++++++---
 packages/taler-util/src/taler-types.ts          |  28 --
 packages/taler-util/src/taleruri.ts             |  10 +-
 4 files changed, 560 insertions(+), 85 deletions(-)

diff --git a/packages/taler-util/src/http-client/merchant.ts 
b/packages/taler-util/src/http-client/merchant.ts
index e9fda5075..1cc410191 100644
--- a/packages/taler-util/src/http-client/merchant.ts
+++ b/packages/taler-util/src/http-client/merchant.ts
@@ -25,10 +25,14 @@ import {
   codecForAccountsSummaryResponse,
   codecForBankAccountEntry,
   codecForClaimResponse,
+  codecForInstancesResponse,
   codecForInventorySummaryResponse,
   codecForMerchantConfig,
   codecForMerchantOrderPrivateStatusResponse,
+  codecForMerchantRefundResponse,
   codecForOrderHistory,
+  codecForOtpDeviceDetails,
+  codecForOtpDeviceSummaryResponse,
   codecForOutOfStockResponse,
   codecForPaidRefundStatusResponse,
   codecForPaymentResponse,
@@ -38,13 +42,22 @@ import {
   codecForStatusGoto,
   codecForStatusPaid,
   codecForStatusStatusUnpaid,
+  codecForTansferList,
+  codecForTemplateDetails,
+  codecForTemplateSummaryResponse,
+  codecForTokenFamiliesList,
+  codecForTokenFamilyDetails,
   codecForWalletRefundResponse,
+  codecForWalletTemplateDetails,
+  codecForWebhookDetails,
+  codecForWebhookSummaryResponse,
   opEmptySuccess,
   opKnownAlternativeFailure,
   opKnownHttpFailure
 } from "@gnu-taler/taler-util";
 import {
   HttpRequestLibrary,
+  HttpResponse,
   createPlatformHttpLib,
 } from "@gnu-taler/taler-util/http";
 import { opSuccessFromHttp, opUnknownFailure } from "../operation.js";
@@ -714,7 +727,10 @@ export class TalerMerchantInstanceHttpClient {
       method: "POST",
       body,
     });
+    return TalerMerchantInstanceHttpClient.procesOrderCreationResponse(resp)
+  }
 
+  private static async procesOrderCreationResponse(resp: HttpResponse) {
     switch (resp.status) {
       case HttpStatusCode.Ok:
         return opSuccessFromHttp(resp, codecForPostOrderResponse())
@@ -738,9 +754,6 @@ export class TalerMerchantInstanceHttpClient {
     if (params.date) {
       url.searchParams.set("date_s", String(params.date));
     }
-    if (params.delta) {
-      url.searchParams.set("delta", String(params.delta));
-    }
     if (params.fulfillmentUrl) {
       url.searchParams.set("fulfillment_url", params.fulfillmentUrl);
     }
@@ -753,15 +766,13 @@ export class TalerMerchantInstanceHttpClient {
     if (params.sessionId) {
       url.searchParams.set("session_id", params.sessionId);
     }
-    if (params.start) {
-      url.searchParams.set("start", String(params.start));
-    }
     if (params.timeout) {
       url.searchParams.set("timeout", String(params.timeout));
     }
     if (params.wired) {
       url.searchParams.set("wired", "YES");
     }
+    addMerchantPaginationParams(url, params)
 
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
@@ -824,6 +835,20 @@ export class TalerMerchantInstanceHttpClient {
       body,
     });
 
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opEmptySuccess(resp)
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp)
+      case HttpStatusCode.BadRequest:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -835,6 +860,17 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "DELETE",
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp)
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   //
@@ -851,6 +887,21 @@ export class TalerMerchantInstanceHttpClient {
       method: "POST",
       body,
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForMerchantRefundResponse())
+      case HttpStatusCode.Forbidden:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Gone:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   //
@@ -867,6 +918,17 @@ export class TalerMerchantInstanceHttpClient {
       method: "POST",
       body,
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp)
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -883,22 +945,24 @@ export class TalerMerchantInstanceHttpClient {
     if (params.before) {
       url.searchParams.set("before", String(params.before));
     }
-    if (params.limit) {
-      url.searchParams.set("limit", String(params.limit));
-    }
-    if (params.offset) {
-      url.searchParams.set("offset", String(params.offset));
-    }
     if (params.paytoURI) {
       url.searchParams.set("payto_uri", params.paytoURI);
     }
     if (params.verified) {
       url.searchParams.set("verified", "YES");
     }
+    addMerchantPaginationParams(url, params)
 
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForTansferList())
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -910,6 +974,17 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "DELETE",
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp)
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   //
@@ -926,6 +1001,15 @@ export class TalerMerchantInstanceHttpClient {
       method: "POST",
       body,
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp)
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -941,6 +1025,16 @@ export class TalerMerchantInstanceHttpClient {
       method: "PATCH",
       body,
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp)
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -952,6 +1046,14 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForOtpDeviceSummaryResponse())
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -972,6 +1074,15 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForOtpDeviceDetails())
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -983,6 +1094,14 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "DELETE",
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   //
@@ -999,6 +1118,14 @@ export class TalerMerchantInstanceHttpClient {
       method: "POST",
       body,
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1014,6 +1141,16 @@ export class TalerMerchantInstanceHttpClient {
       method: "PATCH",
       body,
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1025,6 +1162,14 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForTemplateSummaryResponse());
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1036,6 +1181,14 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForTemplateDetails());
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1047,6 +1200,14 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "DELETE",
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1058,6 +1219,14 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForWalletTemplateDetails());
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1073,6 +1242,8 @@ export class TalerMerchantInstanceHttpClient {
       method: "POST",
       body,
     });
+
+    return TalerMerchantInstanceHttpClient.procesOrderCreationResponse(resp)
   }
 
   //
@@ -1089,6 +1260,16 @@ export class TalerMerchantInstanceHttpClient {
       method: "POST",
       body,
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp)
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
+
   }
 
   /**
@@ -1104,6 +1285,18 @@ export class TalerMerchantInstanceHttpClient {
       method: "PATCH",
       body,
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp)
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
+
   }
 
   /**
@@ -1115,6 +1308,16 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opSuccessFromHttp(resp, codecForWebhookSummaryResponse())
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
+
   }
 
   /**
@@ -1126,6 +1329,14 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opSuccessFromHttp(resp, codecForWebhookDetails())
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1137,6 +1348,15 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "DELETE",
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
+
   }
 
   //
@@ -1153,6 +1373,15 @@ export class TalerMerchantInstanceHttpClient {
       method: "POST",
       body,
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1160,7 +1389,7 @@ export class TalerMerchantInstanceHttpClient {
    */
   async updateTokenFamily(
     tokenSlug: string,
-    body: TalerMerchantApi.TokenFamilyCreateRequest,
+    body: TalerMerchantApi.TokenFamilyUpdateRequest,
   ) {
     const url = new URL(`private/tokenfamilies/${tokenSlug}`, this.baseUrl);
 
@@ -1168,6 +1397,14 @@ export class TalerMerchantInstanceHttpClient {
       method: "POST",
       body,
     });
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForTokenFamilyDetails());
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1179,6 +1416,15 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForTokenFamiliesList());
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1190,6 +1436,15 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForTokenFamilyDetails());
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1201,6 +1456,14 @@ export class TalerMerchantInstanceHttpClient {
     const resp = await this.httpLib.fetch(url.href, {
       method: "DELETE",
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 }
 
@@ -1232,7 +1495,14 @@ export class TalerMerchantManagementHttpClient extends 
TalerMerchantInstanceHttp
       body,
     });
 
-    //
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1248,22 +1518,37 @@ export class TalerMerchantManagementHttpClient extends 
TalerMerchantInstanceHttp
       body,
     });
 
-    //
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
    * 
https://docs.taler.net/core/api-merchant.html#patch--management-instances-$INSTANCE
    */
   async updateInstance(
-    isntanceId: string,
+    instanceId: string,
     body: TalerMerchantApi.InstanceReconfigurationMessage,
   ) {
-    const url = new URL(`management/instances/${isntanceId}`, this.baseUrl);
+    const url = new URL(`management/instances/${instanceId}`, this.baseUrl);
 
     const resp = await this.httpLib.fetch(url.href, {
       method: "PATCH",
       body,
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1275,6 +1560,13 @@ export class TalerMerchantManagementHttpClient extends 
TalerMerchantInstanceHttp
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForInstancesResponse())
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1287,6 +1579,13 @@ export class TalerMerchantManagementHttpClient extends 
TalerMerchantInstanceHttp
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+
+    switch (resp.status) {
+      case HttpStatusCode.Ok:
+        return opSuccessFromHttp(resp, codecForQueryInstancesResponse())
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1302,6 +1601,18 @@ export class TalerMerchantManagementHttpClient extends 
TalerMerchantInstanceHttp
     const resp = await this.httpLib.fetch(url.href, {
       method: "DELETE",
     });
+    switch (resp.status) {
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.Unauthorized:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.NotFound:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 
   /**
@@ -1326,5 +1637,19 @@ export class TalerMerchantManagementHttpClient extends 
TalerMerchantInstanceHttp
     const resp = await this.httpLib.fetch(url.href, {
       method: "GET",
     });
+    switch (resp.status) {
+      case HttpStatusCode.Accepted:
+        return opSuccessFromHttp(resp, codecForAccountKycRedirects());
+      case HttpStatusCode.NoContent:
+        return opEmptySuccess(resp);
+      case HttpStatusCode.BadGateway:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.ServiceUnavailable:
+        return opKnownHttpFailure(resp.status, resp);
+      case HttpStatusCode.Conflict:
+        return opKnownHttpFailure(resp.status, resp);
+      default:
+        return opUnknownFailure(resp, await resp.text());
+    }
   }
 }
diff --git a/packages/taler-util/src/http-client/types.ts 
b/packages/taler-util/src/http-client/types.ts
index 67719ddd9..5fa3d0e7a 100644
--- a/packages/taler-util/src/http-client/types.ts
+++ b/packages/taler-util/src/http-client/types.ts
@@ -21,7 +21,7 @@ import {
   codecForInternationalizedString,
   codecForLocation,
 } from "../taler-types.js";
-import { TalerActionString, codecForTalerActionString } from "../taleruri.js";
+import { TalerUriString, codecForTalerUriString } from "../taleruri.js";
 import {
   AbsoluteTime,
   TalerProtocolDuration,
@@ -68,7 +68,7 @@ export type PaginationParams = {
   /**
    * order
    */
-  order: "asc" | "dec";
+  order?: "asc" | "dec";
 };
 
 export type LongPollParams = {
@@ -355,7 +355,7 @@ export const codecForStatusStatusUnpaid =
       .property("type", codecForConstString("unpaid"))
       .property("already_paid_order_id", codecOptional(codecForString()))
       .property("fulfillment_url", codecOptional(codecForString()))
-      .property("taler_pay_uri", codecForString())
+      .property("taler_pay_uri", codecForTalerUriString())
       .build("TalerMerchantApi.PaymentResponse");
 
 export const codecForPaidRefundStatusResponse =
@@ -679,7 +679,7 @@ export const codecForCheckPaymentUnpaidResponse =
   (): Codec<TalerMerchantApi.CheckPaymentUnpaidResponse> =>
     buildCodecForObject<TalerMerchantApi.CheckPaymentUnpaidResponse>()
       .property("order_status", codecForConstString("unpaid"))
-      .property("taler_pay_uri", codecForString())
+      .property("taler_pay_uri", codecForTalerUriString())
       .property("creation_time", codecForTimestamp)
       .property("summary", codecForString())
       .property("total_amount", codecForAmountString())
@@ -735,6 +735,175 @@ export const codecForTransactionWireReport =
       .property("coin_pub", codecForString())
       .build("TalerMerchantApi.TransactionWireReport");
 
+export const codecForMerchantRefundResponse =
+  (): Codec<TalerMerchantApi.MerchantRefundResponse> =>
+    buildCodecForObject<TalerMerchantApi.MerchantRefundResponse>()
+      .property("taler_refund_uri", codecForTalerUriString())
+      .property("h_contract", codecForString())
+      .build("TalerMerchantApi.MerchantRefundResponse");
+
+export const codecForTansferList =
+  (): Codec<TalerMerchantApi.TransferList> =>
+    buildCodecForObject<TalerMerchantApi.TransferList>()
+      .property("transfers", codecForList(codecForTransferDetails()))
+      .build("TalerMerchantApi.TransferList");
+
+export const codecForTransferDetails =
+  (): Codec<TalerMerchantApi.TransferDetails> =>
+    buildCodecForObject<TalerMerchantApi.TransferDetails>()
+      .property("credit_amount", codecForAmountString())
+      .property("wtid", codecForString())
+      .property("payto_uri", codecForPaytoString())
+      .property("exchange_url", codecForURL())
+      .property("transfer_serial_id", codecForNumber())
+      .property("execution_time", codecForTimestamp)
+      .property("verified", codecOptional(codecForBoolean()))
+      .property("confirmed", codecOptional(codecForBoolean()))
+      .build("TalerMerchantApi.TransferDetails");
+
+export const codecForOtpDeviceSummaryResponse =
+  (): Codec<TalerMerchantApi.OtpDeviceSummaryResponse> =>
+    buildCodecForObject<TalerMerchantApi.OtpDeviceSummaryResponse>()
+      .property("otp_devices", codecForList(codecForOtpDeviceEntry()))
+      .build("TalerMerchantApi.OtpDeviceSummaryResponse");
+
+export const codecForOtpDeviceEntry =
+  (): Codec<TalerMerchantApi.OtpDeviceEntry> =>
+    buildCodecForObject<TalerMerchantApi.OtpDeviceEntry>()
+      .property("otp_device_id", codecForString())
+      .property("device_description", codecForString())
+      .build("TalerMerchantApi.OtpDeviceEntry");
+
+export const codecForOtpDeviceDetails =
+  (): Codec<TalerMerchantApi.OtpDeviceDetails> =>
+    buildCodecForObject<TalerMerchantApi.OtpDeviceDetails>()
+      .property("device_description", codecForString())
+      .property("otp_algorithm", codecForNumber())
+      .property("otp_ctr", codecOptional(codecForNumber()))
+      .property("otp_timestamp", codecForNumber())
+      .property("otp_code", codecOptional(codecForString()))
+      .build("TalerMerchantApi.OtpDeviceDetails");
+
+
+export const codecForTemplateSummaryResponse =
+  (): Codec<TalerMerchantApi.TemplateSummaryResponse> =>
+    buildCodecForObject<TalerMerchantApi.TemplateSummaryResponse>()
+      .property("templates_list", codecForList(codecForTemplateEntry()))
+      .build("TalerMerchantApi.TemplateSummaryResponse");
+
+export const codecForTemplateEntry =
+  (): Codec<TalerMerchantApi.TemplateEntry> =>
+    buildCodecForObject<TalerMerchantApi.TemplateEntry>()
+      .property("template_id", codecForString())
+      .property("template_description", codecForString())
+      .build("TalerMerchantApi.TemplateEntry");
+
+export const codecForTemplateDetails =
+  (): Codec<TalerMerchantApi.TemplateDetails> =>
+    buildCodecForObject<TalerMerchantApi.TemplateDetails>()
+      .property("template_description", codecForString())
+      .property("otp_id", codecOptional(codecForString()))
+      .property("template_contract", codecForTemplateContractDetails())
+      .build("TalerMerchantApi.TemplateDetails");
+
+export const codecForTemplateContractDetails =
+  (): Codec<TalerMerchantApi.TemplateContractDetails> =>
+    buildCodecForObject<TalerMerchantApi.TemplateContractDetails>()
+      .property("summary", codecOptional(codecForString()))
+      .property("currency", codecOptional(codecForString()))
+      .property("amount", codecOptional(codecForAmountString()))
+      .property("minimum_age", codecForNumber())
+      .property("pay_duration", codecForDuration)
+      .build("TalerMerchantApi.TemplateContractDetails");
+
+export const codecForWalletTemplateDetails =
+  (): Codec<TalerMerchantApi.WalletTemplateDetails> =>
+    buildCodecForObject<TalerMerchantApi.WalletTemplateDetails>()
+      .property("template_contract", codecForTemplateContractDetails())
+      .build("TalerMerchantApi.WalletTemplateDetails");
+
+
+export const codecForWebhookSummaryResponse =
+  (): Codec<TalerMerchantApi.WebhookSummaryResponse> =>
+    buildCodecForObject<TalerMerchantApi.WebhookSummaryResponse>()
+      .property("webhooks", codecForList(codecForWebhookEntry()))
+      .build("TalerMerchantApi.WebhookSummaryResponse");
+
+export const codecForWebhookEntry =
+  (): Codec<TalerMerchantApi.WebhookEntry> =>
+    buildCodecForObject<TalerMerchantApi.WebhookEntry>()
+      .property("webhook_id", codecForString())
+      .property("event_type", codecForString())
+      .build("TalerMerchantApi.WebhookEntry");
+
+export const codecForWebhookDetails =
+  (): Codec<TalerMerchantApi.WebhookDetails> =>
+    buildCodecForObject<TalerMerchantApi.WebhookDetails>()
+      .property("event_type", codecForString())
+      .property("url", codecForString())
+      .property("http_method", codecForString())
+      .property("header_template", codecOptional(codecForString()))
+      .property("body_template", codecOptional(codecForString()))
+      .build("TalerMerchantApi.WebhookDetails");
+
+export const codecForTokenFamilyKind =
+  (): Codec<TalerMerchantApi.TokenFamilyKind> =>
+    codecForEither(
+      codecForConstString("discount"),
+      codecForConstString("subscription"),
+    ) as any //FIXME: create a codecForEnum
+  ;
+export const codecForTokenFamilyDetails =
+  (): Codec<TalerMerchantApi.TokenFamilyDetails> =>
+    buildCodecForObject<TalerMerchantApi.TokenFamilyDetails>()
+      .property("slug", codecForString())
+      .property("name", codecForString())
+      .property("description", codecForString())
+      .property("description_i18n", (codecForInternationalizedString()))
+      .property("valid_after", (codecForTimestamp))
+      .property("valid_before", (codecForTimestamp))
+      .property("duration", (codecForDuration))
+      .property("kind", codecForTokenFamilyKind())
+      .property("issued", (codecForNumber()))
+      .property("redeemed", (codecForNumber()))
+      .build("TalerMerchantApi.TokenFamilyDetails");
+
+export const codecForTokenFamiliesList =
+  (): Codec<TalerMerchantApi.TokenFamiliesList> =>
+    buildCodecForObject<TalerMerchantApi.TokenFamiliesList>()
+      .property("token_families", codecForList(codecForTokenFamilySummary()))
+      .build("TalerMerchantApi.TokenFamiliesList");
+
+export const codecForTokenFamilySummary =
+  (): Codec<TalerMerchantApi.TokenFamilySummary> =>
+    buildCodecForObject<TalerMerchantApi.TokenFamilySummary>()
+      .property("slug", codecForString())
+      .property("name", codecForString())
+      .property("valid_after", codecForTimestamp)
+      .property("valid_before", codecForTimestamp)
+      .property("kind", codecForTokenFamilyKind())
+      .build("TalerMerchantApi.TokenFamilySummary");
+
+
+export const codecForInstancesResponse =
+  (): Codec<TalerMerchantApi.InstancesResponse> =>
+    buildCodecForObject<TalerMerchantApi.InstancesResponse>()
+      .property("instances", codecForList(codecForInstance()))
+      .build("TalerMerchantApi.InstancesResponse");
+
+export const codecForInstance =
+  (): Codec<TalerMerchantApi.Instance> =>
+    buildCodecForObject<TalerMerchantApi.Instance>()
+      .property("name", codecForString())
+      .property("user_type", codecForString())
+      .property("website", codecOptional(codecForString()))
+      .property("logo", codecOptional(codecForString()))
+      .property("id", codecForString())
+      .property("merchant_pub", codecForString())
+      .property("payment_targets", codecForList(codecForString()))
+      .property("deleted", codecForBoolean())
+      .build("TalerMerchantApi.Instance");
+
 export const codecForExchangeConfig =
   (): Codec<TalerExchangeApi.ExchangeVersionResponse> =>
     buildCodecForObject<TalerExchangeApi.ExchangeVersionResponse>()
@@ -891,7 +1060,7 @@ export const codecForRegisterAccountResponse =
 export const codecForBankAccountCreateWithdrawalResponse =
   (): Codec<TalerCorebankApi.BankAccountCreateWithdrawalResponse> =>
     buildCodecForObject<TalerCorebankApi.BankAccountCreateWithdrawalResponse>()
-      .property("taler_withdraw_uri", codecForTalerActionString())
+      .property("taler_withdraw_uri", codecForTalerUriString())
       .property("withdrawal_id", codecForString())
       .build("TalerCorebankApi.BankAccountCreateWithdrawalResponse");
 
@@ -1810,7 +1979,7 @@ export namespace TalerCorebankApi {
     withdrawal_id: string;
 
     // URI that can be passed to the wallet to initiate the withdrawal.
-    taler_withdraw_uri: TalerActionString;
+    taler_withdraw_uri: TalerUriString;
   }
   export interface WithdrawalPublicInfo {
     // Current status of the operation
@@ -2989,9 +3158,10 @@ export namespace TalerMerchantApi {
     // execution time. Default is -20.
     limit?: number;
     // Starting transfer_serial_id for an iteration.
-    offset?: number;
+    offset?: string;
     // Filter transfers by verification status.
     verified?: boolean;
+    order?: "asc" | "dec";
   }
   export interface ListOrdersRequestParams {
     // If set to yes, only return paid orders, if no only
@@ -3007,19 +3177,17 @@ export namespace TalerMerchantApi {
     // use “all”) to see all orders regardless of wire transfer
     // status.
     wired?: boolean;
-    // takes value of the form N (-N), so that at most N values
-    // strictly older (younger) than start and date_s are returned.
-    // Defaults to -20 to return the last 20 entries (before start
-    // and/or date_s).
-    delta?: number;
+    // At most return the given number of results. Negative 
+    // for descending by row ID, positive for ascending by 
+    // row ID. Default is 20. Since protocol v12.
+    limit?: number;
     // Non-negative date in seconds after the UNIX Epoc, see delta
     // for its interpretation. If not specified, we default to the
     // oldest or most recent entry, depending on delta.
     date?: AbsoluteTime;
-    // Row number threshold, see delta for its interpretation.
-    // Defaults to INT64_MAX, namely the biggest row id possible in
-    // the database.
-    start?: number;
+    // Starting product_serial_id for an iteration. 
+    // Since protocol v12.
+    offset?: string;
     // Timeout in milliseconds to wait for additional orders if the
     // answer would otherwise be negative (long polling). Only useful
     // if delta is positive. Note that the merchant MAY still return
@@ -3029,6 +3197,8 @@ export namespace TalerMerchantApi {
     sessionId?: string;
     // Since protocol v6. Filters by fulfillment URL.
     fulfillmentUrl?: string;
+
+    order?: "asc" | "dec";
   }
 
   export interface PayRequest {
@@ -3417,12 +3587,12 @@ export namespace TalerMerchantApi {
     default_pay_delay: RelativeTime;
   }
 
-  interface InstancesResponse {
+  export interface InstancesResponse {
     // List of instances that are present in the backend (see Instance).
     instances: Instance[];
   }
 
-  interface Instance {
+  export interface Instance {
     // Merchant name corresponding to this instance.
     name: string;
 
@@ -4046,7 +4216,7 @@ export namespace TalerMerchantApi {
     // Human-readable refund justification.
     reason: string;
   }
-  interface MerchantRefundResponse {
+  export interface MerchantRefundResponse {
     // URL (handled by the backend) that the wallet should access to
     // trigger refund processing.
     // taler://refund/...
@@ -4071,11 +4241,11 @@ export namespace TalerMerchantApi {
     exchange_url: string;
   }
 
-  interface TransferList {
+  export interface TransferList {
     // List of all the transfers that fit the filter that we know.
     transfers: TransferDetails[];
   }
-  interface TransferDetails {
+  export interface TransferDetails {
     // How much was wired to the merchant (minus fees).
     credit_amount: AmountString;
 
@@ -4318,11 +4488,11 @@ export namespace TalerMerchantApi {
     otp_ctr?: Integer;
   }
 
-  interface OtpDeviceSummaryResponse {
+  export interface OtpDeviceSummaryResponse {
     // Array of devices that are present in our backend.
     otp_devices: OtpDeviceEntry[];
   }
-  interface OtpDeviceEntry {
+  export interface OtpDeviceEntry {
     // Device identifier.
     otp_device_id: string;
 
@@ -4330,7 +4500,7 @@ export namespace TalerMerchantApi {
     device_description: string;
   }
 
-  interface OtpDeviceDetails {
+  export interface OtpDeviceDetails {
     // Human-readable description for the device.
     device_description: string;
 
@@ -4392,7 +4562,7 @@ export namespace TalerMerchantApi {
     // Additional information in a separate template.
     template_contract: TemplateContractDetails;
   }
-  interface TemplateContractDetails {
+  export interface TemplateContractDetails {
     // Human-readable summary for the template.
     summary?: string;
 
@@ -4426,19 +4596,27 @@ export namespace TalerMerchantApi {
     template_contract: TemplateContractDetails;
   }
 
-  interface TemplateSummaryResponse {
+  export interface TemplateSummaryResponse {
     // List of templates that are present in our backend.
     templates_list: TemplateEntry[];
   }
 
-  interface TemplateEntry {
+  export interface TemplateEntry {
     // Template identifier, as found in the template.
     template_id: string;
 
     // Human-readable description for the template.
     template_description: string;
   }
-  interface TemplateDetails {
+
+  export interface WalletTemplateDetails {
+
+    // Hard-coded information about the contrac terms
+    // for this template.
+    template_contract: TemplateContractDetails;
+  }
+
+  export interface TemplateDetails {
     // Human-readable description for the template.
     template_description: string;
 
@@ -4494,12 +4672,12 @@ export namespace TalerMerchantApi {
     body_template?: string;
   }
 
-  interface WebhookSummaryResponse {
+  export interface WebhookSummaryResponse {
     // Return webhooks that are present in our backend.
     webhooks: WebhookEntry[];
   }
 
-  interface WebhookEntry {
+  export interface WebhookEntry {
     // Webhook identifier, as found in the webhook.
     webhook_id: string;
 
@@ -4507,7 +4685,7 @@ export namespace TalerMerchantApi {
     event_type: string;
   }
 
-  interface WebhookDetails {
+  export interface WebhookDetails {
     // The event of the webhook: why the webhook is used.
     event_type: string;
 
@@ -4552,7 +4730,7 @@ export namespace TalerMerchantApi {
     kind: TokenFamilyKind;
   }
 
-  enum TokenFamilyKind {
+  export enum TokenFamilyKind {
     Discount = "discount",
     Subscription = "subscription",
   }
@@ -4577,12 +4755,12 @@ export namespace TalerMerchantApi {
     duration: RelativeTime;
   }
 
-  interface TokenFamiliesList {
+  export interface TokenFamiliesList {
     // All configured token families of this instance.
     token_families: TokenFamilySummary[];
   }
 
-  interface TokenFamilySummary {
+  export interface TokenFamilySummary {
     // Identifier for the token family consisting of unreserved characters
     // according to RFC 3986.
     slug: string;
@@ -4600,7 +4778,7 @@ export namespace TalerMerchantApi {
     kind: TokenFamilyKind;
   }
 
-  interface TokenFamilyDetails {
+  export interface TokenFamilyDetails {
     // Identifier for the token family consisting of unreserved characters
     // according to RFC 3986.
     slug: string;
diff --git a/packages/taler-util/src/taler-types.ts 
b/packages/taler-util/src/taler-types.ts
index 7a386b108..bad9186dc 100644
--- a/packages/taler-util/src/taler-types.ts
+++ b/packages/taler-util/src/taler-types.ts
@@ -617,26 +617,6 @@ export interface MerchantAbortPayRefundDetails {
   exchange_http_status: number;
 }
 
-/**
- * Response for a refund pickup or a /pay in abort mode.
- */
-export interface MerchantRefundResponse {
-  /**
-   * Public key of the merchant
-   */
-  merchant_pub: string;
-
-  /**
-   * Contract terms hash of the contract that
-   * is being refunded.
-   */
-  h_contract_terms: string;
-
-  /**
-   * The signed refund permissions, to be sent to the exchange.
-   */
-  refunds: MerchantAbortPayRefundDetails[];
-}
 
 /**
  * Planchet detail sent to the merchant.
@@ -1471,14 +1451,6 @@ export const codecForMerchantRefundPermission =
       .property("exchange_pub", codecOptional(codecForString()))
       .build("MerchantRefundPermission");
 
-export const codecForMerchantRefundResponse =
-  (): Codec<MerchantRefundResponse> =>
-    buildCodecForObject<MerchantRefundResponse>()
-      .property("merchant_pub", codecForString())
-      .property("h_contract_terms", codecForString())
-      .property("refunds", codecForList(codecForMerchantRefundPermission()))
-      .build("MerchantRefundResponse");
-
 export const codecForBlindSigWrapperV2 = (): Codec<MerchantBlindSigWrapperV2> 
=>
   buildCodecForObject<MerchantBlindSigWrapperV2>()
     .property("blind_sig", codecForBlindedDenominationSignature())
diff --git a/packages/taler-util/src/taleruri.ts 
b/packages/taler-util/src/taleruri.ts
index 4a8647d21..97b82c061 100644
--- a/packages/taler-util/src/taleruri.ts
+++ b/packages/taler-util/src/taleruri.ts
@@ -43,11 +43,11 @@ export type TalerUri =
   | WithdrawExchangeUri;
 
 declare const __action_str: unique symbol;
-export type TalerActionString = string & { [__action_str]: true };
+export type TalerUriString = string & { [__action_str]: true };
 
-export function codecForTalerActionString(): Codec<TalerActionString> {
+export function codecForTalerUriString(): Codec<TalerUriString> {
   return {
-    decode(x: any, c?: Context): TalerActionString {
+    decode(x: any, c?: Context): TalerUriString {
       if (typeof x !== "string") {
         throw new DecodingError(
           `expected string at ${renderContext(c)} but got ${typeof x}`,
@@ -55,10 +55,10 @@ export function codecForTalerActionString(): 
Codec<TalerActionString> {
       }
       if (parseTalerUri(x) === undefined) {
         throw new DecodingError(
-          `invalid taler action at ${renderContext(c)} but got "${x}"`,
+          `invalid taler URI at ${renderContext(c)} but got "${x}"`,
         );
       }
-      return x as TalerActionString;
+      return x as TalerUriString;
     },
   };
 }

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]