@didit-protocol/sdk-node 1.0.1 → 2.0.0

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/index.cjs CHANGED
@@ -282,7 +282,7 @@ function decodeDates(value, plan, named, depth = 0) {
282
282
  }
283
283
 
284
284
  // src/core/version.ts
285
- var VERSION = "1.0.1";
285
+ var VERSION = "2.0.0";
286
286
 
287
287
  // src/core/runtime.ts
288
288
  function processLike() {
@@ -1192,6 +1192,7 @@ var DATE_PLANS = {
1192
1192
  updated_at: 1
1193
1193
  }
1194
1194
  },
1195
+ BiometricRetention: { p: { deletes_at: 1 } },
1195
1196
  BiometricTemplatesListResponse: {
1196
1197
  p: { results: { i: { p: { retained_at: 1, expires_at: 1, purged_at: 1 } } } }
1197
1198
  },
@@ -1304,6 +1305,10 @@ var DATE_PLANS = {
1304
1305
  },
1305
1306
  FeatureStatusOverride: { p: { requested_at: 1, applied_at: 1, cancelled_at: 1 } },
1306
1307
  FraudCheckResponse: { p: { created_at: 1, completed_at: 1 } },
1308
+ GeolocationAttempt: {
1309
+ p: { measured_at: 1, consent: { p: { accepted_at: 1 } }, received_at: 1, created_at: 1 }
1310
+ },
1311
+ GeolocationCheck: { p: { measured_at: 1, consent: { p: { accepted_at: 1 } } } },
1307
1312
  IPRiskResponse: { p: { created_at: 1 } },
1308
1313
  IdVerificationVerifyResponse: { p: { created_at: 1 } },
1309
1314
  ImportJobSummary: { p: { resumes_at: 1, created_at: 1, started_at: 1, completed_at: 1 } },
@@ -1325,32 +1330,67 @@ var DATE_PLANS = {
1325
1330
  InvestigatorSettings: { p: { stage_changed_at: 1 } },
1326
1331
  KybListShareholdersResponse: {
1327
1332
  p: {
1328
- kyb_registry: { p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 } },
1333
+ kyb_registry: {
1334
+ p: {
1335
+ vat_checked_at: 1,
1336
+ confirmed_by_user_at: 1,
1337
+ last_console_edit_at: 1,
1338
+ registry_monitoring: { p: { enrolled_at: 1, cancelled_at: 1, last_event_at: 1 } }
1339
+ }
1340
+ },
1329
1341
  created_at: 1
1330
1342
  }
1331
1343
  },
1332
1344
  KybListShareholdersResponse202: {
1333
1345
  p: {
1334
- kyb_registry: { p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 } },
1346
+ kyb_registry: {
1347
+ p: {
1348
+ vat_checked_at: 1,
1349
+ confirmed_by_user_at: 1,
1350
+ last_console_edit_at: 1,
1351
+ registry_monitoring: { p: { enrolled_at: 1, cancelled_at: 1, last_event_at: 1 } }
1352
+ }
1353
+ },
1335
1354
  created_at: 1
1336
1355
  }
1337
1356
  },
1338
1357
  KybListUbosResponse: {
1339
1358
  p: {
1340
- kyb_registry: { p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 } },
1359
+ kyb_registry: {
1360
+ p: {
1361
+ vat_checked_at: 1,
1362
+ confirmed_by_user_at: 1,
1363
+ last_console_edit_at: 1,
1364
+ registry_monitoring: { p: { enrolled_at: 1, cancelled_at: 1, last_event_at: 1 } }
1365
+ }
1366
+ },
1341
1367
  created_at: 1
1342
1368
  }
1343
1369
  },
1344
1370
  KybListUbosResponse202: {
1345
1371
  p: {
1346
- kyb_registry: { p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 } },
1372
+ kyb_registry: {
1373
+ p: {
1374
+ vat_checked_at: 1,
1375
+ confirmed_by_user_at: 1,
1376
+ last_console_edit_at: 1,
1377
+ registry_monitoring: { p: { enrolled_at: 1, cancelled_at: 1, last_event_at: 1 } }
1378
+ }
1379
+ },
1347
1380
  created_at: 1
1348
1381
  }
1349
1382
  },
1350
1383
  KybSearchResponse: { p: { created_at: 1 } },
1351
1384
  KybSelectResponse: {
1352
1385
  p: {
1353
- kyb_registry: { p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 } },
1386
+ kyb_registry: {
1387
+ p: {
1388
+ vat_checked_at: 1,
1389
+ confirmed_by_user_at: 1,
1390
+ last_console_edit_at: 1,
1391
+ registry_monitoring: { p: { enrolled_at: 1, cancelled_at: 1, last_event_at: 1 } }
1392
+ }
1393
+ },
1354
1394
  created_at: 1
1355
1395
  }
1356
1396
  },
