From b19ec50188ffba29683e19cb9387203925561eee Mon Sep 17 00:00:00 2001 From: wrd Date: Tue, 12 Nov 2024 17:47:35 +0100 Subject: [PATCH] Password check before adding or deleting SecondFactorAuthentication Add SystemModel 114 Close #5986 Co-authored-by: Willow --- src/common/api/common/EntityClient.ts | 5 +- src/common/api/entities/sys/ModelInfo.ts | 2 +- src/common/api/entities/sys/Services.ts | 11 + src/common/api/entities/sys/TypeModels.js | 512 ++++++++++-------- src/common/api/entities/sys/TypeRefs.ts | 24 + src/common/api/worker/facades/LoginFacade.ts | 43 +- .../api/worker/rest/DefaultEntityRestCache.ts | 5 +- .../api/worker/rest/EntityRestClient.ts | 17 +- .../misc/passwords/PasswordRequestDialog.ts | 32 +- src/common/settings/UserViewer.ts | 23 +- .../settings/login/LoginSettingsViewer.ts | 3 + .../secondfactor/SecondFactorEditDialog.ts | 16 +- .../secondfactor/SecondFactorEditModel.ts | 9 +- .../secondfactor/SecondFactorsEditForm.ts | 121 ++++- .../secondfactor/SecondFactorEditModelTest.ts | 14 +- .../rust/sdk/src/entities/generated/sys.rs | 31 ++ .../rust/sdk/src/services/generated/sys.rs | 117 ++-- tuta-sdk/rust/sdk/src/type_models/sys.json | 512 ++++++++++-------- 18 files changed, 938 insertions(+), 559 deletions(-) diff --git a/src/common/api/common/EntityClient.ts b/src/common/api/common/EntityClient.ts index 40a690e4fda..f44b307ca30 100644 --- a/src/common/api/common/EntityClient.ts +++ b/src/common/api/common/EntityClient.ts @@ -1,4 +1,5 @@ import { + EntityRestClientEraseOptions, EntityRestClientLoadOptions, EntityRestClientSetupOptions, EntityRestClientUpdateOptions, @@ -112,8 +113,8 @@ export class EntityClient { return this._target.update(instance, options) } - erase(instance: T): Promise { - return this._target.erase(instance) + erase(instance: T, options?: EntityRestClientEraseOptions): Promise { + return this._target.erase(instance, options) } async loadRoot(typeRef: TypeRef, groupId: Id): Promise { diff --git a/src/common/api/entities/sys/ModelInfo.ts b/src/common/api/entities/sys/ModelInfo.ts index d59ea8d24ef..85706f40a8e 100644 --- a/src/common/api/entities/sys/ModelInfo.ts +++ b/src/common/api/entities/sys/ModelInfo.ts @@ -1,5 +1,5 @@ const modelInfo = { - version: 113, + version: 114, compatibleSince: 112, } diff --git a/src/common/api/entities/sys/Services.ts b/src/common/api/entities/sys/Services.ts index 674f5563fae..e7ed732a323 100644 --- a/src/common/api/entities/sys/Services.ts +++ b/src/common/api/entities/sys/Services.ts @@ -85,6 +85,8 @@ import {UpgradePriceServiceDataTypeRef} from "./TypeRefs.js" import {UpgradePriceServiceReturnTypeRef} from "./TypeRefs.js" import {UserGroupKeyRotationPostInTypeRef} from "./TypeRefs.js" import {UserDataDeleteTypeRef} from "./TypeRefs.js" +import {VerifierTokenServiceInTypeRef} from "./TypeRefs.js" +import {VerifierTokenServiceOutTypeRef} from "./TypeRefs.js" import {VersionDataTypeRef} from "./TypeRefs.js" import {VersionReturnTypeRef} from "./TypeRefs.js" @@ -529,6 +531,15 @@ export const UserService = Object.freeze({ delete: {data: UserDataDeleteTypeRef, return: null}, } as const) +export const VerifierTokenService = Object.freeze({ + app: "sys", + name: "VerifierTokenService", + get: null, + post: {data: VerifierTokenServiceInTypeRef, return: VerifierTokenServiceOutTypeRef}, + put: null, + delete: null, +} as const) + export const VersionService = Object.freeze({ app: "sys", name: "VersionService", diff --git a/src/common/api/entities/sys/TypeModels.js b/src/common/api/entities/sys/TypeModels.js index e7fe71307ae..1f5165994e3 100644 --- a/src/common/api/entities/sys/TypeModels.js +++ b/src/common/api/entities/sys/TypeModels.js @@ -219,7 +219,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AdminGroupKeyAuthenticationData": { "name": "AdminGroupKeyAuthenticationData", @@ -271,7 +271,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AdminGroupKeyRotationPostIn": { "name": "AdminGroupKeyRotationPostIn", @@ -325,7 +325,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AdministratedGroup": { "name": "AdministratedGroup", @@ -405,7 +405,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AdministratedGroupsRef": { "name": "AdministratedGroupsRef", @@ -439,7 +439,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AffiliatePartnerKpiMonthSummary": { "name": "AffiliatePartnerKpiMonthSummary", @@ -516,7 +516,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "AffiliatePartnerKpiServiceGetOut": { "name": "AffiliatePartnerKpiServiceGetOut", @@ -577,7 +577,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AlarmInfo": { "name": "AlarmInfo", @@ -629,7 +629,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AlarmNotification": { "name": "AlarmNotification", @@ -729,7 +729,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AlarmServicePost": { "name": "AlarmServicePost", @@ -763,7 +763,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "ArchiveRef": { "name": "ArchiveRef", @@ -795,7 +795,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ArchiveType": { "name": "ArchiveType", @@ -849,7 +849,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AuditLogEntry": { "name": "AuditLogEntry", @@ -983,7 +983,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AuditLogRef": { "name": "AuditLogRef", @@ -1017,7 +1017,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AuthenticatedDevice": { "name": "AuthenticatedDevice", @@ -1067,7 +1067,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Authentication": { "name": "Authentication", @@ -1128,7 +1128,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AutoLoginDataDelete": { "name": "AutoLoginDataDelete", @@ -1160,7 +1160,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "AutoLoginDataGet": { "name": "AutoLoginDataGet", @@ -1203,7 +1203,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "AutoLoginDataReturn": { "name": "AutoLoginDataReturn", @@ -1235,7 +1235,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "AutoLoginPostReturn": { "name": "AutoLoginPostReturn", @@ -1267,7 +1267,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Blob": { "name": "Blob", @@ -1317,7 +1317,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BlobReferenceTokenWrapper": { "name": "BlobReferenceTokenWrapper", @@ -1349,7 +1349,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Booking": { "name": "Booking", @@ -1473,7 +1473,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "BookingItem": { "name": "BookingItem", @@ -1559,7 +1559,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BookingsRef": { "name": "BookingsRef", @@ -1593,7 +1593,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "BootstrapFeature": { "name": "BootstrapFeature", @@ -1625,7 +1625,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Braintree3ds2Request": { "name": "Braintree3ds2Request", @@ -1675,7 +1675,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Braintree3ds2Response": { "name": "Braintree3ds2Response", @@ -1716,7 +1716,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BrandingDomainData": { "name": "BrandingDomainData", @@ -1793,7 +1793,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BrandingDomainDeleteData": { "name": "BrandingDomainDeleteData", @@ -1825,7 +1825,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BrandingDomainGetReturn": { "name": "BrandingDomainGetReturn", @@ -1859,7 +1859,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "Bucket": { "name": "Bucket", @@ -1893,7 +1893,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "BucketKey": { "name": "BucketKey", @@ -1982,7 +1982,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "BucketPermission": { "name": "BucketPermission", @@ -2124,7 +2124,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CalendarEventRef": { "name": "CalendarEventRef", @@ -2165,7 +2165,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "CertificateInfo": { "name": "CertificateInfo", @@ -2226,7 +2226,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "Challenge": { "name": "Challenge", @@ -2279,7 +2279,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "ChangeKdfPostIn": { "name": "ChangeKdfPostIn", @@ -2356,7 +2356,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ChangePasswordPostIn": { "name": "ChangePasswordPostIn", @@ -2451,7 +2451,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Chat": { "name": "Chat", @@ -2501,7 +2501,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "CloseSessionServicePost": { "name": "CloseSessionServicePost", @@ -2544,7 +2544,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CreateCustomerServerPropertiesData": { "name": "CreateCustomerServerPropertiesData", @@ -2585,7 +2585,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "CreateCustomerServerPropertiesReturn": { "name": "CreateCustomerServerPropertiesReturn", @@ -2619,7 +2619,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CreateSessionData": { "name": "CreateSessionData", @@ -2707,7 +2707,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CreateSessionReturn": { "name": "CreateSessionReturn", @@ -2760,7 +2760,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CreditCard": { "name": "CreditCard", @@ -2828,7 +2828,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "CustomDomainCheckGetIn": { "name": "CustomDomainCheckGetIn", @@ -2871,7 +2871,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomDomainCheckGetOut": { "name": "CustomDomainCheckGetOut", @@ -2934,7 +2934,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomDomainData": { "name": "CustomDomainData", @@ -2977,7 +2977,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomDomainReturn": { "name": "CustomDomainReturn", @@ -3020,7 +3020,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "Customer": { "name": "Customer", @@ -3277,7 +3277,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerAccountTerminationPostIn": { "name": "CustomerAccountTerminationPostIn", @@ -3320,7 +3320,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerAccountTerminationPostOut": { "name": "CustomerAccountTerminationPostOut", @@ -3354,7 +3354,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerAccountTerminationRequest": { "name": "CustomerAccountTerminationRequest", @@ -3433,7 +3433,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerInfo": { "name": "CustomerInfo", @@ -3746,7 +3746,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerProperties": { "name": "CustomerProperties", @@ -3854,7 +3854,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerServerProperties": { "name": "CustomerServerProperties", @@ -3970,7 +3970,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "DateWrapper": { "name": "DateWrapper", @@ -4002,7 +4002,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "DebitServicePutData": { "name": "DebitServicePutData", @@ -4036,7 +4036,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "DeleteCustomerData": { "name": "DeleteCustomerData", @@ -4116,7 +4116,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "DnsRecord": { "name": "DnsRecord", @@ -4166,7 +4166,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "DomainInfo": { "name": "DomainInfo", @@ -4228,7 +4228,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "DomainMailAddressAvailabilityData": { "name": "DomainMailAddressAvailabilityData", @@ -4260,7 +4260,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "DomainMailAddressAvailabilityReturn": { "name": "DomainMailAddressAvailabilityReturn", @@ -4292,7 +4292,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "EmailSenderListElement": { "name": "EmailSenderListElement", @@ -4351,7 +4351,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "EntityEventBatch": { "name": "EntityEventBatch", @@ -4412,7 +4412,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "EntityUpdate": { "name": "EntityUpdate", @@ -4480,7 +4480,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Exception": { "name": "Exception", @@ -4521,7 +4521,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ExternalPropertiesReturn": { "name": "ExternalPropertiesReturn", @@ -4583,7 +4583,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "ExternalUserReference": { "name": "ExternalUserReference", @@ -4654,7 +4654,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "Feature": { "name": "Feature", @@ -4686,7 +4686,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "File": { "name": "File", @@ -4736,7 +4736,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GeneratedIdWrapper": { "name": "GeneratedIdWrapper", @@ -4768,7 +4768,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GiftCard": { "name": "GiftCard", @@ -4881,7 +4881,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardCreateData": { "name": "GiftCardCreateData", @@ -4949,7 +4949,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardCreateReturn": { "name": "GiftCardCreateReturn", @@ -4983,7 +4983,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardDeleteData": { "name": "GiftCardDeleteData", @@ -5017,7 +5017,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardGetReturn": { "name": "GiftCardGetReturn", @@ -5069,7 +5069,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardOption": { "name": "GiftCardOption", @@ -5101,7 +5101,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardRedeemData": { "name": "GiftCardRedeemData", @@ -5153,7 +5153,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardRedeemGetReturn": { "name": "GiftCardRedeemGetReturn", @@ -5205,7 +5205,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardsRef": { "name": "GiftCardsRef", @@ -5239,7 +5239,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "Group": { "name": "Group", @@ -5464,7 +5464,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupInfo": { "name": "GroupInfo", @@ -5617,7 +5617,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKey": { "name": "GroupKey", @@ -5724,7 +5724,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyRotationData": { "name": "GroupKeyRotationData", @@ -5824,7 +5824,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyRotationInfoGetOut": { "name": "GroupKeyRotationInfoGetOut", @@ -5867,7 +5867,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyRotationPostIn": { "name": "GroupKeyRotationPostIn", @@ -5901,7 +5901,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyUpdate": { "name": "GroupKeyUpdate", @@ -5998,7 +5998,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyUpdateData": { "name": "GroupKeyUpdateData", @@ -6059,7 +6059,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyUpdatesRef": { "name": "GroupKeyUpdatesRef", @@ -6093,7 +6093,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeysRef": { "name": "GroupKeysRef", @@ -6127,7 +6127,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupMember": { "name": "GroupMember", @@ -6217,7 +6217,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupMembership": { "name": "GroupMembership", @@ -6325,7 +6325,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupMembershipKeyData": { "name": "GroupMembershipKeyData", @@ -6386,7 +6386,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupMembershipUpdateData": { "name": "GroupMembershipUpdateData", @@ -6438,7 +6438,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupRoot": { "name": "GroupRoot", @@ -6519,7 +6519,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "IdTupleWrapper": { "name": "IdTupleWrapper", @@ -6560,7 +6560,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "InstanceSessionKey": { "name": "InstanceSessionKey", @@ -6639,7 +6639,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "Invoice": { "name": "Invoice", @@ -6855,7 +6855,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceDataGetIn": { "name": "InvoiceDataGetIn", @@ -6887,7 +6887,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceDataGetOut": { "name": "InvoiceDataGetOut", @@ -7029,7 +7029,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceDataItem": { "name": "InvoiceDataItem", @@ -7106,7 +7106,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceInfo": { "name": "InvoiceInfo", @@ -7285,7 +7285,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceItem": { "name": "InvoiceItem", @@ -7371,7 +7371,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "KeyPair": { "name": "KeyPair", @@ -7448,7 +7448,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "KeyRotation": { "name": "KeyRotation", @@ -7527,7 +7527,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "KeyRotationsRef": { "name": "KeyRotationsRef", @@ -7561,7 +7561,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "LocalAdminGroupReplacementData": { "name": "LocalAdminGroupReplacementData", @@ -7622,7 +7622,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "LocalAdminRemovalPostIn": { "name": "LocalAdminRemovalPostIn", @@ -7656,7 +7656,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "LocationServiceGetReturn": { "name": "LocationServiceGetReturn", @@ -7688,7 +7688,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Login": { "name": "Login", @@ -7747,7 +7747,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAlias": { "name": "MailAddressAlias", @@ -7788,7 +7788,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAliasGetIn": { "name": "MailAddressAliasGetIn", @@ -7822,7 +7822,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAliasServiceData": { "name": "MailAddressAliasServiceData", @@ -7865,7 +7865,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAliasServiceDataDelete": { "name": "MailAddressAliasServiceDataDelete", @@ -7917,7 +7917,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAliasServiceReturn": { "name": "MailAddressAliasServiceReturn", @@ -7976,7 +7976,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAvailability": { "name": "MailAddressAvailability", @@ -8017,7 +8017,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressToGroup": { "name": "MailAddressToGroup", @@ -8078,7 +8078,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "MembershipAddData": { "name": "MembershipAddData", @@ -8149,7 +8149,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "MembershipPutIn": { "name": "MembershipPutIn", @@ -8183,7 +8183,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "MembershipRemoveData": { "name": "MembershipRemoveData", @@ -8227,7 +8227,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "MissedNotification": { "name": "MissedNotification", @@ -8343,7 +8343,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "MultipleMailAddressAvailabilityData": { "name": "MultipleMailAddressAvailabilityData", @@ -8377,7 +8377,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "MultipleMailAddressAvailabilityReturn": { "name": "MultipleMailAddressAvailabilityReturn", @@ -8411,7 +8411,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "NotificationInfo": { "name": "NotificationInfo", @@ -8463,7 +8463,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "NotificationMailTemplate": { "name": "NotificationMailTemplate", @@ -8513,7 +8513,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "NotificationSessionKey": { "name": "NotificationSessionKey", @@ -8556,7 +8556,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "OrderProcessingAgreement": { "name": "OrderProcessingAgreement", @@ -8672,7 +8672,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "OtpChallenge": { "name": "OtpChallenge", @@ -8706,7 +8706,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServiceGetData": { "name": "PaymentDataServiceGetData", @@ -8738,7 +8738,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServiceGetReturn": { "name": "PaymentDataServiceGetReturn", @@ -8770,7 +8770,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServicePostData": { "name": "PaymentDataServicePostData", @@ -8804,7 +8804,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServicePutData": { "name": "PaymentDataServicePutData", @@ -8919,7 +8919,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServicePutReturn": { "name": "PaymentDataServicePutReturn", @@ -8962,7 +8962,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PaymentErrorInfo": { "name": "PaymentErrorInfo", @@ -9012,7 +9012,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Permission": { "name": "Permission", @@ -9164,7 +9164,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PlanConfiguration": { "name": "PlanConfiguration", @@ -9277,7 +9277,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PlanPrices": { "name": "PlanPrices", @@ -9419,7 +9419,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PlanServiceGetOut": { "name": "PlanServiceGetOut", @@ -9453,7 +9453,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PriceData": { "name": "PriceData", @@ -9514,7 +9514,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PriceItemData": { "name": "PriceItemData", @@ -9573,7 +9573,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PriceRequestData": { "name": "PriceRequestData", @@ -9650,7 +9650,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PriceServiceData": { "name": "PriceServiceData", @@ -9693,7 +9693,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PriceServiceReturn": { "name": "PriceServiceReturn", @@ -9765,7 +9765,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PubEncKeyData": { "name": "PubEncKeyData", @@ -9842,7 +9842,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PublicKeyGetIn": { "name": "PublicKeyGetIn", @@ -9892,7 +9892,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PublicKeyGetOut": { "name": "PublicKeyGetOut", @@ -9951,7 +9951,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PublicKeyPutIn": { "name": "PublicKeyPutIn", @@ -10003,7 +10003,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "PushIdentifier": { "name": "PushIdentifier", @@ -10161,7 +10161,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PushIdentifierList": { "name": "PushIdentifierList", @@ -10195,7 +10195,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "ReceivedGroupInvitation": { "name": "ReceivedGroupInvitation", @@ -10356,7 +10356,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "RecoverCode": { "name": "RecoverCode", @@ -10442,7 +10442,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RecoverCodeData": { "name": "RecoverCodeData", @@ -10501,7 +10501,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ReferralCodeGetIn": { "name": "ReferralCodeGetIn", @@ -10535,7 +10535,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "ReferralCodePostIn": { "name": "ReferralCodePostIn", @@ -10558,7 +10558,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ReferralCodePostOut": { "name": "ReferralCodePostOut", @@ -10592,7 +10592,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationCaptchaServiceData": { "name": "RegistrationCaptchaServiceData", @@ -10633,7 +10633,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationCaptchaServiceGetData": { "name": "RegistrationCaptchaServiceGetData", @@ -10701,7 +10701,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationCaptchaServiceReturn": { "name": "RegistrationCaptchaServiceReturn", @@ -10742,7 +10742,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationReturn": { "name": "RegistrationReturn", @@ -10774,7 +10774,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationServiceData": { "name": "RegistrationServiceData", @@ -10824,7 +10824,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RejectedSender": { "name": "RejectedSender", @@ -10919,7 +10919,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RejectedSendersRef": { "name": "RejectedSendersRef", @@ -10953,7 +10953,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "RepeatRule": { "name": "RepeatRule", @@ -11032,7 +11032,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "ResetFactorsDeleteData": { "name": "ResetFactorsDeleteData", @@ -11082,7 +11082,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ResetPasswordPostIn": { "name": "ResetPasswordPostIn", @@ -11161,7 +11161,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "RootInstance": { "name": "RootInstance", @@ -11220,7 +11220,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SaltData": { "name": "SaltData", @@ -11252,7 +11252,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SaltReturn": { "name": "SaltReturn", @@ -11293,7 +11293,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactor": { "name": "SecondFactor", @@ -11381,7 +11381,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthAllowedReturn": { "name": "SecondFactorAuthAllowedReturn", @@ -11413,7 +11413,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthData": { "name": "SecondFactorAuthData", @@ -11485,7 +11485,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthDeleteData": { "name": "SecondFactorAuthDeleteData", @@ -11519,7 +11519,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthGetData": { "name": "SecondFactorAuthGetData", @@ -11551,7 +11551,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthGetReturn": { "name": "SecondFactorAuthGetReturn", @@ -11583,7 +11583,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthentication": { "name": "SecondFactorAuthentication", @@ -11669,7 +11669,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SendRegistrationCodeData": { "name": "SendRegistrationCodeData", @@ -11728,7 +11728,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SendRegistrationCodeReturn": { "name": "SendRegistrationCodeReturn", @@ -11760,7 +11760,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SentGroupInvitation": { "name": "SentGroupInvitation", @@ -11849,7 +11849,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "Session": { "name": "Session", @@ -11992,7 +11992,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "SignOrderProcessingAgreementData": { "name": "SignOrderProcessingAgreementData", @@ -12033,7 +12033,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SseConnectData": { "name": "SseConnectData", @@ -12076,7 +12076,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "StringConfigValue": { "name": "StringConfigValue", @@ -12117,7 +12117,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "StringWrapper": { "name": "StringWrapper", @@ -12149,7 +12149,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SurveyData": { "name": "SurveyData", @@ -12208,7 +12208,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SwitchAccountTypePostIn": { "name": "SwitchAccountTypePostIn", @@ -12297,7 +12297,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "SystemKeysReturn": { "name": "SystemKeysReturn", @@ -12413,7 +12413,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "TakeOverDeletedAddressData": { "name": "TakeOverDeletedAddressData", @@ -12472,7 +12472,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "TypeInfo": { "name": "TypeInfo", @@ -12513,7 +12513,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "U2fChallenge": { "name": "U2fChallenge", @@ -12556,7 +12556,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "U2fKey": { "name": "U2fKey", @@ -12608,7 +12608,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "U2fRegisteredDevice": { "name": "U2fRegisteredDevice", @@ -12676,7 +12676,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "U2fResponseData": { "name": "U2fResponseData", @@ -12726,7 +12726,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "UpdatePermissionKeyData": { "name": "UpdatePermissionKeyData", @@ -12788,7 +12788,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UpdateSessionKeysPostIn": { "name": "UpdateSessionKeysPostIn", @@ -12822,7 +12822,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UpgradePriceServiceData": { "name": "UpgradePriceServiceData", @@ -12874,7 +12874,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UpgradePriceServiceReturn": { "name": "UpgradePriceServiceReturn", @@ -13045,7 +13045,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "User": { "name": "User", @@ -13260,7 +13260,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UserAlarmInfo": { "name": "UserAlarmInfo", @@ -13339,7 +13339,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UserAlarmInfoListType": { "name": "UserAlarmInfoListType", @@ -13373,7 +13373,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UserAreaGroups": { "name": "UserAreaGroups", @@ -13407,7 +13407,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UserAuthentication": { "name": "UserAuthentication", @@ -13461,7 +13461,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UserDataDelete": { "name": "UserDataDelete", @@ -13513,7 +13513,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UserExternalAuthInfo": { "name": "UserExternalAuthInfo", @@ -13583,7 +13583,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UserGroupKeyDistribution": { "name": "UserGroupKeyDistribution", @@ -13651,7 +13651,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "UserGroupKeyRotationData": { "name": "UserGroupKeyRotationData", @@ -13778,7 +13778,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UserGroupKeyRotationPostIn": { "name": "UserGroupKeyRotationPostIn", @@ -13812,7 +13812,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "UserGroupRoot": { "name": "UserGroupRoot", @@ -13893,7 +13893,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "VariableExternalAuthInfo": { "name": "VariableExternalAuthInfo", @@ -13997,7 +13997,71 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" + }, + "VerifierTokenServiceIn": { + "name": "VerifierTokenServiceIn", + "since": 114, + "type": "DATA_TRANSFER_TYPE", + "id": 2501, + "rootId": "A3N5cwAJxQ", + "versioned": false, + "encrypted": false, + "values": { + "_format": { + "final": false, + "name": "_format", + "id": 2502, + "since": 114, + "type": "Number", + "cardinality": "One", + "encrypted": false + }, + "authVerifier": { + "final": false, + "name": "authVerifier", + "id": 2503, + "since": 114, + "type": "Bytes", + "cardinality": "One", + "encrypted": false + } + }, + "associations": {}, + "app": "sys", + "version": "114" + }, + "VerifierTokenServiceOut": { + "name": "VerifierTokenServiceOut", + "since": 114, + "type": "DATA_TRANSFER_TYPE", + "id": 2494, + "rootId": "A3N5cwAJvg", + "versioned": false, + "encrypted": false, + "values": { + "_format": { + "final": false, + "name": "_format", + "id": 2495, + "since": 114, + "type": "Number", + "cardinality": "One", + "encrypted": false + }, + "token": { + "final": false, + "name": "token", + "id": 2496, + "since": 114, + "type": "String", + "cardinality": "One", + "encrypted": false + } + }, + "associations": {}, + "app": "sys", + "version": "114" }, "VerifyRegistrationCodeData": { "name": "VerifyRegistrationCodeData", @@ -14038,7 +14102,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Version": { "name": "Version", @@ -14109,7 +14173,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "VersionData": { "name": "VersionData", @@ -14168,7 +14232,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "VersionInfo": { "name": "VersionInfo", @@ -14293,7 +14357,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "VersionReturn": { "name": "VersionReturn", @@ -14327,7 +14391,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "WebauthnResponseData": { "name": "WebauthnResponseData", @@ -14386,7 +14450,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "WebsocketCounterData": { "name": "WebsocketCounterData", @@ -14429,7 +14493,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "WebsocketCounterValue": { "name": "WebsocketCounterValue", @@ -14470,7 +14534,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "WebsocketEntityData": { "name": "WebsocketEntityData", @@ -14522,7 +14586,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "WebsocketLeaderStatus": { "name": "WebsocketLeaderStatus", @@ -14554,7 +14618,7 @@ export const typeModels = { }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "WhitelabelChild": { "name": "WhitelabelChild", @@ -14669,7 +14733,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "WhitelabelChildrenRef": { "name": "WhitelabelChildrenRef", @@ -14703,7 +14767,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "WhitelabelConfig": { "name": "WhitelabelConfig", @@ -14838,7 +14902,7 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" }, "WhitelabelParent": { "name": "WhitelabelParent", @@ -14882,6 +14946,6 @@ export const typeModels = { } }, "app": "sys", - "version": "113" + "version": "114" } } \ No newline at end of file diff --git a/src/common/api/entities/sys/TypeRefs.ts b/src/common/api/entities/sys/TypeRefs.ts index 89106dce7a1..265aa0553b2 100644 --- a/src/common/api/entities/sys/TypeRefs.ts +++ b/src/common/api/entities/sys/TypeRefs.ts @@ -3434,6 +3434,30 @@ export type VariableExternalAuthInfo = { loggedInVerifier: null | Uint8Array; sentCount: NumberString; } +export const VerifierTokenServiceInTypeRef: TypeRef = new TypeRef("sys", "VerifierTokenServiceIn") + +export function createVerifierTokenServiceIn(values: StrippedEntity): VerifierTokenServiceIn { + return Object.assign(create(typeModels.VerifierTokenServiceIn, VerifierTokenServiceInTypeRef), values) +} + +export type VerifierTokenServiceIn = { + _type: TypeRef; + + _format: NumberString; + authVerifier: Uint8Array; +} +export const VerifierTokenServiceOutTypeRef: TypeRef = new TypeRef("sys", "VerifierTokenServiceOut") + +export function createVerifierTokenServiceOut(values: StrippedEntity): VerifierTokenServiceOut { + return Object.assign(create(typeModels.VerifierTokenServiceOut, VerifierTokenServiceOutTypeRef), values) +} + +export type VerifierTokenServiceOut = { + _type: TypeRef; + + _format: NumberString; + token: string; +} export const VerifyRegistrationCodeDataTypeRef: TypeRef = new TypeRef("sys", "VerifyRegistrationCodeData") export function createVerifyRegistrationCodeData(values: StrippedEntity): VerifyRegistrationCodeData { diff --git a/src/common/api/worker/facades/LoginFacade.ts b/src/common/api/worker/facades/LoginFacade.ts index 6e6e26f84b9..88fd5f83a6e 100644 --- a/src/common/api/worker/facades/LoginFacade.ts +++ b/src/common/api/worker/facades/LoginFacade.ts @@ -26,6 +26,7 @@ import { SecondFactorAuthService, SessionService, TakeOverDeletedAddressService, + VerifierTokenService, } from "../../entities/sys/Services" import { AccountType, asKdfType, CloseEventBusOption, Const, DEFAULT_KDF_TYPE, KdfType } from "../../common/TutanotaConstants" import { @@ -40,6 +41,7 @@ import { createSecondFactorAuthGetData, CreateSessionReturn, createTakeOverDeletedAddressData, + createVerifierTokenServiceIn, GroupInfo, GroupInfoTypeRef, RecoverCodeTypeRef, @@ -136,7 +138,14 @@ type ResumeSessionSuccess = { type: "success"; data: ResumeSessionResultData } type ResumeSessionFailure = { type: "error"; reason: ResumeSessionErrorReason } type ResumeSessionResult = ResumeSessionSuccess | ResumeSessionFailure -type AsyncLoginState = { state: "idle" } | { state: "running" } | { state: "failed"; credentials: Credentials; cacheInfo: CacheInfo } +type AsyncLoginState = + | { state: "idle" } + | { state: "running" } + | { + state: "failed" + credentials: Credentials + cacheInfo: CacheInfo + } /** * All attributes that are required to derive the passphrase key. @@ -759,7 +768,16 @@ export class LoginFacade { */ private async initCache({ userId, databaseKey, timeRangeDays, forceNewDatabase }: InitCacheOptions): Promise { if (databaseKey != null) { - return { databaseKey, ...(await this.cacheInitializer.initialize({ type: "offline", userId, databaseKey, timeRangeDays, forceNewDatabase })) } + return { + databaseKey, + ...(await this.cacheInitializer.initialize({ + type: "offline", + userId, + databaseKey, + timeRangeDays, + forceNewDatabase, + })), + } } else { return { databaseKey: null, ...(await this.cacheInitializer.initialize({ type: "ephemeral", userId })) } } @@ -809,7 +827,13 @@ export class LoginFacade { } } - private async loadUserPassphraseKey(mailAddress: string, passphrase: string): Promise<{ kdfType: KdfType; userPassphraseKey: AesKey }> { + private async loadUserPassphraseKey( + mailAddress: string, + passphrase: string, + ): Promise<{ + kdfType: KdfType + userPassphraseKey: AesKey + }> { mailAddress = mailAddress.toLowerCase().trim() const saltRequest = createSaltData({ mailAddress }) const saltReturn = await this.serviceExecutor.get(SaltService, saltRequest) @@ -1104,4 +1128,17 @@ export class LoginFacade { throw new Error("credentials went missing") } } + + async getVerifierToken(passphrase: string): Promise { + const user = this.userFacade.getLoggedInUser() + const passphraseKey = await this.deriveUserPassphraseKey({ + kdfType: asKdfType(user.kdfVersion), + passphrase, + salt: assertNotNull(user.salt), + }) + + const authVerifier = createAuthVerifier(passphraseKey) + const out = await this.serviceExecutor.post(VerifierTokenService, createVerifierTokenServiceIn({ authVerifier })) + return out.token + } } diff --git a/src/common/api/worker/rest/DefaultEntityRestCache.ts b/src/common/api/worker/rest/DefaultEntityRestCache.ts index 4000d6a8f39..2d6b6324b2f 100644 --- a/src/common/api/worker/rest/DefaultEntityRestCache.ts +++ b/src/common/api/worker/rest/DefaultEntityRestCache.ts @@ -1,6 +1,7 @@ import { CacheMode, EntityRestClient, + EntityRestClientEraseOptions, EntityRestClientLoadOptions, EntityRestClientSetupOptions, EntityRestInterface, @@ -312,8 +313,8 @@ export class DefaultEntityRestCache implements EntityRestCache { return this.entityRestClient.update(instance) } - erase(instance: T): Promise { - return this.entityRestClient.erase(instance) + erase(instance: T, options?: EntityRestClientEraseOptions): Promise { + return this.entityRestClient.erase(instance, options) } getLastEntityEventBatchForGroup(groupId: Id): Promise { diff --git a/src/common/api/worker/rest/EntityRestClient.ts b/src/common/api/worker/rest/EntityRestClient.ts index fe08a02b9a4..b25662731b2 100644 --- a/src/common/api/worker/rest/EntityRestClient.ts +++ b/src/common/api/worker/rest/EntityRestClient.ts @@ -48,6 +48,10 @@ export interface EntityRestClientUpdateOptions { ownerKeyProvider?: OwnerKeyProvider } +export interface EntityRestClientEraseOptions { + extraHeaders?: Dict +} + /** * Whether to use the cache to fetch the entity */ @@ -121,7 +125,7 @@ export interface EntityRestInterface { /** * Deletes a single element on the server. */ - erase(instance: T): Promise + erase(instance: T, options?: EntityRestClientEraseOptions): Promise /** * Must be called when entity events are received. @@ -445,9 +449,16 @@ export class EntityRestClient implements EntityRestInterface { }) } - async erase(instance: T): Promise { + async erase(instance: T, options?: EntityRestClientEraseOptions): Promise { const { listId, elementId } = expandId(instance._id) - const { path, queryParams, headers } = await this._validateAndPrepareRestRequest(instance._type, listId, elementId, undefined, undefined, undefined) + const { path, queryParams, headers } = await this._validateAndPrepareRestRequest( + instance._type, + listId, + elementId, + undefined, + options?.extraHeaders, + undefined, + ) await this.restClient.request(path, HttpMethod.DELETE, { queryParams, headers, diff --git a/src/common/misc/passwords/PasswordRequestDialog.ts b/src/common/misc/passwords/PasswordRequestDialog.ts index 86ad0aeeafb..7f5d0e8d953 100644 --- a/src/common/misc/passwords/PasswordRequestDialog.ts +++ b/src/common/misc/passwords/PasswordRequestDialog.ts @@ -14,6 +14,7 @@ import { BootIcons } from "../../gui/base/icons/BootIcons.js" export function showRequestPasswordDialog(props: { title?: string + messageText?: string action: (pw: string) => Promise cancel: { textId: TranslationKey @@ -36,21 +37,24 @@ export function showRequestPasswordDialog(props: { view: () => { const savedState = state return savedState.type == "idle" - ? m(PasswordField, { - label: title, - helpLabel: () => savedState.message, - value: value, - oninput: (newValue) => (value = newValue), - autocompleteAs: Autocomplete.off, - keyHandler: (key: KeyPress) => { - if (isKeyPressed(key.key, Keys.RETURN)) { - doAction() - return false - } + ? m("", [ + props.messageText ? m(".pt", props.messageText) : null, + m(PasswordField, { + label: title, + helpLabel: () => savedState.message, + value: value, + oninput: (newValue) => (value = newValue), + autocompleteAs: Autocomplete.off, + keyHandler: (key: KeyPress) => { + if (isKeyPressed(key.key, Keys.RETURN)) { + doAction() + return false + } - return true - }, - } satisfies PasswordFieldAttrs) + return true + }, + } satisfies PasswordFieldAttrs), + ]) : m(Icon, { icon: BootIcons.Progress, class: "icon-xl icon-progress block mt mb", diff --git a/src/common/settings/UserViewer.ts b/src/common/settings/UserViewer.ts index efe2e70535f..e43c604ef80 100644 --- a/src/common/settings/UserViewer.ts +++ b/src/common/settings/UserViewer.ts @@ -51,7 +51,13 @@ export class UserViewer implements UpdatableSettingsDetailsViewer { this.mailAddressTableExpanded = false - this.secondFactorsForm = new SecondFactorsEditForm(this.user, locator.domainConfigProvider()) + this.secondFactorsForm = new SecondFactorsEditForm( + this.user, + locator.domainConfigProvider(), + locator.loginFacade, + this.isAdmin, + !!this.userGroupInfo.deleted, + ) this.teamGroupInfos.getAsync().then(async (availableTeamGroupInfos) => { if (availableTeamGroupInfos.length > 0) { @@ -157,10 +163,17 @@ export class UserViewer implements UpdatableSettingsDetailsViewer { } private onChangeName(name: string) { - Dialog.showProcessTextInputDialog({ title: "edit_action", label: "name_label", defaultValue: name }, (newName) => { - this.userGroupInfo.name = newName - return locator.entityClient.update(this.userGroupInfo) - }) + Dialog.showProcessTextInputDialog( + { + title: "edit_action", + label: "name_label", + defaultValue: name, + }, + (newName) => { + this.userGroupInfo.name = newName + return locator.entityClient.update(this.userGroupInfo) + }, + ) } private renderAdminStatusSelector(): Children { diff --git a/src/common/settings/login/LoginSettingsViewer.ts b/src/common/settings/login/LoginSettingsViewer.ts index dfc6f30e4cc..c9c00478468 100644 --- a/src/common/settings/login/LoginSettingsViewer.ts +++ b/src/common/settings/login/LoginSettingsViewer.ts @@ -44,6 +44,9 @@ export class LoginSettingsViewer implements UpdatableSettingsViewer { private readonly _secondFactorsForm = new SecondFactorsEditForm( new LazyLoaded(() => Promise.resolve(locator.logins.getUserController().user)), locator.domainConfigProvider(), + locator.loginFacade, + true, + false, ) private readonly _usageTestModel: UsageTestModel private credentialEncryptionMode: CredentialEncryptionMode | null = null diff --git a/src/common/settings/login/secondfactor/SecondFactorEditDialog.ts b/src/common/settings/login/secondfactor/SecondFactorEditDialog.ts index bbe0f5992f9..fa094630e9f 100644 --- a/src/common/settings/login/secondfactor/SecondFactorEditDialog.ts +++ b/src/common/settings/login/secondfactor/SecondFactorEditDialog.ts @@ -23,6 +23,7 @@ import { ButtonSize } from "../../../gui/base/ButtonSize.js" import { NameValidationStatus, SecondFactorEditModel, SecondFactorTypeToNameTextId, VerificationStatus } from "./SecondFactorEditModel.js" import { UserError } from "../../../api/main/UserError.js" import { LoginButton } from "../../../gui/base/buttons/LoginButton.js" +import { NotAuthorizedError } from "../../../api/common/error/RestError" export class SecondFactorEditDialog { private readonly dialog: Dialog @@ -50,6 +51,12 @@ export class SecondFactorEditDialog { if (e instanceof UserError) { // noinspection ES6MissingAwait Dialog.message(() => e.message) + } else if (e instanceof NotAuthorizedError) { + this.dialog.close() + Dialog.message("contactFormSubmitError_msg") + return + } else { + throw e } } } @@ -59,8 +66,8 @@ export class SecondFactorEditDialog { RecoverCodeDialog.showRecoverCodeDialogAfterPasswordVerificationAndInfoDialog(user) } - static async loadAndShow(entityClient: EntityClient, lazyUser: LazyLoaded, mailAddress: string): Promise { - const dialog: SecondFactorEditDialog = await showProgressDialog("pleaseWait_msg", this.loadWebauthnClient(entityClient, lazyUser, mailAddress)) + static async loadAndShow(entityClient: EntityClient, lazyUser: LazyLoaded, token?: string): Promise { + const dialog: SecondFactorEditDialog = await showProgressDialog("pleaseWait_msg", this.loadWebauthnClient(entityClient, lazyUser, token)) dialog.dialog.show() } @@ -167,22 +174,21 @@ export class SecondFactorEditDialog { } } - private static async loadWebauthnClient(entityClient: EntityClient, lazyUser: LazyLoaded, mailAddress: string): Promise { + private static async loadWebauthnClient(entityClient: EntityClient, lazyUser: LazyLoaded, token?: string): Promise { const totpKeys = await locator.loginFacade.generateTotpSecret() const user = await lazyUser.getAsync() const webauthnSupported = await locator.webAuthn.isSupported() const model = new SecondFactorEditModel( entityClient, user, - mailAddress, locator.webAuthn, totpKeys, webauthnSupported, - lang, locator.loginFacade, location.hostname, locator.domainConfigProvider().getCurrentDomainConfig(), m.redraw, + token, ) return new SecondFactorEditDialog(model) } diff --git a/src/common/settings/login/secondfactor/SecondFactorEditModel.ts b/src/common/settings/login/secondfactor/SecondFactorEditModel.ts index 4001f25425d..47e7e5f5dde 100644 --- a/src/common/settings/login/secondfactor/SecondFactorEditModel.ts +++ b/src/common/settings/login/secondfactor/SecondFactorEditModel.ts @@ -48,15 +48,14 @@ export class SecondFactorEditModel { constructor( private readonly entityClient: EntityClient, private readonly user: User, - private readonly mailAddress: string, private readonly webauthnClient: WebauthnClient, readonly totpKeys: TotpSecret, private readonly webauthnSupported: boolean, - private readonly lang: LanguageViewModel, private readonly loginFacade: LoginFacade, private readonly hostname: string, private readonly domainConfig: DomainConfig, private readonly updateViewCallback: () => void, + private readonly token?: string, ) { this.selectedType = webauthnSupported ? SecondFactorType.webauthn : SecondFactorType.totp this.setDefaultNameIfNeeded() @@ -209,7 +208,11 @@ export class SecondFactorEditModel { sf.otpSecret = this.totpKeys.key } } - await this.entityClient.setup(assertNotNull(this.user.auth).secondFactors, sf) + let extraHeaders + if (this.token) { + extraHeaders = { token: this.token } + } + await this.entityClient.setup(assertNotNull(this.user.auth).secondFactors, sf, extraHeaders) return this.user } diff --git a/src/common/settings/login/secondfactor/SecondFactorsEditForm.ts b/src/common/settings/login/secondfactor/SecondFactorsEditForm.ts index 5fd8515e487..044ea867ede 100644 --- a/src/common/settings/login/secondfactor/SecondFactorsEditForm.ts +++ b/src/common/settings/login/secondfactor/SecondFactorsEditForm.ts @@ -2,15 +2,13 @@ import m, { Children } from "mithril" import { assertMainOrNode } from "../../../api/common/Env.js" import type { SecondFactor, User } from "../../../api/entities/sys/TypeRefs.js" import { SecondFactorTypeRef } from "../../../api/entities/sys/TypeRefs.js" -import { assertNotNull, LazyLoaded, neverNull, ofClass } from "@tutao/tutanota-utils" +import { assertNotNull, LazyLoaded, neverNull, noOp } from "@tutao/tutanota-utils" import { Icons } from "../../../gui/base/icons/Icons.js" -import { Dialog } from "../../../gui/base/Dialog.js" import { InfoLink, lang } from "../../../misc/LanguageViewModel.js" import { assertEnumValue, SecondFactorType } from "../../../api/common/TutanotaConstants.js" -import { showProgressDialog } from "../../../gui/dialogs/ProgressDialog.js" import type { TableAttrs, TableLineAttrs } from "../../../gui/base/Table.js" import { ColumnWidth, Table } from "../../../gui/base/Table.js" -import { NotFoundError } from "../../../api/common/error/RestError.js" +import { NotAuthorizedError, NotFoundError } from "../../../api/common/error/RestError.js" import { ifAllowedTutaLinks } from "../../../gui/base/GuiUtils.js" import { locator } from "../../../api/main/CommonLocator.js" import { SecondFactorEditDialog } from "./SecondFactorEditDialog.js" @@ -21,16 +19,28 @@ import { appIdToLoginUrl } from "../../../misc/2fa/SecondFactorUtils.js" import { DomainConfigProvider } from "../../../api/common/DomainConfigProvider.js" import { EntityUpdateData, isUpdateForTypeRef } from "../../../api/common/utils/EntityUpdateUtils.js" import { MoreInfoLink } from "../../../misc/news/MoreInfoLink.js" +import { showRequestPasswordDialog } from "../../../misc/passwords/PasswordRequestDialog" +import { LoginFacade } from "../../../api/worker/facades/LoginFacade" +import { showProgressDialog } from "../../../gui/dialogs/ProgressDialog" +import { Dialog } from "../../../gui/base/Dialog" assertMainOrNode() export class SecondFactorsEditForm { _2FALineAttrs: TableLineAttrs[] - constructor(private readonly user: LazyLoaded, private readonly domainConfigProvider: DomainConfigProvider) { + constructor( + private readonly user: LazyLoaded, + private readonly domainConfigProvider: DomainConfigProvider, + private readonly loginFacade: LoginFacade, + private askForPassword: boolean, + private isDeactivated: boolean, + ) { this._2FALineAttrs = [] this._updateSecondFactors() + + this.view = this.view.bind(this) } view(): Children { @@ -41,7 +51,15 @@ export class SecondFactorsEditForm { showActionButtonColumn: true, addButtonAttrs: { title: "addSecondFactor_action", - click: () => this._showAddSecondFactorDialog(), + click: () => { + if (this.isDeactivated) { + Dialog.message("userAccountDeactivated_msg") + } else if (this.askForPassword) { + this.showAddSecondFactorDialogWithPasswordCheck() + } else { + this.showAddSecondFactorDialog() + } + }, icon: Icons.Add, size: ButtonSize.Compact, }, @@ -50,7 +68,14 @@ export class SecondFactorsEditForm { m(".h4.mt-l", lang.get("secondFactorAuthentication_label")), m(Table, secondFactorTableAttrs), this.domainConfigProvider.getCurrentDomainConfig().firstPartyDomain - ? [ifAllowedTutaLinks(locator.logins, InfoLink.SecondFactor, (link) => m(MoreInfoLink, { link: link, isSmall: true }))] + ? [ + ifAllowedTutaLinks(locator.logins, InfoLink.SecondFactor, (link) => + m(MoreInfoLink, { + link: link, + isSmall: true, + }), + ), + ] : null, ] } @@ -73,10 +98,15 @@ export class SecondFactorsEditForm { this._2FALineAttrs = factors.map((f) => { const removeButtonAttrs: IconButtonAttrs = { title: "remove_action", - click: () => - Dialog.confirm("confirmDeleteSecondFactor_msg") - .then((res) => (res ? showProgressDialog("pleaseWait_msg", locator.entityClient.erase(f)) : Promise.resolve())) - .catch(ofClass(NotFoundError, (e) => console.log("could not delete second factor (already deleted)", e))), + click: () => { + if (this.isDeactivated) { + Dialog.message("userAccountDeactivated_msg") + } else if (this.askForPassword) { + this.removeSecondFactorWithPasswordCheck(f) + } else { + this.removeSecondFactor(f) + } + }, icon: Icons.Cancel, size: ButtonSize.Compact, } @@ -106,9 +136,72 @@ export class SecondFactorsEditForm { } } - _showAddSecondFactorDialog() { - const mailAddress = assertNotNull(locator.logins.getUserController().userGroupInfo.mailAddress) - SecondFactorEditDialog.loadAndShow(locator.entityClient, this.user, mailAddress) + private showAddSecondFactorDialogWithPasswordCheck() { + const dialog = showRequestPasswordDialog({ + action: async (passphrase) => { + try { + const token = await this.loginFacade.getVerifierToken(passphrase) + this.showAddSecondFactorDialog(token) + } catch (e) { + if (e instanceof NotAuthorizedError) { + return lang.get("invalidPassword_msg") + } else { + throw e + } + } + dialog.close() + return "" + }, + cancel: { + textId: "cancel_action", + action: noOp, + }, + }) + } + + private showAddSecondFactorDialog(token?: string) { + SecondFactorEditDialog.loadAndShow(locator.entityClient, this.user, token) + } + + private removeSecondFactorWithPasswordCheck(secondFactorToRemove: SecondFactor) { + const dialog = showRequestPasswordDialog({ + action: async (passphrase) => { + let token + try { + token = await this.loginFacade.getVerifierToken(passphrase) + } catch (e) { + if (e instanceof NotAuthorizedError) { + return lang.get("invalidPassword_msg") + } else { + throw e + } + } + this.removeSecondFactor(secondFactorToRemove, token) + dialog.close() + return "" + }, + messageText: lang.get("confirmDeleteSecondFactor_msg"), + cancel: { + textId: "cancel_action", + action: noOp, + }, + }) + } + + private removeSecondFactor(secondFactorToRemove: SecondFactor, token?: string) { + try { + let options + if (token) { + options = { extraHeaders: { token } } + } + showProgressDialog("pleaseWait_msg", locator.entityClient.erase(secondFactorToRemove, options)) + } catch (e) { + if (e instanceof NotFoundError) { + console.log("could not delete second factor (already deleted)") + } else { + throw e + } + } } entityEventReceived(update: EntityUpdateData): Promise { diff --git a/test/tests/settings/login/secondfactor/SecondFactorEditModelTest.ts b/test/tests/settings/login/secondfactor/SecondFactorEditModelTest.ts index ab6136e51e5..53008153a6d 100644 --- a/test/tests/settings/login/secondfactor/SecondFactorEditModelTest.ts +++ b/test/tests/settings/login/secondfactor/SecondFactorEditModelTest.ts @@ -11,7 +11,6 @@ import { WebauthnClient } from "../../../../../src/common/misc/2fa/webauthn/Weba import { GroupInfoTypeRef, User } from "../../../../../src/common/api/entities/sys/TypeRefs.js" import { TotpSecret, TotpVerifier } from "@tutao/tutanota-crypto" import { noOp } from "@tutao/tutanota-utils" -import { LanguageViewModel } from "../../../../../src/common/misc/LanguageViewModel.js" import { LoginFacade } from "../../../../../src/common/api/worker/facades/LoginFacade.js" import { SecondFactorType } from "../../../../../src/common/api/common/TutanotaConstants.js" import { createTestEntity, domainConfigStub } from "../../../TestUtils.js" @@ -29,8 +28,6 @@ o.spec("SecondFactorEditModel", function () { let loginFacadeMock: LoginFacade const totpKeys = createTotpKeys() const validName = "myU2Fkey" - const langMock: LanguageViewModel = object() - when(langMock.get(matchers.anything())).thenReturn("hello there") // this is too long if you convert it to bytes const invalidName = "🏳️‍🌈🏳️‍🌈🏳️‍🌈🏳️‍🌈🏴‍☠️🏴‍☠️🏴‍☠️🏴‍☠️🏴‍☠️" const hostname = "testhostname" @@ -39,14 +36,13 @@ o.spec("SecondFactorEditModel", function () { const model = new SecondFactorEditModel( params.entityClient ?? entityClientMock, params.user ?? userMock, - "testaddress@tutanota.de", params.webAuthnClient ?? webAuthnClientMock, totpKeys, params.webauthnSupported ?? true, - langMock, loginFacadeMock, hostname, domainConfigStub, + "mockToken", params.updateView ?? noOp, ) await model.otpInfo.getAsync() @@ -128,7 +124,7 @@ o.spec("SecondFactorEditModel", function () { o.spec("saving a second factor", function () { o("saving a u2f key, happy path", async function () { const redrawMock = tdfn("redrawMock") - when(entityClientMock.setup(matchers.anything(), matchers.anything())).thenResolve("randomID") + when(entityClientMock.setup(matchers.anything(), matchers.anything(), matchers.anything())).thenResolve("randomID") when(webAuthnClientMock.register(matchers.anything(), matchers.anything())).thenResolve({}) const model = await createSecondFactorModel({ updateView: redrawMock }) @@ -138,12 +134,12 @@ o.spec("SecondFactorEditModel", function () { o(user).deepEquals(userMock) verify(redrawMock(), { times: 2 }) - verify(entityClientMock.setup(matchers.anything(), matchers.anything()), { times: 1 }) + verify(entityClientMock.setup(matchers.anything(), matchers.anything(), matchers.anything()), { times: 1 }) }) o("saving a totp key, happy path", async function () { const redrawMock = tdfn("redrawMock") - when(entityClientMock.setup(matchers.anything(), matchers.anything())).thenResolve("randomID") + when(entityClientMock.setup(matchers.anything(), matchers.anything(), matchers.anything())).thenResolve("randomID") when(webAuthnClientMock.register(matchers.anything(), matchers.anything())).thenResolve({}) when(loginFacadeMock.generateTotpCode(matchers.anything(), matchers.anything())).thenResolve(123456) const model = await createSecondFactorModel({ updateView: redrawMock }) @@ -155,7 +151,7 @@ o.spec("SecondFactorEditModel", function () { o(user).deepEquals(userMock) verify(redrawMock(), { times: 3 }) - verify(entityClientMock.setup(matchers.anything(), matchers.anything()), { times: 1 }) + verify(entityClientMock.setup(matchers.anything(), matchers.anything(), matchers.anything()), { times: 1 }) }) }) diff --git a/tuta-sdk/rust/sdk/src/entities/generated/sys.rs b/tuta-sdk/rust/sdk/src/entities/generated/sys.rs index f8d6cb82610..d4f6b2394f8 100644 --- a/tuta-sdk/rust/sdk/src/entities/generated/sys.rs +++ b/tuta-sdk/rust/sdk/src/entities/generated/sys.rs @@ -4083,6 +4083,37 @@ impl Entity for VariableExternalAuthInfo { } } +#[derive(uniffi::Record, Clone, Serialize, Deserialize)] +#[cfg_attr(test, derive(PartialEq, Debug))] +pub struct VerifierTokenServiceIn { + pub _format: i64, + #[serde(with = "serde_bytes")] + pub authVerifier: Vec, +} +impl Entity for VerifierTokenServiceIn { + fn type_ref() -> TypeRef { + TypeRef { + app: "sys", + type_: "VerifierTokenServiceIn", + } + } +} + +#[derive(uniffi::Record, Clone, Serialize, Deserialize)] +#[cfg_attr(test, derive(PartialEq, Debug))] +pub struct VerifierTokenServiceOut { + pub _format: i64, + pub token: String, +} +impl Entity for VerifierTokenServiceOut { + fn type_ref() -> TypeRef { + TypeRef { + app: "sys", + type_: "VerifierTokenServiceOut", + } + } +} + #[derive(uniffi::Record, Clone, Serialize, Deserialize)] #[cfg_attr(test, derive(PartialEq, Debug))] pub struct VerifyRegistrationCodeData { diff --git a/tuta-sdk/rust/sdk/src/services/generated/sys.rs b/tuta-sdk/rust/sdk/src/services/generated/sys.rs index a8723617a75..f7eb499975b 100644 --- a/tuta-sdk/rust/sdk/src/services/generated/sys.rs +++ b/tuta-sdk/rust/sdk/src/services/generated/sys.rs @@ -86,6 +86,8 @@ use crate::entities::generated::sys::UpgradePriceServiceData; use crate::entities::generated::sys::UpgradePriceServiceReturn; use crate::entities::generated::sys::UserDataDelete; use crate::entities::generated::sys::UserGroupKeyRotationPostIn; +use crate::entities::generated::sys::VerifierTokenServiceIn; +use crate::entities::generated::sys::VerifierTokenServiceOut; use crate::entities::generated::sys::VersionData; use crate::entities::generated::sys::VersionReturn; use crate::entities::Entity; @@ -101,7 +103,7 @@ crate::service_impl!( declare, AdminGroupKeyRotationService, "sys/admingroupkeyrotationservice", - 113 + 114 ); crate::service_impl!( POST, @@ -116,7 +118,7 @@ crate::service_impl!( declare, AffiliatePartnerKpiService, "sys/affiliatepartnerkpiservice", - 113 + 114 ); crate::service_impl!( GET, @@ -127,12 +129,12 @@ crate::service_impl!( pub struct AlarmService; -crate::service_impl!(declare, AlarmService, "sys/alarmservice", 113); +crate::service_impl!(declare, AlarmService, "sys/alarmservice", 114); crate::service_impl!(POST, AlarmService, AlarmServicePost, ()); pub struct AutoLoginService; -crate::service_impl!(declare, AutoLoginService, "sys/autologinservice", 113); +crate::service_impl!(declare, AutoLoginService, "sys/autologinservice", 114); crate::service_impl!( POST, AutoLoginService, @@ -148,7 +150,7 @@ crate::service_impl!( declare, BrandingDomainService, "sys/brandingdomainservice", - 113 + 114 ); crate::service_impl!(POST, BrandingDomainService, BrandingDomainData, ()); crate::service_impl!(GET, BrandingDomainService, (), BrandingDomainGetReturn); @@ -157,7 +159,7 @@ crate::service_impl!(DELETE, BrandingDomainService, BrandingDomainDeleteData, () pub struct ChangeKdfService; -crate::service_impl!(declare, ChangeKdfService, "sys/changekdfservice", 113); +crate::service_impl!(declare, ChangeKdfService, "sys/changekdfservice", 114); crate::service_impl!(POST, ChangeKdfService, ChangeKdfPostIn, ()); pub struct ChangePasswordService; @@ -166,13 +168,13 @@ crate::service_impl!( declare, ChangePasswordService, "sys/changepasswordservice", - 113 + 114 ); crate::service_impl!(POST, ChangePasswordService, ChangePasswordPostIn, ()); pub struct CloseSessionService; -crate::service_impl!(declare, CloseSessionService, "sys/closesessionservice", 113); +crate::service_impl!(declare, CloseSessionService, "sys/closesessionservice", 114); crate::service_impl!(POST, CloseSessionService, CloseSessionServicePost, ()); pub struct CreateCustomerServerProperties; @@ -181,7 +183,7 @@ crate::service_impl!( declare, CreateCustomerServerProperties, "sys/createcustomerserverproperties", - 113 + 114 ); crate::service_impl!( POST, @@ -196,7 +198,7 @@ crate::service_impl!( declare, CustomDomainCheckService, "sys/customdomaincheckservice", - 113 + 114 ); crate::service_impl!( GET, @@ -207,7 +209,7 @@ crate::service_impl!( pub struct CustomDomainService; -crate::service_impl!(declare, CustomDomainService, "sys/customdomainservice", 113); +crate::service_impl!(declare, CustomDomainService, "sys/customdomainservice", 114); crate::service_impl!( POST, CustomDomainService, @@ -223,7 +225,7 @@ crate::service_impl!( declare, CustomerAccountTerminationService, "sys/customeraccountterminationservice", - 113 + 114 ); crate::service_impl!( POST, @@ -238,18 +240,18 @@ crate::service_impl!( declare, CustomerPublicKeyService, "sys/customerpublickeyservice", - 113 + 114 ); crate::service_impl!(GET, CustomerPublicKeyService, (), PublicKeyGetOut); pub struct CustomerService; -crate::service_impl!(declare, CustomerService, "sys/customerservice", 113); +crate::service_impl!(declare, CustomerService, "sys/customerservice", 114); crate::service_impl!(DELETE, CustomerService, DeleteCustomerData, ()); pub struct DebitService; -crate::service_impl!(declare, DebitService, "sys/debitservice", 113); +crate::service_impl!(declare, DebitService, "sys/debitservice", 114); crate::service_impl!(PUT, DebitService, DebitServicePutData, ()); pub struct DomainMailAddressAvailabilityService; @@ -258,7 +260,7 @@ crate::service_impl!( declare, DomainMailAddressAvailabilityService, "sys/domainmailaddressavailabilityservice", - 113 + 114 ); crate::service_impl!( GET, @@ -273,7 +275,7 @@ crate::service_impl!( declare, ExternalPropertiesService, "sys/externalpropertiesservice", - 113 + 114 ); crate::service_impl!(GET, ExternalPropertiesService, (), ExternalPropertiesReturn); @@ -283,7 +285,7 @@ crate::service_impl!( declare, GiftCardRedeemService, "sys/giftcardredeemservice", - 113 + 114 ); crate::service_impl!(POST, GiftCardRedeemService, GiftCardRedeemData, ()); crate::service_impl!( @@ -295,7 +297,7 @@ crate::service_impl!( pub struct GiftCardService; -crate::service_impl!(declare, GiftCardService, "sys/giftcardservice", 113); +crate::service_impl!(declare, GiftCardService, "sys/giftcardservice", 114); crate::service_impl!( POST, GiftCardService, @@ -311,7 +313,7 @@ crate::service_impl!( declare, GroupKeyRotationInfoService, "sys/groupkeyrotationinfoservice", - 113 + 114 ); crate::service_impl!( GET, @@ -326,13 +328,13 @@ crate::service_impl!( declare, GroupKeyRotationService, "sys/groupkeyrotationservice", - 113 + 114 ); crate::service_impl!(POST, GroupKeyRotationService, GroupKeyRotationPostIn, ()); pub struct InvoiceDataService; -crate::service_impl!(declare, InvoiceDataService, "sys/invoicedataservice", 113); +crate::service_impl!(declare, InvoiceDataService, "sys/invoicedataservice", 114); crate::service_impl!(GET, InvoiceDataService, InvoiceDataGetIn, InvoiceDataGetOut); pub struct LocalAdminRemovalService; @@ -341,13 +343,13 @@ crate::service_impl!( declare, LocalAdminRemovalService, "sys/localadminremovalservice", - 113 + 114 ); crate::service_impl!(POST, LocalAdminRemovalService, LocalAdminRemovalPostIn, ()); pub struct LocationService; -crate::service_impl!(declare, LocationService, "sys/locationservice", 113); +crate::service_impl!(declare, LocationService, "sys/locationservice", 114); crate::service_impl!(GET, LocationService, (), LocationServiceGetReturn); pub struct MailAddressAliasService; @@ -356,7 +358,7 @@ crate::service_impl!( declare, MailAddressAliasService, "sys/mailaddressaliasservice", - 113 + 114 ); crate::service_impl!( POST, @@ -379,7 +381,7 @@ crate::service_impl!( pub struct MembershipService; -crate::service_impl!(declare, MembershipService, "sys/membershipservice", 113); +crate::service_impl!(declare, MembershipService, "sys/membershipservice", 114); crate::service_impl!(POST, MembershipService, MembershipAddData, ()); crate::service_impl!(PUT, MembershipService, MembershipPutIn, ()); crate::service_impl!(DELETE, MembershipService, MembershipRemoveData, ()); @@ -390,7 +392,7 @@ crate::service_impl!( declare, MultipleMailAddressAvailabilityService, "sys/multiplemailaddressavailabilityservice", - 113 + 114 ); crate::service_impl!( GET, @@ -401,7 +403,7 @@ crate::service_impl!( pub struct PaymentDataService; -crate::service_impl!(declare, PaymentDataService, "sys/paymentdataservice", 113); +crate::service_impl!(declare, PaymentDataService, "sys/paymentdataservice", 114); crate::service_impl!(POST, PaymentDataService, PaymentDataServicePostData, ()); crate::service_impl!( GET, @@ -418,23 +420,23 @@ crate::service_impl!( pub struct PlanService; -crate::service_impl!(declare, PlanService, "sys/planservice", 113); +crate::service_impl!(declare, PlanService, "sys/planservice", 114); crate::service_impl!(GET, PlanService, (), PlanServiceGetOut); pub struct PriceService; -crate::service_impl!(declare, PriceService, "sys/priceservice", 113); +crate::service_impl!(declare, PriceService, "sys/priceservice", 114); crate::service_impl!(GET, PriceService, PriceServiceData, PriceServiceReturn); pub struct PublicKeyService; -crate::service_impl!(declare, PublicKeyService, "sys/publickeyservice", 113); +crate::service_impl!(declare, PublicKeyService, "sys/publickeyservice", 114); crate::service_impl!(GET, PublicKeyService, PublicKeyGetIn, PublicKeyGetOut); crate::service_impl!(PUT, PublicKeyService, PublicKeyPutIn, ()); pub struct ReferralCodeService; -crate::service_impl!(declare, ReferralCodeService, "sys/referralcodeservice", 113); +crate::service_impl!(declare, ReferralCodeService, "sys/referralcodeservice", 114); crate::service_impl!( POST, ReferralCodeService, @@ -449,7 +451,7 @@ crate::service_impl!( declare, RegistrationCaptchaService, "sys/registrationcaptchaservice", - 113 + 114 ); crate::service_impl!( POST, @@ -466,7 +468,7 @@ crate::service_impl!( pub struct RegistrationService; -crate::service_impl!(declare, RegistrationService, "sys/registrationservice", 113); +crate::service_impl!(declare, RegistrationService, "sys/registrationservice", 114); crate::service_impl!( POST, RegistrationService, @@ -477,7 +479,7 @@ crate::service_impl!(GET, RegistrationService, (), RegistrationServiceData); pub struct ResetFactorsService; -crate::service_impl!(declare, ResetFactorsService, "sys/resetfactorsservice", 113); +crate::service_impl!(declare, ResetFactorsService, "sys/resetfactorsservice", 114); crate::service_impl!(DELETE, ResetFactorsService, ResetFactorsDeleteData, ()); pub struct ResetPasswordService; @@ -486,13 +488,13 @@ crate::service_impl!( declare, ResetPasswordService, "sys/resetpasswordservice", - 113 + 114 ); crate::service_impl!(POST, ResetPasswordService, ResetPasswordPostIn, ()); pub struct SaltService; -crate::service_impl!(declare, SaltService, "sys/saltservice", 113); +crate::service_impl!(declare, SaltService, "sys/saltservice", 114); crate::service_impl!(GET, SaltService, SaltData, SaltReturn); pub struct SecondFactorAuthAllowedService; @@ -501,7 +503,7 @@ crate::service_impl!( declare, SecondFactorAuthAllowedService, "sys/secondfactorauthallowedservice", - 113 + 114 ); crate::service_impl!( GET, @@ -516,7 +518,7 @@ crate::service_impl!( declare, SecondFactorAuthService, "sys/secondfactorauthservice", - 113 + 114 ); crate::service_impl!(POST, SecondFactorAuthService, SecondFactorAuthData, ()); crate::service_impl!( @@ -534,7 +536,7 @@ crate::service_impl!( pub struct SessionService; -crate::service_impl!(declare, SessionService, "sys/sessionservice", 113); +crate::service_impl!(declare, SessionService, "sys/sessionservice", 114); crate::service_impl!(POST, SessionService, CreateSessionData, CreateSessionReturn); pub struct SignOrderProcessingAgreementService; @@ -543,7 +545,7 @@ crate::service_impl!( declare, SignOrderProcessingAgreementService, "sys/signorderprocessingagreementservice", - 113 + 114 ); crate::service_impl!( POST, @@ -558,13 +560,13 @@ crate::service_impl!( declare, SwitchAccountTypeService, "sys/switchaccounttypeservice", - 113 + 114 ); crate::service_impl!(POST, SwitchAccountTypeService, SwitchAccountTypePostIn, ()); pub struct SystemKeysService; -crate::service_impl!(declare, SystemKeysService, "sys/systemkeysservice", 113); +crate::service_impl!(declare, SystemKeysService, "sys/systemkeysservice", 114); crate::service_impl!(GET, SystemKeysService, (), SystemKeysReturn); pub struct TakeOverDeletedAddressService; @@ -573,7 +575,7 @@ crate::service_impl!( declare, TakeOverDeletedAddressService, "sys/takeoverdeletedaddressservice", - 113 + 114 ); crate::service_impl!( POST, @@ -588,7 +590,7 @@ crate::service_impl!( declare, UpdatePermissionKeyService, "sys/updatepermissionkeyservice", - 113 + 114 ); crate::service_impl!( POST, @@ -603,13 +605,13 @@ crate::service_impl!( declare, UpdateSessionKeysService, "sys/updatesessionkeysservice", - 113 + 114 ); crate::service_impl!(POST, UpdateSessionKeysService, UpdateSessionKeysPostIn, ()); pub struct UpgradePriceService; -crate::service_impl!(declare, UpgradePriceService, "sys/upgradepriceservice", 113); +crate::service_impl!(declare, UpgradePriceService, "sys/upgradepriceservice", 114); crate::service_impl!( GET, UpgradePriceService, @@ -623,7 +625,7 @@ crate::service_impl!( declare, UserGroupKeyRotationService, "sys/usergroupkeyrotationservice", - 113 + 114 ); crate::service_impl!( POST, @@ -634,10 +636,25 @@ crate::service_impl!( pub struct UserService; -crate::service_impl!(declare, UserService, "sys/userservice", 113); +crate::service_impl!(declare, UserService, "sys/userservice", 114); crate::service_impl!(DELETE, UserService, UserDataDelete, ()); +pub struct VerifierTokenService; + +crate::service_impl!( + declare, + VerifierTokenService, + "sys/verifiertokenservice", + 114 +); +crate::service_impl!( + POST, + VerifierTokenService, + VerifierTokenServiceIn, + VerifierTokenServiceOut +); + pub struct VersionService; -crate::service_impl!(declare, VersionService, "sys/versionservice", 113); +crate::service_impl!(declare, VersionService, "sys/versionservice", 114); crate::service_impl!(GET, VersionService, VersionData, VersionReturn); diff --git a/tuta-sdk/rust/sdk/src/type_models/sys.json b/tuta-sdk/rust/sdk/src/type_models/sys.json index 46b44d868b6..a9d0c6d68fd 100644 --- a/tuta-sdk/rust/sdk/src/type_models/sys.json +++ b/tuta-sdk/rust/sdk/src/type_models/sys.json @@ -212,7 +212,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AdminGroupKeyAuthenticationData": { "name": "AdminGroupKeyAuthenticationData", @@ -264,7 +264,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AdminGroupKeyRotationPostIn": { "name": "AdminGroupKeyRotationPostIn", @@ -318,7 +318,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AdministratedGroup": { "name": "AdministratedGroup", @@ -398,7 +398,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AdministratedGroupsRef": { "name": "AdministratedGroupsRef", @@ -432,7 +432,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AffiliatePartnerKpiMonthSummary": { "name": "AffiliatePartnerKpiMonthSummary", @@ -509,7 +509,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "AffiliatePartnerKpiServiceGetOut": { "name": "AffiliatePartnerKpiServiceGetOut", @@ -570,7 +570,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AlarmInfo": { "name": "AlarmInfo", @@ -622,7 +622,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AlarmNotification": { "name": "AlarmNotification", @@ -722,7 +722,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AlarmServicePost": { "name": "AlarmServicePost", @@ -756,7 +756,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "ArchiveRef": { "name": "ArchiveRef", @@ -788,7 +788,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ArchiveType": { "name": "ArchiveType", @@ -842,7 +842,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AuditLogEntry": { "name": "AuditLogEntry", @@ -976,7 +976,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AuditLogRef": { "name": "AuditLogRef", @@ -1010,7 +1010,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AuthenticatedDevice": { "name": "AuthenticatedDevice", @@ -1060,7 +1060,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Authentication": { "name": "Authentication", @@ -1121,7 +1121,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AutoLoginDataDelete": { "name": "AutoLoginDataDelete", @@ -1153,7 +1153,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "AutoLoginDataGet": { "name": "AutoLoginDataGet", @@ -1196,7 +1196,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "AutoLoginDataReturn": { "name": "AutoLoginDataReturn", @@ -1228,7 +1228,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "AutoLoginPostReturn": { "name": "AutoLoginPostReturn", @@ -1260,7 +1260,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Blob": { "name": "Blob", @@ -1310,7 +1310,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BlobReferenceTokenWrapper": { "name": "BlobReferenceTokenWrapper", @@ -1342,7 +1342,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Booking": { "name": "Booking", @@ -1466,7 +1466,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "BookingItem": { "name": "BookingItem", @@ -1552,7 +1552,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BookingsRef": { "name": "BookingsRef", @@ -1586,7 +1586,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "BootstrapFeature": { "name": "BootstrapFeature", @@ -1618,7 +1618,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Braintree3ds2Request": { "name": "Braintree3ds2Request", @@ -1668,7 +1668,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Braintree3ds2Response": { "name": "Braintree3ds2Response", @@ -1709,7 +1709,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BrandingDomainData": { "name": "BrandingDomainData", @@ -1786,7 +1786,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BrandingDomainDeleteData": { "name": "BrandingDomainDeleteData", @@ -1818,7 +1818,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "BrandingDomainGetReturn": { "name": "BrandingDomainGetReturn", @@ -1852,7 +1852,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "Bucket": { "name": "Bucket", @@ -1886,7 +1886,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "BucketKey": { "name": "BucketKey", @@ -1975,7 +1975,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "BucketPermission": { "name": "BucketPermission", @@ -2117,7 +2117,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CalendarEventRef": { "name": "CalendarEventRef", @@ -2158,7 +2158,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "CertificateInfo": { "name": "CertificateInfo", @@ -2219,7 +2219,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "Challenge": { "name": "Challenge", @@ -2272,7 +2272,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "ChangeKdfPostIn": { "name": "ChangeKdfPostIn", @@ -2349,7 +2349,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ChangePasswordPostIn": { "name": "ChangePasswordPostIn", @@ -2444,7 +2444,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Chat": { "name": "Chat", @@ -2494,7 +2494,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "CloseSessionServicePost": { "name": "CloseSessionServicePost", @@ -2537,7 +2537,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CreateCustomerServerPropertiesData": { "name": "CreateCustomerServerPropertiesData", @@ -2578,7 +2578,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "CreateCustomerServerPropertiesReturn": { "name": "CreateCustomerServerPropertiesReturn", @@ -2612,7 +2612,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CreateSessionData": { "name": "CreateSessionData", @@ -2700,7 +2700,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CreateSessionReturn": { "name": "CreateSessionReturn", @@ -2753,7 +2753,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CreditCard": { "name": "CreditCard", @@ -2821,7 +2821,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "CustomDomainCheckGetIn": { "name": "CustomDomainCheckGetIn", @@ -2864,7 +2864,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomDomainCheckGetOut": { "name": "CustomDomainCheckGetOut", @@ -2927,7 +2927,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomDomainData": { "name": "CustomDomainData", @@ -2970,7 +2970,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomDomainReturn": { "name": "CustomDomainReturn", @@ -3013,7 +3013,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "Customer": { "name": "Customer", @@ -3270,7 +3270,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerAccountTerminationPostIn": { "name": "CustomerAccountTerminationPostIn", @@ -3313,7 +3313,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerAccountTerminationPostOut": { "name": "CustomerAccountTerminationPostOut", @@ -3347,7 +3347,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerAccountTerminationRequest": { "name": "CustomerAccountTerminationRequest", @@ -3426,7 +3426,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerInfo": { "name": "CustomerInfo", @@ -3739,7 +3739,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerProperties": { "name": "CustomerProperties", @@ -3847,7 +3847,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "CustomerServerProperties": { "name": "CustomerServerProperties", @@ -3963,7 +3963,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "DateWrapper": { "name": "DateWrapper", @@ -3995,7 +3995,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "DebitServicePutData": { "name": "DebitServicePutData", @@ -4029,7 +4029,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "DeleteCustomerData": { "name": "DeleteCustomerData", @@ -4109,7 +4109,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "DnsRecord": { "name": "DnsRecord", @@ -4159,7 +4159,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "DomainInfo": { "name": "DomainInfo", @@ -4221,7 +4221,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "DomainMailAddressAvailabilityData": { "name": "DomainMailAddressAvailabilityData", @@ -4253,7 +4253,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "DomainMailAddressAvailabilityReturn": { "name": "DomainMailAddressAvailabilityReturn", @@ -4285,7 +4285,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "EmailSenderListElement": { "name": "EmailSenderListElement", @@ -4344,7 +4344,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "EntityEventBatch": { "name": "EntityEventBatch", @@ -4405,7 +4405,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "EntityUpdate": { "name": "EntityUpdate", @@ -4473,7 +4473,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Exception": { "name": "Exception", @@ -4514,7 +4514,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ExternalPropertiesReturn": { "name": "ExternalPropertiesReturn", @@ -4576,7 +4576,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "ExternalUserReference": { "name": "ExternalUserReference", @@ -4647,7 +4647,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "Feature": { "name": "Feature", @@ -4679,7 +4679,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "File": { "name": "File", @@ -4729,7 +4729,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GeneratedIdWrapper": { "name": "GeneratedIdWrapper", @@ -4761,7 +4761,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GiftCard": { "name": "GiftCard", @@ -4874,7 +4874,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardCreateData": { "name": "GiftCardCreateData", @@ -4942,7 +4942,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardCreateReturn": { "name": "GiftCardCreateReturn", @@ -4976,7 +4976,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardDeleteData": { "name": "GiftCardDeleteData", @@ -5010,7 +5010,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardGetReturn": { "name": "GiftCardGetReturn", @@ -5062,7 +5062,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardOption": { "name": "GiftCardOption", @@ -5094,7 +5094,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardRedeemData": { "name": "GiftCardRedeemData", @@ -5146,7 +5146,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardRedeemGetReturn": { "name": "GiftCardRedeemGetReturn", @@ -5198,7 +5198,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GiftCardsRef": { "name": "GiftCardsRef", @@ -5232,7 +5232,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "Group": { "name": "Group", @@ -5457,7 +5457,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupInfo": { "name": "GroupInfo", @@ -5610,7 +5610,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKey": { "name": "GroupKey", @@ -5717,7 +5717,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyRotationData": { "name": "GroupKeyRotationData", @@ -5817,7 +5817,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyRotationInfoGetOut": { "name": "GroupKeyRotationInfoGetOut", @@ -5860,7 +5860,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyRotationPostIn": { "name": "GroupKeyRotationPostIn", @@ -5894,7 +5894,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyUpdate": { "name": "GroupKeyUpdate", @@ -5991,7 +5991,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyUpdateData": { "name": "GroupKeyUpdateData", @@ -6052,7 +6052,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeyUpdatesRef": { "name": "GroupKeyUpdatesRef", @@ -6086,7 +6086,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupKeysRef": { "name": "GroupKeysRef", @@ -6120,7 +6120,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupMember": { "name": "GroupMember", @@ -6210,7 +6210,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupMembership": { "name": "GroupMembership", @@ -6318,7 +6318,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupMembershipKeyData": { "name": "GroupMembershipKeyData", @@ -6379,7 +6379,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupMembershipUpdateData": { "name": "GroupMembershipUpdateData", @@ -6431,7 +6431,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "GroupRoot": { "name": "GroupRoot", @@ -6512,7 +6512,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "IdTupleWrapper": { "name": "IdTupleWrapper", @@ -6553,7 +6553,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "InstanceSessionKey": { "name": "InstanceSessionKey", @@ -6632,7 +6632,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "Invoice": { "name": "Invoice", @@ -6848,7 +6848,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceDataGetIn": { "name": "InvoiceDataGetIn", @@ -6880,7 +6880,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceDataGetOut": { "name": "InvoiceDataGetOut", @@ -7022,7 +7022,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceDataItem": { "name": "InvoiceDataItem", @@ -7099,7 +7099,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceInfo": { "name": "InvoiceInfo", @@ -7278,7 +7278,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "InvoiceItem": { "name": "InvoiceItem", @@ -7364,7 +7364,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "KeyPair": { "name": "KeyPair", @@ -7441,7 +7441,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "KeyRotation": { "name": "KeyRotation", @@ -7520,7 +7520,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "KeyRotationsRef": { "name": "KeyRotationsRef", @@ -7554,7 +7554,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "LocalAdminGroupReplacementData": { "name": "LocalAdminGroupReplacementData", @@ -7615,7 +7615,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "LocalAdminRemovalPostIn": { "name": "LocalAdminRemovalPostIn", @@ -7649,7 +7649,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "LocationServiceGetReturn": { "name": "LocationServiceGetReturn", @@ -7681,7 +7681,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Login": { "name": "Login", @@ -7740,7 +7740,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAlias": { "name": "MailAddressAlias", @@ -7781,7 +7781,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAliasGetIn": { "name": "MailAddressAliasGetIn", @@ -7815,7 +7815,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAliasServiceData": { "name": "MailAddressAliasServiceData", @@ -7858,7 +7858,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAliasServiceDataDelete": { "name": "MailAddressAliasServiceDataDelete", @@ -7910,7 +7910,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAliasServiceReturn": { "name": "MailAddressAliasServiceReturn", @@ -7969,7 +7969,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressAvailability": { "name": "MailAddressAvailability", @@ -8010,7 +8010,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "MailAddressToGroup": { "name": "MailAddressToGroup", @@ -8071,7 +8071,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "MembershipAddData": { "name": "MembershipAddData", @@ -8142,7 +8142,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "MembershipPutIn": { "name": "MembershipPutIn", @@ -8176,7 +8176,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "MembershipRemoveData": { "name": "MembershipRemoveData", @@ -8220,7 +8220,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "MissedNotification": { "name": "MissedNotification", @@ -8336,7 +8336,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "MultipleMailAddressAvailabilityData": { "name": "MultipleMailAddressAvailabilityData", @@ -8370,7 +8370,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "MultipleMailAddressAvailabilityReturn": { "name": "MultipleMailAddressAvailabilityReturn", @@ -8404,7 +8404,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "NotificationInfo": { "name": "NotificationInfo", @@ -8456,7 +8456,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "NotificationMailTemplate": { "name": "NotificationMailTemplate", @@ -8506,7 +8506,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "NotificationSessionKey": { "name": "NotificationSessionKey", @@ -8549,7 +8549,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "OrderProcessingAgreement": { "name": "OrderProcessingAgreement", @@ -8665,7 +8665,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "OtpChallenge": { "name": "OtpChallenge", @@ -8699,7 +8699,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServiceGetData": { "name": "PaymentDataServiceGetData", @@ -8731,7 +8731,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServiceGetReturn": { "name": "PaymentDataServiceGetReturn", @@ -8763,7 +8763,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServicePostData": { "name": "PaymentDataServicePostData", @@ -8797,7 +8797,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServicePutData": { "name": "PaymentDataServicePutData", @@ -8912,7 +8912,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PaymentDataServicePutReturn": { "name": "PaymentDataServicePutReturn", @@ -8955,7 +8955,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PaymentErrorInfo": { "name": "PaymentErrorInfo", @@ -9005,7 +9005,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Permission": { "name": "Permission", @@ -9157,7 +9157,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PlanConfiguration": { "name": "PlanConfiguration", @@ -9270,7 +9270,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PlanPrices": { "name": "PlanPrices", @@ -9412,7 +9412,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PlanServiceGetOut": { "name": "PlanServiceGetOut", @@ -9446,7 +9446,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PriceData": { "name": "PriceData", @@ -9507,7 +9507,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PriceItemData": { "name": "PriceItemData", @@ -9566,7 +9566,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PriceRequestData": { "name": "PriceRequestData", @@ -9643,7 +9643,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PriceServiceData": { "name": "PriceServiceData", @@ -9686,7 +9686,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PriceServiceReturn": { "name": "PriceServiceReturn", @@ -9758,7 +9758,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PubEncKeyData": { "name": "PubEncKeyData", @@ -9835,7 +9835,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PublicKeyGetIn": { "name": "PublicKeyGetIn", @@ -9885,7 +9885,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PublicKeyGetOut": { "name": "PublicKeyGetOut", @@ -9944,7 +9944,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PublicKeyPutIn": { "name": "PublicKeyPutIn", @@ -9996,7 +9996,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "PushIdentifier": { "name": "PushIdentifier", @@ -10154,7 +10154,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "PushIdentifierList": { "name": "PushIdentifierList", @@ -10188,7 +10188,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "ReceivedGroupInvitation": { "name": "ReceivedGroupInvitation", @@ -10349,7 +10349,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "RecoverCode": { "name": "RecoverCode", @@ -10435,7 +10435,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RecoverCodeData": { "name": "RecoverCodeData", @@ -10494,7 +10494,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ReferralCodeGetIn": { "name": "ReferralCodeGetIn", @@ -10528,7 +10528,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "ReferralCodePostIn": { "name": "ReferralCodePostIn", @@ -10551,7 +10551,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ReferralCodePostOut": { "name": "ReferralCodePostOut", @@ -10585,7 +10585,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationCaptchaServiceData": { "name": "RegistrationCaptchaServiceData", @@ -10626,7 +10626,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationCaptchaServiceGetData": { "name": "RegistrationCaptchaServiceGetData", @@ -10694,7 +10694,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationCaptchaServiceReturn": { "name": "RegistrationCaptchaServiceReturn", @@ -10735,7 +10735,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationReturn": { "name": "RegistrationReturn", @@ -10767,7 +10767,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RegistrationServiceData": { "name": "RegistrationServiceData", @@ -10817,7 +10817,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RejectedSender": { "name": "RejectedSender", @@ -10912,7 +10912,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "RejectedSendersRef": { "name": "RejectedSendersRef", @@ -10946,7 +10946,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "RepeatRule": { "name": "RepeatRule", @@ -11025,7 +11025,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "ResetFactorsDeleteData": { "name": "ResetFactorsDeleteData", @@ -11075,7 +11075,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "ResetPasswordPostIn": { "name": "ResetPasswordPostIn", @@ -11154,7 +11154,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "RootInstance": { "name": "RootInstance", @@ -11213,7 +11213,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SaltData": { "name": "SaltData", @@ -11245,7 +11245,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SaltReturn": { "name": "SaltReturn", @@ -11286,7 +11286,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactor": { "name": "SecondFactor", @@ -11374,7 +11374,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthAllowedReturn": { "name": "SecondFactorAuthAllowedReturn", @@ -11406,7 +11406,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthData": { "name": "SecondFactorAuthData", @@ -11478,7 +11478,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthDeleteData": { "name": "SecondFactorAuthDeleteData", @@ -11512,7 +11512,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthGetData": { "name": "SecondFactorAuthGetData", @@ -11544,7 +11544,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthGetReturn": { "name": "SecondFactorAuthGetReturn", @@ -11576,7 +11576,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SecondFactorAuthentication": { "name": "SecondFactorAuthentication", @@ -11662,7 +11662,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SendRegistrationCodeData": { "name": "SendRegistrationCodeData", @@ -11721,7 +11721,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SendRegistrationCodeReturn": { "name": "SendRegistrationCodeReturn", @@ -11753,7 +11753,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SentGroupInvitation": { "name": "SentGroupInvitation", @@ -11842,7 +11842,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "Session": { "name": "Session", @@ -11985,7 +11985,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "SignOrderProcessingAgreementData": { "name": "SignOrderProcessingAgreementData", @@ -12026,7 +12026,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SseConnectData": { "name": "SseConnectData", @@ -12069,7 +12069,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "StringConfigValue": { "name": "StringConfigValue", @@ -12110,7 +12110,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "StringWrapper": { "name": "StringWrapper", @@ -12142,7 +12142,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SurveyData": { "name": "SurveyData", @@ -12201,7 +12201,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "SwitchAccountTypePostIn": { "name": "SwitchAccountTypePostIn", @@ -12290,7 +12290,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "SystemKeysReturn": { "name": "SystemKeysReturn", @@ -12406,7 +12406,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "TakeOverDeletedAddressData": { "name": "TakeOverDeletedAddressData", @@ -12465,7 +12465,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "TypeInfo": { "name": "TypeInfo", @@ -12506,7 +12506,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "U2fChallenge": { "name": "U2fChallenge", @@ -12549,7 +12549,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "U2fKey": { "name": "U2fKey", @@ -12601,7 +12601,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "U2fRegisteredDevice": { "name": "U2fRegisteredDevice", @@ -12669,7 +12669,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "U2fResponseData": { "name": "U2fResponseData", @@ -12719,7 +12719,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "UpdatePermissionKeyData": { "name": "UpdatePermissionKeyData", @@ -12781,7 +12781,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UpdateSessionKeysPostIn": { "name": "UpdateSessionKeysPostIn", @@ -12815,7 +12815,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UpgradePriceServiceData": { "name": "UpgradePriceServiceData", @@ -12867,7 +12867,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UpgradePriceServiceReturn": { "name": "UpgradePriceServiceReturn", @@ -13038,7 +13038,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "User": { "name": "User", @@ -13253,7 +13253,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UserAlarmInfo": { "name": "UserAlarmInfo", @@ -13332,7 +13332,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UserAlarmInfoListType": { "name": "UserAlarmInfoListType", @@ -13366,7 +13366,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UserAreaGroups": { "name": "UserAreaGroups", @@ -13400,7 +13400,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UserAuthentication": { "name": "UserAuthentication", @@ -13454,7 +13454,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UserDataDelete": { "name": "UserDataDelete", @@ -13506,7 +13506,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UserExternalAuthInfo": { "name": "UserExternalAuthInfo", @@ -13576,7 +13576,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UserGroupKeyDistribution": { "name": "UserGroupKeyDistribution", @@ -13644,7 +13644,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "UserGroupKeyRotationData": { "name": "UserGroupKeyRotationData", @@ -13771,7 +13771,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UserGroupKeyRotationPostIn": { "name": "UserGroupKeyRotationPostIn", @@ -13805,7 +13805,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "UserGroupRoot": { "name": "UserGroupRoot", @@ -13886,7 +13886,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "VariableExternalAuthInfo": { "name": "VariableExternalAuthInfo", @@ -13990,7 +13990,71 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" + }, + "VerifierTokenServiceIn": { + "name": "VerifierTokenServiceIn", + "since": 114, + "type": "DATA_TRANSFER_TYPE", + "id": 2501, + "rootId": "A3N5cwAJxQ", + "versioned": false, + "encrypted": false, + "values": { + "_format": { + "final": false, + "name": "_format", + "id": 2502, + "since": 114, + "type": "Number", + "cardinality": "One", + "encrypted": false + }, + "authVerifier": { + "final": false, + "name": "authVerifier", + "id": 2503, + "since": 114, + "type": "Bytes", + "cardinality": "One", + "encrypted": false + } + }, + "associations": {}, + "app": "sys", + "version": "114" + }, + "VerifierTokenServiceOut": { + "name": "VerifierTokenServiceOut", + "since": 114, + "type": "DATA_TRANSFER_TYPE", + "id": 2494, + "rootId": "A3N5cwAJvg", + "versioned": false, + "encrypted": false, + "values": { + "_format": { + "final": false, + "name": "_format", + "id": 2495, + "since": 114, + "type": "Number", + "cardinality": "One", + "encrypted": false + }, + "token": { + "final": false, + "name": "token", + "id": 2496, + "since": 114, + "type": "String", + "cardinality": "One", + "encrypted": false + } + }, + "associations": {}, + "app": "sys", + "version": "114" }, "VerifyRegistrationCodeData": { "name": "VerifyRegistrationCodeData", @@ -14031,7 +14095,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "Version": { "name": "Version", @@ -14102,7 +14166,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "VersionData": { "name": "VersionData", @@ -14161,7 +14225,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "VersionInfo": { "name": "VersionInfo", @@ -14286,7 +14350,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "VersionReturn": { "name": "VersionReturn", @@ -14320,7 +14384,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "WebauthnResponseData": { "name": "WebauthnResponseData", @@ -14379,7 +14443,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "WebsocketCounterData": { "name": "WebsocketCounterData", @@ -14422,7 +14486,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "WebsocketCounterValue": { "name": "WebsocketCounterValue", @@ -14463,7 +14527,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "WebsocketEntityData": { "name": "WebsocketEntityData", @@ -14515,7 +14579,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "WebsocketLeaderStatus": { "name": "WebsocketLeaderStatus", @@ -14547,7 +14611,7 @@ }, "associations": {}, "app": "sys", - "version": "113" + "version": "114" }, "WhitelabelChild": { "name": "WhitelabelChild", @@ -14662,7 +14726,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "WhitelabelChildrenRef": { "name": "WhitelabelChildrenRef", @@ -14696,7 +14760,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "WhitelabelConfig": { "name": "WhitelabelConfig", @@ -14831,7 +14895,7 @@ } }, "app": "sys", - "version": "113" + "version": "114" }, "WhitelabelParent": { "name": "WhitelabelParent", @@ -14875,6 +14939,6 @@ } }, "app": "sys", - "version": "113" + "version": "114" } }