@xkova/sdk 0.1.0-alpha.5 → 0.1.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abi.d.ts +40 -0
- package/dist/abi.js +25 -0
- package/dist/generated/types.d.ts +263 -1
- package/dist/member-bff.d.ts +7 -2
- package/dist/member-bff.js +4 -4
- package/dist/member-resources.d.ts +10 -1
- package/dist/member-resources.js +7 -6
- package/dist/resources/account-holders.d.ts +100 -1
- package/dist/resources/account-holders.js +36 -7
- package/llms.txt +1 -1
- package/package.json +1 -1
package/dist/abi.d.ts
CHANGED
|
@@ -336,6 +336,14 @@ export declare const erc20XGaslessAbi: readonly [{
|
|
|
336
336
|
readonly name: "";
|
|
337
337
|
readonly type: "string";
|
|
338
338
|
readonly internalType: "string";
|
|
339
|
+
}, {
|
|
340
|
+
readonly name: "";
|
|
341
|
+
readonly type: "uint8";
|
|
342
|
+
readonly internalType: "uint8";
|
|
343
|
+
}, {
|
|
344
|
+
readonly name: "";
|
|
345
|
+
readonly type: "address";
|
|
346
|
+
readonly internalType: "address";
|
|
339
347
|
}, {
|
|
340
348
|
readonly name: "";
|
|
341
349
|
readonly type: "address";
|
|
@@ -362,6 +370,10 @@ export declare const erc20XGaslessAbi: readonly [{
|
|
|
362
370
|
readonly name: "_symbol";
|
|
363
371
|
readonly type: "string";
|
|
364
372
|
readonly internalType: "string";
|
|
373
|
+
}, {
|
|
374
|
+
readonly name: "decimals_";
|
|
375
|
+
readonly type: "uint8";
|
|
376
|
+
readonly internalType: "uint8";
|
|
365
377
|
}, {
|
|
366
378
|
readonly name: "defaultAdmin";
|
|
367
379
|
readonly type: "address";
|
|
@@ -370,6 +382,10 @@ export declare const erc20XGaslessAbi: readonly [{
|
|
|
370
382
|
readonly name: "minter";
|
|
371
383
|
readonly type: "address";
|
|
372
384
|
readonly internalType: "address";
|
|
385
|
+
}, {
|
|
386
|
+
readonly name: "burner";
|
|
387
|
+
readonly type: "address";
|
|
388
|
+
readonly internalType: "address";
|
|
373
389
|
}, {
|
|
374
390
|
readonly name: "pauser";
|
|
375
391
|
readonly type: "address";
|
|
@@ -1062,6 +1078,10 @@ export declare const erc20XGaslessAbi: readonly [{
|
|
|
1062
1078
|
readonly type: "error";
|
|
1063
1079
|
readonly name: "InvalidAddress";
|
|
1064
1080
|
readonly inputs: readonly [];
|
|
1081
|
+
}, {
|
|
1082
|
+
readonly type: "error";
|
|
1083
|
+
readonly name: "InvalidDecimals";
|
|
1084
|
+
readonly inputs: readonly [];
|
|
1065
1085
|
}, {
|
|
1066
1086
|
readonly type: "error";
|
|
1067
1087
|
readonly name: "InvalidImplementation";
|
|
@@ -5482,6 +5502,14 @@ export declare const tokenizationAbis: {
|
|
|
5482
5502
|
readonly name: "";
|
|
5483
5503
|
readonly type: "string";
|
|
5484
5504
|
readonly internalType: "string";
|
|
5505
|
+
}, {
|
|
5506
|
+
readonly name: "";
|
|
5507
|
+
readonly type: "uint8";
|
|
5508
|
+
readonly internalType: "uint8";
|
|
5509
|
+
}, {
|
|
5510
|
+
readonly name: "";
|
|
5511
|
+
readonly type: "address";
|
|
5512
|
+
readonly internalType: "address";
|
|
5485
5513
|
}, {
|
|
5486
5514
|
readonly name: "";
|
|
5487
5515
|
readonly type: "address";
|
|
@@ -5508,6 +5536,10 @@ export declare const tokenizationAbis: {
|
|
|
5508
5536
|
readonly name: "_symbol";
|
|
5509
5537
|
readonly type: "string";
|
|
5510
5538
|
readonly internalType: "string";
|
|
5539
|
+
}, {
|
|
5540
|
+
readonly name: "decimals_";
|
|
5541
|
+
readonly type: "uint8";
|
|
5542
|
+
readonly internalType: "uint8";
|
|
5511
5543
|
}, {
|
|
5512
5544
|
readonly name: "defaultAdmin";
|
|
5513
5545
|
readonly type: "address";
|
|
@@ -5516,6 +5548,10 @@ export declare const tokenizationAbis: {
|
|
|
5516
5548
|
readonly name: "minter";
|
|
5517
5549
|
readonly type: "address";
|
|
5518
5550
|
readonly internalType: "address";
|
|
5551
|
+
}, {
|
|
5552
|
+
readonly name: "burner";
|
|
5553
|
+
readonly type: "address";
|
|
5554
|
+
readonly internalType: "address";
|
|
5519
5555
|
}, {
|
|
5520
5556
|
readonly name: "pauser";
|
|
5521
5557
|
readonly type: "address";
|
|
@@ -6208,6 +6244,10 @@ export declare const tokenizationAbis: {
|
|
|
6208
6244
|
readonly type: "error";
|
|
6209
6245
|
readonly name: "InvalidAddress";
|
|
6210
6246
|
readonly inputs: readonly [];
|
|
6247
|
+
}, {
|
|
6248
|
+
readonly type: "error";
|
|
6249
|
+
readonly name: "InvalidDecimals";
|
|
6250
|
+
readonly inputs: readonly [];
|
|
6211
6251
|
}, {
|
|
6212
6252
|
readonly type: "error";
|
|
6213
6253
|
readonly name: "InvalidImplementation";
|
package/dist/abi.js
CHANGED
|
@@ -443,6 +443,16 @@ export const erc20XGaslessAbi = [
|
|
|
443
443
|
"type": "string",
|
|
444
444
|
"internalType": "string"
|
|
445
445
|
},
|
|
446
|
+
{
|
|
447
|
+
"name": "",
|
|
448
|
+
"type": "uint8",
|
|
449
|
+
"internalType": "uint8"
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"name": "",
|
|
453
|
+
"type": "address",
|
|
454
|
+
"internalType": "address"
|
|
455
|
+
},
|
|
446
456
|
{
|
|
447
457
|
"name": "",
|
|
448
458
|
"type": "address",
|
|
@@ -476,6 +486,11 @@ export const erc20XGaslessAbi = [
|
|
|
476
486
|
"type": "string",
|
|
477
487
|
"internalType": "string"
|
|
478
488
|
},
|
|
489
|
+
{
|
|
490
|
+
"name": "decimals_",
|
|
491
|
+
"type": "uint8",
|
|
492
|
+
"internalType": "uint8"
|
|
493
|
+
},
|
|
479
494
|
{
|
|
480
495
|
"name": "defaultAdmin",
|
|
481
496
|
"type": "address",
|
|
@@ -486,6 +501,11 @@ export const erc20XGaslessAbi = [
|
|
|
486
501
|
"type": "address",
|
|
487
502
|
"internalType": "address"
|
|
488
503
|
},
|
|
504
|
+
{
|
|
505
|
+
"name": "burner",
|
|
506
|
+
"type": "address",
|
|
507
|
+
"internalType": "address"
|
|
508
|
+
},
|
|
489
509
|
{
|
|
490
510
|
"name": "pauser",
|
|
491
511
|
"type": "address",
|
|
@@ -1376,6 +1396,11 @@ export const erc20XGaslessAbi = [
|
|
|
1376
1396
|
"name": "InvalidAddress",
|
|
1377
1397
|
"inputs": []
|
|
1378
1398
|
},
|
|
1399
|
+
{
|
|
1400
|
+
"type": "error",
|
|
1401
|
+
"name": "InvalidDecimals",
|
|
1402
|
+
"inputs": []
|
|
1403
|
+
},
|
|
1379
1404
|
{
|
|
1380
1405
|
"type": "error",
|
|
1381
1406
|
"name": "InvalidImplementation",
|
|
@@ -1150,6 +1150,23 @@ export interface paths {
|
|
|
1150
1150
|
patch?: never;
|
|
1151
1151
|
trace?: never;
|
|
1152
1152
|
};
|
|
1153
|
+
"/account-holders/self/wallet-auth": {
|
|
1154
|
+
parameters: {
|
|
1155
|
+
query?: never;
|
|
1156
|
+
header?: never;
|
|
1157
|
+
path?: never;
|
|
1158
|
+
cookie?: never;
|
|
1159
|
+
};
|
|
1160
|
+
get?: never;
|
|
1161
|
+
put?: never;
|
|
1162
|
+
/** Connect the current member's registered wallet */
|
|
1163
|
+
post: operations["issueAccountHolderSelfWalletAuth"];
|
|
1164
|
+
delete?: never;
|
|
1165
|
+
options?: never;
|
|
1166
|
+
head?: never;
|
|
1167
|
+
patch?: never;
|
|
1168
|
+
trace?: never;
|
|
1169
|
+
};
|
|
1153
1170
|
"/account-holders/self/wallet-provision": {
|
|
1154
1171
|
parameters: {
|
|
1155
1172
|
query?: never;
|
|
@@ -1235,6 +1252,23 @@ export interface paths {
|
|
|
1235
1252
|
patch?: never;
|
|
1236
1253
|
trace?: never;
|
|
1237
1254
|
};
|
|
1255
|
+
"/account-holders/self": {
|
|
1256
|
+
parameters: {
|
|
1257
|
+
query?: never;
|
|
1258
|
+
header?: never;
|
|
1259
|
+
path?: never;
|
|
1260
|
+
cookie?: never;
|
|
1261
|
+
};
|
|
1262
|
+
/** Get the current account holder's profile */
|
|
1263
|
+
get: operations["getAccountHolderSelf"];
|
|
1264
|
+
put?: never;
|
|
1265
|
+
post?: never;
|
|
1266
|
+
delete?: never;
|
|
1267
|
+
options?: never;
|
|
1268
|
+
head?: never;
|
|
1269
|
+
patch?: never;
|
|
1270
|
+
trace?: never;
|
|
1271
|
+
};
|
|
1238
1272
|
"/account-holders/self/balance": {
|
|
1239
1273
|
parameters: {
|
|
1240
1274
|
query?: never;
|
|
@@ -1440,6 +1474,58 @@ export interface paths {
|
|
|
1440
1474
|
patch?: never;
|
|
1441
1475
|
trace?: never;
|
|
1442
1476
|
};
|
|
1477
|
+
"/account-holders/self/avatar/upload-url": {
|
|
1478
|
+
parameters: {
|
|
1479
|
+
query?: never;
|
|
1480
|
+
header?: never;
|
|
1481
|
+
path?: never;
|
|
1482
|
+
cookie?: never;
|
|
1483
|
+
};
|
|
1484
|
+
get?: never;
|
|
1485
|
+
put?: never;
|
|
1486
|
+
/** Create a short-lived avatar upload URL */
|
|
1487
|
+
post: operations["presignAccountHolderSelfAvatarUpload"];
|
|
1488
|
+
delete?: never;
|
|
1489
|
+
options?: never;
|
|
1490
|
+
head?: never;
|
|
1491
|
+
patch?: never;
|
|
1492
|
+
trace?: never;
|
|
1493
|
+
};
|
|
1494
|
+
"/account-holders/self/avatar/confirm": {
|
|
1495
|
+
parameters: {
|
|
1496
|
+
query?: never;
|
|
1497
|
+
header?: never;
|
|
1498
|
+
path?: never;
|
|
1499
|
+
cookie?: never;
|
|
1500
|
+
};
|
|
1501
|
+
get?: never;
|
|
1502
|
+
put?: never;
|
|
1503
|
+
/** Confirm an avatar upload for the account holder */
|
|
1504
|
+
post: operations["confirmAccountHolderSelfAvatar"];
|
|
1505
|
+
delete?: never;
|
|
1506
|
+
options?: never;
|
|
1507
|
+
head?: never;
|
|
1508
|
+
patch?: never;
|
|
1509
|
+
trace?: never;
|
|
1510
|
+
};
|
|
1511
|
+
"/account-holders/self/avatar": {
|
|
1512
|
+
parameters: {
|
|
1513
|
+
query?: never;
|
|
1514
|
+
header?: never;
|
|
1515
|
+
path?: never;
|
|
1516
|
+
cookie?: never;
|
|
1517
|
+
};
|
|
1518
|
+
/** Get a short-TTL presigned GET URL for the holder's avatar */
|
|
1519
|
+
get: operations["getAccountHolderSelfAvatarUrl"];
|
|
1520
|
+
put?: never;
|
|
1521
|
+
post?: never;
|
|
1522
|
+
/** Delete the account holder avatar */
|
|
1523
|
+
delete: operations["deleteAccountHolderSelfAvatar"];
|
|
1524
|
+
options?: never;
|
|
1525
|
+
head?: never;
|
|
1526
|
+
patch?: never;
|
|
1527
|
+
trace?: never;
|
|
1528
|
+
};
|
|
1443
1529
|
"/account-holders/{id}/avatar/upload-url": {
|
|
1444
1530
|
parameters: {
|
|
1445
1531
|
query?: never;
|
|
@@ -4385,6 +4471,18 @@ export interface components {
|
|
|
4385
4471
|
transaction_hash: string | null;
|
|
4386
4472
|
} | null;
|
|
4387
4473
|
};
|
|
4474
|
+
WalletAdmissionBootstrap: {
|
|
4475
|
+
/** @enum {string} */
|
|
4476
|
+
strategy: "auth_endpoint";
|
|
4477
|
+
payload: string;
|
|
4478
|
+
client_id: string;
|
|
4479
|
+
/** Format: uuid */
|
|
4480
|
+
project_id: string;
|
|
4481
|
+
external_user_id: string;
|
|
4482
|
+
/** Format: date-time */
|
|
4483
|
+
expires_at: string;
|
|
4484
|
+
expected_address?: string;
|
|
4485
|
+
};
|
|
4388
4486
|
CuPayoutAccountRef: {
|
|
4389
4487
|
routing_number: string;
|
|
4390
4488
|
account_number: string;
|
|
@@ -5023,6 +5121,8 @@ export interface components {
|
|
|
5023
5121
|
code_challenge_method: "S256";
|
|
5024
5122
|
};
|
|
5025
5123
|
MemberAuthHostedAuthorizationStart: {
|
|
5124
|
+
/** Format: uri */
|
|
5125
|
+
hosted_origin: string;
|
|
5026
5126
|
/** Format: uri */
|
|
5027
5127
|
authorization_url: string;
|
|
5028
5128
|
expires_at: components["schemas"]["TimestampUtc"];
|
|
@@ -5078,6 +5178,8 @@ export interface components {
|
|
|
5078
5178
|
AccountCenterHandoffStart: {
|
|
5079
5179
|
/** Format: uri */
|
|
5080
5180
|
handoff_url: string;
|
|
5181
|
+
/** Format: uri */
|
|
5182
|
+
hosted_origin: string;
|
|
5081
5183
|
expires_at: components["schemas"]["TimestampUtc"];
|
|
5082
5184
|
};
|
|
5083
5185
|
AccountCenterHandoffExchange: {
|
|
@@ -5847,7 +5949,7 @@ export interface components {
|
|
|
5847
5949
|
AccountCenterIntent: "security" | "sessions" | "wallet_readiness";
|
|
5848
5950
|
MemberActionReadiness: {
|
|
5849
5951
|
/** @enum {string} */
|
|
5850
|
-
authorization_method: "hosted_passkey" | "external_oidc";
|
|
5952
|
+
authorization_method: "hosted_passkey" | "external_oidc" | "xkova_webauthn";
|
|
5851
5953
|
/** @enum {string} */
|
|
5852
5954
|
setup_status: "passkey_required" | "recovery_acknowledgement_required" | "recovery_required" | "ready" | "externally_managed";
|
|
5853
5955
|
action_authorization_enabled: boolean;
|
|
@@ -8262,6 +8364,30 @@ export interface operations {
|
|
|
8262
8364
|
403: components["responses"]["Forbidden"];
|
|
8263
8365
|
};
|
|
8264
8366
|
};
|
|
8367
|
+
issueAccountHolderSelfWalletAuth: {
|
|
8368
|
+
parameters: {
|
|
8369
|
+
query?: never;
|
|
8370
|
+
header: {
|
|
8371
|
+
"X-Member-Session-Id": components["parameters"]["xMemberSessionId"];
|
|
8372
|
+
"X-XKOVA-Publishable-Key": components["parameters"]["xXkovaPublishableKey"];
|
|
8373
|
+
};
|
|
8374
|
+
path?: never;
|
|
8375
|
+
cookie?: never;
|
|
8376
|
+
};
|
|
8377
|
+
requestBody?: never;
|
|
8378
|
+
responses: {
|
|
8379
|
+
200: {
|
|
8380
|
+
headers: {
|
|
8381
|
+
[name: string]: unknown;
|
|
8382
|
+
};
|
|
8383
|
+
content: {
|
|
8384
|
+
"application/json": components["schemas"]["WalletAdmissionBootstrap"] & Record<string, never>;
|
|
8385
|
+
};
|
|
8386
|
+
};
|
|
8387
|
+
401: components["responses"]["Unauthorized"];
|
|
8388
|
+
403: components["responses"]["Forbidden"];
|
|
8389
|
+
};
|
|
8390
|
+
};
|
|
8265
8391
|
ensureAccountHolderSelfWalletProvisioning: {
|
|
8266
8392
|
parameters: {
|
|
8267
8393
|
query?: never;
|
|
@@ -8412,6 +8538,30 @@ export interface operations {
|
|
|
8412
8538
|
403: components["responses"]["Forbidden"];
|
|
8413
8539
|
};
|
|
8414
8540
|
};
|
|
8541
|
+
getAccountHolderSelf: {
|
|
8542
|
+
parameters: {
|
|
8543
|
+
query?: never;
|
|
8544
|
+
header: {
|
|
8545
|
+
"X-Member-Session-Id": components["parameters"]["xMemberSessionId"];
|
|
8546
|
+
"X-XKOVA-Publishable-Key": components["parameters"]["xXkovaPublishableKey"];
|
|
8547
|
+
};
|
|
8548
|
+
path?: never;
|
|
8549
|
+
cookie?: never;
|
|
8550
|
+
};
|
|
8551
|
+
requestBody?: never;
|
|
8552
|
+
responses: {
|
|
8553
|
+
200: {
|
|
8554
|
+
headers: {
|
|
8555
|
+
[name: string]: unknown;
|
|
8556
|
+
};
|
|
8557
|
+
content: {
|
|
8558
|
+
"application/json": components["schemas"]["AccountHolder"];
|
|
8559
|
+
};
|
|
8560
|
+
};
|
|
8561
|
+
401: components["responses"]["Unauthorized"];
|
|
8562
|
+
404: components["responses"]["NotFound"];
|
|
8563
|
+
};
|
|
8564
|
+
};
|
|
8415
8565
|
getAccountHolderSelfBalance: {
|
|
8416
8566
|
parameters: {
|
|
8417
8567
|
query?: never;
|
|
@@ -8821,6 +8971,118 @@ export interface operations {
|
|
|
8821
8971
|
404: components["responses"]["NotFound"];
|
|
8822
8972
|
};
|
|
8823
8973
|
};
|
|
8974
|
+
presignAccountHolderSelfAvatarUpload: {
|
|
8975
|
+
parameters: {
|
|
8976
|
+
query?: never;
|
|
8977
|
+
header: {
|
|
8978
|
+
"X-Member-Session-Id": components["parameters"]["xMemberSessionId"];
|
|
8979
|
+
"X-XKOVA-Publishable-Key": components["parameters"]["xXkovaPublishableKey"];
|
|
8980
|
+
};
|
|
8981
|
+
path?: never;
|
|
8982
|
+
cookie?: never;
|
|
8983
|
+
};
|
|
8984
|
+
requestBody: {
|
|
8985
|
+
content: {
|
|
8986
|
+
"application/json": components["schemas"]["AccountHolderAvatarUploadUrl"];
|
|
8987
|
+
};
|
|
8988
|
+
};
|
|
8989
|
+
responses: {
|
|
8990
|
+
200: {
|
|
8991
|
+
headers: {
|
|
8992
|
+
[name: string]: unknown;
|
|
8993
|
+
};
|
|
8994
|
+
content: {
|
|
8995
|
+
"application/json": components["schemas"]["AccountHolderAvatarUploadUrlResponse"];
|
|
8996
|
+
};
|
|
8997
|
+
};
|
|
8998
|
+
400: components["responses"]["BadRequest"];
|
|
8999
|
+
401: components["responses"]["Unauthorized"];
|
|
9000
|
+
403: components["responses"]["Forbidden"];
|
|
9001
|
+
404: components["responses"]["NotFound"];
|
|
9002
|
+
422: components["responses"]["UnprocessableEntity"];
|
|
9003
|
+
};
|
|
9004
|
+
};
|
|
9005
|
+
confirmAccountHolderSelfAvatar: {
|
|
9006
|
+
parameters: {
|
|
9007
|
+
query?: never;
|
|
9008
|
+
header: {
|
|
9009
|
+
"X-Member-Session-Id": components["parameters"]["xMemberSessionId"];
|
|
9010
|
+
"X-XKOVA-Publishable-Key": components["parameters"]["xXkovaPublishableKey"];
|
|
9011
|
+
};
|
|
9012
|
+
path?: never;
|
|
9013
|
+
cookie?: never;
|
|
9014
|
+
};
|
|
9015
|
+
requestBody: {
|
|
9016
|
+
content: {
|
|
9017
|
+
"application/json": components["schemas"]["AccountHolderAvatarConfirm"];
|
|
9018
|
+
};
|
|
9019
|
+
};
|
|
9020
|
+
responses: {
|
|
9021
|
+
200: {
|
|
9022
|
+
headers: {
|
|
9023
|
+
[name: string]: unknown;
|
|
9024
|
+
};
|
|
9025
|
+
content: {
|
|
9026
|
+
"application/json": components["schemas"]["AccountHolder"];
|
|
9027
|
+
};
|
|
9028
|
+
};
|
|
9029
|
+
400: components["responses"]["BadRequest"];
|
|
9030
|
+
401: components["responses"]["Unauthorized"];
|
|
9031
|
+
403: components["responses"]["Forbidden"];
|
|
9032
|
+
404: components["responses"]["NotFound"];
|
|
9033
|
+
422: components["responses"]["UnprocessableEntity"];
|
|
9034
|
+
};
|
|
9035
|
+
};
|
|
9036
|
+
getAccountHolderSelfAvatarUrl: {
|
|
9037
|
+
parameters: {
|
|
9038
|
+
query?: never;
|
|
9039
|
+
header: {
|
|
9040
|
+
"X-Member-Session-Id": components["parameters"]["xMemberSessionId"];
|
|
9041
|
+
"X-XKOVA-Publishable-Key": components["parameters"]["xXkovaPublishableKey"];
|
|
9042
|
+
};
|
|
9043
|
+
path?: never;
|
|
9044
|
+
cookie?: never;
|
|
9045
|
+
};
|
|
9046
|
+
requestBody?: never;
|
|
9047
|
+
responses: {
|
|
9048
|
+
200: {
|
|
9049
|
+
headers: {
|
|
9050
|
+
[name: string]: unknown;
|
|
9051
|
+
};
|
|
9052
|
+
content: {
|
|
9053
|
+
"application/json": components["schemas"]["AccountHolderAvatarUrl"];
|
|
9054
|
+
};
|
|
9055
|
+
};
|
|
9056
|
+
401: components["responses"]["Unauthorized"];
|
|
9057
|
+
403: components["responses"]["Forbidden"];
|
|
9058
|
+
404: components["responses"]["NotFound"];
|
|
9059
|
+
};
|
|
9060
|
+
};
|
|
9061
|
+
deleteAccountHolderSelfAvatar: {
|
|
9062
|
+
parameters: {
|
|
9063
|
+
query?: never;
|
|
9064
|
+
header: {
|
|
9065
|
+
"X-Member-Session-Id": components["parameters"]["xMemberSessionId"];
|
|
9066
|
+
"X-XKOVA-Publishable-Key": components["parameters"]["xXkovaPublishableKey"];
|
|
9067
|
+
};
|
|
9068
|
+
path?: never;
|
|
9069
|
+
cookie?: never;
|
|
9070
|
+
};
|
|
9071
|
+
requestBody?: never;
|
|
9072
|
+
responses: {
|
|
9073
|
+
200: {
|
|
9074
|
+
headers: {
|
|
9075
|
+
[name: string]: unknown;
|
|
9076
|
+
};
|
|
9077
|
+
content: {
|
|
9078
|
+
"application/json": components["schemas"]["AccountHolder"];
|
|
9079
|
+
};
|
|
9080
|
+
};
|
|
9081
|
+
401: components["responses"]["Unauthorized"];
|
|
9082
|
+
403: components["responses"]["Forbidden"];
|
|
9083
|
+
404: components["responses"]["NotFound"];
|
|
9084
|
+
};
|
|
9085
|
+
};
|
|
8824
9086
|
presignAccountHolderAvatarUpload: {
|
|
8825
9087
|
parameters: {
|
|
8826
9088
|
query?: never;
|
package/dist/member-bff.d.ts
CHANGED
|
@@ -116,7 +116,7 @@ export type XKOVAMemberAuthorizationTransaction<TApplicationData = unknown> = {
|
|
|
116
116
|
readonly sessionReference: string;
|
|
117
117
|
readonly intent: XKOVAAccountCenterIntent;
|
|
118
118
|
readonly actionAuthorization?: {
|
|
119
|
-
readonly method: 'hosted_passkey';
|
|
119
|
+
readonly method: 'hosted_passkey' | 'xkova_webauthn';
|
|
120
120
|
} | {
|
|
121
121
|
readonly method: 'external_oidc';
|
|
122
122
|
readonly actionToken: string;
|
|
@@ -239,7 +239,7 @@ export interface XKOVAAccountCenterHandoffCompletion {
|
|
|
239
239
|
readonly applicationReturnUri?: string;
|
|
240
240
|
}
|
|
241
241
|
export type XKOVAMemberActionAuthorizationStart = {
|
|
242
|
-
readonly authorizationMethod: 'hosted_passkey';
|
|
242
|
+
readonly authorizationMethod: 'hosted_passkey' | 'xkova_webauthn';
|
|
243
243
|
readonly authorizationUrl: string;
|
|
244
244
|
readonly state: string;
|
|
245
245
|
readonly expiresAt: string;
|
|
@@ -455,6 +455,11 @@ export declare class XKOVAMemberBffClient {
|
|
|
455
455
|
resolveResources<TApplicationData>(input: {
|
|
456
456
|
readonly reference: string;
|
|
457
457
|
readonly sessionStore: XKOVAMemberSessionStore<TApplicationData>;
|
|
458
|
+
/**
|
|
459
|
+
* Defaults true. Set false only when the bound resource request executes
|
|
460
|
+
* immediately and therefore performs the same exact-session validation.
|
|
461
|
+
*/
|
|
462
|
+
readonly validateWithXkova?: boolean;
|
|
458
463
|
}): Promise<{
|
|
459
464
|
readonly session: StoredXKOVAMemberSession<TApplicationData>;
|
|
460
465
|
readonly resources: XKOVAMemberResources;
|
package/dist/member-bff.js
CHANGED
|
@@ -536,15 +536,15 @@ export class XKOVAMemberBffClient {
|
|
|
536
536
|
const object = requireObject(value, 'member action authorization start');
|
|
537
537
|
const method = requireString(object, 'authorization_method', 'member action authorization start');
|
|
538
538
|
const { expiresAt, expiresAtMillis } = boundedAuthorizationExpiry(object, provisionalExpiresAt, 'member action authorization start');
|
|
539
|
-
if (method === 'hosted_passkey') {
|
|
539
|
+
if (method === 'hosted_passkey' || method === 'xkova_webauthn') {
|
|
540
540
|
const authorizationUrl = normalizeHostedAuthorizationUrl(requireString(object, 'authorization_url', 'member action authorization start'));
|
|
541
541
|
await input.transactionStore.replace(stateHash, {
|
|
542
542
|
...transaction,
|
|
543
|
-
actionAuthorization: { method
|
|
543
|
+
actionAuthorization: { method },
|
|
544
544
|
expiresAt: expiresAtMillis,
|
|
545
545
|
});
|
|
546
546
|
return {
|
|
547
|
-
authorizationMethod:
|
|
547
|
+
authorizationMethod: method,
|
|
548
548
|
authorizationUrl,
|
|
549
549
|
state,
|
|
550
550
|
expiresAt,
|
|
@@ -606,7 +606,7 @@ export class XKOVAMemberBffClient {
|
|
|
606
606
|
if (initial?.completionMode === 'account_center_result_code' &&
|
|
607
607
|
initial.status === 'pending' &&
|
|
608
608
|
initial.intent === 'action' &&
|
|
609
|
-
initial.actionAuthorization?.method
|
|
609
|
+
['hosted_passkey', 'xkova_webauthn'].includes(initial.actionAuthorization?.method ?? '')) {
|
|
610
610
|
const completion = await this.completeAccountCenterHandoff(input);
|
|
611
611
|
if (!completion.signingExchangeCode || !completion.signingUrl) {
|
|
612
612
|
throw new Error('XKOVA Hosted action completion omitted its signing projection');
|
|
@@ -69,7 +69,7 @@ export declare class XKOVAMemberResources {
|
|
|
69
69
|
} | null;
|
|
70
70
|
}>;
|
|
71
71
|
actionReadiness: (control?: XKOVARequestControl) => Promise<{
|
|
72
|
-
authorization_method: "hosted_passkey" | "external_oidc";
|
|
72
|
+
authorization_method: "hosted_passkey" | "external_oidc" | "xkova_webauthn";
|
|
73
73
|
setup_status: "passkey_required" | "recovery_acknowledgement_required" | "recovery_required" | "ready" | "externally_managed";
|
|
74
74
|
action_authorization_enabled: boolean;
|
|
75
75
|
requires_fresh_proof: true;
|
|
@@ -107,6 +107,15 @@ export declare class XKOVAMemberResources {
|
|
|
107
107
|
wallets: (control?: XKOVARequestControl) => Promise<{
|
|
108
108
|
data: import("./generated/types.js").components["schemas"]["Wallet"][];
|
|
109
109
|
}>;
|
|
110
|
+
walletAuth: (control?: XKOVARequestControl) => Promise<{
|
|
111
|
+
strategy: "auth_endpoint";
|
|
112
|
+
payload: string;
|
|
113
|
+
client_id: string;
|
|
114
|
+
project_id: string;
|
|
115
|
+
external_user_id: string;
|
|
116
|
+
expires_at: string;
|
|
117
|
+
expected_address?: string;
|
|
118
|
+
} & Record<string, never>>;
|
|
110
119
|
walletReadiness: (control?: XKOVARequestControl) => Promise<{
|
|
111
120
|
status: "not_registered" | "provisioning" | "ready";
|
|
112
121
|
wallets: import("./generated/types.js").components["schemas"]["Wallet"][];
|
package/dist/member-resources.js
CHANGED
|
@@ -31,7 +31,7 @@ export class XKOVAMemberResources {
|
|
|
31
31
|
return this.client.wallets;
|
|
32
32
|
}
|
|
33
33
|
self = {
|
|
34
|
-
profile: () => this.client.accountHolders.
|
|
34
|
+
profile: () => this.client.accountHolders.selfProfile(this.context),
|
|
35
35
|
productEnrollment: (product, control) => this.client.accountHolders.selfProductEnrollment(this.context, product, control),
|
|
36
36
|
acceptProductEnrollment: (product, body, opts) => this.client.accountHolders.acceptSelfProductEnrollment(this.context, product, body, opts),
|
|
37
37
|
actionReadiness: (control) => this.client.accountHolders.selfActionReadiness({ ...this.context, accountHolderId: this.accountHolderId }, control),
|
|
@@ -39,6 +39,7 @@ export class XKOVAMemberResources {
|
|
|
39
39
|
verification: (control) => this.client.accountHolders.selfVerification(this.context, control),
|
|
40
40
|
balance: (control) => this.client.accountHolders.selfBalance(this.context, control),
|
|
41
41
|
wallets: (control) => this.client.accountHolders.listSelfWallets(this.context, control),
|
|
42
|
+
walletAuth: (control) => this.client.accountHolders.selfWalletAuth(this.context, control),
|
|
42
43
|
walletReadiness: (control) => this.client.accountHolders.selfWalletReadiness(this.context, control),
|
|
43
44
|
ensureWalletProvisioning: (opts) => this.client.accountHolders.ensureSelfWalletProvisioning(this.context, opts),
|
|
44
45
|
bankBalance: (control) => this.client.accountHolders.selfBankBalance(this.context, control),
|
|
@@ -50,10 +51,10 @@ export class XKOVAMemberResources {
|
|
|
50
51
|
requestDataExport: (opts) => this.client.accountHolders.requestSelfDataExport(this.context, opts),
|
|
51
52
|
dataExport: (id, control) => this.client.accountHolders.selfDataExport(this.context, id, control),
|
|
52
53
|
transactions: (query, control) => this.client.accountHolders.listSelfTransactions(this.context, query, control),
|
|
53
|
-
avatar: () => this.client.accountHolders.
|
|
54
|
-
uploadAvatar: (image, control) => this.client.accountHolders.
|
|
55
|
-
deleteAvatar: (opts) => this.client.accountHolders.
|
|
56
|
-
confirmAvatar: (body, opts) => this.client.accountHolders.
|
|
57
|
-
presignAvatarUpload: (body, opts) => this.client.accountHolders.
|
|
54
|
+
avatar: () => this.client.accountHolders.selfAvatarUrl(this.context),
|
|
55
|
+
uploadAvatar: (image, control) => this.client.accountHolders.uploadSelfAvatar(this.context, image, control),
|
|
56
|
+
deleteAvatar: (opts) => this.client.accountHolders.deleteSelfAvatar(this.context, opts),
|
|
57
|
+
confirmAvatar: (body, opts) => this.client.accountHolders.confirmSelfAvatar(this.context, body, opts),
|
|
58
|
+
presignAvatarUpload: (body, opts) => this.client.accountHolders.presignSelfAvatarUpload(this.context, body, opts),
|
|
58
59
|
};
|
|
59
60
|
}
|
|
@@ -100,6 +100,32 @@ export declare class AccountHoldersResource extends Resource {
|
|
|
100
100
|
next_cursor?: string | null;
|
|
101
101
|
has_more: boolean;
|
|
102
102
|
}>;
|
|
103
|
+
selfProfile(context: XKOVAMemberSessionContext, control?: XKOVARequestControl): Promise<{
|
|
104
|
+
id: import("../generated/types.js").components["schemas"]["AccountHolderId"];
|
|
105
|
+
tenant_id?: string;
|
|
106
|
+
state: "active" | "held" | "closed" | "closed_uncooperative" | "provisioning_failed";
|
|
107
|
+
state_reason?: string | null;
|
|
108
|
+
state_changed_at?: import("../generated/types.js").components["schemas"]["TimestampUtc"] | null;
|
|
109
|
+
tier: "tier_1" | "tier_2";
|
|
110
|
+
tier_2_uplift_status?: "not_requested" | "pending" | "passed" | "failed";
|
|
111
|
+
first_use_completed: boolean;
|
|
112
|
+
cip_payload?: {
|
|
113
|
+
name_hash?: string;
|
|
114
|
+
dob_hash?: string;
|
|
115
|
+
id_hash?: string;
|
|
116
|
+
address_hash?: string;
|
|
117
|
+
} | null;
|
|
118
|
+
cip_accepted_at?: import("../generated/types.js").components["schemas"]["TimestampUtc"] | null;
|
|
119
|
+
merchant_role_state?: "none" | "pending_review" | "approved" | "rejected" | "revoked";
|
|
120
|
+
auto_save_contacts?: boolean;
|
|
121
|
+
created_at: import("../generated/types.js").components["schemas"]["TimestampUtc"];
|
|
122
|
+
updated_at?: import("../generated/types.js").components["schemas"]["TimestampUtc"];
|
|
123
|
+
email?: string | null;
|
|
124
|
+
first_name?: string | null;
|
|
125
|
+
last_name?: string | null;
|
|
126
|
+
phone?: string | null;
|
|
127
|
+
avatar_url?: string | null;
|
|
128
|
+
}>;
|
|
103
129
|
selfVerification(context: XKOVAMemberSessionContext, control?: XKOVARequestControl): Promise<{
|
|
104
130
|
required: boolean;
|
|
105
131
|
status: string;
|
|
@@ -148,6 +174,15 @@ export declare class AccountHoldersResource extends Resource {
|
|
|
148
174
|
listSelfWallets(context: XKOVAMemberSessionContext, control?: XKOVARequestControl): Promise<{
|
|
149
175
|
data: import("../generated/types.js").components["schemas"]["Wallet"][];
|
|
150
176
|
}>;
|
|
177
|
+
selfWalletAuth(context: XKOVAMemberSessionContext, control?: XKOVARequestControl): Promise<{
|
|
178
|
+
strategy: "auth_endpoint";
|
|
179
|
+
payload: string;
|
|
180
|
+
client_id: string;
|
|
181
|
+
project_id: string;
|
|
182
|
+
external_user_id: string;
|
|
183
|
+
expires_at: string;
|
|
184
|
+
expected_address?: string;
|
|
185
|
+
} & Record<string, never>>;
|
|
151
186
|
selfWalletReadiness(context: XKOVAMemberSessionContext, control?: XKOVARequestControl): Promise<{
|
|
152
187
|
status: "not_registered" | "provisioning" | "ready";
|
|
153
188
|
wallets: import("../generated/types.js").components["schemas"]["Wallet"][];
|
|
@@ -173,7 +208,7 @@ export declare class AccountHoldersResource extends Resource {
|
|
|
173
208
|
selfActionReadiness(context: XKOVAMemberSessionContext & {
|
|
174
209
|
accountHolderId: string;
|
|
175
210
|
}, control?: XKOVARequestControl): Promise<{
|
|
176
|
-
authorization_method: "hosted_passkey" | "external_oidc";
|
|
211
|
+
authorization_method: "hosted_passkey" | "external_oidc" | "xkova_webauthn";
|
|
177
212
|
setup_status: "passkey_required" | "recovery_acknowledgement_required" | "recovery_required" | "ready" | "externally_managed";
|
|
178
213
|
action_authorization_enabled: boolean;
|
|
179
214
|
requires_fresh_proof: true;
|
|
@@ -253,6 +288,70 @@ export declare class AccountHoldersResource extends Resource {
|
|
|
253
288
|
uploadAvatar(id: string, image: Blob, control?: XKOVARequestControl): Promise<{
|
|
254
289
|
url: string | null;
|
|
255
290
|
}>;
|
|
291
|
+
uploadSelfAvatar(context: XKOVAMemberSessionContext, image: Blob, control?: XKOVARequestControl): Promise<{
|
|
292
|
+
url: string | null;
|
|
293
|
+
}>;
|
|
294
|
+
private uploadAvatarImage;
|
|
295
|
+
selfAvatarUrl(context: XKOVAMemberSessionContext): Promise<{
|
|
296
|
+
url: string | null;
|
|
297
|
+
}>;
|
|
298
|
+
deleteSelfAvatar(context: XKOVAMemberSessionContext, opts?: XKOVAMutationOptions): Promise<{
|
|
299
|
+
id: import("../generated/types.js").components["schemas"]["AccountHolderId"];
|
|
300
|
+
tenant_id?: string;
|
|
301
|
+
state: "active" | "held" | "closed" | "closed_uncooperative" | "provisioning_failed";
|
|
302
|
+
state_reason?: string | null;
|
|
303
|
+
state_changed_at?: import("../generated/types.js").components["schemas"]["TimestampUtc"] | null;
|
|
304
|
+
tier: "tier_1" | "tier_2";
|
|
305
|
+
tier_2_uplift_status?: "not_requested" | "pending" | "passed" | "failed";
|
|
306
|
+
first_use_completed: boolean;
|
|
307
|
+
cip_payload?: {
|
|
308
|
+
name_hash?: string;
|
|
309
|
+
dob_hash?: string;
|
|
310
|
+
id_hash?: string;
|
|
311
|
+
address_hash?: string;
|
|
312
|
+
} | null;
|
|
313
|
+
cip_accepted_at?: import("../generated/types.js").components["schemas"]["TimestampUtc"] | null;
|
|
314
|
+
merchant_role_state?: "none" | "pending_review" | "approved" | "rejected" | "revoked";
|
|
315
|
+
auto_save_contacts?: boolean;
|
|
316
|
+
created_at: import("../generated/types.js").components["schemas"]["TimestampUtc"];
|
|
317
|
+
updated_at?: import("../generated/types.js").components["schemas"]["TimestampUtc"];
|
|
318
|
+
email?: string | null;
|
|
319
|
+
first_name?: string | null;
|
|
320
|
+
last_name?: string | null;
|
|
321
|
+
phone?: string | null;
|
|
322
|
+
avatar_url?: string | null;
|
|
323
|
+
}>;
|
|
324
|
+
confirmSelfAvatar(context: XKOVAMemberSessionContext, body: ReqBody<'confirmAccountHolderSelfAvatar'>, opts?: XKOVAMutationOptions): Promise<{
|
|
325
|
+
id: import("../generated/types.js").components["schemas"]["AccountHolderId"];
|
|
326
|
+
tenant_id?: string;
|
|
327
|
+
state: "active" | "held" | "closed" | "closed_uncooperative" | "provisioning_failed";
|
|
328
|
+
state_reason?: string | null;
|
|
329
|
+
state_changed_at?: import("../generated/types.js").components["schemas"]["TimestampUtc"] | null;
|
|
330
|
+
tier: "tier_1" | "tier_2";
|
|
331
|
+
tier_2_uplift_status?: "not_requested" | "pending" | "passed" | "failed";
|
|
332
|
+
first_use_completed: boolean;
|
|
333
|
+
cip_payload?: {
|
|
334
|
+
name_hash?: string;
|
|
335
|
+
dob_hash?: string;
|
|
336
|
+
id_hash?: string;
|
|
337
|
+
address_hash?: string;
|
|
338
|
+
} | null;
|
|
339
|
+
cip_accepted_at?: import("../generated/types.js").components["schemas"]["TimestampUtc"] | null;
|
|
340
|
+
merchant_role_state?: "none" | "pending_review" | "approved" | "rejected" | "revoked";
|
|
341
|
+
auto_save_contacts?: boolean;
|
|
342
|
+
created_at: import("../generated/types.js").components["schemas"]["TimestampUtc"];
|
|
343
|
+
updated_at?: import("../generated/types.js").components["schemas"]["TimestampUtc"];
|
|
344
|
+
email?: string | null;
|
|
345
|
+
first_name?: string | null;
|
|
346
|
+
last_name?: string | null;
|
|
347
|
+
phone?: string | null;
|
|
348
|
+
avatar_url?: string | null;
|
|
349
|
+
}>;
|
|
350
|
+
presignSelfAvatarUpload(context: XKOVAMemberSessionContext, body: ReqBody<'presignAccountHolderSelfAvatarUpload'>, opts?: XKOVAMutationOptions): Promise<{
|
|
351
|
+
upload_url: string;
|
|
352
|
+
object_key: string;
|
|
353
|
+
expires_at: import("../generated/types.js").components["schemas"]["TimestampUtc"];
|
|
354
|
+
}>;
|
|
256
355
|
avatarUrl(id: string): Promise<{
|
|
257
356
|
url: string | null;
|
|
258
357
|
}>;
|
|
@@ -28,6 +28,9 @@ export class AccountHoldersResource extends Resource {
|
|
|
28
28
|
history(id, query = {}) {
|
|
29
29
|
return this.getJson(`/account-holders/${this.enc(id)}/history`, query);
|
|
30
30
|
}
|
|
31
|
+
selfProfile(context, control) {
|
|
32
|
+
return this.getJson('/account-holders/self', undefined, control, memberSessionHeaders(context));
|
|
33
|
+
}
|
|
31
34
|
selfVerification(context, control) {
|
|
32
35
|
return this.getJson('/account-holders/self/verification', undefined, control, memberSessionHeaders(context));
|
|
33
36
|
}
|
|
@@ -43,6 +46,9 @@ export class AccountHoldersResource extends Resource {
|
|
|
43
46
|
listSelfWallets(context, control) {
|
|
44
47
|
return this.getJson('/account-holders/self/wallets', undefined, control, memberSessionHeaders(context));
|
|
45
48
|
}
|
|
49
|
+
selfWalletAuth(context, control) {
|
|
50
|
+
return this.postJson('/account-holders/self/wallet-auth', undefined, control, undefined, memberSessionHeaders(context));
|
|
51
|
+
}
|
|
46
52
|
selfWalletReadiness(context, control) {
|
|
47
53
|
return this.getJson('/account-holders/self/wallet-readiness', undefined, control, memberSessionHeaders(context));
|
|
48
54
|
}
|
|
@@ -64,7 +70,7 @@ export class AccountHoldersResource extends Resource {
|
|
|
64
70
|
}
|
|
65
71
|
const readiness = status.action_readiness;
|
|
66
72
|
if (!readiness ||
|
|
67
|
-
!['hosted_passkey', 'external_oidc'].includes(readiness.authorization_method) ||
|
|
73
|
+
!['hosted_passkey', 'external_oidc', 'xkova_webauthn'].includes(readiness.authorization_method) ||
|
|
68
74
|
![
|
|
69
75
|
'passkey_required',
|
|
70
76
|
'recovery_acknowledgement_required',
|
|
@@ -109,15 +115,26 @@ export class AccountHoldersResource extends Resource {
|
|
|
109
115
|
* member context and cookies never follow the presigned URL or a redirect.
|
|
110
116
|
*/
|
|
111
117
|
async uploadAvatar(id, image, control = {}) {
|
|
118
|
+
return this.uploadAvatarImage(image, control, {
|
|
119
|
+
presign: (body) => this.presignAvatarUpload(id, body, control),
|
|
120
|
+
confirm: (object_key) => this.confirmAvatar(id, { object_key }, control),
|
|
121
|
+
read: () => this.avatarUrl(id),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
async uploadSelfAvatar(context, image, control = {}) {
|
|
125
|
+
return this.uploadAvatarImage(image, control, {
|
|
126
|
+
presign: (body) => this.presignSelfAvatarUpload(context, body, control),
|
|
127
|
+
confirm: (object_key) => this.confirmSelfAvatar(context, { object_key }, control),
|
|
128
|
+
read: () => this.selfAvatarUrl(context),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
async uploadAvatarImage(image, control, operations) {
|
|
112
132
|
if (!['image/png', 'image/jpeg', 'image/webp', 'image/gif'].includes(image.type) ||
|
|
113
133
|
image.size === 0 ||
|
|
114
134
|
image.size > 5 * 1024 * 1024) {
|
|
115
135
|
throw new TypeError('Avatar must be a PNG, JPEG, WebP, or GIF image of at most 5 MiB');
|
|
116
136
|
}
|
|
117
|
-
const upload = await
|
|
118
|
-
content_type: image.type,
|
|
119
|
-
content_length: image.size,
|
|
120
|
-
}, control);
|
|
137
|
+
const upload = await operations.presign({ content_type: image.type, content_length: image.size });
|
|
121
138
|
const target = new URL(upload.upload_url);
|
|
122
139
|
if (target.username ||
|
|
123
140
|
target.password ||
|
|
@@ -151,8 +168,20 @@ export class AccountHoldersResource extends Resource {
|
|
|
151
168
|
}
|
|
152
169
|
if (!response.ok)
|
|
153
170
|
throw new XKOVAUploadError('Object storage rejected the avatar upload', response.status);
|
|
154
|
-
await
|
|
155
|
-
return
|
|
171
|
+
await operations.confirm(upload.object_key);
|
|
172
|
+
return operations.read();
|
|
173
|
+
}
|
|
174
|
+
selfAvatarUrl(context) {
|
|
175
|
+
return this.getJson('/account-holders/self/avatar', undefined, {}, memberSessionHeaders(context));
|
|
176
|
+
}
|
|
177
|
+
deleteSelfAvatar(context, opts) {
|
|
178
|
+
return this.deleteJson('/account-holders/self/avatar', opts, undefined, memberSessionHeaders(context));
|
|
179
|
+
}
|
|
180
|
+
confirmSelfAvatar(context, body, opts) {
|
|
181
|
+
return this.postJson('/account-holders/self/avatar/confirm', body, opts, undefined, memberSessionHeaders(context));
|
|
182
|
+
}
|
|
183
|
+
presignSelfAvatarUpload(context, body, opts) {
|
|
184
|
+
return this.postJson('/account-holders/self/avatar/upload-url', body, opts, undefined, memberSessionHeaders(context));
|
|
156
185
|
}
|
|
157
186
|
avatarUrl(id) {
|
|
158
187
|
return this.getJson(`/account-holders/${this.enc(id)}/avatar`);
|
package/llms.txt
CHANGED
|
@@ -10,7 +10,7 @@ Use this package on a Node.js 22+ server. Read the installed declarations before
|
|
|
10
10
|
- `dist/member-bff.d.ts`: authorization, session persistence, refresh, logout, action reviews, and human authorization.
|
|
11
11
|
- `dist/member-resources.d.ts`: typed resources bound to the exact authenticated member.
|
|
12
12
|
- [Quickstart](https://docs.xkova.com/getting-started.html): sandbox access and first authenticated call.
|
|
13
|
-
- [Customer OpenAPI](https://github.com/XKOVA/typescript-sdk/blob/main/schema/customer-api.json):
|
|
13
|
+
- [Customer OpenAPI](https://github.com/XKOVA/typescript-sdk/blob/main/schema/customer-api.json): machine-readable contract for the public SDK source. For an installed release, use its generated declarations.
|
|
14
14
|
- [SDK guide](https://docs.xkova.com/sdk-overview.html): client and resource examples.
|
|
15
15
|
- [Workflow guide](https://docs.xkova.com/sdk-workflows.html): supported workflow helpers.
|
|
16
16
|
- [Member integration](https://docs.xkova.com/embedded-member.html): browser, BFF, identity, and signing boundaries.
|