@@ -1436,6 +1476,8 @@ var DATE_PLANS = {
1436
1476
  RoutingPublicationPolicyRevision: { p: { published_at: 1 } },
1437
1477
  SessionDecision: {
1438
1478
  p: {
1479
+ status_override: { p: { overridden_at: 1 } },
1480
+ decision_trace: { p: { decided_at: 1 } },
1439
1481
  id_verifications: {
1440
1482
  i: {
1441
1483
  p: {
@@ -1484,13 +1526,25 @@ var DATE_PLANS = {
1484
1526
  signatures: { i: "SignatureResult" },
1485
1527
  aml_screenings: { i: "AMLScreening" },
1486
1528
  ip_analyses: { i: { p: { matches: { i: { p: { verification_date: 1 } } } } } },
1529
+ geolocation_checks: { i: "GeolocationCheck" },
1530
+ geolocation_attempts: { i: "GeolocationAttempt" },
1487
1531
  reviews: { i: { p: { created_at: 1 } } },
1532
+ assignee: { p: { assigned_at: 1 } },
1533
+ waiting_since: 1,
1534
+ sla_due_at: 1,
1488
1535
  created_at: 1,
1489
1536
  expires_at: 1,
1490
1537
  registry_checks: {
1491
1538
  i: {
1492
1539
  p: {
1493
- company: { p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 } }
1540
+ company: {
1541
+ p: {
1542
+ vat_checked_at: 1,
1543
+ confirmed_by_user_at: 1,
1544
+ last_console_edit_at: 1,
1545
+ registry_monitoring: { p: { enrolled_at: 1, cancelled_at: 1, last_event_at: 1 } }
1546
+ }
1547
+ }
1494
1548
  }
1495
1549
  }
1496
1550
  },
@@ -1509,11 +1563,14 @@ var DATE_PLANS = {
1509
1563
  document_verifications: { i: { p: { items: { i: { p: { created_at: 1 } } } } } },
1510
1564
  resubmissions: { i: { p: { created_at: 1 } } },
1511
1565
  biometric_consent: { p: { given_at: 1, declined_at: 1, face_data_deleted_at: 1 } },
1512
- investigator: "InvestigatorBlock"
1566
+ investigator: "InvestigatorBlock",
1567
+ biometric_retention: "BiometricRetention",
1568
+ full_session_video_recorded_at: 1
1513
1569
  }
1514
1570
  },
1515
1571
  SessionDeletionJob: { p: { created_at: 1, completed_at: 1 } },
1516
1572
  SessionEvent: { p: { created_at: 1 } },
1573
+ SessionFilesExport: { p: { expires_at: 1, created_at: 1, completed_at: 1 } },
1517
1574
  SessionImportError: { p: { created_at: 1 } },
1518
1575
  SessionImportJob: {
1519
1576
  p: {
@@ -1530,6 +1587,7 @@ var DATE_PLANS = {
1530
1587
  SessionsBatchDeleteResponse: {
1531
1588
  p: { results: { i: { p: { biometric_template_expires_at: 1 } } } }
1532
1589
  },
1590
+ SessionsCreateKybPartyDraftResponse: { p: { created_at: 1, updated_at: 1 } },
1533
1591
  SessionsDeleteResponse: { p: { biometric_template_expires_at: 1 } },
1534
1592
  SessionsImportsListActiveJobsResponse: { p: { results: { i: "ImportJobSummary" } } },
1535
1593
  SessionsImportsListErrorsResponse: { p: { results: { i: "SessionImportError" } } },
@@ -1539,7 +1597,23 @@ var DATE_PLANS = {
1539
1597
  SessionsListFeatureOverridesResponse: {
1540
1598
  p: { flow_finished_at: 1, overrides: { i: "FeatureStatusOverride" } }
1541
1599
  },
1542
- SessionsListResponse: { p: { results: { i: { p: { created_at: 1 } } } } },
1600
+ SessionsListKybPartyDraftsResponse: {
1601
+ p: { parties: { i: { p: { created_at: 1, updated_at: 1 } } } }
1602
+ },
1603
+ SessionsListResponse: {
1604
+ p: {
1605
+ results: {
1606
+ i: {
1607
+ p: {
1608
+ created_at: 1,
1609
+ assignee: { p: { assigned_at: 1 } },
1610
+ waiting_since: 1,
1611
+ sla_due_at: 1
1612
+ }
1613
+ }
1614
+ }
1615
+ }
1616
+ },
1543
1617
  SessionsReviewsCreateResponse: { p: { created_at: 1 } },
1544
1618
  SessionsReviewsListResponse: { p: { results: { i: "ReviewItem" } } },
1545
1619
  SessionsSignaturesValidateResponse: { p: { signatures: { i: "SignatureResult" } } },
@@ -1547,6 +1621,7 @@ var DATE_PLANS = {
1547
1621
  SessionsUpdateKybCompanyDataResponse: {
1548
1622
  p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 }
1549
1623
  },
1624
+ SessionsUpdateKybPartyDraftResponse: { p: { created_at: 1, updated_at: 1 } },
1550
1625
  SignatureFieldResult: { p: { filled_at: 1 } },
1551
1626
  SignatureResult: {
1552
1627
  p: {
@@ -1633,6 +1708,9 @@ var DATE_PLANS = {
1633
1708
  TravelRuleDiscoveryStep: { p: { at: 1 } },
1634
1709
  TravelRuleInboundResponse: { p: { travel_rule: "TravelRuleTransferDetail" } },
1635
1710
  TravelRuleListVaspsResponse: { p: { results: { i: "VaspDirectoryEntry" } } },
1711
+ TravelRuleManualMatchResponse: {
1712
+ p: { deposit: "TravelRuleTransferRow", message: "TravelRuleTransferRow" }
1713
+ },
1636
1714
  TravelRuleMessage: {
1637
1715
  p: { fulfilled_at: 1, attachment: "TravelRuleMessageAttachment", created_at: 1 }
1638
1716
  },
@@ -1691,6 +1769,7 @@ var DATE_PLANS = {
1691
1769
  },
1692
1770
  TravelRuleTransferRow: { p: { txn_date: 1, deadline_at: 1, created_at: 1 } },
1693
1771
  TravelRuleTransfersListResponse: { p: { results: { i: "TravelRuleTransferRow" } } },
1772
+ TravelRuleUnmatchedDepositsListResponse: { p: { results: { i: "TravelRuleTransferRow" } } },
1694
1773
  TravelRuleWalletAddressesListResponse: { p: { results: { i: "WalletAddressEntry" } } },
1695
1774
  TravelRuleWalletProofReview: { p: { method_chosen_at: 1, decided_at: 1, created_at: 1 } },
1696
1775
  TravelRuleWalletProofsListResponse: { p: { results: { i: "TravelRuleWalletProofReview" } } },
@@ -1718,7 +1797,9 @@ var DATE_PLANS = {
1718
1797
  UserListItem: {
1719
1798
  p: { last_session_at: 1, first_session_at: 1, last_activity_at: 1, created_at: 1 }
1720
1799
  },
1721
- UserSessionListItem: { p: { created_at: 1 } },
1800
+ UserSessionListItem: {
1801
+ p: { created_at: 1, assignee: { p: { assigned_at: 1 } }, waiting_since: 1, sla_due_at: 1 }
1802
+ },
1722
1803
  UsersCreateResponse: {
1723
1804
  p: {
1724
1805
  last_session_at: 1,
@@ -1997,7 +2078,7 @@ var AddressValidation = class extends APIResource {
1997
2078
  *
1998
2079
  * **Authentication.** Send your application's API key in `x-api-key`. Missing or invalid credentials return `403` - this API never returns `401`.
1999
2080
  *
2000
- * **Rate limit.** Shared write budget of 300 requests per minute per API key across all POST/PATCH/DELETE endpoints.
2081
+ * **Rate limit.** Shared write budget of 300 requests per minute per API key across POST/PATCH/DELETE endpoints (transaction creates and event ingestion have a separate budget of 600).
2001
2082
  *
2002
2083
  * `POST /v3/address-validation/`
2003
2084
  */
@@ -2137,6 +2218,12 @@ var ANALYTICS_RETRIEVE = {
2137
2218
  "action_type"
2138
2219
  ]
2139
2220
  };
2221
+ var ANALYTICS_RETRIEVE_TODAY = {
2222
+ method: "GET",
2223
+ path: "/v3/organization/{organization_id}/application/{application_id}/analytics/today/",
2224
+ scope: "application",
2225
+ query: ["tz"]
2226
+ };
2140
2227
  var Analytics = class extends APIResource {
2141
2228
  /**
2142
2229
  * Get application analytics
@@ -2152,6 +2239,18 @@ var Analytics = class extends APIResource {
2152
2239
  retrieve(params = {}, options) {
2153
2240
  return this._client.request(ANALYTICS_RETRIEVE, [], params, options);
2154
2241
  }
2242
+ /**
2243
+ * Get today's verifications by hour
2244
+ *
2245
+ * Today's user verification (KYC) sessions, from local midnight in `tz`, counted per local hour they were created in, next to the same hours of the same weekday one week before, and split by the outcome each one holds now: approved, in review or declined. This is the volume card of the Business Console's Home.
2246
+ *
2247
+ * `total` is today so far. `previous_total_so_far` counts the comparison day only up to the same local time, so a change between them compares the same part of both days. The hours still to come today are `0`. A day on which the clocks change has 23 or 25 hours: the missing hour stays `0` and the repeated hour holds both.
2248
+ *
2249
+ * `GET /v3/organization/{organization_id}/application/{application_id}/analytics/today/`
2250
+ */
2251
+ retrieveToday(params = {}, options) {
2252
+ return this._client.request(ANALYTICS_RETRIEVE_TODAY, [], params, options);
2253
+ }
2155
2254
  };
2156
2255
 
2157
2256
  // src/resources/bank.ts
@@ -2165,6 +2264,8 @@ var Bank = class extends APIResource {
2165
2264
  /**
2166
2265
  * Check a bank account
2167
2266
  *
2267
+ * **Not available in production yet.** Bank Verification is switched off in production, so until it is switched on this endpoint answers `404` with `bank_verification_not_available`. Do not build on it yet. The rest of this description is what the endpoint does once it is available.
2268
+ *
2168
2269
  * Check that a bank account belongs to the person or company you name, before you send money to it. No session and no sign-in: send the name and the account, read the result. It is the [account check](/core-technology/bank-verification/account-check) of the Bank Verification step, run from your backend.
2169
2270
  *
2170
2271
  * **What you send.** The account's `country` (ISO 3166-1 alpha-3), the `account` the way that country writes it, and the `holder` name: `full_name` for a person or `business_name` for a company. A business name checks a business account.
@@ -2175,7 +2276,7 @@ var Bank = class extends APIResource {
2175
2276
  *
2176
2277
  * **Every request is a new check.** There is no idempotency key and no endpoint to read a check back, so a retried request runs, and is billed, again. Store the response.
2177
2278
  *
2178
- * **Sandbox.** A sandbox key calls no bank and is charged nothing. The last 4 characters of the IBAN, else of the account number, choose the answer: `0001` a `close_match` with a `holder_name`, `0002` a `close_match` without one, `0003` and `0006` a `no_match`, `0004` `cannot_verify`, `0005` a `503` and `0009` a `400`. Any other ending is a `match`.
2279
+ * **Sandbox.** Where Bank Verification is available, a sandbox key calls no bank and is charged nothing. The last 4 characters of the IBAN, else of the account number, choose the answer: `0001` a `close_match` with a `holder_name`, `0002` a `close_match` without one, `0003` and `0006` a `no_match`, `0004` `cannot_verify`, `0005` a `503` and `0009` a `400`. Any other ending is a `match`.
2179
2280
  *
2180
2281
  * **API keys.** A scoped API key needs write access to sessions.
2181
2282
  *
@@ -4047,7 +4148,7 @@ var Email = class extends APIResource {
4047
4148
  *
4048
4149
  * **Authentication.** Send your application's API key in `x-api-key`. Missing or invalid credentials return `403` - this API never returns `401`.
4049
4150
  *
4050
- * **Rate limit.** Shared write budget of 300 requests per minute per API key across all POST/PATCH/DELETE endpoints.
4151
+ * **Rate limit.** Shared write budget of 300 requests per minute per API key across POST/PATCH/DELETE endpoints (transaction creates and event ingestion have a separate budget of 600).
4051
4152
  *
4052
4153
  * **Social footprint.** Set `enable_social` to `true` to add a `email_social` block: the online platforms this address is registered on, with per-category counts and any profile details available. `profiles_registered: 0` means the platforms were checked and the address was found on none of them - a valid, billable answer. The block is absent when the add-on was not requested or the check could not be completed, and it is not billed in that case. Billing adds one `email_social` unit per request on top of this endpoint's own price.
4053
4154
  *
@@ -4259,7 +4360,7 @@ var IdVerification = class extends APIResource {
4259
4360
  *
4260
4361
  * **How it works.** Send the document's `front_image` (required) and, for two-sided documents, the `back_image`. Upload uncropped photos with all four corners of the document visible - the service detects, aligns, and crops the document itself, so do not pre-crop. The document is classified automatically (you never declare the country or document type), the visual zone is read with OCR, and the MRZ and any barcodes are decoded. Cross-checks then validate dates, number formats, and MRZ check digits, and compare the visual zone against the MRZ. With `perform_document_liveness=true`, the images are additionally screened for screen replays, printed copies, and portrait manipulation.
4261
4362
  *
4262
- * **Decision logic.** `status` is `Approved` unless at least one warning resolves to a decline. Fraud and hard-failure risks always decline: `DOCUMENT_EXPIRED`, `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`, `PORTRAIT_MANIPULATION_DETECTED`, `PUBLIC_DOCUMENT_IMAGE_DETECTED`, plus extraction failures (`NAME_NOT_DETECTED`, `DATE_OF_BIRTH_NOT_DETECTED`, `DOCUMENT_NUMBER_NOT_DETECTED`). (`PORTRAIT_IMAGE_NOT_DETECTED`, `COULD_NOT_DETECT_DOCUMENT_TYPE`, `INVALID_DATE`, and `MRZ_NOT_DETECTED` exist in workflow sessions but are never produced by this standalone endpoint.) Three risk groups are configurable per request via `invalid_mrz_action`, `inconsistent_data_action`, and `expiration_date_not_detected_action` (`DECLINE` or `NO_ACTION`). All other warnings (e.g. `POSSIBLE_DUPLICATED_USER`) are informational and never decline on their own. When `perform_document_liveness=true` (the default) and the forgery check returns no usable score - the provider failed, answered non-200, or answered HTTP 200 with `status="ERR"` - the call returns `200` with `status: "In Review"` and a `DOCUMENT_LIVENESS_NOT_COMPUTED` warning (`log_type: "warning"`) instead of `Approved`: a check that did not run is not evidence that the document is genuine. This escalation is not configurable and never overrides a `Declined`; with `perform_document_liveness=false` the check is skipped and the status follows the remaining warnings as before. A document that cannot be processed at all returns `400` with `{"error": "COULD_NOT_RECOGNIZE_DOCUMENT"}`; a readable but problematic document returns `200` with `status: "Declined"` - always inspect `id_verification.status` and `id_verification.warnings`, not just the HTTP code.
4363
+ * **Decision logic.** `status` is `Approved` unless at least one warning resolves to a decline. Fraud and hard-failure risks always decline: `DOCUMENT_EXPIRED`, `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`, `PORTRAIT_MANIPULATION_DETECTED`, `PUBLIC_DOCUMENT_IMAGE_DETECTED`, plus extraction failures (`NAME_NOT_DETECTED`, `DATE_OF_BIRTH_NOT_DETECTED`, `DOCUMENT_NUMBER_NOT_DETECTED`). (`PORTRAIT_IMAGE_NOT_DETECTED`, `INVALID_DATE`, and `MRZ_NOT_DETECTED` exist in workflow sessions but are never produced by this standalone endpoint. `COULD_NOT_DETECT_DOCUMENT_TYPE` is returned here when the front image does not match a known official document design with high confidence, and declines the request.) Three risk groups are configurable per request via `invalid_mrz_action`, `inconsistent_data_action`, and `expiration_date_not_detected_action` (`DECLINE` or `NO_ACTION`). All other warnings (e.g. `POSSIBLE_DUPLICATED_USER`) are informational and never decline on their own. When `perform_document_liveness=true` (the default) and the forgery check returns no usable score - the provider failed, answered non-200, or answered HTTP 200 with `status="ERR"` - the call returns `200` with `status: "In Review"` and a `DOCUMENT_LIVENESS_NOT_COMPUTED` warning (`log_type: "warning"`) instead of `Approved`: a check that did not run is not evidence that the document is genuine. This escalation is not configurable and never overrides a `Declined`; with `perform_document_liveness=false` the check is skipped and the status follows the remaining warnings as before. A document that cannot be processed at all returns `400` with `{"error": "COULD_NOT_RECOGNIZE_DOCUMENT"}`; a readable but problematic document returns `200` with `status: "Declined"` - always inspect `id_verification.status` and `id_verification.warnings`, not just the HTTP code.
4263
4364
  *
4264
4365
  * **Billing.** Each `200` response consumes one ID Verification API credit (paid from your plan credit or top-up balance). When the organization's balance cannot cover the call, the endpoint returns `403` with the not-enough-credits error before any image processing.
4265
4366
  *
@@ -4367,6 +4468,12 @@ var ID_WALLETS_START_FTN = {
4367
4468
  body: "json",
4368
4469
  dates: "DigitalIdWalletApiWalletVerificationResponse"
4369
4470
  };
4471
+ var ID_WALLETS_START_GOOGLE_WALLET = {
4472
+ method: "POST",
4473
+ path: "/v3/id-verification/wallets/google-wallet/",
4474
+ body: "json",
4475
+ dates: "DigitalIdWalletApiWalletVerificationResponse"
4476
+ };
4370
4477
  var ID_WALLETS_START_GOVBR = {
4371
4478
  method: "POST",
4372
4479
  path: "/v3/id-verification/wallets/govbr/",
@@ -4445,6 +4552,12 @@ var ID_WALLETS_START_VIPPS = {
4445
4552
  body: "json",
4446
4553
  dates: "DigitalIdWalletApiWalletVerificationResponse"
4447
4554
  };
4555
+ var ID_WALLETS_SUBMIT_VERIFICATION_RESPONSE = {
4556
+ method: "POST",
4557
+ path: "/v3/id-verification/wallets/verifications/{request_id}/response/",
4558
+ body: "json",
4559
+ dates: "DigitalIdWalletApiWalletVerificationResponse"
4560
+ };
4448
4561
  var IdWallets = class extends APIResource {
4449
4562
  /**
4450
4563
  * Cancel a wallet verification
@@ -4636,6 +4749,18 @@ var IdWallets = class extends APIResource {
4636
4749
  startFtn(params, options) {
4637
4750
  return this._client.request(ID_WALLETS_START_FTN, [], params, options);
4638
4751
  }
4752
+ /**
4753
+ * Start Google Wallet verification
4754
+ *
4755
+ * Start a Google Wallet sign-in (Google Wallet (ID pass) and US state issuers (mobile driving licence); USA, GBR, BRA, SGP, TWN) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=request_digital_credential with a request Didit signed for your application, usable only from origin. In a user gesture there, pass next_action.digital_credentials.request to navigator.credentials.get({digital: ...}) (or to Android Credential Manager as GetDigitalCredentialOption requestJson), then POST what the wallet returns to /v3/id-verification/wallets/verifications/{request_id}/response/. The browser offers its own QR code when the wallet is on another device. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.
4756
+ *
4757
+ * `POST /v3/id-verification/wallets/google-wallet/`
4758
+ *
4759
+ * Accepts `options.idempotencyKey` (header `Idempotency-Key`).
4760
+ */
4761
+ startGoogleWallet(params, options) {
4762
+ return this._client.request(ID_WALLETS_START_GOOGLE_WALLET, [], params, options);
4763
+ }
4639
4764
  /**
4640
4765
  * Start gov.br verification
4641
4766
  *
@@ -4792,6 +4917,23 @@ var IdWallets = class extends APIResource {
4792
4917
  startVipps(params, options) {
4793
4918
  return this._client.request(ID_WALLETS_START_VIPPS, [], params, options);
4794
4919
  }
4920
+ /**
4921
+ * Submit a wallet response
4922
+ *
4923
+ * Digital Credentials API wallets (Google Wallet): send what the wallet returned to your page or app for a verification whose next_action is request_digital_credential. Didit decrypts it, checks the issuer's signature against the trusted issuer roots, every returned value against its signed digest, and the device signature over your origin and this request, then decides the verification: verified (billed once) or declined with the error code. Single use: a second submit returns the decided verification.
4924
+ *
4925
+ * `POST /v3/id-verification/wallets/verifications/{request_id}/response/`
4926
+ *
4927
+ * @param requestId The request_id the start endpoint returned.
4928
+ */
4929
+ submitVerificationResponse(requestId, params, options) {
4930
+ return this._client.request(
4931
+ ID_WALLETS_SUBMIT_VERIFICATION_RESPONSE,
4932
+ [requestId],
4933
+ params,
4934
+ options
4935
+ );
4936
+ }
4795
4937
  };
4796
4938
 
4797
4939
  // src/resources/investigator.ts
@@ -5060,7 +5202,7 @@ var Ip = class extends APIResource {
5060
5202
  *
5061
5203
  * **Authentication.** Send your application's API key in `x-api-key`. Missing or invalid credentials return `403` - this API never returns `401`.
5062
5204
  *
5063
- * **Rate limit.** Shared write budget of 300 requests per minute per API key across all POST/PATCH/DELETE endpoints.
5205
+ * **Rate limit.** Shared write budget of 300 requests per minute per API key across POST/PATCH/DELETE endpoints (transaction creates and event ingestion have a separate budget of 600).
5064
5206
  *
5065
5207
  * `POST /v3/ip/risk/`
5066
5208
  */
@@ -5076,7 +5218,14 @@ var KYB_LIST_SHAREHOLDERS = {
5076
5218
  body: "json",
5077
5219
  dates: {
5078
5220
  p: {
5079
- kyb_registry: { p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 } },
5221
+ kyb_registry: {
5222
+ p: {
5223
+ vat_checked_at: 1,
5224
+ confirmed_by_user_at: 1,
5225
+ last_console_edit_at: 1,
5226
+ registry_monitoring: { p: { enrolled_at: 1, cancelled_at: 1, last_event_at: 1 } }
5227
+ }
5228
+ },
5080
5229
  created_at: 1
5081
5230
  }
5082
5231
  }
@@ -5087,7 +5236,14 @@ var KYB_LIST_UBOS = {
5087
5236
  body: "json",
5088
5237
  dates: {
5089
5238
  p: {
5090
- kyb_registry: { p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 } },
5239
+ kyb_registry: {
5240
+ p: {
5241
+ vat_checked_at: 1,
5242
+ confirmed_by_user_at: 1,
5243
+ last_console_edit_at: 1,
5244
+ registry_monitoring: { p: { enrolled_at: 1, cancelled_at: 1, last_event_at: 1 } }
5245
+ }
5246
+ },
5091
5247
  created_at: 1
5092
5248
  }
5093
5249
  }
@@ -5104,7 +5260,14 @@ var KYB_SELECT = {
5104
5260
  body: "json",
5105
5261
  dates: {
5106
5262
  p: {
5107
- kyb_registry: { p: { vat_checked_at: 1, confirmed_by_user_at: 1, last_console_edit_at: 1 } },
5263
+ kyb_registry: {
5264
+ p: {
5265
+ vat_checked_at: 1,
5266
+ confirmed_by_user_at: 1,
5267
+ last_console_edit_at: 1,
5268
+ registry_monitoring: { p: { enrolled_at: 1, cancelled_at: 1, last_event_at: 1 } }
5269
+ }
5270
+ },
5108
5271
  created_at: 1
5109
5272
  }
5110
5273
  }
@@ -5115,7 +5278,7 @@ var Kyb = class extends APIResource {
5115
5278
  *
5116
5279
  * Retrieve the Lite profile **plus the direct shareholders** (natural persons and corporate entities, with their ownership bands) of one candidate returned by `POST /v3/kyb/search/`.
5117
5280
  *
5118
- * **Pairing with search.** Pass the candidate's `kyb_response_id` exactly as returned by a search of the same application. The search runs on the Lite registry chain; when the country's ownership data lives at another registry Didit re-finds the company there by registration number, at no extra cost.
5281
+ * **Pairing with search.** Pass the candidate's `kyb_response_id` exactly as returned by a search of the same application. Search at the tier you intend to buy (`tier` on `POST /v3/kyb/search/`), because the search runs on the registry chain that serves that tier and an empty Lite search is not proof that the registry does not hold the company. When the country's ownership data lives at another registry, Didit re-finds the company there by registration number, at no extra cost.
5119
5282
  *
5120
5283
  * **Billing.** Billed at the country's Shareholders price - see [KYB registry pricing](/getting-started/kyb-registry-pricing). When the registry holds no shareholder record for the company (or the country offers no ownership data at all) the Lite profile is delivered and billed instead: read `registry_tier_delivered` and `registry_ownership_status`. The balance is checked against the Shareholders price before any registry call (`403` when short).
5121
5284
  *
@@ -5133,7 +5296,7 @@ var Kyb = class extends APIResource {
5133
5296
  *
5134
5297
  * Retrieve the Lite profile, the direct shareholders **and the ultimate beneficial owners** resolved through the ownership chain (`registry_data.ubo_resolution` carries the corporate parent chain) of one candidate returned by `POST /v3/kyb/search/`.
5135
5298
  *
5136
- * **Pairing with search.** Pass the candidate's `kyb_response_id` exactly as returned by a search of the same application. The search runs on the Lite registry chain; when the country's ownership data lives at another registry Didit re-finds the company there by registration number, at no extra cost.
5299
+ * **Pairing with search.** Pass the candidate's `kyb_response_id` exactly as returned by a search of the same application. Search at the tier you intend to buy (`tier` on `POST /v3/kyb/search/`), because the search runs on the registry chain that serves that tier and an empty Lite search is not proof that the registry does not hold the company. When the country's ownership data lives at another registry, Didit re-finds the company there by registration number, at no extra cost.
5137
5300
  *
5138
5301
  * **Billing.** Billed at the country's UBO price - see [KYB registry pricing](/getting-started/kyb-registry-pricing). The tier delivered is the highest the country and the registry can serve: Shareholders when the resolved report names no natural person as a beneficial owner, Lite when there is no ownership record at all; `registry_tier_delivered` names what was billed. The balance is checked against the UBO price before any registry call (`403` when short).
5139
5302
  *
@@ -5873,7 +6036,7 @@ var Phone = class extends APIResource {
5873
6036
  *
5874
6037
  * **Authentication.** Send your application's API key in `x-api-key`. Missing or invalid credentials return `403` - this API never returns `401`.
5875
6038
  *
5876
- * **Rate limit.** Shared write budget of 300 requests per minute per API key across all POST/PATCH/DELETE endpoints.
6039
+ * **Rate limit.** Shared write budget of 300 requests per minute per API key across POST/PATCH/DELETE endpoints (transaction creates and event ingestion have a separate budget of 600).
5877
6040
  *
5878
6041
  * **Social footprint.** Set `enable_social` to `true` to add a `phone_social` block: the online platforms this number is registered on, with per-category counts and any profile details available. `profiles_registered: 0` means the platforms were checked and the number was found on none of them - a valid, billable answer. The block is absent when the add-on was not requested or the check could not be completed, and it is not billed in that case. Billing adds one `phone_social` unit per request on top of this endpoint's own price.
5879
6042
  *
@@ -5952,7 +6115,7 @@ var Pricing = class extends APIResource {
5952
6115
  /**
5953
6116
  * Get bank verification prices (public, unauthenticated)
5954
6117
  *
5955
- * Returns the list price of each Bank Verification method in every country: bank sign-in with its balance and transactions add-ons, and the account check. Use it to quote a bank step before you build a workflow, or to show bank prices in your own product.
6118
+ * Returns the list price of each Bank Verification method in every country: bank sign-in with its balance and transactions add-ons, and the account check. Bank Verification is not enabled in production yet, so a bank step is refused on production workflows until it is; treat these prices as a list price, not as an offer you can buy today. Use it to quote a bank step before you build a workflow, or to show bank prices in your own product.
5956
6119
  *
5957
6120
  * Public: send no auth header. The response contains no organization data and is the same for every caller. It is cached publicly for one hour and carries an `ETag`, so send `If-None-Match` to get a `304 Not Modified` when nothing changed.
5958
6121
  *
@@ -6491,25 +6654,48 @@ var SESSIONS_CANCEL_FEATURE_OVERRIDE = {
6491
6654
  dates: "FeatureStatusOverride"
6492
6655
  };
6493
6656
  var SESSIONS_CREATE = { method: "POST", path: "/v3/session/", body: "json" };
6657
+ var SESSIONS_CREATE_KYB_PARTY_DRAFT = {
6658
+ method: "POST",
6659
+ path: "/v3/session/{sessionId}/kyb/parties/drafts/",
6660
+ query: ["node_id"],
6661
+ body: "json",
6662
+ dates: { p: { created_at: 1, updated_at: 1 } }
6663
+ };
6494
6664
  var SESSIONS_DELETE = {
6495
6665
  method: "DELETE",
6496
6666
  path: "/v3/session/{sessionId}/delete/",
6497
6667
  body: "json",
6498
6668
  dates: { p: { biometric_template_expires_at: 1 } }
6499
6669
  };
6670
+ var SESSIONS_DELETE_KYB_PARTY_DRAFT = {
6671
+ method: "DELETE",
6672
+ path: "/v3/session/{sessionId}/kyb/parties/drafts/{draftId}/",
6673
+ query: ["node_id"],
6674
+ response: "none"
6675
+ };
6500
6676
  var SESSIONS_EXPORT_AML_SCREENING_HISTORY = {
6501
6677
  method: "GET",
6502
6678
  path: "/v3/session/{sessionId}/aml-screening-history/export/",
6503
- query: ["node_id"],
6679
+ query: ["node_id", "month"],
6504
6680
  response: "binary",
6505
6681
  accept: "text/csv"
6506
6682
  };
6683
+ var SESSIONS_EXPORT_FILES = {
6684
+ method: "POST",
6685
+ path: "/v3/session/{sessionId}/files-export/",
6686
+ dates: "SessionFilesExport"
6687
+ };
6507
6688
  var SESSIONS_GENERATE_PDF = {
6508
6689
  method: "GET",
6509
6690
  path: "/v3/session/{sessionId}/generate-pdf/",
6510
6691
  response: "binary",
6511
6692
  accept: "application/pdf"
6512
6693
  };
6694
+ var SESSIONS_GET_FILES_EXPORT = {
6695
+ method: "GET",
6696
+ path: "/v3/session/{sessionId}/files-export/{exportId}/",
6697
+ dates: "SessionFilesExport"
6698
+ };
6513
6699
  var SESSIONS_IMPORT_SHARED = {
6514
6700
  method: "POST",
6515
6701
  path: "/v3/session/import-shared/",
@@ -6529,6 +6715,9 @@ var SESSIONS_LIST = {
6529
6715
  "workflow_id",
6530
6716
  "date_from",
6531
6717
  "date_to",
6718
+ "tags",
6719
+ "decided_from",
6720
+ "decided_to",
6532
6721
  "country",
6533
6722
  "document_type",
6534
6723
  "document_name",
@@ -6543,12 +6732,25 @@ var SESSIONS_LIST = {
6543
6732
  "euuid",
6544
6733
  "organization_name"
6545
6734
  ],
6546
- dates: { p: { results: { i: { p: { created_at: 1 } } } } }
6735
+ dates: {
6736
+ p: {
6737
+ results: {
6738
+ i: {
6739
+ p: {
6740
+ created_at: 1,
6741
+ assignee: { p: { assigned_at: 1 } },
6742
+ waiting_since: 1,
6743
+ sla_due_at: 1
6744
+ }
6745
+ }
6746
+ }
6747
+ }
6748
+ }
6547
6749
  };
6548
6750
  var SESSIONS_LIST_AML_SCREENING_HISTORY = {
6549
6751
  method: "GET",
6550
6752
  path: "/v3/session/{sessionId}/aml-screening-history/",
6551
- query: ["node_id", "limit", "offset", "ordering"],
6753
+ query: ["node_id", "month", "limit", "offset", "ordering"],
6552
6754
  dates: { p: { results: { i: "AMLScreeningRun" } } }
6553
6755
  };
6554
6756
  var SESSIONS_LIST_EVENTS = {
@@ -6562,6 +6764,17 @@ var SESSIONS_LIST_FEATURE_OVERRIDES = {
6562
6764
  path: "/v3/session/{sessionId}/features/overrides/",
6563
6765
  dates: { p: { flow_finished_at: 1, overrides: { i: "FeatureStatusOverride" } } }
6564
6766
  };
6767
+ var SESSIONS_LIST_KYB_EXTRACTED_PARTIES = {
6768
+ method: "GET",
6769
+ path: "/v3/session/{sessionId}/kyb/extracted-parties/",
6770
+ query: ["node_id"]
6771
+ };
6772
+ var SESSIONS_LIST_KYB_PARTY_DRAFTS = {
6773
+ method: "GET",
6774
+ path: "/v3/session/{sessionId}/kyb/parties/drafts/",
6775
+ query: ["node_id"],
6776
+ dates: { p: { parties: { i: { p: { created_at: 1, updated_at: 1 } } } } }
6777
+ };
6565
6778
  var SESSIONS_LIST_NETWORKS = {
6566
6779
  method: "GET",
6567
6780
  path: "/v3/organization/{organization_id}/application/{application_id}/sessions/{session_id}/networks/",
@@ -6603,6 +6816,12 @@ var SESSIONS_SIMULATE = {
6603
6816
  path: "/v3/session/{sessionId}/simulate/",
6604
6817
  body: "json"
6605
6818
  };
6819
+ var SESSIONS_SUBMIT_KYB_PARTIES = {
6820
+ method: "POST",
6821
+ path: "/v3/session/{sessionId}/kyb/parties/submit/",
6822
+ query: ["node_id"],
6823
+ body: "json"
6824
+ };
6606
6825
  var SESSIONS_UPDATE_AML_HIT_STATUS = {
6607
6826
  method: "PATCH",
6608
6827
  path: "/v3/session/{sessionId}/update-aml-hit-status/",
@@ -6643,6 +6862,13 @@ var SESSIONS_UPDATE_KYB_PARTY = {
6643
6862
  path: "/v3/session/{sessionId}/kyb/parties/{partyUuid}/",
6644
6863
  body: "json"
6645
6864
  };
6865
+ var SESSIONS_UPDATE_KYB_PARTY_DRAFT = {
6866
+ method: "PATCH",
6867
+ path: "/v3/session/{sessionId}/kyb/parties/drafts/{draftId}/",
6868
+ query: ["node_id"],
6869
+ body: "json",
6870
+ dates: { p: { created_at: 1, updated_at: 1 } }
6871
+ };
6646
6872
  var SESSIONS_UPDATE_POA_DATA = {
6647
6873
  method: "PATCH",
6648
6874
  path: "/v3/session/{sessionId}/update-poa-data/",
@@ -6654,6 +6880,13 @@ var SESSIONS_UPDATE_STATUS = {
6654
6880
  path: "/v3/session/{sessionId}/update-status/",
6655
6881
  body: "json"
6656
6882
  };
6883
+ var SESSIONS_UPLOAD_KYB_DOCUMENTS = {
6884
+ method: "POST",
6885
+ path: "/v3/session/{sessionId}/kyb/documents/",
6886
+ query: ["node_id"],
6887
+ body: "multipart",
6888
+ files: ["documents"]
6889
+ };
6657
6890
  var SessionsImports = class extends APIResource {
6658
6891
  /**
6659
6892
  * Cancel an import job
@@ -6680,7 +6913,7 @@ var SessionsImports = class extends APIResource {
6680
6913
  /**
6681
6914
  * Create a verification import job
6682
6915
  *
6683
- * Create an asynchronous import job for historical User Verification sessions, Business Verification sessions, transaction monitoring records, or workflow custom status rules. Set `source=provider` to migrate from another provider: Didit reads Sumsub, Onfido, Persona and ComplyCube with your read-only key, reads Veriff, iDenfy and MetaMap records by the IDs you upload in `file`, and imports an export file in Didit's format for the other providers. Record IDs are namespaced by provider (`sumsub:<id>`) so a re-run skips everything already in Didit. Imports are disabled by default and must be enabled per organization by Didit.
6916
+ * Create an asynchronous import job for historical User Verification sessions, Business Verification sessions, transaction monitoring records, or workflow custom status rules. Set `source=provider` to migrate from another provider: Didit reads Sumsub, Onfido, Persona and ComplyCube with your read-only key, reads Veriff, iDenfy and MetaMap records by the IDs you upload in `file`, and imports an export file in Didit's format for the other providers. Record IDs are namespaced by provider (`sumsub:<id>`) so a re-run skips everything already in Didit, and a record imported through a file with the provider's bare ID is recognised too, in both directions, so moving between a file import and a provider migration never imports a record twice. An application can run up to 4 import jobs at once; a job interrupted by a deploy or a worker restart continues from its last imported row by itself. Imports are disabled by default and must be enabled per organization by Didit.
6684
6917
  *
6685
6918
  * `POST /v3/session/imports/`
6686
6919
  */
@@ -6838,14 +7071,14 @@ var SessionsSignatures = class extends APIResource {
6838
7071
  /**
6839
7072
  * Download a signed document
6840
7073
  *
6841
- * Download the signed PDF of one document of an Electronic Signature step. Use the `signed_file` path of `signatures[].documents[]` in the decision. The PDF holds the document the signer was shown with their field values stamped, the evidence page (unless `signature_evidence_page` is off) and the PAdES signature with its timestamp. Didit checks the file against `sha256_signed` before returning it.
7074
+ * Download the signed PDF of one document of an E-signature step. Use the `signed_file` path of `signatures[].documents[]` in the decision. The PDF holds the document the signer was shown with their field values stamped and the evidence page (unless `signature_evidence_page` is off). An Advanced (AES) PDF also carries the PAdES signature with its timestamp; a Simple PDF has no digital signature, seal or timestamp. Didit checks the file against `sha256_signed` before returning it.
6842
7075
  *
6843
- * Works for User Verification (KYC) and Business Verification (KYB) sessions. Needs `read:sessions`; your API key works. See the [Electronic Signature report](/core-technology/electronic-signature/report-electronic-signature#download-the-signed-documents).
7076
+ * Works for User Verification (KYC) and Business Verification (KYB) sessions. Needs `read:sessions`; your API key works. See the [E-signature report](/core-technology/electronic-signature/report-electronic-signature#download-the-signed-documents).
6844
7077
  *
6845
7078
  * `GET /v3/session/{sessionId}/signatures/{nodeId}/documents/{documentId}/file/`
6846
7079
  *
6847
7080
  * @param sessionId The User Verification (KYC) or Business Verification (KYB) session.
6848
- * @param nodeId The Electronic Signature step: `node_id` of the item in `signatures[]`.
7081
+ * @param nodeId The E-signature step: `node_id` of the item in `signatures[]`.
6849
7082
  * @param documentId `id` of the document in `signatures[].documents[]`.
6850
7083
  */
6851
7084
  downloadDocument(sessionId, nodeId, documentId, options) {
@@ -6859,14 +7092,14 @@ var SessionsSignatures = class extends APIResource {
6859
7092
  /**
6860
7093
  * Download the signature evidence
6861
7094
  *
6862
- * Download a signer's evidence PDF: the level and format, the signer and their verified identity session, the code confirmation, the IP address, each document with its original SHA-256 and field values, the certificate, the timestamp and the SHA-256 of every signed file. Use the `evidence_file` path of the signer's item in `signatures[]`.
7095
+ * Download a signer's evidence PDF: the level and format, the signer, the IP address, each document with its original SHA-256 and field values and the SHA-256 of every signed file, plus, for an Advanced (AES) signature, the verified identity session, the code confirmation, the certificate and the timestamp. Use the `evidence_file` path of the signer's item in `signatures[]`.
6863
7096
  *
6864
7097
  * Always pass `signature_id` when a Business Verification step has several signers: without it, the route picks one of the step's signers. Needs `read:sessions`; your API key works.
6865
7098
  *
6866
7099
  * `GET /v3/session/{sessionId}/signatures/{nodeId}/evidence/`
6867
7100
  *
6868
7101
  * @param sessionId The User Verification (KYC) or Business Verification (KYB) session.
6869
- * @param nodeId The Electronic Signature step: `node_id` of the item in `signatures[]`.
7102
+ * @param nodeId The E-signature step: `node_id` of the item in `signatures[]`.
6870
7103
  */
6871
7104
  downloadEvidence(sessionId, nodeId, params = {}, options) {
6872
7105
  return this._client.request(
@@ -6884,7 +7117,7 @@ var SessionsSignatures = class extends APIResource {
6884
7117
  * `GET /v3/session/{sessionId}/signatures/{nodeId}/fields/{fieldId}/image/`
6885
7118
  *
6886
7119
  * @param sessionId The User Verification (KYC) or Business Verification (KYB) session.
6887
- * @param nodeId The Electronic Signature step: `node_id` of the item in `signatures[]`.
7120
+ * @param nodeId The E-signature step: `node_id` of the item in `signatures[]`.
6888
7121
  * @param fieldId The field on this signer's copy, as in the field's `image_url`.
6889
7122
  */
6890
7123
  downloadFieldImage(sessionId, nodeId, fieldId, options) {
@@ -6898,14 +7131,14 @@ var SessionsSignatures = class extends APIResource {
6898
7131
  /**
6899
7132
  * Validate signatures again
6900
7133
  *
6901
- * Re-check the signed documents of an Electronic Signature step. Didit re-reads every signed PDF, checks its SHA-256 and validates the PAdES signature, the certificate, the revocation data and the timestamp, then saves the result in each signer's `validation` and returns the updated items. Nothing is signed again. Send `signature_id` to check one signer; without it, every signer of the step is checked, and the call fails if any of them hasn't signed.
7134
+ * Re-check the signed documents of an E-signature step. Didit re-reads every signed PDF, checks its SHA-256 and, for an Advanced (AES) signature, validates the PAdES signature, the certificate, the revocation data and the timestamp (a Simple signature has no digital signature, so only the file integrity is checked), then saves the result in each signer's `validation` and returns the updated items. Nothing is signed again. Send `signature_id` to check one signer; without it, every signer of the step is checked, and the call fails if any of them hasn't signed.
6902
7135
  *
6903
7136
  * Needs `write:sessions`; your API key works. In the console it's the **Validate again** button.
6904
7137
  *
6905
7138
  * `POST /v3/session/{sessionId}/signatures/{nodeId}/validate/`
6906
7139
  *
6907
7140
  * @param sessionId The User Verification (KYC) or Business Verification (KYB) session.
6908
- * @param nodeId The Electronic Signature step: `node_id` of the item in `signatures[]`.
7141
+ * @param nodeId The E-signature step: `node_id` of the item in `signatures[]`.
6909
7142
  */
6910
7143
  validate(sessionId, nodeId, params = {}, options) {
6911
7144
  return this._client.request(SESSIONS_SIGNATURES_VALIDATE, [sessionId, nodeId], params, options);
@@ -7074,6 +7307,18 @@ var Sessions = class extends APIResource {
7074
7307
  create(params, options) {
7075
7308
  return this._client.request(SESSIONS_CREATE, [], params, options);
7076
7309
  }
7310
+ /**
7311
+ * Create a KYB party draft
7312
+ *
7313
+ * Add a party (a person or a company) to the list you are preparing for this KYB session. The same fields and rules as the hosted Key People screen apply: a person needs `full_name` or `first_name` and `last_name`, at least one role and a nationality; a company needs `company_name` and the country of incorporation in `nationality`. Nothing is declared or billed until `POST /v3/session/{sessionId}/kyb/parties/submit/`. Requires `write:businesses`.
7314
+ *
7315
+ * `POST /v3/session/{sessionId}/kyb/parties/drafts/`
7316
+ *
7317
+ * @param sessionId UUID of the Business Verification (KYB) session. It must belong to the application of the API key.
7318
+ */
7319
+ createKybPartyDraft(sessionId, params, options) {
7320
+ return this._client.request(SESSIONS_CREATE_KYB_PARTY_DRAFT, [sessionId], params, options);
7321
+ }
7077
7322
  /**
7078
7323
  * Delete a verification session (KYC or KYB)
7079
7324
  *
@@ -7081,7 +7326,7 @@ var Sessions = class extends APIResource {
7081
7326
  *
7082
7327
  * **What is deleted:**
7083
7328
  * - The session and every verification attempt it holds, including results that a resubmission replaced: the decision, extracted data, all related feature records (ID verification, face, liveness, face match, AML, registry checks, IP analysis, and so on), its reviews and its activity log.
7084
- * - All stored files owned by the session: document front/back photos (full, cropped, and privacy-blurred variants), document-capture videos, portrait crops, NFC chip portrait and signature images, face reference images, liveness videos, face-match source/target images, Proof of Address documents, and any extra uploaded files (KYC); uploaded company documents and extra files (KYB). Electronic Signature documents, signed PDFs, evidence PDFs and signature images (KYC and KYB): their download paths stop working. Previously issued media URLs (`https://<media-host>/...`) stop resolving.
7329
+ * - All stored files owned by the session: document front/back photos (full, cropped, and privacy-blurred variants), document-capture videos, portrait crops, NFC chip portrait and signature images, face reference images, liveness videos, face-match source/target images, Proof of Address documents, and any extra uploaded files (KYC); uploaded company documents and extra files (KYB). E-signature documents, signed PDFs, evidence PDFs and signature images (KYC and KYB): their download paths stop working. Previously issued media URLs (`https://<media-host>/...`) stop resolving.
7085
7330
  * - The session's face data. Its face embedding is deleted too, unless you choose to keep an image-free template (see **Face biometric data**).
7086
7331
  * - Webhook deliveries still queued for the session, and their retries. Webhooks already delivered are not affected.
7087
7332
  * - For a Business Verification (KYB) session: the verifications it created for its key people (KYC) and its corporate owners (KYB), recursively, reported as `deleted_child_verifications`. A verification it only links to, such as an existing approved KYC it reused, is not deleted.
@@ -7115,10 +7360,28 @@ var Sessions = class extends APIResource {
7115
7360
  delete(sessionId, params = {}, options) {
7116
7361
  return this._client.request(SESSIONS_DELETE, [sessionId], params, options);
7117
7362
  }
7363
+ /**
7364
+ * Delete a KYB party draft
7365
+ *
7366
+ * Drop one party draft. Declared parties are not affected. Requires `write:businesses`.
7367
+ *
7368
+ * `DELETE /v3/session/{sessionId}/kyb/parties/drafts/{draftId}/`
7369
+ *
7370
+ * @param sessionId UUID of the Business Verification (KYB) session. It must belong to the application of the API key.
7371
+ * @param draftId UUID of the party draft (`draft_id` returned when it was created).
7372
+ */
7373
+ deleteKybPartyDraft(sessionId, draftId, params = {}, options) {
7374
+ return this._client.request(
7375
+ SESSIONS_DELETE_KYB_PARTY_DRAFT,
7376
+ [sessionId, draftId],
7377
+ params,
7378
+ options
7379
+ );
7380
+ }
7118
7381
  /**
7119
7382
  * Export AML screening history as CSV
7120
7383
  *
7121
- * Download the same ongoing-monitoring history as `GET /v3/session/{sessionId}/aml-screening-history/` as a CSV file, one line per completed re-screen, newest first, ready to hand to an auditor. The file is streamed whole (no pagination) and starts with a header line; an empty cell means unknown, dataset dates are never estimated, and a value that would start a spreadsheet formula is prefixed with an apostrophe. Works for KYC and KYB session IDs; pass `node_id` when the session ran more than one AML step. Errors are returned as JSON, not CSV. A scoped API key needs `decisions: read` and `media: read`: the response is a file, so a key without `media: read` gets `403`.
7384
+ * Download the same ongoing-monitoring history as `GET /v3/session/{sessionId}/aml-screening-history/` as a CSV file, one line per completed re-screen, newest first, ready to hand to an auditor. The file is streamed whole (no pagination) and starts with a header line; an empty cell means unknown, dataset dates are never estimated, and a value that would start a spreadsheet formula is prefixed with an apostrophe. Works for KYC and KYB session IDs; pass `node_id` when the session ran more than one AML step. Pass `month` to export one calendar month. Errors are returned as JSON, not CSV. A scoped API key needs `decisions: read` and `media: read`: the response is a file, so a key without `media: read` gets `403`.
7122
7385
  *
7123
7386
  * `GET /v3/session/{sessionId}/aml-screening-history/export/`
7124
7387
  *
@@ -7132,6 +7395,20 @@ var Sessions = class extends APIResource {
7132
7395
  options
7133
7396
  );
7134
7397
  }
7398
+ /**
7399
+ * Export every file of a session
7400
+ *
7401
+ * Start preparing one ZIP with every image, video and document of a User Verification (KYC) or Business Verification (KYB) session, in original quality: the files are stored in the ZIP as they were captured, never recompressed. Answers `202` with the export; read it with `GET /v3/session/{sessionId}/files-export/{exportId}/` until `status` is `READY`, then download `download_url`. While an export of the same session is still being prepared, that export is returned instead of a new one.
7402
+ *
7403
+ * The ZIP is deleted 24 hours after it is ready, and at once when the session is deleted. A deleted session cannot be exported. Every export and every download link handed out is written to the session's audit log. A scoped API key needs `media: read` and `decisions: read`; a console user needs the privilege to read sessions.
7404
+ *
7405
+ * `POST /v3/session/{sessionId}/files-export/`
7406
+ *
7407
+ * @param sessionId UUID of the verification session (the `session_id` returned by `POST /v3/session/`). Accepts both User Verification (KYC) and Business Verification (KYB) session IDs. A deleted session returns `404`.
7408
+ */
7409
+ exportFiles(sessionId, options) {
7410
+ return this._client.request(SESSIONS_EXPORT_FILES, [sessionId], void 0, options);
7411
+ }
7135
7412
  /**
7136
7413
  * Download a PDF report for a verification session
7137
7414
  *
@@ -7166,6 +7443,24 @@ var Sessions = class extends APIResource {
7166
7443
  generatePdf(sessionId, options) {
7167
7444
  return this._client.request(SESSIONS_GENERATE_PDF, [sessionId], void 0, options);
7168
7445
  }
7446
+ /**
7447
+ * Get a session files export
7448
+ *
7449
+ * Progress of an export started with `POST /v3/session/{sessionId}/files-export/`. Once `status` is `READY`, `download_url` is a signed URL of the ZIP that stays valid for a short time; read the export again for a new one until `expires_at`. Each read that hands out a download link is written to the session's audit log. An export of a deleted session returns `404`.
7450
+ *
7451
+ * `GET /v3/session/{sessionId}/files-export/{exportId}/`
7452
+ *
7453
+ * @param sessionId UUID of the verification session (the `session_id` returned by `POST /v3/session/`). Accepts both User Verification (KYC) and Business Verification (KYB) session IDs. A deleted session returns `404`.
7454
+ * @param exportId The `export_id` returned by `POST /v3/session/{sessionId}/files-export/`.
7455
+ */
7456
+ getFilesExport(sessionId, exportId, options) {
7457
+ return this._client.request(
7458
+ SESSIONS_GET_FILES_EXPORT,
7459
+ [sessionId, exportId],
7460
+ void 0,
7461
+ options
7462
+ );
7463
+ }
7169
7464
  /**
7170
7465
  * Redeem a share token to clone a verification session into your application
7171
7466
  *
@@ -7208,7 +7503,7 @@ var Sessions = class extends APIResource {
7208
7503
  /**
7209
7504
  * List AML screening history
7210
7505
  *
7211
- * List every completed ongoing-monitoring re-screen of a session's AML check, newest first by `completed_at`, including the runs where nothing changed: alerts, activity entries and webhooks fire only when a result moves, so this history is the evidence that a clean subject was still being screened. Works for KYC and KYB session IDs; pass `node_id` when the session ran more than one AML step. Only ongoing-monitoring re-screens are listed (the first screening is part of the session decision) and runs from before this history existed are not reconstructed, so a session without ongoing monitoring returns an empty list. `count` is exact up to 100 and capped at 100 above that, so follow `next` until it is `null`. A scoped API key needs `decisions: read`; see [Continuous AML monitoring](https://docs.didit.me/core-technology/aml-screening/continuous-monitoring-aml-screening).
7506
+ * List every completed ongoing-monitoring re-screen of a session's AML check, newest first by `completed_at`, including the runs where nothing changed: alerts, activity entries and webhooks fire only when a result moves, so this history is the evidence that a clean subject was still being screened. Works for KYC and KYB session IDs; pass `node_id` when the session ran more than one AML step. Only ongoing-monitoring re-screens are listed (the first screening is part of the session decision) and runs from before this history existed are not reconstructed, so a session without ongoing monitoring returns an empty list. `count` is exact up to 100 and capped at 100 above that, so follow `next` until it is `null`. Pass `month` to read one calendar month at a time. A scoped API key needs `decisions: read`; see [Continuous AML monitoring](https://docs.didit.me/core-technology/aml-screening/continuous-monitoring-aml-screening).
7212
7507
  *
7213
7508
  * `GET /v3/session/{sessionId}/aml-screening-history/`
7214
7509
  *
@@ -7250,6 +7545,30 @@ var Sessions = class extends APIResource {
7250
7545
  listFeatureOverrides(sessionId, options) {
7251
7546
  return this._client.request(SESSIONS_LIST_FEATURE_OVERRIDES, [sessionId], void 0, options);
7252
7547
  }
7548
+ /**
7549
+ * List the parties named by the uploaded documents
7550
+ *
7551
+ * Return the shareholders and directors that the documents uploaded to this KYB session name, merged per person and attributed to the documents that named them. Show them to your applicant to confirm, then declare them with the party draft endpoints. A range stays a range: `ownership_percent.text` keeps the verbatim figure and `min` / `max` the numbers read from it. Nobody is labelled a UBO here; that is decided when the parties are submitted, from the role settings and ownership thresholds of the workflow. The same list is in the session decision as `document_verifications[].extracted_parties`. Requires `read:businesses` or `read:sessions`.
7552
+ *
7553
+ * `GET /v3/session/{sessionId}/kyb/extracted-parties/`
7554
+ *
7555
+ * @param sessionId UUID of the Business Verification (KYB) session. It must belong to the application of the API key.
7556
+ */
7557
+ listKybExtractedParties(sessionId, params = {}, options) {
7558
+ return this._client.request(SESSIONS_LIST_KYB_EXTRACTED_PARTIES, [sessionId], params, options);
7559
+ }
7560
+ /**
7561
+ * List the KYB party drafts
7562
+ *
7563
+ * List the parties you are preparing for this KYB session, oldest first. A draft is not a declared party: it does not appear in the decision or the console and creates no verification session until you submit it with `POST /v3/session/{sessionId}/kyb/parties/submit/`. Requires `write:businesses`.
7564
+ *
7565
+ * `GET /v3/session/{sessionId}/kyb/parties/drafts/`
7566
+ *
7567
+ * @param sessionId UUID of the Business Verification (KYB) session. It must belong to the application of the API key.
7568
+ */
7569
+ listKybPartyDrafts(sessionId, params = {}, options) {
7570
+ return this._client.request(SESSIONS_LIST_KYB_PARTY_DRAFTS, [sessionId], params, options);
7571
+ }
7253
7572
  /**
7254
7573
  * List networks for a session
7255
7574
  *
@@ -7321,7 +7640,7 @@ var Sessions = class extends APIResource {
7321
7640
  *
7322
7641
  * Retrieve the complete decision report for a verification session - the rolled-up session `status` plus one report per verification feature the workflow executed. This is the canonical read endpoint for both User Verification (KYC) and Business Verification (KYB) sessions: the same path serves both, and the top-level `session_kind` discriminator tells you which shape you received (`"user"` or `"business"`).
7323
7642
  *
7324
- * **Every feature report is a plural array.** V3 workflows are graphs that can run the same feature more than once, so each block (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`, `poa_verifications`, `document_ai_documents`, `phone_verifications`, `email_verifications`, `aml_screenings`, `ip_analyses`, `database_validations`, `questionnaire_responses`) is a JSON array whose items each carry a `node_id` identifying the workflow graph node that produced them. Read NFC as `response.nfc_verifications[0]` - never as a singular `nfc` field. A block is `null` until the workflow has run that feature at least once; features the workflow does not include never appear with data. Electronic Signature results are in `signatures`, which is present only when the workflow has an Electronic Signature step.
7643
+ * **Every feature report is a plural array.** V3 workflows are graphs that can run the same feature more than once, so each block (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`, `poa_verifications`, `document_ai_documents`, `phone_verifications`, `email_verifications`, `aml_screenings`, `ip_analyses`, `database_validations`, `questionnaire_responses`) is a JSON array whose items each carry a `node_id` identifying the workflow graph node that produced them. Read NFC as `response.nfc_verifications[0]` - never as a singular `nfc` field. A block is `null` until the workflow has run that feature at least once; features the workflow does not include never appear with data. E-signature results are in `signatures`, which is present only when the workflow has an E-signature step.
7325
7644
  *
7326
7645
  * **When to call.** The recommended pattern is event-driven: wait for the `status.updated` webhook that fires when the session reaches a decision (`Approved`, `Declined`, `In Review`), then call this endpoint once to fetch the full report. Polling also works - the endpoint can be called at any point in the session lifecycle and returns the data produced so far - but webhook-then-fetch is cheaper and faster. Media URLs in the response (document images, videos, PDFs) are short-lived presigned links: fetch them promptly or re-request the decision to get fresh ones, and do not persist them as long-term references.
7327
7646
  *
@@ -7384,10 +7703,22 @@ var Sessions = class extends APIResource {
7384
7703
  simulate(sessionId, params = {}, options) {
7385
7704
  return this._client.request(SESSIONS_SIMULATE, [sessionId], params, options);
7386
7705
  }
7706
+ /**
7707
+ * Submit the KYB party drafts
7708
+ *
7709
+ * Declare the stored drafts as the company's key people. This is the hosted Key People step under your API key: Didit decides from the role settings and ownership thresholds of the workflow which parties must be verified, creates one individual KYC session (or a KYB sub-session for a corporate owner) for each of them, sends the emails the workflow asks for, and advances the session. Each child session is billed like in the hosted flow. The drafts are consumed. Repeating the call after a successful submit changes nothing and answers `200` with `already_submitted: true` and the parties that already exist. The session must be on the Key People step. Send each person's `kyc_session_url` to them, or embed it. Requires `write:businesses`.
7710
+ *
7711
+ * `POST /v3/session/{sessionId}/kyb/parties/submit/`
7712
+ *
7713
+ * @param sessionId UUID of the Business Verification (KYB) session. It must belong to the application of the API key.
7714
+ */
7715
+ submitKybParties(sessionId, params = {}, options) {
7716
+ return this._client.request(SESSIONS_SUBMIT_KYB_PARTIES, [sessionId], params, options);
7717
+ }
7387
7718
  /**
7388
7719
  * Update an AML hit review status
7389
7720
  *
7390
- * Set the review status of a **single AML hit** (a potential sanction / PEP / watchlist / adverse-media match) returned by AML screening, without changing the overall session decision. Identify the hit by its `hit_id` (the `id` of an entry in the AML check's `hits` array - see the session decision).
7721
+ * Set the review status of a **single AML hit** (a potential sanction / PEP / watchlist / adverse-media match) returned by AML screening, without changing the overall session decision. Identify the hit by its `hit_id` (the `id` of an entry in the AML check's `hits` array - see the session decision). A hit id returned in the earlier format is still accepted; the response always names the hit by its current `id`.
7391
7722
  *
7392
7723
  * `review_status` is one of `Unreviewed`, `Confirmed Match`, `False Positive`, or `Inconclusive`. Reviewer decisions are preserved across ongoing-monitoring updates, so a hit you mark `False Positive` stays that way when the provider re-screens.
7393
7724
  *
@@ -7529,6 +7860,24 @@ var Sessions = class extends APIResource {
7529
7860
  updateKybParty(sessionId, partyUuid, params, options) {
7530
7861
  return this._client.request(SESSIONS_UPDATE_KYB_PARTY, [sessionId, partyUuid], params, options);
7531
7862
  }
7863
+ /**
7864
+ * Edit a KYB party draft
7865
+ *
7866
+ * Change fields of one party draft. The edit is merged into the stored draft and the merged party is validated as a whole, so an edit that would leave the party incomplete is rejected. Changing `first_name` or `last_name` replaces the stored full name. Requires `write:businesses`.
7867
+ *
7868
+ * `PATCH /v3/session/{sessionId}/kyb/parties/drafts/{draftId}/`
7869
+ *
7870
+ * @param sessionId UUID of the Business Verification (KYB) session. It must belong to the application of the API key.
7871
+ * @param draftId UUID of the party draft (`draft_id` returned when it was created).
7872
+ */
7873
+ updateKybPartyDraft(sessionId, draftId, params = {}, options) {
7874
+ return this._client.request(
7875
+ SESSIONS_UPDATE_KYB_PARTY_DRAFT,
7876
+ [sessionId, draftId],
7877
+ params,
7878
+ options
7879
+ );
7880
+ }
7532
7881
  /**
7533
7882
  * Update Proof of Address data extracted from the POA document on a verification session
7534
7883
  *
@@ -7571,6 +7920,18 @@ var Sessions = class extends APIResource {
7571
7920
  updateStatus(sessionId, params, options) {
7572
7921
  return this._client.request(SESSIONS_UPDATE_STATUS, [sessionId], params, options);
7573
7922
  }
7923
+ /**
7924
+ * Upload KYB documents to a session
7925
+ *
7926
+ * Upload one or more corporate documents (articles of incorporation, shareholder register, certificate of incorporation, ...) to the KYB Documents step of a Business Verification session, from your own server instead of the hosted page. Didit runs the hosted pipeline: compression, OCR, tampering and cross-document checks, document grouping, and advances the session when the required document groups are satisfied. The step costs one flat fee however many files you send. The session must be open and on the KYB Documents step, and the company chosen at the registry step must exist. Read the people the documents name with `GET /v3/session/{sessionId}/kyb/extracted-parties/`. Requires `write:businesses`.
7927
+ *
7928
+ * `POST /v3/session/{sessionId}/kyb/documents/`
7929
+ *
7930
+ * @param sessionId UUID of the Business Verification (KYB) session. It must belong to the application of the API key.
7931
+ */
7932
+ uploadKybDocuments(sessionId, params, options) {
7933
+ return this._client.request(SESSIONS_UPLOAD_KYB_DOCUMENTS, [sessionId], params, options);
7934
+ }
7574
7935
  };
7575
7936
 
7576
7937
  // src/resources/transactions.ts
@@ -7692,7 +8053,7 @@ var TRANSACTIONS_GENERATE_PDF = {
7692
8053
  var TRANSACTIONS_LIST = {
7693
8054
  method: "GET",
7694
8055
  path: "/v3/transactions/",
7695
- query: ["limit", "offset", "travel_rule_status"],
8056
+ query: ["limit", "offset", "travel_rule_status", "assignee"],
7696
8057
  dates: {
7697
8058
  p: {
7698
8059
  results: { i: { p: { txn_date: 1, created_at: 1, travel_rule: "TransactionTravelRule" } } }
@@ -8124,6 +8485,29 @@ var TRAVEL_RULE_TRANSFERS_LIST = {
8124
8485
  ],
8125
8486
  dates: { p: { results: { i: "TravelRuleTransferRow" } } }
8126
8487
  };
8488
+ var TRAVEL_RULE_UNMATCHED_DEPOSITS_LIST = {
8489
+ method: "GET",
8490
+ path: "/v3/travel-rule/unmatched/",
8491
+ query: [
8492
+ "direction",
8493
+ "status",
8494
+ "rail",
8495
+ "kind",
8496
+ "currency",
8497
+ "start_date",
8498
+ "end_date",
8499
+ "counterparty",
8500
+ "limit",
8501
+ "offset"
8502
+ ],
8503
+ dates: { p: { results: { i: "TravelRuleTransferRow" } } }
8504
+ };
8505
+ var TRAVEL_RULE_UNMATCHED_DEPOSITS_MATCH = {
8506
+ method: "POST",
8507
+ path: "/v3/travel-rule/unmatched/{transaction_uuid}/match/",
8508
+ body: "json",
8509
+ dates: "TravelRuleManualMatchResponse"
8510
+ };
8127
8511
  var TRAVEL_RULE_WALLET_ADDRESSES_BULK_IMPORT = {
8128
8512
  method: "POST",
8129
8513
  path: "/v3/travel-rule/wallet-addresses/import/",
@@ -8392,6 +8776,35 @@ var TravelRuleTransfers = class extends APIResource {
8392
8776
  return this._client.requestPage(TRAVEL_RULE_TRANSFERS_LIST, [], params, options);
8393
8777
  }
8394
8778
  };
8779
+ var TravelRuleUnmatchedDeposits = class extends APIResource {
8780
+ /**
8781
+ * List unmatched Travel Rule deposits
8782
+ *
8783
+ * Inbound deposits that are still waiting for the originating VASP's Travel Rule data: their transfer is `AWAITING_COUNTERPARTY`, `NOT_ENOUGH_COUNTERPARTY_DATA` or `COUNTERPARTY_VASP_NOT_FOUND`, no received message is paired with them, and nobody matched them by hand. The rows and the filters are the same as in `GET /v3/travel-rule/transfers/`, newest first, paginated with `limit` (default 50) and `offset`. Pair a deposit with the message the originating VASP sent with `POST /v3/travel-rule/unmatched/{transaction_uuid}/match/`.
8784
+ *
8785
+ * `GET /v3/travel-rule/unmatched/`
8786
+ */
8787
+ list(params = {}, options) {
8788
+ return this._client.requestPage(TRAVEL_RULE_UNMATCHED_DEPOSITS_LIST, [], params, options);
8789
+ }
8790
+ /**
8791
+ * Match a Travel Rule deposit to a received message
8792
+ *
8793
+ * Pair an inbound deposit that is still waiting for originator data with the Travel Rule message the originating VASP sent for it. The deposit takes the message's originator data, counterparty VASP and rail, and both transfers record the match on their timelines. `transaction_uuid` is the deposit's `transaction_id` from `GET /v3/travel-rule/unmatched/`. `transaction_id` in the body is the received message's `transaction_id`, from a row of `GET /v3/travel-rule/transfers/?kind=message`; the transfer's own `id` is not found. The message must be for the same asset as the deposit. A deposit or message deleted from the Console answers `404`; one that has already moved on (matched, or no longer waiting) answers `409`.
8794
+ *
8795
+ * `POST /v3/travel-rule/unmatched/{transaction_uuid}/match/`
8796
+ *
8797
+ * @param transactionUuid The `transaction_id` of the unmatched deposit.
8798
+ */
8799
+ match(transactionUuid, params, options) {
8800
+ return this._client.request(
8801
+ TRAVEL_RULE_UNMATCHED_DEPOSITS_MATCH,
8802
+ [transactionUuid],
8803
+ params,
8804
+ options
8805
+ );
8806
+ }
8807
+ };
8395
8808
  var TravelRuleWalletAddresses = class extends APIResource {
8396
8809
  /**
8397
8810
  * Import wallet addresses in bulk
@@ -8543,6 +8956,9 @@ var TravelRule = class extends APIResource {
8543
8956
  counterpartyContacts = new TravelRuleCounterpartyContacts(this._client);
8544
8957
  networks = new TravelRuleNetworks(this._client);
8545
8958
  transfers = new TravelRuleTransfers(this._client);
8959
+ unmatchedDeposits = new TravelRuleUnmatchedDeposits(
8960
+ this._client
8961
+ );
8546
8962
  walletAddresses = new TravelRuleWalletAddresses(this._client);
8547
8963
  walletProofs = new TravelRuleWalletProofs(this._client);
8548
8964
  workspace = new TravelRuleWorkspaceResource(this._client);
@@ -8796,7 +9212,7 @@ var Users = class extends APIResource {
8796
9212
  *
8797
9213
  * **Permanently delete** users: the user records are removed permanently. For everyday blocking prefer [Update User Status](#patch-/v3/users/-vendor_data-/update-status/) with `BLOCKED`. Select users with `vendor_data_list`, with `didit_internal_id_list`, or with both at once; or pass `delete_all: true`. This endpoint never narrows `delete_all` with filters. The Console's People filters are refused with a `400` (see the `400` response), so a narrowed intent does not turn into a full wipe. Two exceptions: `filter_has_approved_sessions` and `filter_has_declined_sessions` are not refused and not applied, so with `delete_all: true` they still delete every user; do not send them.
8798
9214
  *
8799
- * **Biometric templates:** every image-free biometric template retained for these users after session deletion (see `/v3/biometric-templates/`) is purged before the user is deleted, so the person stops matching in duplicate detection and Face Search. If a template cannot be purged because a biometric store is unavailable, the call returns `503`, no user in the request is deleted, and repeating the request finishes the job.
9215
+ * **Biometric templates:** unless you set `retain_face_embeddings` to `true`, every image-free biometric template retained for these users after session deletion (see `/v3/biometric-templates/`) is purged before the user is deleted, so the person stops matching in duplicate detection and Face Search. With `retain_face_embeddings: true` and `face_retention_days`, you choose to keep one image-free biometric template per person for that many days, and nothing else about the person is kept. If a template cannot be purged because a biometric store is unavailable, the call returns `503`, no user in the request is deleted, and repeating the request finishes the job.
8800
9216
  *
8801
9217
  * **Filed regulatory reports:** if the selected data is in a finalized regulatory report, the whole request is refused with `409` and nothing is deleted. The body uses `code: in_filed_report` and names each report with `uuid`, `report_number`, `report_type` and `case_uuid`. Delete the reports, then repeat the request.
8802
9218
  *
@@ -11338,6 +11754,7 @@ exports.TravelRule = TravelRule;
11338
11754
  exports.TravelRuleCounterpartyContacts = TravelRuleCounterpartyContacts;
11339
11755
  exports.TravelRuleNetworks = TravelRuleNetworks;
11340
11756
  exports.TravelRuleTransfers = TravelRuleTransfers;
11757
+ exports.TravelRuleUnmatchedDeposits = TravelRuleUnmatchedDeposits;
11341
11758
  exports.TravelRuleWalletAddresses = TravelRuleWalletAddresses;
11342
11759
  exports.TravelRuleWalletProofs = TravelRuleWalletProofs;
11343
11760
  exports.TravelRuleWorkspaceResource = TravelRuleWorkspaceResource;