diff --git a/src/api/common/EntityTypes.ts b/src/api/common/EntityTypes.ts index e717b7d16e..035ca30892 100644 --- a/src/api/common/EntityTypes.ts +++ b/src/api/common/EntityTypes.ts @@ -1,6 +1,6 @@ import {AssociationType, Cardinality, Type, ValueType} from "./EntityConstants" import {TypeRef} from "@tutao/tutanota-utils" -import type {Element, ListElement} from "./utils/EntityUtils" +import type {Element, ListElement} from "./utils/EntityUtils.js" export type TypeModel = { id: number diff --git a/src/api/common/ServiceRequest.ts b/src/api/common/ServiceRequest.ts new file mode 100644 index 0000000000..23891df875 --- /dev/null +++ b/src/api/common/ServiceRequest.ts @@ -0,0 +1,75 @@ +import {TypeRef} from "@tutao/tutanota-utils" +import {assertMainOrNode} from "./Env.js" +import type {Entity} from "./EntityTypes.js" +import {Aes128Key} from "@tutao/tutanota-crypto/dist/encryption/Aes" +import {SuspensionBehavior} from "../worker/rest/RestClient" + +assertMainOrNode() + + +export type MethodDefinition = { + data: TypeRef | null, + return: TypeRef | null +} + +export interface ServiceDefinition { + app: string, + name: string, +} + +export interface GetService extends ServiceDefinition { + get: MethodDefinition +} + +export interface PostService extends ServiceDefinition { + post: MethodDefinition +} + +export interface PutService extends ServiceDefinition { + put: MethodDefinition +} + +export interface DeleteService extends ServiceDefinition { + delete: MethodDefinition +} + +export type ParamTypeFromRef | null> = TR extends TypeRef + ? T + : null + +export type ReturnTypeFromRef | null> = TR extends TypeRef + ? T + : undefined + +export interface IServiceExecutor { + get( + service: S, + data: ParamTypeFromRef, + params?: ExtraServiceParams, + ): Promise> + + post( + service: S, + data: ParamTypeFromRef, + params?: ExtraServiceParams, + ): Promise> + + put( + service: S, + data: ParamTypeFromRef, + params?: ExtraServiceParams, + ): Promise> + + delete( + service: S, + data: ParamTypeFromRef, + params?: ExtraServiceParams, + ): Promise> +} + +export interface ExtraServiceParams { + queryParams?: Dict, + sessionKey?: Aes128Key, + extraHeaders?: Dict, + suspensionBehavior?: SuspensionBehavior, +} \ No newline at end of file diff --git a/src/api/entities/accounting/Services.ts b/src/api/entities/accounting/Services.ts index 7bed160920..de761aacd1 100644 --- a/src/api/entities/accounting/Services.ts +++ b/src/api/entities/accounting/Services.ts @@ -1,3 +1,10 @@ -export const enum AccountingService { - CustomerAccountService = "customeraccountservice", -} \ No newline at end of file +import {CustomerAccountReturnTypeRef} from "./CustomerAccountReturn.js" + +export const CustomerAccountService = Object.freeze({ + app: "accounting", + name: "CustomerAccountService", + get: {data: null, return: CustomerAccountReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) \ No newline at end of file diff --git a/src/api/entities/base/Services.ts b/src/api/entities/base/Services.ts index a018bdbdb7..8b13789179 100644 --- a/src/api/entities/base/Services.ts +++ b/src/api/entities/base/Services.ts @@ -1,3 +1 @@ -export const enum BaseService { -} \ No newline at end of file diff --git a/src/api/entities/gossip/Services.ts b/src/api/entities/gossip/Services.ts index b653086f2d..8b13789179 100644 --- a/src/api/entities/gossip/Services.ts +++ b/src/api/entities/gossip/Services.ts @@ -1,3 +1 @@ -export const enum GossipService { -} \ No newline at end of file diff --git a/src/api/entities/monitor/ApprovalMail.ts b/src/api/entities/monitor/ApprovalMail.ts index 7f09bf2242..bd1845385f 100644 --- a/src/api/entities/monitor/ApprovalMail.ts +++ b/src/api/entities/monitor/ApprovalMail.ts @@ -69,7 +69,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "Customer" + "refType": "Customer", + "dependency": null } }, "app": "monitor", diff --git a/src/api/entities/monitor/Services.ts b/src/api/entities/monitor/Services.ts index 17a639ad5f..d77400e3fc 100644 --- a/src/api/entities/monitor/Services.ts +++ b/src/api/entities/monitor/Services.ts @@ -1,3 +1,12 @@ -export const enum MonitorService { - CounterService = "counterservice", -} \ No newline at end of file +import {ReadCounterDataTypeRef} from "./ReadCounterData.js" +import {ReadCounterReturnTypeRef} from "./ReadCounterReturn.js" +import {WriteCounterDataTypeRef} from "./WriteCounterData.js" + +export const CounterService = Object.freeze({ + app: "monitor", + name: "CounterService", + get: {data: ReadCounterDataTypeRef, return: ReadCounterReturnTypeRef}, + post: {data: WriteCounterDataTypeRef, return: null}, + put: null, + delete: null, +} as const) \ No newline at end of file diff --git a/src/api/entities/monitor/WriteCounterData.ts b/src/api/entities/monitor/WriteCounterData.ts index 120f2064b8..ef5c97dc2e 100644 --- a/src/api/entities/monitor/WriteCounterData.ts +++ b/src/api/entities/monitor/WriteCounterData.ts @@ -20,6 +20,13 @@ export const _TypeModel: TypeModel = { "final": false, "encrypted": false }, + "column": { + "id": 52, + "type": "GeneratedId", + "cardinality": "One", + "final": false, + "encrypted": false + }, "counterType": { "id": 215, "type": "Number", @@ -34,13 +41,6 @@ export const _TypeModel: TypeModel = { "final": false, "encrypted": false }, - "column": { - "id": 52, - "type": "GeneratedId", - "cardinality": "One", - "final": false, - "encrypted": false - }, "value": { "id": 53, "type": "Number", @@ -62,8 +62,8 @@ export type WriteCounterData = { _type: TypeRef; _format: NumberString; + column: Id; counterType: null | NumberString; row: string; - column: Id; value: NumberString; } \ No newline at end of file diff --git a/src/api/entities/monitor/monitorModelMap.ts b/src/api/entities/monitor/monitorModelMap.ts index 1dff21dd23..55a98ae68f 100644 --- a/src/api/entities/monitor/monitorModelMap.ts +++ b/src/api/entities/monitor/monitorModelMap.ts @@ -1,7 +1,7 @@ const map = { + ApprovalMail: () => import('./ApprovalMail.js'), ReadCounterData: () => import('./ReadCounterData.js'), ReadCounterReturn: () => import('./ReadCounterReturn.js'), - WriteCounterData: () => import('./WriteCounterData.js'), - ApprovalMail: () => import('./ApprovalMail.js') + WriteCounterData: () => import('./WriteCounterData.js') } export default map \ No newline at end of file diff --git a/src/api/entities/monitor/monitorModelMapDebug.ts b/src/api/entities/monitor/monitorModelMapDebug.ts index 1f5669cc0c..adffe366b3 100644 --- a/src/api/entities/monitor/monitorModelMapDebug.ts +++ b/src/api/entities/monitor/monitorModelMapDebug.ts @@ -1,6 +1,6 @@ -const map = { "ReadCounterData": () => Promise.resolve({"_TypeModel":{"name":"ReadCounterData","since":1,"type":"DATA_TRANSFER_TYPE","id":12,"rootId":"B21vbml0b3IADA","versioned":false,"encrypted":false,"values":{"_format":{"id":13,"type":"Number","cardinality":"One","final":false,"encrypted":false},"monitor":{"id":14,"type":"String","cardinality":"One","final":false,"encrypted":false},"owner":{"id":15,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"monitor","version":"19"}}), +const map = { "ApprovalMail": () => Promise.resolve({"_TypeModel":{"name":"ApprovalMail","since":14,"type":"LIST_ELEMENT_TYPE","id":221,"rootId":"B21vbml0b3IAAN0","versioned":false,"encrypted":false,"values":{"_format":{"id":225,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":223,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":226,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":224,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"date":{"id":228,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"range":{"id":227,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"text":{"id":229,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"customer":{"id":230,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Customer","dependency":null}},"app":"monitor","version":"19"}}), + "ReadCounterData": () => Promise.resolve({"_TypeModel":{"name":"ReadCounterData","since":1,"type":"DATA_TRANSFER_TYPE","id":12,"rootId":"B21vbml0b3IADA","versioned":false,"encrypted":false,"values":{"_format":{"id":13,"type":"Number","cardinality":"One","final":false,"encrypted":false},"monitor":{"id":14,"type":"String","cardinality":"One","final":false,"encrypted":false},"owner":{"id":15,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"monitor","version":"19"}}), "ReadCounterReturn": () => Promise.resolve({"_TypeModel":{"name":"ReadCounterReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":16,"rootId":"B21vbml0b3IAEA","versioned":false,"encrypted":false,"values":{"_format":{"id":17,"type":"Number","cardinality":"One","final":false,"encrypted":false},"value":{"id":18,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"monitor","version":"19"}}), - "WriteCounterData": () => Promise.resolve({"_TypeModel":{"name":"WriteCounterData","since":4,"type":"DATA_TRANSFER_TYPE","id":49,"rootId":"B21vbml0b3IAMQ","versioned":false,"encrypted":false,"values":{"_format":{"id":50,"type":"Number","cardinality":"One","final":false,"encrypted":false},"counterType":{"id":215,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"row":{"id":51,"type":"String","cardinality":"One","final":false,"encrypted":false},"column":{"id":52,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"value":{"id":53,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"monitor","version":"19"}}), - "ApprovalMail": () => Promise.resolve({"_TypeModel":{"name":"ApprovalMail","since":14,"type":"LIST_ELEMENT_TYPE","id":221,"rootId":"B21vbml0b3IAAN0","versioned":false,"encrypted":false,"values":{"_format":{"id":225,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":223,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":226,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":224,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"date":{"id":228,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"range":{"id":227,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"text":{"id":229,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"customer":{"id":230,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Customer"}},"app":"monitor","version":"19"}}), + "WriteCounterData": () => Promise.resolve({"_TypeModel":{"name":"WriteCounterData","since":4,"type":"DATA_TRANSFER_TYPE","id":49,"rootId":"B21vbml0b3IAMQ","versioned":false,"encrypted":false,"values":{"_format":{"id":50,"type":"Number","cardinality":"One","final":false,"encrypted":false},"column":{"id":52,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"counterType":{"id":215,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"row":{"id":51,"type":"String","cardinality":"One","final":false,"encrypted":false},"value":{"id":53,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"monitor","version":"19"}}), } export default map \ No newline at end of file diff --git a/src/api/entities/storage/Services.ts b/src/api/entities/storage/Services.ts index c735e104f9..1aba303551 100644 --- a/src/api/entities/storage/Services.ts +++ b/src/api/entities/storage/Services.ts @@ -1,5 +1,32 @@ -export const enum StorageService { - BlobService = "blobservice", - BlobAccessTokenService = "blobaccesstokenservice", - BlobReferenceService = "blobreferenceservice", -} \ No newline at end of file +import {BlobAccessTokenDataTypeRef} from "./BlobAccessTokenData.js" +import {BlobAccessTokenReturnTypeRef} from "./BlobAccessTokenReturn.js" +import {BlobReferenceDataPutTypeRef} from "./BlobReferenceDataPut.js" +import {BlobReferenceDataDeleteTypeRef} from "./BlobReferenceDataDelete.js" +import {BlobDataGetTypeRef} from "./BlobDataGet.js" + +export const BlobAccessTokenService = Object.freeze({ + app: "storage", + name: "BlobAccessTokenService", + get: null, + post: {data: BlobAccessTokenDataTypeRef, return: BlobAccessTokenReturnTypeRef}, + put: null, + delete: null, +} as const) + +export const BlobReferenceService = Object.freeze({ + app: "storage", + name: "BlobReferenceService", + get: null, + post: null, + put: {data: BlobReferenceDataPutTypeRef, return: null}, + delete: {data: BlobReferenceDataDeleteTypeRef, return: null}, +} as const) + +export const BlobService = Object.freeze({ + app: "storage", + name: "BlobService", + get: {data: BlobDataGetTypeRef, return: null}, + post: null, + put: null, + delete: null, +} as const) \ No newline at end of file diff --git a/src/api/entities/storage/storageModelMap.ts b/src/api/entities/storage/storageModelMap.ts index a462dd87d9..6180c2cb1b 100644 --- a/src/api/entities/storage/storageModelMap.ts +++ b/src/api/entities/storage/storageModelMap.ts @@ -1,9 +1,9 @@ const map = { - BlobDataGet: () => import('./BlobDataGet.js'), - BlobWriteData: () => import('./BlobWriteData.js'), BlobAccessTokenData: () => import('./BlobAccessTokenData.js'), BlobAccessTokenReturn: () => import('./BlobAccessTokenReturn.js'), + BlobDataGet: () => import('./BlobDataGet.js'), + BlobReferenceDataDelete: () => import('./BlobReferenceDataDelete.js'), BlobReferenceDataPut: () => import('./BlobReferenceDataPut.js'), - BlobReferenceDataDelete: () => import('./BlobReferenceDataDelete.js') + BlobWriteData: () => import('./BlobWriteData.js') } export default map \ No newline at end of file diff --git a/src/api/entities/storage/storageModelMapDebug.ts b/src/api/entities/storage/storageModelMapDebug.ts index b77da48de7..c9c7e369ab 100644 --- a/src/api/entities/storage/storageModelMapDebug.ts +++ b/src/api/entities/storage/storageModelMapDebug.ts @@ -1,8 +1,8 @@ -const map = { "BlobDataGet": () => Promise.resolve({"_TypeModel":{"name":"BlobDataGet","since":1,"type":"DATA_TRANSFER_TYPE","id":50,"rootId":"B3N0b3JhZ2UAMg","versioned":false,"encrypted":false,"values":{"_format":{"id":51,"type":"Number","cardinality":"One","final":false,"encrypted":false},"archiveId":{"id":52,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"blobId":{"id":110,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"storage","version":"3"}}), - "BlobWriteData": () => Promise.resolve({"_TypeModel":{"name":"BlobWriteData","since":1,"type":"AGGREGATED_TYPE","id":73,"rootId":"B3N0b3JhZ2UASQ","versioned":false,"encrypted":false,"values":{"_id":{"id":74,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"archiveOwnerGroup":{"id":75,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"type":{"id":76,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"TypeInfo","dependency":"sys"}},"app":"storage","version":"3"}}), - "BlobAccessTokenData": () => Promise.resolve({"_TypeModel":{"name":"BlobAccessTokenData","since":1,"type":"DATA_TRANSFER_TYPE","id":77,"rootId":"B3N0b3JhZ2UATQ","versioned":false,"encrypted":false,"values":{"_format":{"id":78,"type":"Number","cardinality":"One","final":false,"encrypted":false},"readArchiveId":{"id":79,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"write":{"id":80,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"BlobWriteData","dependency":null}},"app":"storage","version":"3"}}), +const map = { "BlobAccessTokenData": () => Promise.resolve({"_TypeModel":{"name":"BlobAccessTokenData","since":1,"type":"DATA_TRANSFER_TYPE","id":77,"rootId":"B3N0b3JhZ2UATQ","versioned":false,"encrypted":false,"values":{"_format":{"id":78,"type":"Number","cardinality":"One","final":false,"encrypted":false},"readArchiveId":{"id":79,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"write":{"id":80,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"BlobWriteData","dependency":null}},"app":"storage","version":"3"}}), "BlobAccessTokenReturn": () => Promise.resolve({"_TypeModel":{"name":"BlobAccessTokenReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":81,"rootId":"B3N0b3JhZ2UAUQ","versioned":false,"encrypted":false,"values":{"_format":{"id":82,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"blobAccessInfo":{"id":83,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"BlobAccessInfo","dependency":"sys"}},"app":"storage","version":"3"}}), - "BlobReferenceDataPut": () => Promise.resolve({"_TypeModel":{"name":"BlobReferenceDataPut","since":1,"type":"DATA_TRANSFER_TYPE","id":94,"rootId":"B3N0b3JhZ2UAXg","versioned":false,"encrypted":false,"values":{"_format":{"id":95,"type":"Number","cardinality":"One","final":false,"encrypted":false},"blobReferenceToken":{"id":96,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"field":{"id":108,"type":"String","cardinality":"One","final":false,"encrypted":false},"instanceElementId":{"id":107,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false},"instanceListElementId":{"id":98,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false},"instanceListId":{"id":97,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"type":{"id":99,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"TypeInfo","dependency":"sys"}},"app":"storage","version":"3"}}), + "BlobDataGet": () => Promise.resolve({"_TypeModel":{"name":"BlobDataGet","since":1,"type":"DATA_TRANSFER_TYPE","id":50,"rootId":"B3N0b3JhZ2UAMg","versioned":false,"encrypted":false,"values":{"_format":{"id":51,"type":"Number","cardinality":"One","final":false,"encrypted":false},"archiveId":{"id":52,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"blobId":{"id":110,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"storage","version":"3"}}), "BlobReferenceDataDelete": () => Promise.resolve({"_TypeModel":{"name":"BlobReferenceDataDelete","since":1,"type":"DATA_TRANSFER_TYPE","id":100,"rootId":"B3N0b3JhZ2UAZA","versioned":false,"encrypted":false,"values":{"_format":{"id":101,"type":"Number","cardinality":"One","final":false,"encrypted":false},"field":{"id":109,"type":"String","cardinality":"One","final":false,"encrypted":false},"instanceListElementId":{"id":103,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"instanceListId":{"id":102,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"blobs":{"id":105,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"Blob","dependency":"sys"},"type":{"id":104,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"TypeInfo","dependency":"sys"}},"app":"storage","version":"3"}}), + "BlobReferenceDataPut": () => Promise.resolve({"_TypeModel":{"name":"BlobReferenceDataPut","since":1,"type":"DATA_TRANSFER_TYPE","id":94,"rootId":"B3N0b3JhZ2UAXg","versioned":false,"encrypted":false,"values":{"_format":{"id":95,"type":"Number","cardinality":"One","final":false,"encrypted":false},"blobReferenceToken":{"id":96,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"field":{"id":108,"type":"String","cardinality":"One","final":false,"encrypted":false},"instanceElementId":{"id":107,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false},"instanceListElementId":{"id":98,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false},"instanceListId":{"id":97,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"type":{"id":99,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"TypeInfo","dependency":"sys"}},"app":"storage","version":"3"}}), + "BlobWriteData": () => Promise.resolve({"_TypeModel":{"name":"BlobWriteData","since":1,"type":"AGGREGATED_TYPE","id":73,"rootId":"B3N0b3JhZ2UASQ","versioned":false,"encrypted":false,"values":{"_id":{"id":74,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"archiveOwnerGroup":{"id":75,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"type":{"id":76,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"TypeInfo","dependency":"sys"}},"app":"storage","version":"3"}}), } export default map \ No newline at end of file diff --git a/src/api/entities/sys/AccountingInfo.ts b/src/api/entities/sys/AccountingInfo.ts index fcf5f837cf..5ae5c37319 100644 --- a/src/api/entities/sys/AccountingInfo.ts +++ b/src/api/entities/sys/AccountingInfo.ts @@ -160,7 +160,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "InvoiceInfo" + "refType": "InvoiceInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/AdministratedGroup.ts b/src/api/entities/sys/AdministratedGroup.ts index b1ad3b605f..8c9a993bce 100644 --- a/src/api/entities/sys/AdministratedGroup.ts +++ b/src/api/entities/sys/AdministratedGroup.ts @@ -55,14 +55,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null }, "localAdminGroup": { "id": 1302, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/AdministratedGroupsRef.ts b/src/api/entities/sys/AdministratedGroupsRef.ts index 33791bfbb9..be8ef14a1e 100644 --- a/src/api/entities/sys/AdministratedGroupsRef.ts +++ b/src/api/entities/sys/AdministratedGroupsRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "AdministratedGroup" + "refType": "AdministratedGroup", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/AlarmNotification.ts b/src/api/entities/sys/AlarmNotification.ts index 46f8d43cd6..77f0163a93 100644 --- a/src/api/entities/sys/AlarmNotification.ts +++ b/src/api/entities/sys/AlarmNotification.ts @@ -82,7 +82,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/AuditLogEntry.ts b/src/api/entities/sys/AuditLogEntry.ts index d55acbbb3d..99b7ae578e 100644 --- a/src/api/entities/sys/AuditLogEntry.ts +++ b/src/api/entities/sys/AuditLogEntry.ts @@ -90,14 +90,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null }, "modifiedGroupInfo": { "id": 1307, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/AuditLogRef.ts b/src/api/entities/sys/AuditLogRef.ts index d1ef544f66..6a0bc05aac 100644 --- a/src/api/entities/sys/AuditLogRef.ts +++ b/src/api/entities/sys/AuditLogRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "AuditLogEntry" + "refType": "AuditLogEntry", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/Authentication.ts b/src/api/entities/sys/Authentication.ts index f182e41450..93d36c939d 100644 --- a/src/api/entities/sys/Authentication.ts +++ b/src/api/entities/sys/Authentication.ts @@ -48,7 +48,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/AutoLoginDataGet.ts b/src/api/entities/sys/AutoLoginDataGet.ts index 01b5e386b4..7742290d24 100644 --- a/src/api/entities/sys/AutoLoginDataGet.ts +++ b/src/api/entities/sys/AutoLoginDataGet.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/BookingsRef.ts b/src/api/entities/sys/BookingsRef.ts index a03ff76663..b100fc3b7f 100644 --- a/src/api/entities/sys/BookingsRef.ts +++ b/src/api/entities/sys/BookingsRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Booking" + "refType": "Booking", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/Bucket.ts b/src/api/entities/sys/Bucket.ts index eca68657e8..e277accc87 100644 --- a/src/api/entities/sys/Bucket.ts +++ b/src/api/entities/sys/Bucket.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "BucketPermission" + "refType": "BucketPermission", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/BucketPermission.ts b/src/api/entities/sys/BucketPermission.ts index 8bb4b5f6b2..cbcaa165ba 100644 --- a/src/api/entities/sys/BucketPermission.ts +++ b/src/api/entities/sys/BucketPermission.ts @@ -83,7 +83,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/CertificateInfo.ts b/src/api/entities/sys/CertificateInfo.ts index 6bd7542402..d946cc7c4f 100644 --- a/src/api/entities/sys/CertificateInfo.ts +++ b/src/api/entities/sys/CertificateInfo.ts @@ -48,7 +48,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "SslCertificate" + "refType": "SslCertificate", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/CloseSessionServicePost.ts b/src/api/entities/sys/CloseSessionServicePost.ts index 1c007eabe4..31074f10b2 100644 --- a/src/api/entities/sys/CloseSessionServicePost.ts +++ b/src/api/entities/sys/CloseSessionServicePost.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Session" + "refType": "Session", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/CreateCustomerServerPropertiesReturn.ts b/src/api/entities/sys/CreateCustomerServerPropertiesReturn.ts index cd46b0576e..48ed841275 100644 --- a/src/api/entities/sys/CreateCustomerServerPropertiesReturn.ts +++ b/src/api/entities/sys/CreateCustomerServerPropertiesReturn.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "CustomerServerProperties" + "refType": "CustomerServerProperties", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/CreateSessionData.ts b/src/api/entities/sys/CreateSessionData.ts index 79a8570e54..4990c14191 100644 --- a/src/api/entities/sys/CreateSessionData.ts +++ b/src/api/entities/sys/CreateSessionData.ts @@ -69,7 +69,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/CreateSessionReturn.ts b/src/api/entities/sys/CreateSessionReturn.ts index 2b0cc037b4..64685f5571 100644 --- a/src/api/entities/sys/CreateSessionReturn.ts +++ b/src/api/entities/sys/CreateSessionReturn.ts @@ -43,7 +43,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/CustomDomainData.ts b/src/api/entities/sys/CustomDomainData.ts index 6ebadccfe8..0e4bf2f727 100644 --- a/src/api/entities/sys/CustomDomainData.ts +++ b/src/api/entities/sys/CustomDomainData.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/Customer.ts b/src/api/entities/sys/Customer.ts index ce532bc115..c2cbb35a79 100644 --- a/src/api/entities/sys/Customer.ts +++ b/src/api/entities/sys/Customer.ts @@ -84,6 +84,22 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "adminGroup": { + "id": 37, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Group", + "dependency": null + }, + "adminGroups": { + "id": 39, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "GroupInfo", + "dependency": null + }, "auditLog": { "id": 1161, "type": "AGGREGATION", @@ -108,6 +124,30 @@ export const _TypeModel: TypeModel = { "refType": "UserAreaGroups", "dependency": null }, + "customerGroup": { + "id": 38, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Group", + "dependency": null + }, + "customerGroups": { + "id": 40, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "GroupInfo", + "dependency": null + }, + "customerInfo": { + "id": 160, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "CustomerInfo", + "dependency": null + }, "customizations": { "id": 1256, "type": "AGGREGATION", @@ -116,6 +156,22 @@ export const _TypeModel: TypeModel = { "refType": "Feature", "dependency": null }, + "orderProcessingAgreement": { + "id": 1348, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "OrderProcessingAgreement", + "dependency": null + }, + "properties": { + "id": 662, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "CustomerProperties", + "dependency": null + }, "rejectedSenders": { "id": 1750, "type": "AGGREGATION", @@ -124,6 +180,22 @@ export const _TypeModel: TypeModel = { "refType": "RejectedSendersRef", "dependency": null }, + "serverProperties": { + "id": 960, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "CustomerServerProperties", + "dependency": null + }, + "teamGroups": { + "id": 42, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "GroupInfo", + "dependency": null + }, "userAreaGroups": { "id": 992, "type": "AGGREGATION", @@ -132,6 +204,14 @@ export const _TypeModel: TypeModel = { "refType": "UserAreaGroups", "dependency": null }, + "userGroups": { + "id": 41, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "GroupInfo", + "dependency": null + }, "whitelabelChildren": { "id": 1277, "type": "AGGREGATION", @@ -147,76 +227,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "WhitelabelParent", "dependency": null - }, - "adminGroup": { - "id": 37, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Group" - }, - "adminGroups": { - "id": 39, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "GroupInfo" - }, - "customerGroup": { - "id": 38, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Group" - }, - "customerGroups": { - "id": 40, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "GroupInfo" - }, - "customerInfo": { - "id": 160, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "CustomerInfo" - }, - "orderProcessingAgreement": { - "id": 1348, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "OrderProcessingAgreement" - }, - "properties": { - "id": 662, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "CustomerProperties" - }, - "serverProperties": { - "id": 960, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "CustomerServerProperties" - }, - "teamGroups": { - "id": 42, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "GroupInfo" - }, - "userGroups": { - "id": 41, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "GroupInfo" } }, "app": "sys", @@ -240,22 +250,22 @@ export type Customer = { orderProcessingAgreementNeeded: boolean; type: NumberString; + adminGroup: Id; + adminGroups: Id; auditLog: null | AuditLogRef; contactFormUserAreaGroups: null | UserAreaGroups; contactFormUserGroups: null | UserAreaGroups; - customizations: Feature[]; - rejectedSenders: null | RejectedSendersRef; - userAreaGroups: null | UserAreaGroups; - whitelabelChildren: null | WhitelabelChildrenRef; - whitelabelParent: null | WhitelabelParent; - adminGroup: Id; - adminGroups: Id; customerGroup: Id; customerGroups: Id; customerInfo: IdTuple; + customizations: Feature[]; orderProcessingAgreement: null | IdTuple; properties: null | Id; + rejectedSenders: null | RejectedSendersRef; serverProperties: null | Id; teamGroups: Id; + userAreaGroups: null | UserAreaGroups; userGroups: Id; + whitelabelChildren: null | WhitelabelChildrenRef; + whitelabelParent: null | WhitelabelParent; } \ No newline at end of file diff --git a/src/api/entities/sys/CustomerInfo.ts b/src/api/entities/sys/CustomerInfo.ts index 19e6510d1f..8e731fe9c4 100644 --- a/src/api/entities/sys/CustomerInfo.ts +++ b/src/api/entities/sys/CustomerInfo.ts @@ -151,6 +151,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "accountingInfo": { + "id": 159, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "AccountingInfo", + "dependency": null + }, "bookings": { "id": 727, "type": "AGGREGATION", @@ -159,6 +167,14 @@ export const _TypeModel: TypeModel = { "refType": "BookingsRef", "dependency": null }, + "customer": { + "id": 158, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Customer", + "dependency": null + }, "domainInfos": { "id": 726, "type": "AGGREGATION", @@ -175,26 +191,13 @@ export const _TypeModel: TypeModel = { "refType": "GiftCardsRef", "dependency": null }, - "accountingInfo": { - "id": 159, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "AccountingInfo" - }, - "customer": { - "id": 158, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Customer" - }, "takeoverCustomer": { "id": 1076, "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "Customer" + "refType": "Customer", + "dependency": null } }, "app": "sys", @@ -228,10 +231,10 @@ export type CustomerInfo = { testEndTime: null | Date; usedSharedEmailAliases: NumberString; + accountingInfo: Id; bookings: null | BookingsRef; + customer: Id; domainInfos: DomainInfo[]; giftCards: null | GiftCardsRef; - accountingInfo: Id; - customer: Id; takeoverCustomer: null | Id; } \ No newline at end of file diff --git a/src/api/entities/sys/CustomerReturn.ts b/src/api/entities/sys/CustomerReturn.ts index 6c2d6a5a44..1f4dfa14c1 100644 --- a/src/api/entities/sys/CustomerReturn.ts +++ b/src/api/entities/sys/CustomerReturn.ts @@ -27,14 +27,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "User" + "refType": "User", + "dependency": null }, "adminUserGroup": { "id": 373, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/DebitServicePutData.ts b/src/api/entities/sys/DebitServicePutData.ts index 7d60b6a76d..5aa150bdb2 100644 --- a/src/api/entities/sys/DebitServicePutData.ts +++ b/src/api/entities/sys/DebitServicePutData.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "LegacyInvoice" + "refType": "LegacyInvoice", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/DeleteCustomerData.ts b/src/api/entities/sys/DeleteCustomerData.ts index e0b7e8f3d2..ca9c25578d 100644 --- a/src/api/entities/sys/DeleteCustomerData.ts +++ b/src/api/entities/sys/DeleteCustomerData.ts @@ -55,7 +55,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Customer" + "refType": "Customer", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/DomainInfo.ts b/src/api/entities/sys/DomainInfo.ts index a31d2b0784..c112686ac2 100644 --- a/src/api/entities/sys/DomainInfo.ts +++ b/src/api/entities/sys/DomainInfo.ts @@ -41,14 +41,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null }, "whitelabelConfig": { "id": 1136, "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "WhitelabelConfig" + "refType": "WhitelabelConfig", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/DomainsRef.ts b/src/api/entities/sys/DomainsRef.ts index a3419a3a02..b01e18db5d 100644 --- a/src/api/entities/sys/DomainsRef.ts +++ b/src/api/entities/sys/DomainsRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Domain" + "refType": "Domain", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/ExternalUserReference.ts b/src/api/entities/sys/ExternalUserReference.ts index 096793f30e..384e84628f 100644 --- a/src/api/entities/sys/ExternalUserReference.ts +++ b/src/api/entities/sys/ExternalUserReference.ts @@ -48,14 +48,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "User" + "refType": "User", + "dependency": null }, "userGroup": { "id": 109, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/GiftCardCreateReturn.ts b/src/api/entities/sys/GiftCardCreateReturn.ts index 825bf34b43..cec2169b30 100644 --- a/src/api/entities/sys/GiftCardCreateReturn.ts +++ b/src/api/entities/sys/GiftCardCreateReturn.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GiftCard" + "refType": "GiftCard", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/GiftCardDeleteData.ts b/src/api/entities/sys/GiftCardDeleteData.ts index bffd03ef63..7083eb43a1 100644 --- a/src/api/entities/sys/GiftCardDeleteData.ts +++ b/src/api/entities/sys/GiftCardDeleteData.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GiftCard" + "refType": "GiftCard", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/GiftCardRedeemData.ts b/src/api/entities/sys/GiftCardRedeemData.ts index 36475e537d..3af371a1f9 100644 --- a/src/api/entities/sys/GiftCardRedeemData.ts +++ b/src/api/entities/sys/GiftCardRedeemData.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GiftCardInfo" + "refType": "GiftCardInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/GiftCardRedeemGetReturn.ts b/src/api/entities/sys/GiftCardRedeemGetReturn.ts index d27b69211d..f32012360b 100644 --- a/src/api/entities/sys/GiftCardRedeemGetReturn.ts +++ b/src/api/entities/sys/GiftCardRedeemGetReturn.ts @@ -48,7 +48,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GiftCard" + "refType": "GiftCard", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/GiftCardsRef.ts b/src/api/entities/sys/GiftCardsRef.ts index 114d5901de..66a97a64ef 100644 --- a/src/api/entities/sys/GiftCardsRef.ts +++ b/src/api/entities/sys/GiftCardsRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GiftCard" + "refType": "GiftCard", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/Group.ts b/src/api/entities/sys/Group.ts index a095d32258..6a1fa5434c 100644 --- a/src/api/entities/sys/Group.ts +++ b/src/api/entities/sys/Group.ts @@ -74,6 +74,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "admin": { + "id": 224, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "Group", + "dependency": null + }, "administratedGroups": { "id": 1306, "type": "AGGREGATION", @@ -90,6 +98,30 @@ export const _TypeModel: TypeModel = { "refType": "ArchiveType", "dependency": null }, + "customer": { + "id": 226, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "Customer", + "dependency": null + }, + "groupInfo": { + "id": 227, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "GroupInfo", + "dependency": null + }, + "invitations": { + "id": 228, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "SentGroupInvitation", + "dependency": null + }, "keys": { "id": 13, "type": "AGGREGATION", @@ -98,47 +130,21 @@ export const _TypeModel: TypeModel = { "refType": "KeyPair", "dependency": null }, - "admin": { - "id": 224, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "Group" - }, - "customer": { - "id": 226, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "Customer" - }, - "groupInfo": { - "id": 227, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "GroupInfo" - }, - "invitations": { - "id": 228, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "SentGroupInvitation" - }, "members": { "id": 229, "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GroupMember" + "refType": "GroupMember", + "dependency": null }, "user": { "id": 225, "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", @@ -161,13 +167,13 @@ export type Group = { external: boolean; type: NumberString; + admin: null | Id; administratedGroups: null | AdministratedGroupsRef; archives: ArchiveType[]; - keys: KeyPair[]; - admin: null | Id; customer: null | Id; groupInfo: IdTuple; invitations: Id; + keys: KeyPair[]; members: Id; user: null | Id; } \ No newline at end of file diff --git a/src/api/entities/sys/GroupInfo.ts b/src/api/entities/sys/GroupInfo.ts index 74d2286f37..f373cb365e 100644 --- a/src/api/entities/sys/GroupInfo.ts +++ b/src/api/entities/sys/GroupInfo.ts @@ -93,6 +93,22 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "group": { + "id": 20, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Group", + "dependency": null + }, + "localAdmin": { + "id": 1287, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "Group", + "dependency": null + }, "mailAddressAliases": { "id": 687, "type": "AGGREGATION", @@ -100,20 +116,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "MailAddressAlias", "dependency": null - }, - "group": { - "id": 20, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Group" - }, - "localAdmin": { - "id": 1287, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "Group" } }, "app": "sys", @@ -140,7 +142,7 @@ export type GroupInfo = { mailAddress: null | string; name: string; - mailAddressAliases: MailAddressAlias[]; group: Id; localAdmin: null | Id; + mailAddressAliases: MailAddressAlias[]; } \ No newline at end of file diff --git a/src/api/entities/sys/GroupMember.ts b/src/api/entities/sys/GroupMember.ts index 56a6de577c..5cb17ae96a 100644 --- a/src/api/entities/sys/GroupMember.ts +++ b/src/api/entities/sys/GroupMember.ts @@ -55,21 +55,24 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null }, "user": { "id": 223, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "User" + "refType": "User", + "dependency": null }, "userGroupInfo": { "id": 221, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/GroupMembership.ts b/src/api/entities/sys/GroupMembership.ts index e4cdb06d41..6704664a89 100644 --- a/src/api/entities/sys/GroupMembership.ts +++ b/src/api/entities/sys/GroupMembership.ts @@ -55,21 +55,24 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null }, "groupInfo": { "id": 30, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null }, "groupMember": { "id": 230, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GroupMember" + "refType": "GroupMember", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/GroupRoot.ts b/src/api/entities/sys/GroupRoot.ts index eefec62d86..1dbdbabb2c 100644 --- a/src/api/entities/sys/GroupRoot.ts +++ b/src/api/entities/sys/GroupRoot.ts @@ -44,6 +44,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "externalGroupInfos": { + "id": 116, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "GroupInfo", + "dependency": null + }, "externalUserAreaGroupInfos": { "id": 999, "type": "AGGREGATION", @@ -52,19 +60,13 @@ export const _TypeModel: TypeModel = { "refType": "UserAreaGroups", "dependency": null }, - "externalGroupInfos": { - "id": 116, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "GroupInfo" - }, "externalUserReferences": { "id": 117, "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "ExternalUserReference" + "refType": "ExternalUserReference", + "dependency": null } }, "app": "sys", @@ -83,7 +85,7 @@ export type GroupRoot = { _ownerGroup: null | Id; _permissions: Id; - externalUserAreaGroupInfos: null | UserAreaGroups; externalGroupInfos: Id; + externalUserAreaGroupInfos: null | UserAreaGroups; externalUserReferences: Id; } \ No newline at end of file diff --git a/src/api/entities/sys/Invoice.ts b/src/api/entities/sys/Invoice.ts index 7acd7a7eb3..3cf8172e0e 100644 --- a/src/api/entities/sys/Invoice.ts +++ b/src/api/entities/sys/Invoice.ts @@ -142,6 +142,22 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "bookings": { + "id": 1672, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "Any", + "final": true, + "refType": "Booking", + "dependency": null + }, + "customer": { + "id": 1671, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Customer", + "dependency": null + }, "items": { "id": 1670, "type": "AGGREGATION", @@ -149,20 +165,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "InvoiceItem", "dependency": null - }, - "bookings": { - "id": 1672, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "Any", - "final": true, - "refType": "Booking" - }, - "customer": { - "id": 1671, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Customer" } }, "app": "sys", @@ -196,7 +198,7 @@ export type Invoice = { vatIdNumber: null | string; vatRate: NumberString; - items: InvoiceItem[]; bookings: IdTuple[]; customer: Id; + items: InvoiceItem[]; } \ No newline at end of file diff --git a/src/api/entities/sys/InvoiceInfo.ts b/src/api/entities/sys/InvoiceInfo.ts index 3db69e2141..9cd84a1663 100644 --- a/src/api/entities/sys/InvoiceInfo.ts +++ b/src/api/entities/sys/InvoiceInfo.ts @@ -121,6 +121,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "invoices": { + "id": 760, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "LegacyInvoice", + "dependency": null + }, "paymentErrorInfo": { "id": 1640, "type": "AGGREGATION", @@ -128,13 +136,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "PaymentErrorInfo", "dependency": null - }, - "invoices": { - "id": 760, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "LegacyInvoice" } }, "app": "sys", @@ -164,6 +165,6 @@ export type InvoiceInfo = { specialPriceUserSingle: null | NumberString; specialPriceUserTotal: null | NumberString; - paymentErrorInfo: null | PaymentErrorInfo; invoices: Id; + paymentErrorInfo: null | PaymentErrorInfo; } \ No newline at end of file diff --git a/src/api/entities/sys/MailAddressAliasServiceData.ts b/src/api/entities/sys/MailAddressAliasServiceData.ts index 6c3fe8279e..0cb4d5a29f 100644 --- a/src/api/entities/sys/MailAddressAliasServiceData.ts +++ b/src/api/entities/sys/MailAddressAliasServiceData.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/MailAddressAliasServiceDataDelete.ts b/src/api/entities/sys/MailAddressAliasServiceDataDelete.ts index 3faed0ed70..2972293043 100644 --- a/src/api/entities/sys/MailAddressAliasServiceDataDelete.ts +++ b/src/api/entities/sys/MailAddressAliasServiceDataDelete.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/MailAddressToGroup.ts b/src/api/entities/sys/MailAddressToGroup.ts index 8327e533f4..d5ba7f2d33 100644 --- a/src/api/entities/sys/MailAddressToGroup.ts +++ b/src/api/entities/sys/MailAddressToGroup.ts @@ -48,7 +48,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/MembershipAddData.ts b/src/api/entities/sys/MembershipAddData.ts index dcb3059d2b..cb95fd9eea 100644 --- a/src/api/entities/sys/MembershipAddData.ts +++ b/src/api/entities/sys/MembershipAddData.ts @@ -34,14 +34,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null }, "user": { "id": 508, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/MembershipRemoveData.ts b/src/api/entities/sys/MembershipRemoveData.ts index af5f9168ff..6ad179c75f 100644 --- a/src/api/entities/sys/MembershipRemoveData.ts +++ b/src/api/entities/sys/MembershipRemoveData.ts @@ -27,14 +27,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null }, "user": { "id": 869, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/NotificationSessionKey.ts b/src/api/entities/sys/NotificationSessionKey.ts index 0c97cbae60..fb680d1f24 100644 --- a/src/api/entities/sys/NotificationSessionKey.ts +++ b/src/api/entities/sys/NotificationSessionKey.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "PushIdentifier" + "refType": "PushIdentifier", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/OrderProcessingAgreement.ts b/src/api/entities/sys/OrderProcessingAgreement.ts index f36e4e2382..e5d8ac648b 100644 --- a/src/api/entities/sys/OrderProcessingAgreement.ts +++ b/src/api/entities/sys/OrderProcessingAgreement.ts @@ -76,14 +76,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Customer" + "refType": "Customer", + "dependency": null }, "signerUserGroupInfo": { "id": 1336, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/OtpChallenge.ts b/src/api/entities/sys/OtpChallenge.ts index 748e9b2cfc..7955a47996 100644 --- a/src/api/entities/sys/OtpChallenge.ts +++ b/src/api/entities/sys/OtpChallenge.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "Any", "final": false, - "refType": "SecondFactor" + "refType": "SecondFactor", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/PdfInvoiceServiceData.ts b/src/api/entities/sys/PdfInvoiceServiceData.ts index ba46779426..4cde1e2528 100644 --- a/src/api/entities/sys/PdfInvoiceServiceData.ts +++ b/src/api/entities/sys/PdfInvoiceServiceData.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "LegacyInvoice" + "refType": "LegacyInvoice", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/Permission.ts b/src/api/entities/sys/Permission.ts index 04298e943b..5c2d43afd3 100644 --- a/src/api/entities/sys/Permission.ts +++ b/src/api/entities/sys/Permission.ts @@ -106,7 +106,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/PushIdentifierList.ts b/src/api/entities/sys/PushIdentifierList.ts index 144f4b67ff..795996d898 100644 --- a/src/api/entities/sys/PushIdentifierList.ts +++ b/src/api/entities/sys/PushIdentifierList.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "PushIdentifier" + "refType": "PushIdentifier", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/ReceivedGroupInvitation.ts b/src/api/entities/sys/ReceivedGroupInvitation.ts index 98292980fa..5724add62f 100644 --- a/src/api/entities/sys/ReceivedGroupInvitation.ts +++ b/src/api/entities/sys/ReceivedGroupInvitation.ts @@ -104,14 +104,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "SentGroupInvitation" + "refType": "SentGroupInvitation", + "dependency": null }, "sharedGroup": { "id": 1615, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/RegistrationServiceData.ts b/src/api/entities/sys/RegistrationServiceData.ts index 279acd767e..a15fa55859 100644 --- a/src/api/entities/sys/RegistrationServiceData.ts +++ b/src/api/entities/sys/RegistrationServiceData.ts @@ -20,13 +20,6 @@ export const _TypeModel: TypeModel = { "final": false, "encrypted": false }, - "starterDomain": { - "id": 322, - "type": "String", - "cardinality": "One", - "final": false, - "encrypted": false - }, "source": { "id": 874, "type": "String", @@ -34,6 +27,13 @@ export const _TypeModel: TypeModel = { "final": false, "encrypted": false }, + "starterDomain": { + "id": 322, + "type": "String", + "cardinality": "One", + "final": false, + "encrypted": false + }, "state": { "id": 325, "type": "Number", @@ -55,7 +55,7 @@ export type RegistrationServiceData = { _type: TypeRef; _format: NumberString; - starterDomain: string; source: null | string; + starterDomain: string; state: NumberString; } \ No newline at end of file diff --git a/src/api/entities/sys/RejectedSendersRef.ts b/src/api/entities/sys/RejectedSendersRef.ts index 05e20710b0..45ac10665c 100644 --- a/src/api/entities/sys/RejectedSendersRef.ts +++ b/src/api/entities/sys/RejectedSendersRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "RejectedSender" + "refType": "RejectedSender", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/ResetPasswordData.ts b/src/api/entities/sys/ResetPasswordData.ts index 62ac35c744..090279ac68 100644 --- a/src/api/entities/sys/ResetPasswordData.ts +++ b/src/api/entities/sys/ResetPasswordData.ts @@ -48,7 +48,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/SecondFactorAuthData.ts b/src/api/entities/sys/SecondFactorAuthData.ts index 18a5f7636f..312768e593 100644 --- a/src/api/entities/sys/SecondFactorAuthData.ts +++ b/src/api/entities/sys/SecondFactorAuthData.ts @@ -38,6 +38,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "session": { + "id": 1232, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "Session", + "dependency": null + }, "u2f": { "id": 1231, "type": "AGGREGATION", @@ -53,13 +61,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "WebauthnResponseData", "dependency": null - }, - "session": { - "id": 1232, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "Session" } }, "app": "sys", @@ -77,7 +78,7 @@ export type SecondFactorAuthData = { otpCode: null | NumberString; type: null | NumberString; + session: null | IdTuple; u2f: null | U2fResponseData; webauthn: null | WebauthnResponseData; - session: null | IdTuple; } \ No newline at end of file diff --git a/src/api/entities/sys/SecondFactorAuthDeleteData.ts b/src/api/entities/sys/SecondFactorAuthDeleteData.ts index eaf2ab3ffb..daca1531ee 100644 --- a/src/api/entities/sys/SecondFactorAuthDeleteData.ts +++ b/src/api/entities/sys/SecondFactorAuthDeleteData.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Session" + "refType": "Session", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/SentGroupInvitation.ts b/src/api/entities/sys/SentGroupInvitation.ts index 7c9143cd67..0501f5eb64 100644 --- a/src/api/entities/sys/SentGroupInvitation.ts +++ b/src/api/entities/sys/SentGroupInvitation.ts @@ -62,14 +62,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "ReceivedGroupInvitation" + "refType": "ReceivedGroupInvitation", + "dependency": null }, "sharedGroup": { "id": 203, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/Services.ts b/src/api/entities/sys/Services.ts index ccca77a9ce..c10cc44ea9 100644 --- a/src/api/entities/sys/Services.ts +++ b/src/api/entities/sys/Services.ts @@ -1,48 +1,500 @@ -export const enum SysService { - SystemKeysService = "systemkeysservice", - MailAddressAvailabilityService = "mailaddressavailabilityservice", - RegistrationService = "registrationservice", - CustomerService = "customerservice", - UserService = "userservice", - PublicKeyService = "publickeyservice", - SaltService = "saltservice", - UserIdService = "useridservice", - AutoLoginService = "autologinservice", - UpdatePermissionKeyService = "updatepermissionkeyservice", - VersionService = "versionservice", - MembershipService = "membershipservice", - ChangePasswordService = "changepasswordservice", - SecondFactorAuthService = "secondfactorauthservice", - SecondFactorAuthAllowedService = "secondfactorauthallowedservice", - CustomerInfoService = "customerinfoservice", - ResetPasswordService = "resetpasswordservice", - DomainMailAddressAvailabilityService = "domainmailaddressavailabilityservice", - PremiumFeatureService = "premiumfeatureservice", - ExternalPropertiesService = "externalpropertiesservice", - RegistrationCaptchaService = "registrationcaptchaservice", - MailAddressAliasService = "mailaddressaliasservice", - CustomDomainService = "customdomainservice", - SwitchAccountTypeService = "switchaccounttypeservice", - PdfInvoiceService = "pdfinvoiceservice", - PaymentDataService = "paymentdataservice", - DebitService = "debitservice", - PriceService = "priceservice", - CreateCustomerServerProperties = "createcustomerserverproperties", - BookingService = "bookingservice", - BrandingDomainService = "brandingdomainservice", - SessionService = "sessionservice", - CustomerPublicKeyService = "customerpublickeyservice", - UpdateAdminshipService = "updateadminshipservice", - LocationService = "locationservice", - SignOrderProcessingAgreementService = "signorderprocessingagreementservice", - ResetFactorsService = "resetfactorsservice", - UpgradePriceService = "upgradepriceservice", - AlarmService = "alarmservice", - CustomDomainCheckService = "customdomaincheckservice", - CloseSessionService = "closesessionservice", - TakeOverDeletedAddressService = "takeoverdeletedaddressservice", - GiftCardService = "giftcardservice", - GiftCardRedeemService = "giftcardredeemservice", - UsageTestAssignmentService = "usagetestassignmentservice", - UsageTestParticipationService = "usagetestparticipationservice", -} \ No newline at end of file +import {AlarmServicePostTypeRef} from "./AlarmServicePost.js" +import {AutoLoginDataGetTypeRef} from "./AutoLoginDataGet.js" +import {AutoLoginDataReturnTypeRef} from "./AutoLoginDataReturn.js" +import {AutoLoginPostReturnTypeRef} from "./AutoLoginPostReturn.js" +import {AutoLoginDataDeleteTypeRef} from "./AutoLoginDataDelete.js" +import {BookingServiceDataTypeRef} from "./BookingServiceData.js" +import {BrandingDomainGetReturnTypeRef} from "./BrandingDomainGetReturn.js" +import {BrandingDomainDataTypeRef} from "./BrandingDomainData.js" +import {BrandingDomainDeleteDataTypeRef} from "./BrandingDomainDeleteData.js" +import {ChangePasswordDataTypeRef} from "./ChangePasswordData.js" +import {CloseSessionServicePostTypeRef} from "./CloseSessionServicePost.js" +import {CreateCustomerServerPropertiesDataTypeRef} from "./CreateCustomerServerPropertiesData.js" +import {CreateCustomerServerPropertiesReturnTypeRef} from "./CreateCustomerServerPropertiesReturn.js" +import {CustomDomainCheckDataTypeRef} from "./CustomDomainCheckData.js" +import {CustomDomainCheckReturnTypeRef} from "./CustomDomainCheckReturn.js" +import {CustomDomainDataTypeRef} from "./CustomDomainData.js" +import {CustomDomainReturnTypeRef} from "./CustomDomainReturn.js" +import {CustomerInfoReturnTypeRef} from "./CustomerInfoReturn.js" +import {PublicKeyReturnTypeRef} from "./PublicKeyReturn.js" +import {CustomerDataTypeRef} from "./CustomerData.js" +import {CustomerReturnTypeRef} from "./CustomerReturn.js" +import {DeleteCustomerDataTypeRef} from "./DeleteCustomerData.js" +import {DebitServicePutDataTypeRef} from "./DebitServicePutData.js" +import {DomainMailAddressAvailabilityDataTypeRef} from "./DomainMailAddressAvailabilityData.js" +import {DomainMailAddressAvailabilityReturnTypeRef} from "./DomainMailAddressAvailabilityReturn.js" +import {ExternalPropertiesReturnTypeRef} from "./ExternalPropertiesReturn.js" +import {GiftCardRedeemDataTypeRef} from "./GiftCardRedeemData.js" +import {GiftCardRedeemGetReturnTypeRef} from "./GiftCardRedeemGetReturn.js" +import {GiftCardGetReturnTypeRef} from "./GiftCardGetReturn.js" +import {GiftCardCreateDataTypeRef} from "./GiftCardCreateData.js" +import {GiftCardCreateReturnTypeRef} from "./GiftCardCreateReturn.js" +import {GiftCardDeleteDataTypeRef} from "./GiftCardDeleteData.js" +import {LocationServiceGetReturnTypeRef} from "./LocationServiceGetReturn.js" +import {MailAddressAliasServiceReturnTypeRef} from "./MailAddressAliasServiceReturn.js" +import {MailAddressAliasServiceDataTypeRef} from "./MailAddressAliasServiceData.js" +import {MailAddressAliasServiceDataDeleteTypeRef} from "./MailAddressAliasServiceDataDelete.js" +import {MailAddressAvailabilityDataTypeRef} from "./MailAddressAvailabilityData.js" +import {MailAddressAvailabilityReturnTypeRef} from "./MailAddressAvailabilityReturn.js" +import {MembershipAddDataTypeRef} from "./MembershipAddData.js" +import {MembershipRemoveDataTypeRef} from "./MembershipRemoveData.js" +import {PaymentDataServiceGetDataTypeRef} from "./PaymentDataServiceGetData.js" +import {PaymentDataServiceGetReturnTypeRef} from "./PaymentDataServiceGetReturn.js" +import {PaymentDataServicePostDataTypeRef} from "./PaymentDataServicePostData.js" +import {PaymentDataServicePutDataTypeRef} from "./PaymentDataServicePutData.js" +import {PaymentDataServicePutReturnTypeRef} from "./PaymentDataServicePutReturn.js" +import {PdfInvoiceServiceDataTypeRef} from "./PdfInvoiceServiceData.js" +import {PdfInvoiceServiceReturnTypeRef} from "./PdfInvoiceServiceReturn.js" +import {PremiumFeatureDataTypeRef} from "./PremiumFeatureData.js" +import {PremiumFeatureReturnTypeRef} from "./PremiumFeatureReturn.js" +import {PriceServiceDataTypeRef} from "./PriceServiceData.js" +import {PriceServiceReturnTypeRef} from "./PriceServiceReturn.js" +import {PublicKeyDataTypeRef} from "./PublicKeyData.js" +import {RegistrationCaptchaServiceGetDataTypeRef} from "./RegistrationCaptchaServiceGetData.js" +import {RegistrationCaptchaServiceReturnTypeRef} from "./RegistrationCaptchaServiceReturn.js" +import {RegistrationCaptchaServiceDataTypeRef} from "./RegistrationCaptchaServiceData.js" +import {RegistrationServiceDataTypeRef} from "./RegistrationServiceData.js" +import {RegistrationReturnTypeRef} from "./RegistrationReturn.js" +import {ResetFactorsDeleteDataTypeRef} from "./ResetFactorsDeleteData.js" +import {ResetPasswordDataTypeRef} from "./ResetPasswordData.js" +import {SaltDataTypeRef} from "./SaltData.js" +import {SaltReturnTypeRef} from "./SaltReturn.js" +import {SecondFactorAuthAllowedReturnTypeRef} from "./SecondFactorAuthAllowedReturn.js" +import {SecondFactorAuthGetDataTypeRef} from "./SecondFactorAuthGetData.js" +import {SecondFactorAuthGetReturnTypeRef} from "./SecondFactorAuthGetReturn.js" +import {SecondFactorAuthDataTypeRef} from "./SecondFactorAuthData.js" +import {SecondFactorAuthDeleteDataTypeRef} from "./SecondFactorAuthDeleteData.js" +import {CreateSessionDataTypeRef} from "./CreateSessionData.js" +import {CreateSessionReturnTypeRef} from "./CreateSessionReturn.js" +import {SignOrderProcessingAgreementDataTypeRef} from "./SignOrderProcessingAgreementData.js" +import {SwitchAccountTypeDataTypeRef} from "./SwitchAccountTypeData.js" +import {SystemKeysReturnTypeRef} from "./SystemKeysReturn.js" +import {TakeOverDeletedAddressDataTypeRef} from "./TakeOverDeletedAddressData.js" +import {UpdateAdminshipDataTypeRef} from "./UpdateAdminshipData.js" +import {UpdatePermissionKeyDataTypeRef} from "./UpdatePermissionKeyData.js" +import {UpgradePriceServiceDataTypeRef} from "./UpgradePriceServiceData.js" +import {UpgradePriceServiceReturnTypeRef} from "./UpgradePriceServiceReturn.js" +import {UsageTestAssignmentInTypeRef} from "./UsageTestAssignmentIn.js" +import {UsageTestAssignmentOutTypeRef} from "./UsageTestAssignmentOut.js" +import {UsageTestParticipationInTypeRef} from "./UsageTestParticipationIn.js" +import {UserIdDataTypeRef} from "./UserIdData.js" +import {UserIdReturnTypeRef} from "./UserIdReturn.js" +import {UserDataTypeRef} from "./UserData.js" +import {UserReturnTypeRef} from "./UserReturn.js" +import {UserDataDeleteTypeRef} from "./UserDataDelete.js" +import {VersionDataTypeRef} from "./VersionData.js" +import {VersionReturnTypeRef} from "./VersionReturn.js" + +export const AlarmService = Object.freeze({ + app: "sys", + name: "AlarmService", + get: null, + post: {data: AlarmServicePostTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const AutoLoginService = Object.freeze({ + app: "sys", + name: "AutoLoginService", + get: {data: AutoLoginDataGetTypeRef, return: AutoLoginDataReturnTypeRef}, + post: {data: AutoLoginDataReturnTypeRef, return: AutoLoginPostReturnTypeRef}, + put: null, + delete: {data: AutoLoginDataDeleteTypeRef, return: null}, +} as const) + +export const BookingService = Object.freeze({ + app: "sys", + name: "BookingService", + get: null, + post: {data: BookingServiceDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const BrandingDomainService = Object.freeze({ + app: "sys", + name: "BrandingDomainService", + get: {data: null, return: BrandingDomainGetReturnTypeRef}, + post: {data: BrandingDomainDataTypeRef, return: null}, + put: {data: BrandingDomainDataTypeRef, return: null}, + delete: {data: BrandingDomainDeleteDataTypeRef, return: null}, +} as const) + +export const ChangePasswordService = Object.freeze({ + app: "sys", + name: "ChangePasswordService", + get: null, + post: {data: ChangePasswordDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const CloseSessionService = Object.freeze({ + app: "sys", + name: "CloseSessionService", + get: null, + post: {data: CloseSessionServicePostTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const CreateCustomerServerProperties = Object.freeze({ + app: "sys", + name: "CreateCustomerServerProperties", + get: null, + post: {data: CreateCustomerServerPropertiesDataTypeRef, return: CreateCustomerServerPropertiesReturnTypeRef}, + put: null, + delete: null, +} as const) + +export const CustomDomainCheckService = Object.freeze({ + app: "sys", + name: "CustomDomainCheckService", + get: {data: CustomDomainCheckDataTypeRef, return: CustomDomainCheckReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const CustomDomainService = Object.freeze({ + app: "sys", + name: "CustomDomainService", + get: null, + post: {data: CustomDomainDataTypeRef, return: CustomDomainReturnTypeRef}, + put: {data: CustomDomainDataTypeRef, return: null}, + delete: {data: CustomDomainDataTypeRef, return: null}, +} as const) + +export const CustomerInfoService = Object.freeze({ + app: "sys", + name: "CustomerInfoService", + get: {data: null, return: CustomerInfoReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const CustomerPublicKeyService = Object.freeze({ + app: "sys", + name: "CustomerPublicKeyService", + get: {data: null, return: PublicKeyReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const CustomerService = Object.freeze({ + app: "sys", + name: "CustomerService", + get: null, + post: {data: CustomerDataTypeRef, return: CustomerReturnTypeRef}, + put: null, + delete: {data: DeleteCustomerDataTypeRef, return: null}, +} as const) + +export const DebitService = Object.freeze({ + app: "sys", + name: "DebitService", + get: null, + post: null, + put: {data: DebitServicePutDataTypeRef, return: null}, + delete: null, +} as const) + +export const DomainMailAddressAvailabilityService = Object.freeze({ + app: "sys", + name: "DomainMailAddressAvailabilityService", + get: {data: DomainMailAddressAvailabilityDataTypeRef, return: DomainMailAddressAvailabilityReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const ExternalPropertiesService = Object.freeze({ + app: "sys", + name: "ExternalPropertiesService", + get: {data: null, return: ExternalPropertiesReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const GiftCardRedeemService = Object.freeze({ + app: "sys", + name: "GiftCardRedeemService", + get: {data: GiftCardRedeemDataTypeRef, return: GiftCardRedeemGetReturnTypeRef}, + post: {data: GiftCardRedeemDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const GiftCardService = Object.freeze({ + app: "sys", + name: "GiftCardService", + get: {data: null, return: GiftCardGetReturnTypeRef}, + post: {data: GiftCardCreateDataTypeRef, return: GiftCardCreateReturnTypeRef}, + put: null, + delete: {data: GiftCardDeleteDataTypeRef, return: null}, +} as const) + +export const LocationService = Object.freeze({ + app: "sys", + name: "LocationService", + get: {data: null, return: LocationServiceGetReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const MailAddressAliasService = Object.freeze({ + app: "sys", + name: "MailAddressAliasService", + get: {data: null, return: MailAddressAliasServiceReturnTypeRef}, + post: {data: MailAddressAliasServiceDataTypeRef, return: null}, + put: null, + delete: {data: MailAddressAliasServiceDataDeleteTypeRef, return: null}, +} as const) + +export const MailAddressAvailabilityService = Object.freeze({ + app: "sys", + name: "MailAddressAvailabilityService", + get: {data: MailAddressAvailabilityDataTypeRef, return: MailAddressAvailabilityReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const MembershipService = Object.freeze({ + app: "sys", + name: "MembershipService", + get: null, + post: {data: MembershipAddDataTypeRef, return: null}, + put: null, + delete: {data: MembershipRemoveDataTypeRef, return: null}, +} as const) + +export const PaymentDataService = Object.freeze({ + app: "sys", + name: "PaymentDataService", + get: {data: PaymentDataServiceGetDataTypeRef, return: PaymentDataServiceGetReturnTypeRef}, + post: {data: PaymentDataServicePostDataTypeRef, return: null}, + put: {data: PaymentDataServicePutDataTypeRef, return: PaymentDataServicePutReturnTypeRef}, + delete: null, +} as const) + +export const PdfInvoiceService = Object.freeze({ + app: "sys", + name: "PdfInvoiceService", + get: {data: PdfInvoiceServiceDataTypeRef, return: PdfInvoiceServiceReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const PremiumFeatureService = Object.freeze({ + app: "sys", + name: "PremiumFeatureService", + get: null, + post: {data: PremiumFeatureDataTypeRef, return: PremiumFeatureReturnTypeRef}, + put: null, + delete: null, +} as const) + +export const PriceService = Object.freeze({ + app: "sys", + name: "PriceService", + get: {data: PriceServiceDataTypeRef, return: PriceServiceReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const PublicKeyService = Object.freeze({ + app: "sys", + name: "PublicKeyService", + get: {data: PublicKeyDataTypeRef, return: PublicKeyReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const RegistrationCaptchaService = Object.freeze({ + app: "sys", + name: "RegistrationCaptchaService", + get: {data: RegistrationCaptchaServiceGetDataTypeRef, return: RegistrationCaptchaServiceReturnTypeRef}, + post: {data: RegistrationCaptchaServiceDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const RegistrationService = Object.freeze({ + app: "sys", + name: "RegistrationService", + get: {data: null, return: RegistrationServiceDataTypeRef}, + post: {data: RegistrationServiceDataTypeRef, return: RegistrationReturnTypeRef}, + put: null, + delete: null, +} as const) + +export const ResetFactorsService = Object.freeze({ + app: "sys", + name: "ResetFactorsService", + get: null, + post: null, + put: null, + delete: {data: ResetFactorsDeleteDataTypeRef, return: null}, +} as const) + +export const ResetPasswordService = Object.freeze({ + app: "sys", + name: "ResetPasswordService", + get: null, + post: {data: ResetPasswordDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const SaltService = Object.freeze({ + app: "sys", + name: "SaltService", + get: {data: SaltDataTypeRef, return: SaltReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const SecondFactorAuthAllowedService = Object.freeze({ + app: "sys", + name: "SecondFactorAuthAllowedService", + get: {data: null, return: SecondFactorAuthAllowedReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const SecondFactorAuthService = Object.freeze({ + app: "sys", + name: "SecondFactorAuthService", + get: {data: SecondFactorAuthGetDataTypeRef, return: SecondFactorAuthGetReturnTypeRef}, + post: {data: SecondFactorAuthDataTypeRef, return: null}, + put: null, + delete: {data: SecondFactorAuthDeleteDataTypeRef, return: null}, +} as const) + +export const SessionService = Object.freeze({ + app: "sys", + name: "SessionService", + get: null, + post: {data: CreateSessionDataTypeRef, return: CreateSessionReturnTypeRef}, + put: null, + delete: null, +} as const) + +export const SignOrderProcessingAgreementService = Object.freeze({ + app: "sys", + name: "SignOrderProcessingAgreementService", + get: null, + post: {data: SignOrderProcessingAgreementDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const SwitchAccountTypeService = Object.freeze({ + app: "sys", + name: "SwitchAccountTypeService", + get: null, + post: {data: SwitchAccountTypeDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const SystemKeysService = Object.freeze({ + app: "sys", + name: "SystemKeysService", + get: {data: null, return: SystemKeysReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const TakeOverDeletedAddressService = Object.freeze({ + app: "sys", + name: "TakeOverDeletedAddressService", + get: null, + post: {data: TakeOverDeletedAddressDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const UpdateAdminshipService = Object.freeze({ + app: "sys", + name: "UpdateAdminshipService", + get: null, + post: {data: UpdateAdminshipDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const UpdatePermissionKeyService = Object.freeze({ + app: "sys", + name: "UpdatePermissionKeyService", + get: null, + post: {data: UpdatePermissionKeyDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const UpgradePriceService = Object.freeze({ + app: "sys", + name: "UpgradePriceService", + get: {data: UpgradePriceServiceDataTypeRef, return: UpgradePriceServiceReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const UsageTestAssignmentService = Object.freeze({ + app: "sys", + name: "UsageTestAssignmentService", + get: null, + post: {data: UsageTestAssignmentInTypeRef, return: UsageTestAssignmentOutTypeRef}, + put: {data: UsageTestAssignmentInTypeRef, return: UsageTestAssignmentOutTypeRef}, + delete: null, +} as const) + +export const UsageTestParticipationService = Object.freeze({ + app: "sys", + name: "UsageTestParticipationService", + get: null, + post: {data: UsageTestParticipationInTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const UserIdService = Object.freeze({ + app: "sys", + name: "UserIdService", + get: {data: UserIdDataTypeRef, return: UserIdReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) + +export const UserService = Object.freeze({ + app: "sys", + name: "UserService", + get: null, + post: {data: UserDataTypeRef, return: UserReturnTypeRef}, + put: null, + delete: {data: UserDataDeleteTypeRef, return: null}, +} as const) + +export const VersionService = Object.freeze({ + app: "sys", + name: "VersionService", + get: {data: VersionDataTypeRef, return: VersionReturnTypeRef}, + post: null, + put: null, + delete: null, +} as const) \ No newline at end of file diff --git a/src/api/entities/sys/Session.ts b/src/api/entities/sys/Session.ts index ff7983f7ff..4cfb63250e 100644 --- a/src/api/entities/sys/Session.ts +++ b/src/api/entities/sys/Session.ts @@ -106,7 +106,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/SystemKeysReturn.ts b/src/api/entities/sys/SystemKeysReturn.ts index c0736e1809..1a27f349d7 100644 --- a/src/api/entities/sys/SystemKeysReturn.ts +++ b/src/api/entities/sys/SystemKeysReturn.ts @@ -62,14 +62,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null }, "premiumGroup": { "id": 881, "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/U2fKey.ts b/src/api/entities/sys/U2fKey.ts index c74365565e..9575c9b8c2 100644 --- a/src/api/entities/sys/U2fKey.ts +++ b/src/api/entities/sys/U2fKey.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "SecondFactor" + "refType": "SecondFactor", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/UpdateAdminshipData.ts b/src/api/entities/sys/UpdateAdminshipData.ts index e31e3d883f..edf1bd8f53 100644 --- a/src/api/entities/sys/UpdateAdminshipData.ts +++ b/src/api/entities/sys/UpdateAdminshipData.ts @@ -34,14 +34,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null }, "newAdminGroup": { "id": 1292, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/UpdatePermissionKeyData.ts b/src/api/entities/sys/UpdatePermissionKeyData.ts index 4c3fa8bc1c..608678ba45 100644 --- a/src/api/entities/sys/UpdatePermissionKeyData.ts +++ b/src/api/entities/sys/UpdatePermissionKeyData.ts @@ -41,14 +41,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "BucketPermission" + "refType": "BucketPermission", + "dependency": null }, "permission": { "id": 450, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Permission" + "refType": "Permission", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/User.ts b/src/api/entities/sys/User.ts index 18f5eba4d0..d883f11a7e 100644 --- a/src/api/entities/sys/User.ts +++ b/src/api/entities/sys/User.ts @@ -116,6 +116,14 @@ export const _TypeModel: TypeModel = { "refType": "AuthenticatedDevice", "dependency": null }, + "customer": { + "id": 99, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "Customer", + "dependency": null + }, "externalAuthInfo": { "id": 98, "type": "AGGREGATION", @@ -124,6 +132,14 @@ export const _TypeModel: TypeModel = { "refType": "UserExternalAuthInfo", "dependency": null }, + "failedLogins": { + "id": 101, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Login", + "dependency": null + }, "memberships": { "id": 96, "type": "AGGREGATION", @@ -148,6 +164,22 @@ export const _TypeModel: TypeModel = { "refType": "PushIdentifierList", "dependency": null }, + "secondFactorAuthentications": { + "id": 102, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "SecondFactorAuthentication", + "dependency": null + }, + "successfulLogins": { + "id": 100, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Login", + "dependency": null + }, "userGroup": { "id": 95, "type": "AGGREGATION", @@ -155,34 +187,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "GroupMembership", "dependency": null - }, - "customer": { - "id": 99, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "Customer" - }, - "failedLogins": { - "id": 101, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Login" - }, - "secondFactorAuthentications": { - "id": 102, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "SecondFactorAuthentication" - }, - "successfulLogins": { - "id": 100, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Login" } }, "app": "sys", @@ -210,13 +214,13 @@ export type User = { alarmInfoList: null | UserAlarmInfoListType; auth: null | UserAuthentication; authenticatedDevices: AuthenticatedDevice[]; + customer: null | Id; externalAuthInfo: null | UserExternalAuthInfo; + failedLogins: Id; memberships: GroupMembership[]; phoneNumbers: PhoneNumber[]; pushIdentifierList: null | PushIdentifierList; - userGroup: GroupMembership; - customer: null | Id; - failedLogins: Id; secondFactorAuthentications: Id; successfulLogins: Id; + userGroup: GroupMembership; } \ No newline at end of file diff --git a/src/api/entities/sys/UserAlarmInfoListType.ts b/src/api/entities/sys/UserAlarmInfoListType.ts index 120473ac39..3fdd1785dc 100644 --- a/src/api/entities/sys/UserAlarmInfoListType.ts +++ b/src/api/entities/sys/UserAlarmInfoListType.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "UserAlarmInfo" + "refType": "UserAlarmInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/UserAreaGroups.ts b/src/api/entities/sys/UserAreaGroups.ts index 04a7bfedfa..863bb66896 100644 --- a/src/api/entities/sys/UserAreaGroups.ts +++ b/src/api/entities/sys/UserAreaGroups.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/UserAuthentication.ts b/src/api/entities/sys/UserAuthentication.ts index a136121125..ee3bb61a98 100644 --- a/src/api/entities/sys/UserAuthentication.ts +++ b/src/api/entities/sys/UserAuthentication.ts @@ -27,21 +27,24 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "RecoverCode" + "refType": "RecoverCode", + "dependency": null }, "secondFactors": { "id": 1209, "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "SecondFactor" + "refType": "SecondFactor", + "dependency": null }, "sessions": { "id": 1208, "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Session" + "refType": "Session", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/UserDataDelete.ts b/src/api/entities/sys/UserDataDelete.ts index 19affde34a..db9fbea4cd 100644 --- a/src/api/entities/sys/UserDataDelete.ts +++ b/src/api/entities/sys/UserDataDelete.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/UserExternalAuthInfo.ts b/src/api/entities/sys/UserExternalAuthInfo.ts index 373714f141..55443095d6 100644 --- a/src/api/entities/sys/UserExternalAuthInfo.ts +++ b/src/api/entities/sys/UserExternalAuthInfo.ts @@ -55,7 +55,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "VariableExternalAuthInfo" + "refType": "VariableExternalAuthInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/UserGroupRoot.ts b/src/api/entities/sys/UserGroupRoot.ts index cb09ac5494..99d2b09933 100644 --- a/src/api/entities/sys/UserGroupRoot.ts +++ b/src/api/entities/sys/UserGroupRoot.ts @@ -48,7 +48,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "ReceivedGroupInvitation" + "refType": "ReceivedGroupInvitation", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/UserIdReturn.ts b/src/api/entities/sys/UserIdReturn.ts index a1d9a66f3c..593a45d8fd 100644 --- a/src/api/entities/sys/UserIdReturn.ts +++ b/src/api/entities/sys/UserIdReturn.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "User" + "refType": "User", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/UserReturn.ts b/src/api/entities/sys/UserReturn.ts index 71b217d23f..5d44177146 100644 --- a/src/api/entities/sys/UserReturn.ts +++ b/src/api/entities/sys/UserReturn.ts @@ -27,14 +27,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "User" + "refType": "User", + "dependency": null }, "userGroup": { "id": 395, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/Version.ts b/src/api/entities/sys/Version.ts index c7a33fe704..8d4e28732e 100644 --- a/src/api/entities/sys/Version.ts +++ b/src/api/entities/sys/Version.ts @@ -48,14 +48,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null }, "authorGroupInfo": { "id": 486, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/VersionInfo.ts b/src/api/entities/sys/VersionInfo.ts index b30a9912ae..2a3cf63990 100644 --- a/src/api/entities/sys/VersionInfo.ts +++ b/src/api/entities/sys/VersionInfo.ts @@ -90,14 +90,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null }, "authorGroupInfo": { "id": 249, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/WhitelabelChild.ts b/src/api/entities/sys/WhitelabelChild.ts index 8c43b38b5c..82b0245b6d 100644 --- a/src/api/entities/sys/WhitelabelChild.ts +++ b/src/api/entities/sys/WhitelabelChild.ts @@ -83,7 +83,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Customer" + "refType": "Customer", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/WhitelabelChildrenRef.ts b/src/api/entities/sys/WhitelabelChildrenRef.ts index 107a15cb6a..f1d97c3ef4 100644 --- a/src/api/entities/sys/WhitelabelChildrenRef.ts +++ b/src/api/entities/sys/WhitelabelChildrenRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "WhitelabelChild" + "refType": "WhitelabelChild", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/WhitelabelParent.ts b/src/api/entities/sys/WhitelabelParent.ts index 6dd1475865..3f944b5f72 100644 --- a/src/api/entities/sys/WhitelabelParent.ts +++ b/src/api/entities/sys/WhitelabelParent.ts @@ -27,14 +27,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Customer" + "refType": "Customer", + "dependency": null }, "whitelabelChildInParent": { "id": 1275, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "WhitelabelChild" + "refType": "WhitelabelChild", + "dependency": null } }, "app": "sys", diff --git a/src/api/entities/sys/sysModelMap.ts b/src/api/entities/sys/sysModelMap.ts index 24ce2923d7..9d032e6378 100644 --- a/src/api/entities/sys/sysModelMap.ts +++ b/src/api/entities/sys/sysModelMap.ts @@ -1,209 +1,209 @@ const map = { - KeyPair: () => import('./KeyPair.js'), - Group: () => import('./Group.js'), - GroupInfo: () => import('./GroupInfo.js'), - GroupMembership: () => import('./GroupMembership.js'), - Customer: () => import('./Customer.js'), - AuthenticatedDevice: () => import('./AuthenticatedDevice.js'), - Login: () => import('./Login.js'), - SecondFactorAuthentication: () => import('./SecondFactorAuthentication.js'), - PhoneNumber: () => import('./PhoneNumber.js'), - VariableExternalAuthInfo: () => import('./VariableExternalAuthInfo.js'), - UserExternalAuthInfo: () => import('./UserExternalAuthInfo.js'), - User: () => import('./User.js'), - ExternalUserReference: () => import('./ExternalUserReference.js'), - GroupRoot: () => import('./GroupRoot.js'), - BucketPermission: () => import('./BucketPermission.js'), - Bucket: () => import('./Bucket.js'), - Permission: () => import('./Permission.js'), AccountingInfo: () => import('./AccountingInfo.js'), - CustomerInfo: () => import('./CustomerInfo.js'), - SentGroupInvitation: () => import('./SentGroupInvitation.js'), - MailAddressToGroup: () => import('./MailAddressToGroup.js'), - GroupMember: () => import('./GroupMember.js'), - RootInstance: () => import('./RootInstance.js'), - VersionInfo: () => import('./VersionInfo.js'), - SystemKeysReturn: () => import('./SystemKeysReturn.js'), - MailAddressAvailabilityData: () => import('./MailAddressAvailabilityData.js'), - MailAddressAvailabilityReturn: () => import('./MailAddressAvailabilityReturn.js'), - RegistrationServiceData: () => import('./RegistrationServiceData.js'), - RegistrationReturn: () => import('./RegistrationReturn.js'), - SendRegistrationCodeData: () => import('./SendRegistrationCodeData.js'), - SendRegistrationCodeReturn: () => import('./SendRegistrationCodeReturn.js'), - VerifyRegistrationCodeData: () => import('./VerifyRegistrationCodeData.js'), - CreateGroupData: () => import('./CreateGroupData.js'), - CreateGroupListData: () => import('./CreateGroupListData.js'), - CustomerReturn: () => import('./CustomerReturn.js'), - CustomerData: () => import('./CustomerData.js'), - UserReturn: () => import('./UserReturn.js'), - UserData: () => import('./UserData.js'), - UserDataDelete: () => import('./UserDataDelete.js'), - PublicKeyData: () => import('./PublicKeyData.js'), - PublicKeyReturn: () => import('./PublicKeyReturn.js'), - SaltData: () => import('./SaltData.js'), - SaltReturn: () => import('./SaltReturn.js'), - UserIdData: () => import('./UserIdData.js'), - UserIdReturn: () => import('./UserIdReturn.js'), - AutoLoginDataGet: () => import('./AutoLoginDataGet.js'), - AutoLoginDataDelete: () => import('./AutoLoginDataDelete.js'), - AutoLoginDataReturn: () => import('./AutoLoginDataReturn.js'), - AutoLoginPostReturn: () => import('./AutoLoginPostReturn.js'), - UpdatePermissionKeyData: () => import('./UpdatePermissionKeyData.js'), - Authentication: () => import('./Authentication.js'), - Chat: () => import('./Chat.js'), - EntityUpdate: () => import('./EntityUpdate.js'), - Exception: () => import('./Exception.js'), - Version: () => import('./Version.js'), - VersionData: () => import('./VersionData.js'), - VersionReturn: () => import('./VersionReturn.js'), - MembershipAddData: () => import('./MembershipAddData.js'), - StringConfigValue: () => import('./StringConfigValue.js'), - ChangePasswordData: () => import('./ChangePasswordData.js'), - SecondFactorAuthData: () => import('./SecondFactorAuthData.js'), - SecondFactorAuthAllowedReturn: () => import('./SecondFactorAuthAllowedReturn.js'), - CustomerInfoReturn: () => import('./CustomerInfoReturn.js'), - ResetPasswordData: () => import('./ResetPasswordData.js'), - DomainMailAddressAvailabilityData: () => import('./DomainMailAddressAvailabilityData.js'), - DomainMailAddressAvailabilityReturn: () => import('./DomainMailAddressAvailabilityReturn.js'), - RegistrationConfigReturn: () => import('./RegistrationConfigReturn.js'), - PushIdentifier: () => import('./PushIdentifier.js'), - PushIdentifierList: () => import('./PushIdentifierList.js'), - DeleteCustomerData: () => import('./DeleteCustomerData.js'), - PremiumFeatureData: () => import('./PremiumFeatureData.js'), - CustomerProperties: () => import('./CustomerProperties.js'), - ExternalPropertiesReturn: () => import('./ExternalPropertiesReturn.js'), - RegistrationCaptchaServiceData: () => import('./RegistrationCaptchaServiceData.js'), - RegistrationCaptchaServiceReturn: () => import('./RegistrationCaptchaServiceReturn.js'), - MailAddressAlias: () => import('./MailAddressAlias.js'), - MailAddressAliasServiceData: () => import('./MailAddressAliasServiceData.js'), - MailAddressAliasServiceReturn: () => import('./MailAddressAliasServiceReturn.js'), - DomainInfo: () => import('./DomainInfo.js'), - BookingItem: () => import('./BookingItem.js'), - Booking: () => import('./Booking.js'), - BookingsRef: () => import('./BookingsRef.js'), - StringWrapper: () => import('./StringWrapper.js'), - CustomDomainReturn: () => import('./CustomDomainReturn.js'), - CustomDomainData: () => import('./CustomDomainData.js'), - InvoiceInfo: () => import('./InvoiceInfo.js'), - SwitchAccountTypeData: () => import('./SwitchAccountTypeData.js'), - PdfInvoiceServiceData: () => import('./PdfInvoiceServiceData.js'), - PdfInvoiceServiceReturn: () => import('./PdfInvoiceServiceReturn.js'), - MailAddressAliasServiceDataDelete: () => import('./MailAddressAliasServiceDataDelete.js'), - PaymentDataServiceGetReturn: () => import('./PaymentDataServiceGetReturn.js'), - PaymentDataServicePutData: () => import('./PaymentDataServicePutData.js'), - PaymentDataServicePutReturn: () => import('./PaymentDataServicePutReturn.js'), - PriceRequestData: () => import('./PriceRequestData.js'), - PriceServiceData: () => import('./PriceServiceData.js'), - PriceItemData: () => import('./PriceItemData.js'), - PriceData: () => import('./PriceData.js'), - PriceServiceReturn: () => import('./PriceServiceReturn.js'), - MembershipRemoveData: () => import('./MembershipRemoveData.js'), - File: () => import('./File.js'), - EmailSenderListElement: () => import('./EmailSenderListElement.js'), - CustomerServerProperties: () => import('./CustomerServerProperties.js'), - CreateCustomerServerPropertiesData: () => import('./CreateCustomerServerPropertiesData.js'), - CreateCustomerServerPropertiesReturn: () => import('./CreateCustomerServerPropertiesReturn.js'), - PremiumFeatureReturn: () => import('./PremiumFeatureReturn.js'), - UserAreaGroups: () => import('./UserAreaGroups.js'), - DebitServicePutData: () => import('./DebitServicePutData.js'), - BookingServiceData: () => import('./BookingServiceData.js'), - EntityEventBatch: () => import('./EntityEventBatch.js'), - DomainsRef: () => import('./DomainsRef.js'), - AuditLogEntry: () => import('./AuditLogEntry.js'), - AuditLogRef: () => import('./AuditLogRef.js'), - WhitelabelConfig: () => import('./WhitelabelConfig.js'), - BrandingDomainData: () => import('./BrandingDomainData.js'), - BrandingDomainDeleteData: () => import('./BrandingDomainDeleteData.js'), - U2fRegisteredDevice: () => import('./U2fRegisteredDevice.js'), - SecondFactor: () => import('./SecondFactor.js'), - U2fKey: () => import('./U2fKey.js'), - U2fChallenge: () => import('./U2fChallenge.js'), - Challenge: () => import('./Challenge.js'), - Session: () => import('./Session.js'), - UserAuthentication: () => import('./UserAuthentication.js'), - CreateSessionData: () => import('./CreateSessionData.js'), - CreateSessionReturn: () => import('./CreateSessionReturn.js'), - U2fResponseData: () => import('./U2fResponseData.js'), - SecondFactorAuthGetData: () => import('./SecondFactorAuthGetData.js'), - SecondFactorAuthGetReturn: () => import('./SecondFactorAuthGetReturn.js'), - OtpChallenge: () => import('./OtpChallenge.js'), - BootstrapFeature: () => import('./BootstrapFeature.js'), - Feature: () => import('./Feature.js'), - WhitelabelChild: () => import('./WhitelabelChild.js'), - WhitelabelChildrenRef: () => import('./WhitelabelChildrenRef.js'), - WhitelabelParent: () => import('./WhitelabelParent.js'), - UpdateAdminshipData: () => import('./UpdateAdminshipData.js'), AdministratedGroup: () => import('./AdministratedGroup.js'), AdministratedGroupsRef: () => import('./AdministratedGroupsRef.js'), - CreditCard: () => import('./CreditCard.js'), - LocationServiceGetReturn: () => import('./LocationServiceGetReturn.js'), - OrderProcessingAgreement: () => import('./OrderProcessingAgreement.js'), - SignOrderProcessingAgreementData: () => import('./SignOrderProcessingAgreementData.js'), - GeneratedIdWrapper: () => import('./GeneratedIdWrapper.js'), - SseConnectData: () => import('./SseConnectData.js'), - NotificationInfo: () => import('./NotificationInfo.js'), - RecoverCode: () => import('./RecoverCode.js'), - ResetFactorsDeleteData: () => import('./ResetFactorsDeleteData.js'), - UpgradePriceServiceData: () => import('./UpgradePriceServiceData.js'), - PlanPrices: () => import('./PlanPrices.js'), - UpgradePriceServiceReturn: () => import('./UpgradePriceServiceReturn.js'), - RegistrationCaptchaServiceGetData: () => import('./RegistrationCaptchaServiceGetData.js'), - WebsocketEntityData: () => import('./WebsocketEntityData.js'), - WebsocketCounterValue: () => import('./WebsocketCounterValue.js'), - WebsocketCounterData: () => import('./WebsocketCounterData.js'), - CertificateInfo: () => import('./CertificateInfo.js'), - NotificationMailTemplate: () => import('./NotificationMailTemplate.js'), - CalendarEventRef: () => import('./CalendarEventRef.js'), AlarmInfo: () => import('./AlarmInfo.js'), - UserAlarmInfo: () => import('./UserAlarmInfo.js'), - UserAlarmInfoListType: () => import('./UserAlarmInfoListType.js'), - NotificationSessionKey: () => import('./NotificationSessionKey.js'), - RepeatRule: () => import('./RepeatRule.js'), AlarmNotification: () => import('./AlarmNotification.js'), AlarmServicePost: () => import('./AlarmServicePost.js'), - DnsRecord: () => import('./DnsRecord.js'), - CustomDomainCheckData: () => import('./CustomDomainCheckData.js'), - CustomDomainCheckReturn: () => import('./CustomDomainCheckReturn.js'), - CloseSessionServicePost: () => import('./CloseSessionServicePost.js'), - ReceivedGroupInvitation: () => import('./ReceivedGroupInvitation.js'), - UserGroupRoot: () => import('./UserGroupRoot.js'), - PaymentErrorInfo: () => import('./PaymentErrorInfo.js'), - InvoiceItem: () => import('./InvoiceItem.js'), - Invoice: () => import('./Invoice.js'), - MissedNotification: () => import('./MissedNotification.js'), - BrandingDomainGetReturn: () => import('./BrandingDomainGetReturn.js'), - RejectedSender: () => import('./RejectedSender.js'), - RejectedSendersRef: () => import('./RejectedSendersRef.js'), - SecondFactorAuthDeleteData: () => import('./SecondFactorAuthDeleteData.js'), - TakeOverDeletedAddressData: () => import('./TakeOverDeletedAddressData.js'), - WebsocketLeaderStatus: () => import('./WebsocketLeaderStatus.js'), - GiftCard: () => import('./GiftCard.js'), - GiftCardsRef: () => import('./GiftCardsRef.js'), - GiftCardOption: () => import('./GiftCardOption.js'), - GiftCardGetReturn: () => import('./GiftCardGetReturn.js'), - GiftCardCreateData: () => import('./GiftCardCreateData.js'), - GiftCardDeleteData: () => import('./GiftCardDeleteData.js'), - GiftCardCreateReturn: () => import('./GiftCardCreateReturn.js'), - GiftCardRedeemData: () => import('./GiftCardRedeemData.js'), - GiftCardRedeemGetReturn: () => import('./GiftCardRedeemGetReturn.js'), - Braintree3ds2Request: () => import('./Braintree3ds2Request.js'), - Braintree3ds2Response: () => import('./Braintree3ds2Response.js'), - PaymentDataServicePostData: () => import('./PaymentDataServicePostData.js'), - PaymentDataServiceGetData: () => import('./PaymentDataServiceGetData.js'), - TypeInfo: () => import('./TypeInfo.js'), ArchiveRef: () => import('./ArchiveRef.js'), ArchiveType: () => import('./ArchiveType.js'), + AuditLogEntry: () => import('./AuditLogEntry.js'), + AuditLogRef: () => import('./AuditLogRef.js'), + AuthenticatedDevice: () => import('./AuthenticatedDevice.js'), + Authentication: () => import('./Authentication.js'), + AutoLoginDataDelete: () => import('./AutoLoginDataDelete.js'), + AutoLoginDataGet: () => import('./AutoLoginDataGet.js'), + AutoLoginDataReturn: () => import('./AutoLoginDataReturn.js'), + AutoLoginPostReturn: () => import('./AutoLoginPostReturn.js'), Blob: () => import('./Blob.js'), - BlobId: () => import('./BlobId.js'), - TargetServer: () => import('./TargetServer.js'), BlobAccessInfo: () => import('./BlobAccessInfo.js'), - WebauthnResponseData: () => import('./WebauthnResponseData.js'), + BlobId: () => import('./BlobId.js'), + Booking: () => import('./Booking.js'), + BookingItem: () => import('./BookingItem.js'), + BookingServiceData: () => import('./BookingServiceData.js'), + BookingsRef: () => import('./BookingsRef.js'), + BootstrapFeature: () => import('./BootstrapFeature.js'), + Braintree3ds2Request: () => import('./Braintree3ds2Request.js'), + Braintree3ds2Response: () => import('./Braintree3ds2Response.js'), + BrandingDomainData: () => import('./BrandingDomainData.js'), + BrandingDomainDeleteData: () => import('./BrandingDomainDeleteData.js'), + BrandingDomainGetReturn: () => import('./BrandingDomainGetReturn.js'), + Bucket: () => import('./Bucket.js'), + BucketPermission: () => import('./BucketPermission.js'), + CalendarEventRef: () => import('./CalendarEventRef.js'), + CertificateInfo: () => import('./CertificateInfo.js'), + Challenge: () => import('./Challenge.js'), + ChangePasswordData: () => import('./ChangePasswordData.js'), + Chat: () => import('./Chat.js'), + CloseSessionServicePost: () => import('./CloseSessionServicePost.js'), + CreateCustomerServerPropertiesData: () => import('./CreateCustomerServerPropertiesData.js'), + CreateCustomerServerPropertiesReturn: () => import('./CreateCustomerServerPropertiesReturn.js'), + CreateGroupData: () => import('./CreateGroupData.js'), + CreateGroupListData: () => import('./CreateGroupListData.js'), + CreateSessionData: () => import('./CreateSessionData.js'), + CreateSessionReturn: () => import('./CreateSessionReturn.js'), + CreditCard: () => import('./CreditCard.js'), + CustomDomainCheckData: () => import('./CustomDomainCheckData.js'), + CustomDomainCheckReturn: () => import('./CustomDomainCheckReturn.js'), + CustomDomainData: () => import('./CustomDomainData.js'), + CustomDomainReturn: () => import('./CustomDomainReturn.js'), + Customer: () => import('./Customer.js'), + CustomerData: () => import('./CustomerData.js'), + CustomerInfo: () => import('./CustomerInfo.js'), + CustomerInfoReturn: () => import('./CustomerInfoReturn.js'), + CustomerProperties: () => import('./CustomerProperties.js'), + CustomerReturn: () => import('./CustomerReturn.js'), + CustomerServerProperties: () => import('./CustomerServerProperties.js'), + DebitServicePutData: () => import('./DebitServicePutData.js'), + DeleteCustomerData: () => import('./DeleteCustomerData.js'), + DnsRecord: () => import('./DnsRecord.js'), + DomainInfo: () => import('./DomainInfo.js'), + DomainMailAddressAvailabilityData: () => import('./DomainMailAddressAvailabilityData.js'), + DomainMailAddressAvailabilityReturn: () => import('./DomainMailAddressAvailabilityReturn.js'), + DomainsRef: () => import('./DomainsRef.js'), + EmailSenderListElement: () => import('./EmailSenderListElement.js'), + EntityEventBatch: () => import('./EntityEventBatch.js'), + EntityUpdate: () => import('./EntityUpdate.js'), + Exception: () => import('./Exception.js'), + ExternalPropertiesReturn: () => import('./ExternalPropertiesReturn.js'), + ExternalUserReference: () => import('./ExternalUserReference.js'), + Feature: () => import('./Feature.js'), + File: () => import('./File.js'), + GeneratedIdWrapper: () => import('./GeneratedIdWrapper.js'), + GiftCard: () => import('./GiftCard.js'), + GiftCardCreateData: () => import('./GiftCardCreateData.js'), + GiftCardCreateReturn: () => import('./GiftCardCreateReturn.js'), + GiftCardDeleteData: () => import('./GiftCardDeleteData.js'), + GiftCardGetReturn: () => import('./GiftCardGetReturn.js'), + GiftCardOption: () => import('./GiftCardOption.js'), + GiftCardRedeemData: () => import('./GiftCardRedeemData.js'), + GiftCardRedeemGetReturn: () => import('./GiftCardRedeemGetReturn.js'), + GiftCardsRef: () => import('./GiftCardsRef.js'), + Group: () => import('./Group.js'), + GroupInfo: () => import('./GroupInfo.js'), + GroupMember: () => import('./GroupMember.js'), + GroupMembership: () => import('./GroupMembership.js'), + GroupRoot: () => import('./GroupRoot.js'), + Invoice: () => import('./Invoice.js'), + InvoiceInfo: () => import('./InvoiceInfo.js'), + InvoiceItem: () => import('./InvoiceItem.js'), + KeyPair: () => import('./KeyPair.js'), + LocationServiceGetReturn: () => import('./LocationServiceGetReturn.js'), + Login: () => import('./Login.js'), + MailAddressAlias: () => import('./MailAddressAlias.js'), + MailAddressAliasServiceData: () => import('./MailAddressAliasServiceData.js'), + MailAddressAliasServiceDataDelete: () => import('./MailAddressAliasServiceDataDelete.js'), + MailAddressAliasServiceReturn: () => import('./MailAddressAliasServiceReturn.js'), + MailAddressAvailabilityData: () => import('./MailAddressAvailabilityData.js'), + MailAddressAvailabilityReturn: () => import('./MailAddressAvailabilityReturn.js'), + MailAddressToGroup: () => import('./MailAddressToGroup.js'), + MembershipAddData: () => import('./MembershipAddData.js'), + MembershipRemoveData: () => import('./MembershipRemoveData.js'), + MissedNotification: () => import('./MissedNotification.js'), + NotificationInfo: () => import('./NotificationInfo.js'), + NotificationMailTemplate: () => import('./NotificationMailTemplate.js'), + NotificationSessionKey: () => import('./NotificationSessionKey.js'), + OrderProcessingAgreement: () => import('./OrderProcessingAgreement.js'), + OtpChallenge: () => import('./OtpChallenge.js'), + PaymentDataServiceGetData: () => import('./PaymentDataServiceGetData.js'), + PaymentDataServiceGetReturn: () => import('./PaymentDataServiceGetReturn.js'), + PaymentDataServicePostData: () => import('./PaymentDataServicePostData.js'), + PaymentDataServicePutData: () => import('./PaymentDataServicePutData.js'), + PaymentDataServicePutReturn: () => import('./PaymentDataServicePutReturn.js'), + PaymentErrorInfo: () => import('./PaymentErrorInfo.js'), + PdfInvoiceServiceData: () => import('./PdfInvoiceServiceData.js'), + PdfInvoiceServiceReturn: () => import('./PdfInvoiceServiceReturn.js'), + Permission: () => import('./Permission.js'), + PhoneNumber: () => import('./PhoneNumber.js'), + PlanPrices: () => import('./PlanPrices.js'), + PremiumFeatureData: () => import('./PremiumFeatureData.js'), + PremiumFeatureReturn: () => import('./PremiumFeatureReturn.js'), + PriceData: () => import('./PriceData.js'), + PriceItemData: () => import('./PriceItemData.js'), + PriceRequestData: () => import('./PriceRequestData.js'), + PriceServiceData: () => import('./PriceServiceData.js'), + PriceServiceReturn: () => import('./PriceServiceReturn.js'), + PublicKeyData: () => import('./PublicKeyData.js'), + PublicKeyReturn: () => import('./PublicKeyReturn.js'), + PushIdentifier: () => import('./PushIdentifier.js'), + PushIdentifierList: () => import('./PushIdentifierList.js'), + ReceivedGroupInvitation: () => import('./ReceivedGroupInvitation.js'), + RecoverCode: () => import('./RecoverCode.js'), + RegistrationCaptchaServiceData: () => import('./RegistrationCaptchaServiceData.js'), + RegistrationCaptchaServiceGetData: () => import('./RegistrationCaptchaServiceGetData.js'), + RegistrationCaptchaServiceReturn: () => import('./RegistrationCaptchaServiceReturn.js'), + RegistrationConfigReturn: () => import('./RegistrationConfigReturn.js'), + RegistrationReturn: () => import('./RegistrationReturn.js'), + RegistrationServiceData: () => import('./RegistrationServiceData.js'), + RejectedSender: () => import('./RejectedSender.js'), + RejectedSendersRef: () => import('./RejectedSendersRef.js'), + RepeatRule: () => import('./RepeatRule.js'), + ResetFactorsDeleteData: () => import('./ResetFactorsDeleteData.js'), + ResetPasswordData: () => import('./ResetPasswordData.js'), + RootInstance: () => import('./RootInstance.js'), + SaltData: () => import('./SaltData.js'), + SaltReturn: () => import('./SaltReturn.js'), + SecondFactor: () => import('./SecondFactor.js'), + SecondFactorAuthAllowedReturn: () => import('./SecondFactorAuthAllowedReturn.js'), + SecondFactorAuthData: () => import('./SecondFactorAuthData.js'), + SecondFactorAuthDeleteData: () => import('./SecondFactorAuthDeleteData.js'), + SecondFactorAuthGetData: () => import('./SecondFactorAuthGetData.js'), + SecondFactorAuthGetReturn: () => import('./SecondFactorAuthGetReturn.js'), + SecondFactorAuthentication: () => import('./SecondFactorAuthentication.js'), + SendRegistrationCodeData: () => import('./SendRegistrationCodeData.js'), + SendRegistrationCodeReturn: () => import('./SendRegistrationCodeReturn.js'), + SentGroupInvitation: () => import('./SentGroupInvitation.js'), + Session: () => import('./Session.js'), + SignOrderProcessingAgreementData: () => import('./SignOrderProcessingAgreementData.js'), + SseConnectData: () => import('./SseConnectData.js'), + StringConfigValue: () => import('./StringConfigValue.js'), + StringWrapper: () => import('./StringWrapper.js'), + SwitchAccountTypeData: () => import('./SwitchAccountTypeData.js'), + SystemKeysReturn: () => import('./SystemKeysReturn.js'), + TakeOverDeletedAddressData: () => import('./TakeOverDeletedAddressData.js'), + TargetServer: () => import('./TargetServer.js'), + TypeInfo: () => import('./TypeInfo.js'), + U2fChallenge: () => import('./U2fChallenge.js'), + U2fKey: () => import('./U2fKey.js'), + U2fRegisteredDevice: () => import('./U2fRegisteredDevice.js'), + U2fResponseData: () => import('./U2fResponseData.js'), + UpdateAdminshipData: () => import('./UpdateAdminshipData.js'), + UpdatePermissionKeyData: () => import('./UpdatePermissionKeyData.js'), + UpgradePriceServiceData: () => import('./UpgradePriceServiceData.js'), + UpgradePriceServiceReturn: () => import('./UpgradePriceServiceReturn.js'), + UsageTestAssignment: () => import('./UsageTestAssignment.js'), + UsageTestAssignmentIn: () => import('./UsageTestAssignmentIn.js'), + UsageTestAssignmentOut: () => import('./UsageTestAssignmentOut.js'), UsageTestMetricConfig: () => import('./UsageTestMetricConfig.js'), UsageTestMetricData: () => import('./UsageTestMetricData.js'), + UsageTestParticipationIn: () => import('./UsageTestParticipationIn.js'), UsageTestStage: () => import('./UsageTestStage.js'), - UsageTestAssignmentIn: () => import('./UsageTestAssignmentIn.js'), - UsageTestAssignment: () => import('./UsageTestAssignment.js'), - UsageTestAssignmentOut: () => import('./UsageTestAssignmentOut.js'), - UsageTestParticipationIn: () => import('./UsageTestParticipationIn.js') + User: () => import('./User.js'), + UserAlarmInfo: () => import('./UserAlarmInfo.js'), + UserAlarmInfoListType: () => import('./UserAlarmInfoListType.js'), + UserAreaGroups: () => import('./UserAreaGroups.js'), + UserAuthentication: () => import('./UserAuthentication.js'), + UserData: () => import('./UserData.js'), + UserDataDelete: () => import('./UserDataDelete.js'), + UserExternalAuthInfo: () => import('./UserExternalAuthInfo.js'), + UserGroupRoot: () => import('./UserGroupRoot.js'), + UserIdData: () => import('./UserIdData.js'), + UserIdReturn: () => import('./UserIdReturn.js'), + UserReturn: () => import('./UserReturn.js'), + VariableExternalAuthInfo: () => import('./VariableExternalAuthInfo.js'), + VerifyRegistrationCodeData: () => import('./VerifyRegistrationCodeData.js'), + Version: () => import('./Version.js'), + VersionData: () => import('./VersionData.js'), + VersionInfo: () => import('./VersionInfo.js'), + VersionReturn: () => import('./VersionReturn.js'), + WebauthnResponseData: () => import('./WebauthnResponseData.js'), + WebsocketCounterData: () => import('./WebsocketCounterData.js'), + WebsocketCounterValue: () => import('./WebsocketCounterValue.js'), + WebsocketEntityData: () => import('./WebsocketEntityData.js'), + WebsocketLeaderStatus: () => import('./WebsocketLeaderStatus.js'), + WhitelabelChild: () => import('./WhitelabelChild.js'), + WhitelabelChildrenRef: () => import('./WhitelabelChildrenRef.js'), + WhitelabelConfig: () => import('./WhitelabelConfig.js'), + WhitelabelParent: () => import('./WhitelabelParent.js') } export default map \ No newline at end of file diff --git a/src/api/entities/sys/sysModelMapDebug.ts b/src/api/entities/sys/sysModelMapDebug.ts index 6d084c90d5..828987cde2 100644 --- a/src/api/entities/sys/sysModelMapDebug.ts +++ b/src/api/entities/sys/sysModelMapDebug.ts @@ -1,208 +1,208 @@ -const map = { "KeyPair": () => Promise.resolve({"_TypeModel":{"name":"KeyPair","since":1,"type":"AGGREGATED_TYPE","id":0,"rootId":"A3N5cwAA","versioned":false,"encrypted":false,"values":{"_id":{"id":1,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"pubKey":{"id":2,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"symEncPrivKey":{"id":3,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"version":{"id":4,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "Group": () => Promise.resolve({"_TypeModel":{"name":"Group","since":1,"type":"ELEMENT_TYPE","id":5,"rootId":"A3N5cwAF","versioned":false,"encrypted":false,"values":{"_format":{"id":9,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":7,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":981,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":8,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"adminGroupEncGKey":{"id":11,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"enabled":{"id":12,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"external":{"id":982,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"type":{"id":10,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"administratedGroups":{"id":1306,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"AdministratedGroupsRef","dependency":null},"archives":{"id":1881,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"ArchiveType","dependency":null},"keys":{"id":13,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"KeyPair","dependency":null},"admin":{"id":224,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group"},"customer":{"id":226,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Customer"},"groupInfo":{"id":227,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"},"invitations":{"id":228,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"SentGroupInvitation"},"members":{"id":229,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupMember"},"user":{"id":225,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"User"}},"app":"sys","version":"73"}}), - "GroupInfo": () => Promise.resolve({"_TypeModel":{"name":"GroupInfo","since":1,"type":"LIST_ELEMENT_TYPE","id":14,"rootId":"A3N5cwAO","versioned":false,"encrypted":true,"values":{"_format":{"id":18,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":16,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_listEncSessionKey":{"id":19,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"_ownerEncSessionKey":{"id":984,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":983,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":17,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"created":{"id":23,"type":"Date","cardinality":"One","final":true,"encrypted":false},"deleted":{"id":24,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"groupType":{"id":1286,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"mailAddress":{"id":22,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"name":{"id":21,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"mailAddressAliases":{"id":687,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"MailAddressAlias","dependency":null},"group":{"id":20,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"},"localAdmin":{"id":1287,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group"}},"app":"sys","version":"73"}}), - "GroupMembership": () => Promise.resolve({"_TypeModel":{"name":"GroupMembership","since":1,"type":"AGGREGATED_TYPE","id":25,"rootId":"A3N5cwAZ","versioned":false,"encrypted":false,"values":{"_id":{"id":26,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"admin":{"id":28,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"capability":{"id":1626,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"groupType":{"id":1030,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"symEncGKey":{"id":27,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"group":{"id":29,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"},"groupInfo":{"id":30,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"},"groupMember":{"id":230,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupMember"}},"app":"sys","version":"73"}}), - "Customer": () => Promise.resolve({"_TypeModel":{"name":"Customer","since":1,"type":"ELEMENT_TYPE","id":31,"rootId":"A3N5cwAf","versioned":false,"encrypted":false,"values":{"_format":{"id":35,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":33,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":991,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":34,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"approvalStatus":{"id":926,"type":"Number","cardinality":"One","final":false,"encrypted":false},"businessUse":{"id":1754,"type":"Boolean","cardinality":"ZeroOrOne","final":false,"encrypted":false},"canceledPremiumAccount":{"id":902,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"orderProcessingAgreementNeeded":{"id":1347,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"type":{"id":36,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"auditLog":{"id":1161,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"AuditLogRef","dependency":null},"contactFormUserAreaGroups":{"id":1160,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAreaGroups","dependency":null},"contactFormUserGroups":{"id":1159,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAreaGroups","dependency":null},"customizations":{"id":1256,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"Feature","dependency":null},"rejectedSenders":{"id":1750,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"RejectedSendersRef","dependency":null},"userAreaGroups":{"id":992,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAreaGroups","dependency":null},"whitelabelChildren":{"id":1277,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"WhitelabelChildrenRef","dependency":null},"whitelabelParent":{"id":1276,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"WhitelabelParent","dependency":null},"adminGroup":{"id":37,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"},"adminGroups":{"id":39,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"},"customerGroup":{"id":38,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"},"customerGroups":{"id":40,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"},"customerInfo":{"id":160,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"CustomerInfo"},"orderProcessingAgreement":{"id":1348,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"OrderProcessingAgreement"},"properties":{"id":662,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"CustomerProperties"},"serverProperties":{"id":960,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"CustomerServerProperties"},"teamGroups":{"id":42,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"},"userGroups":{"id":41,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"}},"app":"sys","version":"73"}}), - "AuthenticatedDevice": () => Promise.resolve({"_TypeModel":{"name":"AuthenticatedDevice","since":1,"type":"AGGREGATED_TYPE","id":43,"rootId":"A3N5cwAr","versioned":false,"encrypted":false,"values":{"_id":{"id":44,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"authType":{"id":45,"type":"Number","cardinality":"One","final":true,"encrypted":false},"deviceKey":{"id":47,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"deviceToken":{"id":46,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "Login": () => Promise.resolve({"_TypeModel":{"name":"Login","since":1,"type":"LIST_ELEMENT_TYPE","id":48,"rootId":"A3N5cwAw","versioned":false,"encrypted":false,"values":{"_format":{"id":52,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":50,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":993,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":51,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"time":{"id":53,"type":"Date","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SecondFactorAuthentication": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthentication","since":1,"type":"LIST_ELEMENT_TYPE","id":54,"rootId":"A3N5cwA2","versioned":false,"encrypted":false,"values":{"_format":{"id":58,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":56,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":994,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":57,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"code":{"id":59,"type":"String","cardinality":"One","final":false,"encrypted":false},"finished":{"id":61,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"service":{"id":62,"type":"String","cardinality":"One","final":false,"encrypted":false},"verifyCount":{"id":60,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PhoneNumber": () => Promise.resolve({"_TypeModel":{"name":"PhoneNumber","since":1,"type":"AGGREGATED_TYPE","id":63,"rootId":"A3N5cwA_","versioned":false,"encrypted":false,"values":{"_id":{"id":64,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"number":{"id":65,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "VariableExternalAuthInfo": () => Promise.resolve({"_TypeModel":{"name":"VariableExternalAuthInfo","since":1,"type":"ELEMENT_TYPE","id":66,"rootId":"A3N5cwBC","versioned":false,"encrypted":false,"values":{"_format":{"id":70,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":68,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":995,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":69,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"authUpdateCounter":{"id":76,"type":"Number","cardinality":"One","final":false,"encrypted":false},"lastSentTimestamp":{"id":75,"type":"Date","cardinality":"One","final":false,"encrypted":false},"loggedInIpAddressHash":{"id":73,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"loggedInTimestamp":{"id":72,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"loggedInVerifier":{"id":71,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"sentCount":{"id":74,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "UserExternalAuthInfo": () => Promise.resolve({"_TypeModel":{"name":"UserExternalAuthInfo","since":1,"type":"AGGREGATED_TYPE","id":77,"rootId":"A3N5cwBN","versioned":false,"encrypted":false,"values":{"_id":{"id":78,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"authUpdateCounter":{"id":82,"type":"Number","cardinality":"One","final":false,"encrypted":false},"autoAuthenticationId":{"id":79,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"autoTransmitPassword":{"id":81,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"latestSaltHash":{"id":80,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"variableAuthInfo":{"id":83,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"VariableExternalAuthInfo"}},"app":"sys","version":"73"}}), - "User": () => Promise.resolve({"_TypeModel":{"name":"User","since":1,"type":"ELEMENT_TYPE","id":84,"rootId":"A3N5cwBU","versioned":false,"encrypted":false,"values":{"_format":{"id":88,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":86,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":996,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":87,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"accountType":{"id":92,"type":"Number","cardinality":"One","final":true,"encrypted":false},"enabled":{"id":93,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"requirePasswordUpdate":{"id":1117,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"salt":{"id":90,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"userEncClientKey":{"id":89,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"verifier":{"id":91,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"alarmInfoList":{"id":1552,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"UserAlarmInfoListType","dependency":null},"auth":{"id":1210,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAuthentication","dependency":null},"authenticatedDevices":{"id":97,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"AuthenticatedDevice","dependency":null},"externalAuthInfo":{"id":98,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserExternalAuthInfo","dependency":null},"memberships":{"id":96,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"GroupMembership","dependency":null},"phoneNumbers":{"id":94,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"PhoneNumber","dependency":null},"pushIdentifierList":{"id":638,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PushIdentifierList","dependency":null},"userGroup":{"id":95,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"GroupMembership","dependency":null},"customer":{"id":99,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Customer"},"failedLogins":{"id":101,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Login"},"secondFactorAuthentications":{"id":102,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"SecondFactorAuthentication"},"successfulLogins":{"id":100,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Login"}},"app":"sys","version":"73"}}), - "ExternalUserReference": () => Promise.resolve({"_TypeModel":{"name":"ExternalUserReference","since":1,"type":"LIST_ELEMENT_TYPE","id":103,"rootId":"A3N5cwBn","versioned":false,"encrypted":false,"values":{"_format":{"id":107,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":105,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":997,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":106,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"user":{"id":108,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User"},"userGroup":{"id":109,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"}},"app":"sys","version":"73"}}), - "GroupRoot": () => Promise.resolve({"_TypeModel":{"name":"GroupRoot","since":1,"type":"ELEMENT_TYPE","id":110,"rootId":"A3N5cwBu","versioned":false,"encrypted":false,"values":{"_format":{"id":114,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":112,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":998,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":113,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"externalUserAreaGroupInfos":{"id":999,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAreaGroups","dependency":null},"externalGroupInfos":{"id":116,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"},"externalUserReferences":{"id":117,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"ExternalUserReference"}},"app":"sys","version":"73"}}), - "BucketPermission": () => Promise.resolve({"_TypeModel":{"name":"BucketPermission","since":1,"type":"LIST_ELEMENT_TYPE","id":118,"rootId":"A3N5cwB2","versioned":false,"encrypted":false,"values":{"_format":{"id":122,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":120,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1000,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":121,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"ownerEncBucketKey":{"id":1001,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"pubEncBucketKey":{"id":125,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"pubKeyVersion":{"id":126,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"symEncBucketKey":{"id":124,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"type":{"id":123,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":128,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "Bucket": () => Promise.resolve({"_TypeModel":{"name":"Bucket","since":1,"type":"AGGREGATED_TYPE","id":129,"rootId":"A3N5cwAAgQ","versioned":false,"encrypted":false,"values":{"_id":{"id":130,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"bucketPermissions":{"id":131,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"BucketPermission"}},"app":"sys","version":"73"}}), - "Permission": () => Promise.resolve({"_TypeModel":{"name":"Permission","since":1,"type":"LIST_ELEMENT_TYPE","id":132,"rootId":"A3N5cwAAhA","versioned":false,"encrypted":false,"values":{"_format":{"id":136,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":134,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1003,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1002,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":135,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"bucketEncSessionKey":{"id":139,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"listElementApplication":{"id":1524,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"listElementTypeId":{"id":1523,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"ops":{"id":140,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"symEncSessionKey":{"id":138,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"type":{"id":137,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"bucket":{"id":142,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"Bucket","dependency":null},"group":{"id":141,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "AccountingInfo": () => Promise.resolve({"_TypeModel":{"name":"AccountingInfo","since":1,"type":"ELEMENT_TYPE","id":143,"rootId":"A3N5cwAAjw","versioned":false,"encrypted":true,"values":{"_format":{"id":147,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":145,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_modified":{"id":1499,"type":"Date","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1010,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1009,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":146,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"business":{"id":761,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"invoiceAddress":{"id":763,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceCountry":{"id":764,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"invoiceName":{"id":762,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceVatIdNo":{"id":766,"type":"String","cardinality":"One","final":false,"encrypted":true},"lastInvoiceNbrOfSentSms":{"id":593,"type":"Number","cardinality":"One","final":true,"encrypted":false},"lastInvoiceTimestamp":{"id":592,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"paymentAccountIdentifier":{"id":1060,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paymentInterval":{"id":769,"type":"Number","cardinality":"One","final":false,"encrypted":false},"paymentMethod":{"id":767,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paymentMethodInfo":{"id":768,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paymentProviderCustomerId":{"id":770,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paypalBillingAgreement":{"id":1312,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"secondCountryInfo":{"id":765,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{"invoiceInfo":{"id":771,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"InvoiceInfo"}},"app":"sys","version":"73"}}), - "CustomerInfo": () => Promise.resolve({"_TypeModel":{"name":"CustomerInfo","since":1,"type":"LIST_ELEMENT_TYPE","id":148,"rootId":"A3N5cwAAlA","versioned":false,"encrypted":false,"values":{"_format":{"id":152,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":150,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1011,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":151,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"activationTime":{"id":157,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"company":{"id":153,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"creationTime":{"id":155,"type":"Date","cardinality":"One","final":true,"encrypted":false},"deletionReason":{"id":640,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"deletionTime":{"id":639,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"domain":{"id":154,"type":"String","cardinality":"One","final":true,"encrypted":false},"erased":{"id":1381,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"includedEmailAliases":{"id":1067,"type":"Number","cardinality":"One","final":false,"encrypted":false},"includedStorageCapacity":{"id":1068,"type":"Number","cardinality":"One","final":false,"encrypted":false},"promotionEmailAliases":{"id":976,"type":"Number","cardinality":"One","final":false,"encrypted":false},"promotionStorageCapacity":{"id":650,"type":"Number","cardinality":"One","final":false,"encrypted":false},"registrationMailAddress":{"id":597,"type":"String","cardinality":"One","final":true,"encrypted":false},"source":{"id":725,"type":"String","cardinality":"One","final":false,"encrypted":false},"testEndTime":{"id":156,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"usedSharedEmailAliases":{"id":977,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"bookings":{"id":727,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"BookingsRef","dependency":null},"domainInfos":{"id":726,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DomainInfo","dependency":null},"giftCards":{"id":1794,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"GiftCardsRef","dependency":null},"accountingInfo":{"id":159,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"AccountingInfo"},"customer":{"id":158,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer"},"takeoverCustomer":{"id":1076,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Customer"}},"app":"sys","version":"73"}}), - "SentGroupInvitation": () => Promise.resolve({"_TypeModel":{"name":"SentGroupInvitation","since":1,"type":"LIST_ELEMENT_TYPE","id":195,"rootId":"A3N5cwAAww","versioned":false,"encrypted":false,"values":{"_format":{"id":199,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":197,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1018,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":198,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"capability":{"id":1601,"type":"Number","cardinality":"One","final":false,"encrypted":false},"inviteeMailAddress":{"id":1600,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"receivedInvitation":{"id":1617,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"ReceivedGroupInvitation"},"sharedGroup":{"id":203,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "MailAddressToGroup": () => Promise.resolve({"_TypeModel":{"name":"MailAddressToGroup","since":1,"type":"ELEMENT_TYPE","id":204,"rootId":"A3N5cwAAzA","versioned":false,"encrypted":false,"values":{"_format":{"id":208,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":206,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1019,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":207,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"internalGroup":{"id":209,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "GroupMember": () => Promise.resolve({"_TypeModel":{"name":"GroupMember","since":1,"type":"LIST_ELEMENT_TYPE","id":216,"rootId":"A3N5cwAA2A","versioned":false,"encrypted":false,"values":{"_format":{"id":220,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":218,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1021,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":219,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"capability":{"id":1625,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"group":{"id":222,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"},"user":{"id":223,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User"},"userGroupInfo":{"id":221,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"}},"app":"sys","version":"73"}}), - "RootInstance": () => Promise.resolve({"_TypeModel":{"name":"RootInstance","since":1,"type":"LIST_ELEMENT_TYPE","id":231,"rootId":"A3N5cwAA5w","versioned":false,"encrypted":false,"values":{"_format":{"id":235,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":233,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1022,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":234,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"reference":{"id":236,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "VersionInfo": () => Promise.resolve({"_TypeModel":{"name":"VersionInfo","since":1,"type":"LIST_ELEMENT_TYPE","id":237,"rootId":"A3N5cwAA7Q","versioned":false,"encrypted":false,"values":{"_format":{"id":241,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":239,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1023,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":240,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"app":{"id":242,"type":"String","cardinality":"One","final":false,"encrypted":false},"operation":{"id":246,"type":"String","cardinality":"One","final":false,"encrypted":false},"referenceList":{"id":244,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false},"timestamp":{"id":245,"type":"Date","cardinality":"One","final":false,"encrypted":false},"type":{"id":243,"type":"Number","cardinality":"One","final":false,"encrypted":false},"versionData":{"id":247,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"author":{"id":248,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"},"authorGroupInfo":{"id":249,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"}},"app":"sys","version":"73"}}), - "SystemKeysReturn": () => Promise.resolve({"_TypeModel":{"name":"SystemKeysReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":301,"rootId":"A3N5cwABLQ","versioned":false,"encrypted":false,"values":{"_format":{"id":302,"type":"Number","cardinality":"One","final":false,"encrypted":false},"freeGroupKey":{"id":305,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"premiumGroupKey":{"id":306,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"starterGroupKey":{"id":307,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"systemAdminPubKey":{"id":303,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"systemAdminPubKeyVersion":{"id":304,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"freeGroup":{"id":880,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group"},"premiumGroup":{"id":881,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "MailAddressAvailabilityData": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAvailabilityData","since":1,"type":"DATA_TRANSFER_TYPE","id":309,"rootId":"A3N5cwABNQ","versioned":false,"encrypted":false,"values":{"_format":{"id":310,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":311,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "MailAddressAvailabilityReturn": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAvailabilityReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":312,"rootId":"A3N5cwABOA","versioned":false,"encrypted":false,"values":{"_format":{"id":313,"type":"Number","cardinality":"One","final":false,"encrypted":false},"available":{"id":314,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "RegistrationServiceData": () => Promise.resolve({"_TypeModel":{"name":"RegistrationServiceData","since":1,"type":"DATA_TRANSFER_TYPE","id":316,"rootId":"A3N5cwABPA","versioned":false,"encrypted":false,"values":{"_format":{"id":317,"type":"Number","cardinality":"One","final":false,"encrypted":false},"starterDomain":{"id":322,"type":"String","cardinality":"One","final":false,"encrypted":false},"source":{"id":874,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"state":{"id":325,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "RegistrationReturn": () => Promise.resolve({"_TypeModel":{"name":"RegistrationReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":326,"rootId":"A3N5cwABRg","versioned":false,"encrypted":false,"values":{"_format":{"id":327,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":328,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SendRegistrationCodeData": () => Promise.resolve({"_TypeModel":{"name":"SendRegistrationCodeData","since":1,"type":"DATA_TRANSFER_TYPE","id":341,"rootId":"A3N5cwABVQ","versioned":false,"encrypted":false,"values":{"_format":{"id":342,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accountType":{"id":345,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":343,"type":"String","cardinality":"One","final":false,"encrypted":false},"language":{"id":344,"type":"String","cardinality":"One","final":false,"encrypted":false},"mobilePhoneNumber":{"id":346,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SendRegistrationCodeReturn": () => Promise.resolve({"_TypeModel":{"name":"SendRegistrationCodeReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":347,"rootId":"A3N5cwABWw","versioned":false,"encrypted":false,"values":{"_format":{"id":348,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":349,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "VerifyRegistrationCodeData": () => Promise.resolve({"_TypeModel":{"name":"VerifyRegistrationCodeData","since":1,"type":"DATA_TRANSFER_TYPE","id":351,"rootId":"A3N5cwABXw","versioned":false,"encrypted":false,"values":{"_format":{"id":352,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":353,"type":"String","cardinality":"One","final":false,"encrypted":false},"code":{"id":354,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "CreateGroupData": () => Promise.resolve({"_TypeModel":{"name":"CreateGroupData","since":1,"type":"AGGREGATED_TYPE","id":356,"rootId":"A3N5cwABZA","versioned":false,"encrypted":false,"values":{"_id":{"id":357,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"adminEncGKey":{"id":363,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncUserGroupInfoSessionKey":{"id":1040,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"encryptedName":{"id":358,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"listEncSessionKey":{"id":364,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":359,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"pubKey":{"id":360,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"symEncGKey":{"id":362,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"symEncPrivKey":{"id":361,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "CreateGroupListData": () => Promise.resolve({"_TypeModel":{"name":"CreateGroupListData","since":1,"type":"AGGREGATED_TYPE","id":365,"rootId":"A3N5cwABbQ","versioned":false,"encrypted":false,"values":{"_id":{"id":366,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"adminEncGroupInfoListKey":{"id":368,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncGroupInfoListKey":{"id":367,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"createGroupData":{"id":369,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CreateGroupData","dependency":null}},"app":"sys","version":"73"}}), - "CustomerReturn": () => Promise.resolve({"_TypeModel":{"name":"CustomerReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":370,"rootId":"A3N5cwABcg","versioned":false,"encrypted":false,"values":{"_format":{"id":371,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminUser":{"id":372,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User"},"adminUserGroup":{"id":373,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "CustomerData": () => Promise.resolve({"_TypeModel":{"name":"CustomerData","since":1,"type":"DATA_TRANSFER_TYPE","id":374,"rootId":"A3N5cwABdg","versioned":false,"encrypted":false,"values":{"_format":{"id":375,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accountingInfoBucketEncAccountingInfoSessionKey":{"id":385,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"adminEncAccountingInfoSessionKey":{"id":383,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":376,"type":"String","cardinality":"One","final":false,"encrypted":false},"company":{"id":377,"type":"String","cardinality":"One","final":false,"encrypted":false},"date":{"id":877,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"domain":{"id":378,"type":"String","cardinality":"One","final":false,"encrypted":false},"salt":{"id":388,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"symEncAccountGroupKey":{"id":390,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"systemCustomerPubEncAccountingInfoBucketKey":{"id":386,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"systemCustomerPubKeyVersion":{"id":387,"type":"Number","cardinality":"One","final":false,"encrypted":false},"userEncClientKey":{"id":384,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":389,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminGroupList":{"id":379,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CreateGroupListData","dependency":null},"customerGroupList":{"id":381,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CreateGroupListData","dependency":null},"teamGroupList":{"id":382,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CreateGroupListData","dependency":null},"userGroupList":{"id":380,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CreateGroupListData","dependency":null}},"app":"sys","version":"73"}}), - "UserReturn": () => Promise.resolve({"_TypeModel":{"name":"UserReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":392,"rootId":"A3N5cwABiA","versioned":false,"encrypted":false,"values":{"_format":{"id":393,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"user":{"id":394,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User"},"userGroup":{"id":395,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "UserData": () => Promise.resolve({"_TypeModel":{"name":"UserData","since":1,"type":"DATA_TRANSFER_TYPE","id":396,"rootId":"A3N5cwABjA","versioned":false,"encrypted":false,"values":{"_format":{"id":397,"type":"Number","cardinality":"One","final":false,"encrypted":false},"date":{"id":878,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"mobilePhoneNumber":{"id":403,"type":"String","cardinality":"One","final":false,"encrypted":false},"salt":{"id":401,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncClientKey":{"id":398,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncCustomerGroupKey":{"id":399,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":402,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"userGroupData":{"id":400,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CreateGroupData","dependency":null}},"app":"sys","version":"73"}}), - "UserDataDelete": () => Promise.resolve({"_TypeModel":{"name":"UserDataDelete","since":1,"type":"DATA_TRANSFER_TYPE","id":404,"rootId":"A3N5cwABlA","versioned":false,"encrypted":false,"values":{"_format":{"id":405,"type":"Number","cardinality":"One","final":false,"encrypted":false},"date":{"id":879,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"restore":{"id":406,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"user":{"id":407,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User"}},"app":"sys","version":"73"}}), - "PublicKeyData": () => Promise.resolve({"_TypeModel":{"name":"PublicKeyData","since":1,"type":"DATA_TRANSFER_TYPE","id":409,"rootId":"A3N5cwABmQ","versioned":false,"encrypted":false,"values":{"_format":{"id":410,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":411,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PublicKeyReturn": () => Promise.resolve({"_TypeModel":{"name":"PublicKeyReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":412,"rootId":"A3N5cwABnA","versioned":false,"encrypted":false,"values":{"_format":{"id":413,"type":"Number","cardinality":"One","final":false,"encrypted":false},"pubKey":{"id":414,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"pubKeyVersion":{"id":415,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SaltData": () => Promise.resolve({"_TypeModel":{"name":"SaltData","since":1,"type":"DATA_TRANSFER_TYPE","id":417,"rootId":"A3N5cwABoQ","versioned":false,"encrypted":false,"values":{"_format":{"id":418,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":419,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SaltReturn": () => Promise.resolve({"_TypeModel":{"name":"SaltReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":420,"rootId":"A3N5cwABpA","versioned":false,"encrypted":false,"values":{"_format":{"id":421,"type":"Number","cardinality":"One","final":false,"encrypted":false},"salt":{"id":422,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "UserIdData": () => Promise.resolve({"_TypeModel":{"name":"UserIdData","since":1,"type":"DATA_TRANSFER_TYPE","id":424,"rootId":"A3N5cwABqA","versioned":false,"encrypted":false,"values":{"_format":{"id":425,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":426,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "UserIdReturn": () => Promise.resolve({"_TypeModel":{"name":"UserIdReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":427,"rootId":"A3N5cwABqw","versioned":false,"encrypted":false,"values":{"_format":{"id":428,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"userId":{"id":429,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User"}},"app":"sys","version":"73"}}), - "AutoLoginDataGet": () => Promise.resolve({"_TypeModel":{"name":"AutoLoginDataGet","since":1,"type":"DATA_TRANSFER_TYPE","id":431,"rootId":"A3N5cwABrw","versioned":false,"encrypted":false,"values":{"_format":{"id":432,"type":"Number","cardinality":"One","final":false,"encrypted":false},"deviceToken":{"id":434,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"userId":{"id":433,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User"}},"app":"sys","version":"73"}}), - "AutoLoginDataDelete": () => Promise.resolve({"_TypeModel":{"name":"AutoLoginDataDelete","since":1,"type":"DATA_TRANSFER_TYPE","id":435,"rootId":"A3N5cwABsw","versioned":false,"encrypted":false,"values":{"_format":{"id":436,"type":"Number","cardinality":"One","final":false,"encrypted":false},"deviceToken":{"id":437,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "AutoLoginDataReturn": () => Promise.resolve({"_TypeModel":{"name":"AutoLoginDataReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":438,"rootId":"A3N5cwABtg","versioned":false,"encrypted":false,"values":{"_format":{"id":439,"type":"Number","cardinality":"One","final":false,"encrypted":false},"deviceKey":{"id":440,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "AutoLoginPostReturn": () => Promise.resolve({"_TypeModel":{"name":"AutoLoginPostReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":441,"rootId":"A3N5cwABuQ","versioned":false,"encrypted":false,"values":{"_format":{"id":442,"type":"Number","cardinality":"One","final":false,"encrypted":false},"deviceToken":{"id":443,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "UpdatePermissionKeyData": () => Promise.resolve({"_TypeModel":{"name":"UpdatePermissionKeyData","since":1,"type":"DATA_TRANSFER_TYPE","id":445,"rootId":"A3N5cwABvQ","versioned":false,"encrypted":false,"values":{"_format":{"id":446,"type":"Number","cardinality":"One","final":false,"encrypted":false},"ownerEncSessionKey":{"id":1031,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"symEncSessionKey":{"id":447,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"bucketPermission":{"id":451,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"BucketPermission"},"permission":{"id":450,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Permission"}},"app":"sys","version":"73"}}), - "Authentication": () => Promise.resolve({"_TypeModel":{"name":"Authentication","since":1,"type":"AGGREGATED_TYPE","id":453,"rootId":"A3N5cwABxQ","versioned":false,"encrypted":false,"values":{"_id":{"id":454,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"accessToken":{"id":1239,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"authVerifier":{"id":456,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"externalAuthToken":{"id":968,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"userId":{"id":455,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User"}},"app":"sys","version":"73"}}), - "Chat": () => Promise.resolve({"_TypeModel":{"name":"Chat","since":1,"type":"AGGREGATED_TYPE","id":457,"rootId":"A3N5cwAByQ","versioned":false,"encrypted":false,"values":{"_id":{"id":458,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"recipient":{"id":460,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"sender":{"id":459,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"text":{"id":461,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "EntityUpdate": () => Promise.resolve({"_TypeModel":{"name":"EntityUpdate","since":1,"type":"AGGREGATED_TYPE","id":462,"rootId":"A3N5cwABzg","versioned":false,"encrypted":false,"values":{"_id":{"id":463,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"application":{"id":464,"type":"String","cardinality":"One","final":false,"encrypted":false},"instanceId":{"id":467,"type":"String","cardinality":"One","final":false,"encrypted":false},"instanceListId":{"id":466,"type":"String","cardinality":"One","final":false,"encrypted":false},"operation":{"id":624,"type":"Number","cardinality":"One","final":false,"encrypted":false},"type":{"id":465,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "Exception": () => Promise.resolve({"_TypeModel":{"name":"Exception","since":1,"type":"AGGREGATED_TYPE","id":468,"rootId":"A3N5cwAB1A","versioned":false,"encrypted":false,"values":{"_id":{"id":469,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"msg":{"id":471,"type":"String","cardinality":"One","final":false,"encrypted":false},"type":{"id":470,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "Version": () => Promise.resolve({"_TypeModel":{"name":"Version","since":1,"type":"AGGREGATED_TYPE","id":480,"rootId":"A3N5cwAB4A","versioned":false,"encrypted":false,"values":{"_id":{"id":481,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"operation":{"id":484,"type":"String","cardinality":"One","final":false,"encrypted":false},"timestamp":{"id":483,"type":"Date","cardinality":"One","final":false,"encrypted":false},"version":{"id":482,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"author":{"id":485,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"},"authorGroupInfo":{"id":486,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"GroupInfo"}},"app":"sys","version":"73"}}), - "VersionData": () => Promise.resolve({"_TypeModel":{"name":"VersionData","since":1,"type":"DATA_TRANSFER_TYPE","id":487,"rootId":"A3N5cwAB5w","versioned":false,"encrypted":false,"values":{"_format":{"id":488,"type":"Number","cardinality":"One","final":false,"encrypted":false},"application":{"id":489,"type":"String","cardinality":"One","final":false,"encrypted":false},"id":{"id":491,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"listId":{"id":492,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false},"typeId":{"id":490,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "VersionReturn": () => Promise.resolve({"_TypeModel":{"name":"VersionReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":493,"rootId":"A3N5cwAB7Q","versioned":false,"encrypted":false,"values":{"_format":{"id":494,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"versions":{"id":495,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"Version","dependency":null}},"app":"sys","version":"73"}}), - "MembershipAddData": () => Promise.resolve({"_TypeModel":{"name":"MembershipAddData","since":1,"type":"DATA_TRANSFER_TYPE","id":505,"rootId":"A3N5cwAB-Q","versioned":false,"encrypted":false,"values":{"_format":{"id":506,"type":"Number","cardinality":"One","final":false,"encrypted":false},"symEncGKey":{"id":507,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":509,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"},"user":{"id":508,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User"}},"app":"sys","version":"73"}}), - "StringConfigValue": () => Promise.resolve({"_TypeModel":{"name":"StringConfigValue","since":1,"type":"AGGREGATED_TYPE","id":515,"rootId":"A3N5cwACAw","versioned":false,"encrypted":false,"values":{"_id":{"id":516,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"name":{"id":517,"type":"String","cardinality":"One","final":false,"encrypted":false},"value":{"id":518,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "ChangePasswordData": () => Promise.resolve({"_TypeModel":{"name":"ChangePasswordData","since":1,"type":"DATA_TRANSFER_TYPE","id":534,"rootId":"A3N5cwACFg","versioned":false,"encrypted":false,"values":{"_format":{"id":535,"type":"Number","cardinality":"One","final":false,"encrypted":false},"code":{"id":539,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"oldVerifier":{"id":1240,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"pwEncUserGroupKey":{"id":538,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"recoverCodeVerifier":{"id":1418,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"salt":{"id":537,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":536,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SecondFactorAuthData": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthData","since":1,"type":"DATA_TRANSFER_TYPE","id":541,"rootId":"A3N5cwACHQ","versioned":false,"encrypted":false,"values":{"_format":{"id":542,"type":"Number","cardinality":"One","final":false,"encrypted":false},"otpCode":{"id":1243,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"type":{"id":1230,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"u2f":{"id":1231,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"U2fResponseData","dependency":null},"webauthn":{"id":1905,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"WebauthnResponseData","dependency":null},"session":{"id":1232,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Session"}},"app":"sys","version":"73"}}), - "SecondFactorAuthAllowedReturn": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthAllowedReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":546,"rootId":"A3N5cwACIg","versioned":false,"encrypted":false,"values":{"_format":{"id":547,"type":"Number","cardinality":"One","final":false,"encrypted":false},"allowed":{"id":548,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "CustomerInfoReturn": () => Promise.resolve({"_TypeModel":{"name":"CustomerInfoReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":550,"rootId":"A3N5cwACJg","versioned":false,"encrypted":false,"values":{"_format":{"id":551,"type":"Number","cardinality":"One","final":false,"encrypted":false},"sendMailDisabled":{"id":552,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "ResetPasswordData": () => Promise.resolve({"_TypeModel":{"name":"ResetPasswordData","since":1,"type":"DATA_TRANSFER_TYPE","id":584,"rootId":"A3N5cwACSA","versioned":false,"encrypted":false,"values":{"_format":{"id":585,"type":"Number","cardinality":"One","final":false,"encrypted":false},"pwEncUserGroupKey":{"id":588,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"salt":{"id":587,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":586,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"user":{"id":589,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User"}},"app":"sys","version":"73"}}), - "DomainMailAddressAvailabilityData": () => Promise.resolve({"_TypeModel":{"name":"DomainMailAddressAvailabilityData","since":2,"type":"DATA_TRANSFER_TYPE","id":599,"rootId":"A3N5cwACVw","versioned":false,"encrypted":false,"values":{"_format":{"id":600,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":601,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "DomainMailAddressAvailabilityReturn": () => Promise.resolve({"_TypeModel":{"name":"DomainMailAddressAvailabilityReturn","since":2,"type":"DATA_TRANSFER_TYPE","id":602,"rootId":"A3N5cwACWg","versioned":false,"encrypted":false,"values":{"_format":{"id":603,"type":"Number","cardinality":"One","final":false,"encrypted":false},"available":{"id":604,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "RegistrationConfigReturn": () => Promise.resolve({"_TypeModel":{"name":"RegistrationConfigReturn","since":2,"type":"DATA_TRANSFER_TYPE","id":606,"rootId":"A3N5cwACXg","versioned":false,"encrypted":false,"values":{"_format":{"id":607,"type":"Number","cardinality":"One","final":false,"encrypted":false},"freeEnabled":{"id":609,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"starterEnabled":{"id":608,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PushIdentifier": () => Promise.resolve({"_TypeModel":{"name":"PushIdentifier","since":5,"type":"LIST_ELEMENT_TYPE","id":625,"rootId":"A3N5cwACcQ","versioned":false,"encrypted":true,"values":{"_area":{"id":631,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":629,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":627,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":630,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1497,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1029,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":628,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"disabled":{"id":1476,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"displayName":{"id":1498,"type":"String","cardinality":"One","final":false,"encrypted":true},"identifier":{"id":633,"type":"String","cardinality":"One","final":false,"encrypted":false},"language":{"id":634,"type":"String","cardinality":"One","final":false,"encrypted":false},"lastNotificationDate":{"id":1248,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"lastUsageTime":{"id":1704,"type":"Date","cardinality":"One","final":false,"encrypted":false},"pushServiceType":{"id":632,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PushIdentifierList": () => Promise.resolve({"_TypeModel":{"name":"PushIdentifierList","since":5,"type":"AGGREGATED_TYPE","id":635,"rootId":"A3N5cwACew","versioned":false,"encrypted":false,"values":{"_id":{"id":636,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":637,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"PushIdentifier"}},"app":"sys","version":"73"}}), - "DeleteCustomerData": () => Promise.resolve({"_TypeModel":{"name":"DeleteCustomerData","since":5,"type":"DATA_TRANSFER_TYPE","id":641,"rootId":"A3N5cwACgQ","versioned":false,"encrypted":false,"values":{"_format":{"id":642,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authVerifier":{"id":1325,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"reason":{"id":644,"type":"String","cardinality":"One","final":false,"encrypted":false},"takeoverMailAddress":{"id":1077,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"undelete":{"id":643,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"customer":{"id":645,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Customer"}},"app":"sys","version":"73"}}), - "PremiumFeatureData": () => Promise.resolve({"_TypeModel":{"name":"PremiumFeatureData","since":6,"type":"DATA_TRANSFER_TYPE","id":651,"rootId":"A3N5cwACiw","versioned":false,"encrypted":false,"values":{"_format":{"id":652,"type":"Number","cardinality":"One","final":false,"encrypted":false},"activationCode":{"id":654,"type":"String","cardinality":"One","final":false,"encrypted":false},"featureName":{"id":653,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "CustomerProperties": () => Promise.resolve({"_TypeModel":{"name":"CustomerProperties","since":6,"type":"ELEMENT_TYPE","id":656,"rootId":"A3N5cwACkA","versioned":false,"encrypted":false,"values":{"_format":{"id":660,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":658,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":985,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":659,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"externalUserWelcomeMessage":{"id":661,"type":"String","cardinality":"One","final":false,"encrypted":false},"lastUpgradeReminder":{"id":975,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"bigLogo":{"id":923,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"File","dependency":null},"notificationMailTemplates":{"id":1522,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"NotificationMailTemplate","dependency":null},"smallLogo":{"id":922,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"File","dependency":null}},"app":"sys","version":"73"}}), - "ExternalPropertiesReturn": () => Promise.resolve({"_TypeModel":{"name":"ExternalPropertiesReturn","since":6,"type":"DATA_TRANSFER_TYPE","id":663,"rootId":"A3N5cwAClw","versioned":false,"encrypted":false,"values":{"_format":{"id":664,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accountType":{"id":666,"type":"Number","cardinality":"One","final":false,"encrypted":false},"message":{"id":665,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"bigLogo":{"id":925,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"File","dependency":null},"smallLogo":{"id":924,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"File","dependency":null}},"app":"sys","version":"73"}}), - "RegistrationCaptchaServiceData": () => Promise.resolve({"_TypeModel":{"name":"RegistrationCaptchaServiceData","since":7,"type":"DATA_TRANSFER_TYPE","id":674,"rootId":"A3N5cwACog","versioned":false,"encrypted":false,"values":{"_format":{"id":675,"type":"Number","cardinality":"One","final":false,"encrypted":false},"response":{"id":677,"type":"String","cardinality":"One","final":false,"encrypted":false},"token":{"id":676,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "RegistrationCaptchaServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"RegistrationCaptchaServiceReturn","since":7,"type":"DATA_TRANSFER_TYPE","id":678,"rootId":"A3N5cwACpg","versioned":false,"encrypted":false,"values":{"_format":{"id":679,"type":"Number","cardinality":"One","final":false,"encrypted":false},"challenge":{"id":681,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"token":{"id":680,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "MailAddressAlias": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAlias","since":8,"type":"AGGREGATED_TYPE","id":684,"rootId":"A3N5cwACrA","versioned":false,"encrypted":false,"values":{"_id":{"id":685,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"enabled":{"id":784,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":686,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "MailAddressAliasServiceData": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAliasServiceData","since":8,"type":"DATA_TRANSFER_TYPE","id":688,"rootId":"A3N5cwACsA","versioned":false,"encrypted":false,"values":{"_format":{"id":689,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":690,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":691,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "MailAddressAliasServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAliasServiceReturn","since":8,"type":"DATA_TRANSFER_TYPE","id":692,"rootId":"A3N5cwACtA","versioned":false,"encrypted":false,"values":{"_format":{"id":693,"type":"Number","cardinality":"One","final":false,"encrypted":false},"enabledAliases":{"id":1071,"type":"Number","cardinality":"One","final":false,"encrypted":false},"nbrOfFreeAliases":{"id":694,"type":"Number","cardinality":"One","final":false,"encrypted":false},"totalAliases":{"id":1069,"type":"Number","cardinality":"One","final":false,"encrypted":false},"usedAliases":{"id":1070,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "DomainInfo": () => Promise.resolve({"_TypeModel":{"name":"DomainInfo","since":9,"type":"AGGREGATED_TYPE","id":696,"rootId":"A3N5cwACuA","versioned":false,"encrypted":false,"values":{"_id":{"id":697,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"domain":{"id":698,"type":"String","cardinality":"One","final":true,"encrypted":false},"validatedMxRecord":{"id":699,"type":"Boolean","cardinality":"One","final":true,"encrypted":false}},"associations":{"catchAllMailGroup":{"id":1044,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group"},"whitelabelConfig":{"id":1136,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"WhitelabelConfig"}},"app":"sys","version":"73"}}), - "BookingItem": () => Promise.resolve({"_TypeModel":{"name":"BookingItem","since":9,"type":"AGGREGATED_TYPE","id":700,"rootId":"A3N5cwACvA","versioned":false,"encrypted":false,"values":{"_id":{"id":701,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"currentCount":{"id":703,"type":"Number","cardinality":"One","final":false,"encrypted":false},"currentInvoicedCount":{"id":706,"type":"Number","cardinality":"One","final":false,"encrypted":false},"featureType":{"id":702,"type":"Number","cardinality":"One","final":false,"encrypted":false},"maxCount":{"id":704,"type":"Number","cardinality":"One","final":false,"encrypted":false},"price":{"id":707,"type":"Number","cardinality":"One","final":false,"encrypted":false},"priceType":{"id":708,"type":"Number","cardinality":"One","final":false,"encrypted":false},"totalInvoicedCount":{"id":705,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "Booking": () => Promise.resolve({"_TypeModel":{"name":"Booking","since":9,"type":"LIST_ELEMENT_TYPE","id":709,"rootId":"A3N5cwACxQ","versioned":false,"encrypted":false,"values":{"_area":{"id":715,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":713,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":711,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":714,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1004,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":712,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"business":{"id":720,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"createDate":{"id":716,"type":"Date","cardinality":"One","final":false,"encrypted":false},"endDate":{"id":718,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"paymentInterval":{"id":719,"type":"Number","cardinality":"One","final":false,"encrypted":false},"paymentMonths":{"id":717,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"items":{"id":721,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"BookingItem","dependency":null}},"app":"sys","version":"73"}}), - "BookingsRef": () => Promise.resolve({"_TypeModel":{"name":"BookingsRef","since":9,"type":"AGGREGATED_TYPE","id":722,"rootId":"A3N5cwAC0g","versioned":false,"encrypted":false,"values":{"_id":{"id":723,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":724,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Booking"}},"app":"sys","version":"73"}}), - "StringWrapper": () => Promise.resolve({"_TypeModel":{"name":"StringWrapper","since":9,"type":"AGGREGATED_TYPE","id":728,"rootId":"A3N5cwAC2A","versioned":false,"encrypted":false,"values":{"_id":{"id":729,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"value":{"id":730,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "CustomDomainReturn": () => Promise.resolve({"_TypeModel":{"name":"CustomDomainReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":731,"rootId":"A3N5cwAC2w","versioned":false,"encrypted":false,"values":{"_format":{"id":732,"type":"Number","cardinality":"One","final":false,"encrypted":false},"validationResult":{"id":733,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"invalidDnsRecords":{"id":734,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"StringWrapper","dependency":null}},"app":"sys","version":"73"}}), - "CustomDomainData": () => Promise.resolve({"_TypeModel":{"name":"CustomDomainData","since":9,"type":"DATA_TRANSFER_TYPE","id":735,"rootId":"A3N5cwAC3w","versioned":false,"encrypted":false,"values":{"_format":{"id":736,"type":"Number","cardinality":"One","final":false,"encrypted":false},"domain":{"id":737,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"catchAllMailGroup":{"id":1045,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "InvoiceInfo": () => Promise.resolve({"_TypeModel":{"name":"InvoiceInfo","since":9,"type":"ELEMENT_TYPE","id":752,"rootId":"A3N5cwAC8A","versioned":false,"encrypted":false,"values":{"_format":{"id":756,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":754,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1008,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":755,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"extendedPeriodOfPaymentDays":{"id":1638,"type":"Number","cardinality":"One","final":false,"encrypted":false},"persistentPaymentPeriodExtension":{"id":1639,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"publishInvoices":{"id":759,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"reminderState":{"id":1637,"type":"Number","cardinality":"One","final":false,"encrypted":false},"specialPriceBrandingPerUser":{"id":1282,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceBusinessPerUser":{"id":1864,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceContactFormSingle":{"id":1284,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceSharedGroupSingle":{"id":1283,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceSharingPerUser":{"id":1627,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceUserSingle":{"id":758,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceUserTotal":{"id":757,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"paymentErrorInfo":{"id":1640,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"PaymentErrorInfo","dependency":null},"invoices":{"id":760,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"LegacyInvoice"}},"app":"sys","version":"73"}}), - "SwitchAccountTypeData": () => Promise.resolve({"_TypeModel":{"name":"SwitchAccountTypeData","since":9,"type":"DATA_TRANSFER_TYPE","id":772,"rootId":"A3N5cwADBA","versioned":false,"encrypted":false,"values":{"_format":{"id":773,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accountType":{"id":774,"type":"Number","cardinality":"One","final":false,"encrypted":false},"campaign":{"id":1454,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"date":{"id":775,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"subscriptionType":{"id":1310,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PdfInvoiceServiceData": () => Promise.resolve({"_TypeModel":{"name":"PdfInvoiceServiceData","since":9,"type":"DATA_TRANSFER_TYPE","id":777,"rootId":"A3N5cwADCQ","versioned":false,"encrypted":false,"values":{"_format":{"id":778,"type":"Number","cardinality":"One","final":false,"encrypted":false},"invoiceNumber":{"id":1629,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"invoice":{"id":779,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"LegacyInvoice"}},"app":"sys","version":"73"}}), - "PdfInvoiceServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"PdfInvoiceServiceReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":780,"rootId":"A3N5cwADDA","versioned":false,"encrypted":true,"values":{"_format":{"id":781,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_ownerGroup":{"id":1630,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerPublicEncSessionKey":{"id":1631,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"data":{"id":782,"type":"Bytes","cardinality":"One","final":true,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), - "MailAddressAliasServiceDataDelete": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAliasServiceDataDelete","since":9,"type":"DATA_TRANSFER_TYPE","id":785,"rootId":"A3N5cwADEQ","versioned":false,"encrypted":false,"values":{"_format":{"id":786,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":787,"type":"String","cardinality":"One","final":false,"encrypted":false},"restore":{"id":788,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":789,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "PaymentDataServiceGetReturn": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServiceGetReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":790,"rootId":"A3N5cwADFg","versioned":false,"encrypted":false,"values":{"_format":{"id":791,"type":"Number","cardinality":"One","final":false,"encrypted":false},"loginUrl":{"id":792,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PaymentDataServicePutData": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServicePutData","since":9,"type":"DATA_TRANSFER_TYPE","id":793,"rootId":"A3N5cwADGQ","versioned":false,"encrypted":true,"values":{"_format":{"id":794,"type":"Number","cardinality":"One","final":false,"encrypted":false},"business":{"id":795,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"confirmedCountry":{"id":804,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"invoiceAddress":{"id":797,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceCountry":{"id":798,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceName":{"id":796,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceVatIdNo":{"id":799,"type":"String","cardinality":"One","final":false,"encrypted":true},"paymentInterval":{"id":802,"type":"Number","cardinality":"One","final":false,"encrypted":false},"paymentMethod":{"id":800,"type":"Number","cardinality":"One","final":false,"encrypted":true},"paymentMethodInfo":{"id":801,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paymentToken":{"id":803,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true}},"associations":{"creditCard":{"id":1320,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CreditCard","dependency":null}},"app":"sys","version":"73"}}), - "PaymentDataServicePutReturn": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServicePutReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":805,"rootId":"A3N5cwADJQ","versioned":false,"encrypted":false,"values":{"_format":{"id":806,"type":"Number","cardinality":"One","final":false,"encrypted":false},"result":{"id":807,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"braintree3dsRequest":{"id":1840,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"Braintree3ds2Request","dependency":null}},"app":"sys","version":"73"}}), - "PriceRequestData": () => Promise.resolve({"_TypeModel":{"name":"PriceRequestData","since":9,"type":"AGGREGATED_TYPE","id":836,"rootId":"A3N5cwADRA","versioned":false,"encrypted":false,"values":{"_id":{"id":837,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"accountType":{"id":842,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"business":{"id":840,"type":"Boolean","cardinality":"ZeroOrOne","final":false,"encrypted":false},"count":{"id":839,"type":"Number","cardinality":"One","final":false,"encrypted":false},"featureType":{"id":838,"type":"Number","cardinality":"One","final":false,"encrypted":false},"paymentInterval":{"id":841,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"reactivate":{"id":1285,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PriceServiceData": () => Promise.resolve({"_TypeModel":{"name":"PriceServiceData","since":9,"type":"DATA_TRANSFER_TYPE","id":843,"rootId":"A3N5cwADSw","versioned":false,"encrypted":false,"values":{"_format":{"id":844,"type":"Number","cardinality":"One","final":false,"encrypted":false},"campaign":{"id":1455,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"date":{"id":846,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"priceRequest":{"id":845,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PriceRequestData","dependency":null}},"app":"sys","version":"73"}}), - "PriceItemData": () => Promise.resolve({"_TypeModel":{"name":"PriceItemData","since":9,"type":"AGGREGATED_TYPE","id":847,"rootId":"A3N5cwADTw","versioned":false,"encrypted":false,"values":{"_id":{"id":848,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"count":{"id":850,"type":"Number","cardinality":"One","final":false,"encrypted":false},"featureType":{"id":849,"type":"Number","cardinality":"One","final":false,"encrypted":false},"price":{"id":851,"type":"Number","cardinality":"One","final":false,"encrypted":false},"singleType":{"id":852,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PriceData": () => Promise.resolve({"_TypeModel":{"name":"PriceData","since":9,"type":"AGGREGATED_TYPE","id":853,"rootId":"A3N5cwADVQ","versioned":false,"encrypted":false,"values":{"_id":{"id":854,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"paymentInterval":{"id":857,"type":"Number","cardinality":"One","final":false,"encrypted":false},"price":{"id":855,"type":"Number","cardinality":"One","final":false,"encrypted":false},"taxIncluded":{"id":856,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"items":{"id":858,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"PriceItemData","dependency":null}},"app":"sys","version":"73"}}), - "PriceServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"PriceServiceReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":859,"rootId":"A3N5cwADWw","versioned":false,"encrypted":false,"values":{"_format":{"id":860,"type":"Number","cardinality":"One","final":false,"encrypted":false},"currentPeriodAddedPrice":{"id":862,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"periodEndDate":{"id":861,"type":"Date","cardinality":"One","final":false,"encrypted":false}},"associations":{"currentPriceNextPeriod":{"id":864,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PriceData","dependency":null},"currentPriceThisPeriod":{"id":863,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PriceData","dependency":null},"futurePriceNextPeriod":{"id":865,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PriceData","dependency":null}},"app":"sys","version":"73"}}), - "MembershipRemoveData": () => Promise.resolve({"_TypeModel":{"name":"MembershipRemoveData","since":9,"type":"DATA_TRANSFER_TYPE","id":867,"rootId":"A3N5cwADYw","versioned":false,"encrypted":false,"values":{"_format":{"id":868,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":870,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"},"user":{"id":869,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User"}},"app":"sys","version":"73"}}), - "File": () => Promise.resolve({"_TypeModel":{"name":"File","since":11,"type":"AGGREGATED_TYPE","id":917,"rootId":"A3N5cwADlQ","versioned":false,"encrypted":false,"values":{"_id":{"id":918,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"data":{"id":921,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mimeType":{"id":920,"type":"String","cardinality":"One","final":false,"encrypted":false},"name":{"id":919,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "EmailSenderListElement": () => Promise.resolve({"_TypeModel":{"name":"EmailSenderListElement","since":13,"type":"AGGREGATED_TYPE","id":949,"rootId":"A3N5cwADtQ","versioned":false,"encrypted":false,"values":{"_id":{"id":950,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"field":{"id":1705,"type":"Number","cardinality":"One","final":false,"encrypted":false},"hashedValue":{"id":951,"type":"String","cardinality":"One","final":false,"encrypted":false},"type":{"id":953,"type":"Number","cardinality":"One","final":false,"encrypted":false},"value":{"id":952,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), - "CustomerServerProperties": () => Promise.resolve({"_TypeModel":{"name":"CustomerServerProperties","since":13,"type":"ELEMENT_TYPE","id":954,"rootId":"A3N5cwADug","versioned":false,"encrypted":true,"values":{"_format":{"id":958,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":956,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":987,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":986,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":957,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"requirePasswordUpdateAfterReset":{"id":1100,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"saveEncryptedIpAddressInSession":{"id":1406,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"whitelabelCode":{"id":1278,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"emailSenderList":{"id":959,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"EmailSenderListElement","dependency":null},"whitelabelRegistrationDomains":{"id":1279,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"StringWrapper","dependency":null},"whitelistedDomains":{"id":1099,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"DomainsRef","dependency":null}},"app":"sys","version":"73"}}), - "CreateCustomerServerPropertiesData": () => Promise.resolve({"_TypeModel":{"name":"CreateCustomerServerPropertiesData","since":13,"type":"DATA_TRANSFER_TYPE","id":961,"rootId":"A3N5cwADwQ","versioned":false,"encrypted":false,"values":{"_format":{"id":962,"type":"Number","cardinality":"One","final":false,"encrypted":false},"adminGroupEncSessionKey":{"id":963,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "CreateCustomerServerPropertiesReturn": () => Promise.resolve({"_TypeModel":{"name":"CreateCustomerServerPropertiesReturn","since":13,"type":"DATA_TRANSFER_TYPE","id":964,"rootId":"A3N5cwADxA","versioned":false,"encrypted":false,"values":{"_format":{"id":965,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"id":{"id":966,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"CustomerServerProperties"}},"app":"sys","version":"73"}}), - "PremiumFeatureReturn": () => Promise.resolve({"_TypeModel":{"name":"PremiumFeatureReturn","since":16,"type":"DATA_TRANSFER_TYPE","id":978,"rootId":"A3N5cwAD0g","versioned":false,"encrypted":false,"values":{"_format":{"id":979,"type":"Number","cardinality":"One","final":false,"encrypted":false},"activatedFeature":{"id":980,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "UserAreaGroups": () => Promise.resolve({"_TypeModel":{"name":"UserAreaGroups","since":17,"type":"AGGREGATED_TYPE","id":988,"rootId":"A3N5cwAD3A","versioned":false,"encrypted":false,"values":{"_id":{"id":989,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":990,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo"}},"app":"sys","version":"73"}}), - "DebitServicePutData": () => Promise.resolve({"_TypeModel":{"name":"DebitServicePutData","since":18,"type":"DATA_TRANSFER_TYPE","id":1041,"rootId":"A3N5cwAEEQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1042,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"invoice":{"id":1043,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"LegacyInvoice"}},"app":"sys","version":"73"}}), - "BookingServiceData": () => Promise.resolve({"_TypeModel":{"name":"BookingServiceData","since":18,"type":"DATA_TRANSFER_TYPE","id":1061,"rootId":"A3N5cwAEJQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1062,"type":"Number","cardinality":"One","final":false,"encrypted":false},"amount":{"id":1064,"type":"Number","cardinality":"One","final":false,"encrypted":false},"date":{"id":1065,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"featureType":{"id":1063,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "EntityEventBatch": () => Promise.resolve({"_TypeModel":{"name":"EntityEventBatch","since":20,"type":"LIST_ELEMENT_TYPE","id":1079,"rootId":"A3N5cwAENw","versioned":false,"encrypted":false,"values":{"_format":{"id":1083,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1081,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1084,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1082,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"events":{"id":1085,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"EntityUpdate","dependency":null}},"app":"sys","version":"73"}}), - "DomainsRef": () => Promise.resolve({"_TypeModel":{"name":"DomainsRef","since":21,"type":"AGGREGATED_TYPE","id":1096,"rootId":"A3N5cwAESA","versioned":false,"encrypted":false,"values":{"_id":{"id":1097,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1098,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Domain"}},"app":"sys","version":"73"}}), - "AuditLogEntry": () => Promise.resolve({"_TypeModel":{"name":"AuditLogEntry","since":22,"type":"LIST_ELEMENT_TYPE","id":1101,"rootId":"A3N5cwAETQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1105,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1103,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1107,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1106,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1104,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"action":{"id":1110,"type":"String","cardinality":"One","final":true,"encrypted":true},"actorIpAddress":{"id":1109,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"actorMailAddress":{"id":1108,"type":"String","cardinality":"One","final":true,"encrypted":true},"date":{"id":1112,"type":"Date","cardinality":"One","final":true,"encrypted":true},"modifiedEntity":{"id":1111,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"groupInfo":{"id":1113,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"GroupInfo"},"modifiedGroupInfo":{"id":1307,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"GroupInfo"}},"app":"sys","version":"73"}}), - "AuditLogRef": () => Promise.resolve({"_TypeModel":{"name":"AuditLogRef","since":22,"type":"AGGREGATED_TYPE","id":1114,"rootId":"A3N5cwAEWg","versioned":false,"encrypted":false,"values":{"_id":{"id":1115,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1116,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"AuditLogEntry"}},"app":"sys","version":"73"}}), - "WhitelabelConfig": () => Promise.resolve({"_TypeModel":{"name":"WhitelabelConfig","since":22,"type":"ELEMENT_TYPE","id":1127,"rootId":"A3N5cwAEZw","versioned":false,"encrypted":false,"values":{"_format":{"id":1131,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1129,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1132,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1130,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"germanLanguageCode":{"id":1308,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"imprintUrl":{"id":1425,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"jsonTheme":{"id":1133,"type":"String","cardinality":"One","final":false,"encrypted":false},"metaTags":{"id":1281,"type":"String","cardinality":"One","final":false,"encrypted":false},"privacyStatementUrl":{"id":1496,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"whitelabelCode":{"id":1727,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"bootstrapCustomizations":{"id":1252,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"BootstrapFeature","dependency":null},"certificateInfo":{"id":1506,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CertificateInfo","dependency":null},"whitelabelRegistrationDomains":{"id":1728,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"StringWrapper","dependency":null}},"app":"sys","version":"73"}}), - "BrandingDomainData": () => Promise.resolve({"_TypeModel":{"name":"BrandingDomainData","since":22,"type":"DATA_TRANSFER_TYPE","id":1149,"rootId":"A3N5cwAEfQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1150,"type":"Number","cardinality":"One","final":false,"encrypted":false},"domain":{"id":1151,"type":"String","cardinality":"One","final":true,"encrypted":false},"sessionEncPemCertificateChain":{"id":1152,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"sessionEncPemPrivateKey":{"id":1153,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"systemAdminPubEncSessionKey":{"id":1154,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "BrandingDomainDeleteData": () => Promise.resolve({"_TypeModel":{"name":"BrandingDomainDeleteData","since":22,"type":"DATA_TRANSFER_TYPE","id":1155,"rootId":"A3N5cwAEgw","versioned":false,"encrypted":false,"values":{"_format":{"id":1156,"type":"Number","cardinality":"One","final":false,"encrypted":false},"domain":{"id":1157,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "U2fRegisteredDevice": () => Promise.resolve({"_TypeModel":{"name":"U2fRegisteredDevice","since":23,"type":"AGGREGATED_TYPE","id":1162,"rootId":"A3N5cwAEig","versioned":false,"encrypted":false,"values":{"_id":{"id":1163,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"appId":{"id":1165,"type":"String","cardinality":"One","final":true,"encrypted":false},"compromised":{"id":1168,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"counter":{"id":1167,"type":"Number","cardinality":"One","final":true,"encrypted":false},"keyHandle":{"id":1164,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"publicKey":{"id":1166,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SecondFactor": () => Promise.resolve({"_TypeModel":{"name":"SecondFactor","since":23,"type":"LIST_ELEMENT_TYPE","id":1169,"rootId":"A3N5cwAEkQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1173,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1171,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1174,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1172,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"name":{"id":1176,"type":"String","cardinality":"One","final":true,"encrypted":false},"otpSecret":{"id":1242,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"type":{"id":1175,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"u2f":{"id":1177,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"U2fRegisteredDevice","dependency":null}},"app":"sys","version":"73"}}), - "U2fKey": () => Promise.resolve({"_TypeModel":{"name":"U2fKey","since":23,"type":"AGGREGATED_TYPE","id":1178,"rootId":"A3N5cwAEmg","versioned":false,"encrypted":false,"values":{"_id":{"id":1179,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"appId":{"id":1181,"type":"String","cardinality":"One","final":true,"encrypted":false},"keyHandle":{"id":1180,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"secondFactor":{"id":1182,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"SecondFactor"}},"app":"sys","version":"73"}}), - "U2fChallenge": () => Promise.resolve({"_TypeModel":{"name":"U2fChallenge","since":23,"type":"AGGREGATED_TYPE","id":1183,"rootId":"A3N5cwAEnw","versioned":false,"encrypted":false,"values":{"_id":{"id":1184,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"challenge":{"id":1185,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"keys":{"id":1186,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"U2fKey","dependency":null}},"app":"sys","version":"73"}}), - "Challenge": () => Promise.resolve({"_TypeModel":{"name":"Challenge","since":23,"type":"AGGREGATED_TYPE","id":1187,"rootId":"A3N5cwAEow","versioned":false,"encrypted":false,"values":{"_id":{"id":1188,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"type":{"id":1189,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"otp":{"id":1247,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"OtpChallenge","dependency":null},"u2f":{"id":1190,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"U2fChallenge","dependency":null}},"app":"sys","version":"73"}}), - "Session": () => Promise.resolve({"_TypeModel":{"name":"Session","since":23,"type":"LIST_ELEMENT_TYPE","id":1191,"rootId":"A3N5cwAEpw","versioned":false,"encrypted":true,"values":{"_format":{"id":1195,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1193,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1197,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1196,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1194,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"accessKey":{"id":1202,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"clientIdentifier":{"id":1198,"type":"String","cardinality":"One","final":false,"encrypted":true},"lastAccessTime":{"id":1201,"type":"Date","cardinality":"One","final":true,"encrypted":false},"loginIpAddress":{"id":1200,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"loginTime":{"id":1199,"type":"Date","cardinality":"One","final":true,"encrypted":true},"state":{"id":1203,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"challenges":{"id":1204,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"Challenge","dependency":null},"user":{"id":1205,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User"}},"app":"sys","version":"73"}}), - "UserAuthentication": () => Promise.resolve({"_TypeModel":{"name":"UserAuthentication","since":23,"type":"AGGREGATED_TYPE","id":1206,"rootId":"A3N5cwAEtg","versioned":false,"encrypted":false,"values":{"_id":{"id":1207,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"recoverCode":{"id":1416,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"RecoverCode"},"secondFactors":{"id":1209,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"SecondFactor"},"sessions":{"id":1208,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Session"}},"app":"sys","version":"73"}}), - "CreateSessionData": () => Promise.resolve({"_TypeModel":{"name":"CreateSessionData","since":23,"type":"DATA_TRANSFER_TYPE","id":1211,"rootId":"A3N5cwAEuw","versioned":false,"encrypted":false,"values":{"_format":{"id":1212,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accessKey":{"id":1216,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"authToken":{"id":1217,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"authVerifier":{"id":1214,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"clientIdentifier":{"id":1215,"type":"String","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":1213,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"recoverCodeVerifier":{"id":1417,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"user":{"id":1218,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"User"}},"app":"sys","version":"73"}}), - "CreateSessionReturn": () => Promise.resolve({"_TypeModel":{"name":"CreateSessionReturn","since":23,"type":"DATA_TRANSFER_TYPE","id":1219,"rootId":"A3N5cwAEww","versioned":false,"encrypted":false,"values":{"_format":{"id":1220,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accessToken":{"id":1221,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"challenges":{"id":1222,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"Challenge","dependency":null},"user":{"id":1223,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User"}},"app":"sys","version":"73"}}), - "U2fResponseData": () => Promise.resolve({"_TypeModel":{"name":"U2fResponseData","since":23,"type":"AGGREGATED_TYPE","id":1225,"rootId":"A3N5cwAEyQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1226,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"clientData":{"id":1228,"type":"String","cardinality":"One","final":true,"encrypted":false},"keyHandle":{"id":1227,"type":"String","cardinality":"One","final":true,"encrypted":false},"signatureData":{"id":1229,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SecondFactorAuthGetData": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthGetData","since":23,"type":"DATA_TRANSFER_TYPE","id":1233,"rootId":"A3N5cwAE0Q","versioned":false,"encrypted":false,"values":{"_format":{"id":1234,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accessToken":{"id":1235,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SecondFactorAuthGetReturn": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthGetReturn","since":23,"type":"DATA_TRANSFER_TYPE","id":1236,"rootId":"A3N5cwAE1A","versioned":false,"encrypted":false,"values":{"_format":{"id":1237,"type":"Number","cardinality":"One","final":false,"encrypted":false},"secondFactorPending":{"id":1238,"type":"Boolean","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "OtpChallenge": () => Promise.resolve({"_TypeModel":{"name":"OtpChallenge","since":24,"type":"AGGREGATED_TYPE","id":1244,"rootId":"A3N5cwAE3A","versioned":false,"encrypted":false,"values":{"_id":{"id":1245,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"secondFactors":{"id":1246,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"SecondFactor"}},"app":"sys","version":"73"}}), - "BootstrapFeature": () => Promise.resolve({"_TypeModel":{"name":"BootstrapFeature","since":24,"type":"AGGREGATED_TYPE","id":1249,"rootId":"A3N5cwAE4Q","versioned":false,"encrypted":false,"values":{"_id":{"id":1250,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"feature":{"id":1309,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "Feature": () => Promise.resolve({"_TypeModel":{"name":"Feature","since":25,"type":"AGGREGATED_TYPE","id":1253,"rootId":"A3N5cwAE5Q","versioned":false,"encrypted":false,"values":{"_id":{"id":1254,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"feature":{"id":1255,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "WhitelabelChild": () => Promise.resolve({"_TypeModel":{"name":"WhitelabelChild","since":26,"type":"LIST_ELEMENT_TYPE","id":1257,"rootId":"A3N5cwAE6Q","versioned":false,"encrypted":true,"values":{"_format":{"id":1261,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1259,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1263,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1262,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1260,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"comment":{"id":1267,"type":"String","cardinality":"One","final":false,"encrypted":true},"createdDate":{"id":1265,"type":"Date","cardinality":"One","final":true,"encrypted":false},"deletedDate":{"id":1266,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"mailAddress":{"id":1264,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"customer":{"id":1268,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer"}},"app":"sys","version":"73"}}), - "WhitelabelChildrenRef": () => Promise.resolve({"_TypeModel":{"name":"WhitelabelChildrenRef","since":26,"type":"AGGREGATED_TYPE","id":1269,"rootId":"A3N5cwAE9Q","versioned":false,"encrypted":false,"values":{"_id":{"id":1270,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1271,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"WhitelabelChild"}},"app":"sys","version":"73"}}), - "WhitelabelParent": () => Promise.resolve({"_TypeModel":{"name":"WhitelabelParent","since":26,"type":"AGGREGATED_TYPE","id":1272,"rootId":"A3N5cwAE-A","versioned":false,"encrypted":false,"values":{"_id":{"id":1273,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"customer":{"id":1274,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer"},"whitelabelChildInParent":{"id":1275,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"WhitelabelChild"}},"app":"sys","version":"73"}}), - "UpdateAdminshipData": () => Promise.resolve({"_TypeModel":{"name":"UpdateAdminshipData","since":27,"type":"DATA_TRANSFER_TYPE","id":1288,"rootId":"A3N5cwAFCA","versioned":false,"encrypted":false,"values":{"_format":{"id":1289,"type":"Number","cardinality":"One","final":false,"encrypted":false},"newAdminGroupEncGKey":{"id":1290,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"group":{"id":1291,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"},"newAdminGroup":{"id":1292,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"}},"app":"sys","version":"73"}}), - "AdministratedGroup": () => Promise.resolve({"_TypeModel":{"name":"AdministratedGroup","since":27,"type":"LIST_ELEMENT_TYPE","id":1294,"rootId":"A3N5cwAFDg","versioned":false,"encrypted":false,"values":{"_format":{"id":1298,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1296,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1299,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1297,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"groupType":{"id":1300,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"groupInfo":{"id":1301,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"GroupInfo"},"localAdminGroup":{"id":1302,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "AdministratedGroupsRef": () => Promise.resolve({"_TypeModel":{"name":"AdministratedGroupsRef","since":27,"type":"AGGREGATED_TYPE","id":1303,"rootId":"A3N5cwAFFw","versioned":false,"encrypted":false,"values":{"_id":{"id":1304,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1305,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"AdministratedGroup"}},"app":"sys","version":"73"}}), - "CreditCard": () => Promise.resolve({"_TypeModel":{"name":"CreditCard","since":30,"type":"AGGREGATED_TYPE","id":1313,"rootId":"A3N5cwAFIQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1314,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"cardHolderName":{"id":1315,"type":"String","cardinality":"One","final":false,"encrypted":true},"cvv":{"id":1317,"type":"String","cardinality":"One","final":false,"encrypted":true},"expirationMonth":{"id":1318,"type":"String","cardinality":"One","final":false,"encrypted":true},"expirationYear":{"id":1319,"type":"String","cardinality":"One","final":false,"encrypted":true},"number":{"id":1316,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), - "LocationServiceGetReturn": () => Promise.resolve({"_TypeModel":{"name":"LocationServiceGetReturn","since":30,"type":"DATA_TRANSFER_TYPE","id":1321,"rootId":"A3N5cwAFKQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1322,"type":"Number","cardinality":"One","final":false,"encrypted":false},"country":{"id":1323,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "OrderProcessingAgreement": () => Promise.resolve({"_TypeModel":{"name":"OrderProcessingAgreement","since":31,"type":"LIST_ELEMENT_TYPE","id":1326,"rootId":"A3N5cwAFLg","versioned":false,"encrypted":true,"values":{"_format":{"id":1330,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1328,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1332,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1331,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1329,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"customerAddress":{"id":1334,"type":"String","cardinality":"One","final":false,"encrypted":true},"signatureDate":{"id":1335,"type":"Date","cardinality":"One","final":false,"encrypted":false},"version":{"id":1333,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"customer":{"id":1337,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer"},"signerUserGroupInfo":{"id":1336,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"GroupInfo"}},"app":"sys","version":"73"}}), - "SignOrderProcessingAgreementData": () => Promise.resolve({"_TypeModel":{"name":"SignOrderProcessingAgreementData","since":31,"type":"DATA_TRANSFER_TYPE","id":1342,"rootId":"A3N5cwAFPg","versioned":false,"encrypted":false,"values":{"_format":{"id":1343,"type":"Number","cardinality":"One","final":false,"encrypted":false},"customerAddress":{"id":1345,"type":"String","cardinality":"One","final":false,"encrypted":false},"version":{"id":1344,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "GeneratedIdWrapper": () => Promise.resolve({"_TypeModel":{"name":"GeneratedIdWrapper","since":32,"type":"AGGREGATED_TYPE","id":1349,"rootId":"A3N5cwAFRQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1350,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"value":{"id":1351,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "SseConnectData": () => Promise.resolve({"_TypeModel":{"name":"SseConnectData","since":32,"type":"DATA_TRANSFER_TYPE","id":1352,"rootId":"A3N5cwAFSA","versioned":false,"encrypted":false,"values":{"_format":{"id":1353,"type":"Number","cardinality":"One","final":false,"encrypted":false},"identifier":{"id":1354,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"userIds":{"id":1355,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"GeneratedIdWrapper","dependency":null}},"app":"sys","version":"73"}}), - "NotificationInfo": () => Promise.resolve({"_TypeModel":{"name":"NotificationInfo","since":32,"type":"AGGREGATED_TYPE","id":1364,"rootId":"A3N5cwAFVA","versioned":false,"encrypted":false,"values":{"_id":{"id":1365,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"counter":{"id":1367,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":1366,"type":"String","cardinality":"One","final":false,"encrypted":false},"userId":{"id":1368,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "RecoverCode": () => Promise.resolve({"_TypeModel":{"name":"RecoverCode","since":36,"type":"ELEMENT_TYPE","id":1407,"rootId":"A3N5cwAFfw","versioned":false,"encrypted":false,"values":{"_format":{"id":1411,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1409,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1412,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1410,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"recoverCodeEncUserGroupKey":{"id":1414,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"userEncRecoverCode":{"id":1413,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"verifier":{"id":1415,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "ResetFactorsDeleteData": () => Promise.resolve({"_TypeModel":{"name":"ResetFactorsDeleteData","since":36,"type":"DATA_TRANSFER_TYPE","id":1419,"rootId":"A3N5cwAFiw","versioned":false,"encrypted":false,"values":{"_format":{"id":1420,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authVerifier":{"id":1422,"type":"String","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":1421,"type":"String","cardinality":"One","final":true,"encrypted":false},"recoverCodeVerifier":{"id":1423,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "UpgradePriceServiceData": () => Promise.resolve({"_TypeModel":{"name":"UpgradePriceServiceData","since":39,"type":"DATA_TRANSFER_TYPE","id":1456,"rootId":"A3N5cwAFsA","versioned":false,"encrypted":false,"values":{"_format":{"id":1457,"type":"Number","cardinality":"One","final":false,"encrypted":false},"campaign":{"id":1459,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"date":{"id":1458,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PlanPrices": () => Promise.resolve({"_TypeModel":{"name":"PlanPrices","since":39,"type":"AGGREGATED_TYPE","id":1460,"rootId":"A3N5cwAFtA","versioned":false,"encrypted":false,"values":{"_id":{"id":1461,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"additionalUserPriceMonthly":{"id":1465,"type":"Number","cardinality":"One","final":false,"encrypted":false},"contactFormPriceMonthly":{"id":1466,"type":"Number","cardinality":"One","final":false,"encrypted":false},"firstYearDiscount":{"id":1464,"type":"Number","cardinality":"One","final":false,"encrypted":false},"includedAliases":{"id":1467,"type":"Number","cardinality":"One","final":false,"encrypted":false},"includedStorage":{"id":1468,"type":"Number","cardinality":"One","final":false,"encrypted":false},"monthlyPrice":{"id":1463,"type":"Number","cardinality":"One","final":false,"encrypted":false},"monthlyReferencePrice":{"id":1462,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "UpgradePriceServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"UpgradePriceServiceReturn","since":39,"type":"DATA_TRANSFER_TYPE","id":1469,"rootId":"A3N5cwAFvQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1470,"type":"Number","cardinality":"One","final":false,"encrypted":false},"business":{"id":1472,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"messageTextId":{"id":1471,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"premiumBusinessPrices":{"id":1866,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null},"premiumPrices":{"id":1473,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null},"proPrices":{"id":1474,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null},"teamsBusinessPrices":{"id":1867,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null},"teamsPrices":{"id":1729,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null}},"app":"sys","version":"73"}}), - "RegistrationCaptchaServiceGetData": () => Promise.resolve({"_TypeModel":{"name":"RegistrationCaptchaServiceGetData","since":40,"type":"DATA_TRANSFER_TYPE","id":1479,"rootId":"A3N5cwAFxw","versioned":false,"encrypted":false,"values":{"_format":{"id":1480,"type":"Number","cardinality":"One","final":false,"encrypted":false},"businessUseSelected":{"id":1752,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":1482,"type":"String","cardinality":"One","final":false,"encrypted":false},"paidSubscriptionSelected":{"id":1751,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"signupToken":{"id":1731,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"token":{"id":1481,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "WebsocketEntityData": () => Promise.resolve({"_TypeModel":{"name":"WebsocketEntityData","since":41,"type":"DATA_TRANSFER_TYPE","id":1483,"rootId":"A3N5cwAFyw","versioned":false,"encrypted":false,"values":{"_format":{"id":1484,"type":"Number","cardinality":"One","final":false,"encrypted":false},"eventBatchId":{"id":1485,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"eventBatchOwner":{"id":1486,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"eventBatch":{"id":1487,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"EntityUpdate","dependency":null}},"app":"sys","version":"73"}}), - "WebsocketCounterValue": () => Promise.resolve({"_TypeModel":{"name":"WebsocketCounterValue","since":41,"type":"AGGREGATED_TYPE","id":1488,"rootId":"A3N5cwAF0A","versioned":false,"encrypted":false,"values":{"_id":{"id":1489,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"count":{"id":1491,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailListId":{"id":1490,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "WebsocketCounterData": () => Promise.resolve({"_TypeModel":{"name":"WebsocketCounterData","since":41,"type":"DATA_TRANSFER_TYPE","id":1492,"rootId":"A3N5cwAF1A","versioned":false,"encrypted":false,"values":{"_format":{"id":1493,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailGroup":{"id":1494,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"counterValues":{"id":1495,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"WebsocketCounterValue","dependency":null}},"app":"sys","version":"73"}}), - "CertificateInfo": () => Promise.resolve({"_TypeModel":{"name":"CertificateInfo","since":44,"type":"AGGREGATED_TYPE","id":1500,"rootId":"A3N5cwAF3A","versioned":false,"encrypted":false,"values":{"_id":{"id":1501,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"expiryDate":{"id":1502,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"state":{"id":1503,"type":"Number","cardinality":"One","final":true,"encrypted":false},"type":{"id":1504,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"certificate":{"id":1505,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"SslCertificate"}},"app":"sys","version":"73"}}), - "NotificationMailTemplate": () => Promise.resolve({"_TypeModel":{"name":"NotificationMailTemplate","since":45,"type":"AGGREGATED_TYPE","id":1517,"rootId":"A3N5cwAF7Q","versioned":false,"encrypted":false,"values":{"_id":{"id":1518,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"body":{"id":1520,"type":"String","cardinality":"One","final":false,"encrypted":false},"language":{"id":1519,"type":"String","cardinality":"One","final":false,"encrypted":false},"subject":{"id":1521,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "CalendarEventRef": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventRef","since":48,"type":"AGGREGATED_TYPE","id":1532,"rootId":"A3N5cwAF_A","versioned":false,"encrypted":false,"values":{"_id":{"id":1533,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"elementId":{"id":1534,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"listId":{"id":1535,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), +const map = { "AccountingInfo": () => Promise.resolve({"_TypeModel":{"name":"AccountingInfo","since":1,"type":"ELEMENT_TYPE","id":143,"rootId":"A3N5cwAAjw","versioned":false,"encrypted":true,"values":{"_format":{"id":147,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":145,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_modified":{"id":1499,"type":"Date","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1010,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1009,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":146,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"business":{"id":761,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"invoiceAddress":{"id":763,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceCountry":{"id":764,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"invoiceName":{"id":762,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceVatIdNo":{"id":766,"type":"String","cardinality":"One","final":false,"encrypted":true},"lastInvoiceNbrOfSentSms":{"id":593,"type":"Number","cardinality":"One","final":true,"encrypted":false},"lastInvoiceTimestamp":{"id":592,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"paymentAccountIdentifier":{"id":1060,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paymentInterval":{"id":769,"type":"Number","cardinality":"One","final":false,"encrypted":false},"paymentMethod":{"id":767,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paymentMethodInfo":{"id":768,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paymentProviderCustomerId":{"id":770,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paypalBillingAgreement":{"id":1312,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"secondCountryInfo":{"id":765,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{"invoiceInfo":{"id":771,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"InvoiceInfo","dependency":null}},"app":"sys","version":"73"}}), + "AdministratedGroup": () => Promise.resolve({"_TypeModel":{"name":"AdministratedGroup","since":27,"type":"LIST_ELEMENT_TYPE","id":1294,"rootId":"A3N5cwAFDg","versioned":false,"encrypted":false,"values":{"_format":{"id":1298,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1296,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1299,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1297,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"groupType":{"id":1300,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"groupInfo":{"id":1301,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"GroupInfo","dependency":null},"localAdminGroup":{"id":1302,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "AdministratedGroupsRef": () => Promise.resolve({"_TypeModel":{"name":"AdministratedGroupsRef","since":27,"type":"AGGREGATED_TYPE","id":1303,"rootId":"A3N5cwAFFw","versioned":false,"encrypted":false,"values":{"_id":{"id":1304,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1305,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"AdministratedGroup","dependency":null}},"app":"sys","version":"73"}}), "AlarmInfo": () => Promise.resolve({"_TypeModel":{"name":"AlarmInfo","since":48,"type":"AGGREGATED_TYPE","id":1536,"rootId":"A3N5cwAGAA","versioned":false,"encrypted":false,"values":{"_id":{"id":1537,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"alarmIdentifier":{"id":1539,"type":"String","cardinality":"One","final":true,"encrypted":false},"trigger":{"id":1538,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"calendarRef":{"id":1540,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CalendarEventRef","dependency":null}},"app":"sys","version":"73"}}), - "UserAlarmInfo": () => Promise.resolve({"_TypeModel":{"name":"UserAlarmInfo","since":48,"type":"LIST_ELEMENT_TYPE","id":1541,"rootId":"A3N5cwAGBQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1545,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1543,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1547,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1546,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1544,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"alarmInfo":{"id":1548,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"AlarmInfo","dependency":null}},"app":"sys","version":"73"}}), - "UserAlarmInfoListType": () => Promise.resolve({"_TypeModel":{"name":"UserAlarmInfoListType","since":48,"type":"AGGREGATED_TYPE","id":1549,"rootId":"A3N5cwAGDQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1550,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"alarms":{"id":1551,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"UserAlarmInfo"}},"app":"sys","version":"73"}}), - "NotificationSessionKey": () => Promise.resolve({"_TypeModel":{"name":"NotificationSessionKey","since":48,"type":"AGGREGATED_TYPE","id":1553,"rootId":"A3N5cwAGEQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1554,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"pushIdentifierSessionEncSessionKey":{"id":1556,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"pushIdentifier":{"id":1555,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"PushIdentifier"}},"app":"sys","version":"73"}}), - "RepeatRule": () => Promise.resolve({"_TypeModel":{"name":"RepeatRule","since":48,"type":"AGGREGATED_TYPE","id":1557,"rootId":"A3N5cwAGFQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1558,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"endType":{"id":1560,"type":"Number","cardinality":"One","final":false,"encrypted":true},"endValue":{"id":1561,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":true},"frequency":{"id":1559,"type":"Number","cardinality":"One","final":false,"encrypted":true},"interval":{"id":1562,"type":"Number","cardinality":"One","final":false,"encrypted":true},"timeZone":{"id":1563,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), - "AlarmNotification": () => Promise.resolve({"_TypeModel":{"name":"AlarmNotification","since":48,"type":"AGGREGATED_TYPE","id":1564,"rootId":"A3N5cwAGHA","versioned":false,"encrypted":false,"values":{"_id":{"id":1565,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"eventEnd":{"id":1569,"type":"Date","cardinality":"One","final":true,"encrypted":true},"eventStart":{"id":1568,"type":"Date","cardinality":"One","final":true,"encrypted":true},"operation":{"id":1566,"type":"Number","cardinality":"One","final":true,"encrypted":false},"summary":{"id":1567,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"alarmInfo":{"id":1570,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"AlarmInfo","dependency":null},"notificationSessionKeys":{"id":1572,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"NotificationSessionKey","dependency":null},"repeatRule":{"id":1571,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"RepeatRule","dependency":null},"user":{"id":1573,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User"}},"app":"sys","version":"73"}}), + "AlarmNotification": () => Promise.resolve({"_TypeModel":{"name":"AlarmNotification","since":48,"type":"AGGREGATED_TYPE","id":1564,"rootId":"A3N5cwAGHA","versioned":false,"encrypted":false,"values":{"_id":{"id":1565,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"eventEnd":{"id":1569,"type":"Date","cardinality":"One","final":true,"encrypted":true},"eventStart":{"id":1568,"type":"Date","cardinality":"One","final":true,"encrypted":true},"operation":{"id":1566,"type":"Number","cardinality":"One","final":true,"encrypted":false},"summary":{"id":1567,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"alarmInfo":{"id":1570,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"AlarmInfo","dependency":null},"notificationSessionKeys":{"id":1572,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"NotificationSessionKey","dependency":null},"repeatRule":{"id":1571,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"RepeatRule","dependency":null},"user":{"id":1573,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), "AlarmServicePost": () => Promise.resolve({"_TypeModel":{"name":"AlarmServicePost","since":48,"type":"DATA_TRANSFER_TYPE","id":1576,"rootId":"A3N5cwAGKA","versioned":false,"encrypted":true,"values":{"_format":{"id":1577,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"alarmNotifications":{"id":1578,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"AlarmNotification","dependency":null}},"app":"sys","version":"73"}}), - "DnsRecord": () => Promise.resolve({"_TypeModel":{"name":"DnsRecord","since":49,"type":"AGGREGATED_TYPE","id":1581,"rootId":"A3N5cwAGLQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1582,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"subdomain":{"id":1583,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"type":{"id":1584,"type":"Number","cardinality":"One","final":false,"encrypted":false},"value":{"id":1585,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "CustomDomainCheckData": () => Promise.resolve({"_TypeModel":{"name":"CustomDomainCheckData","since":49,"type":"DATA_TRANSFER_TYPE","id":1586,"rootId":"A3N5cwAGMg","versioned":false,"encrypted":false,"values":{"_format":{"id":1587,"type":"Number","cardinality":"One","final":false,"encrypted":false},"domain":{"id":1588,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "CustomDomainCheckReturn": () => Promise.resolve({"_TypeModel":{"name":"CustomDomainCheckReturn","since":49,"type":"DATA_TRANSFER_TYPE","id":1589,"rootId":"A3N5cwAGNQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1590,"type":"Number","cardinality":"One","final":false,"encrypted":false},"checkResult":{"id":1591,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"invalidRecords":{"id":1593,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"DnsRecord","dependency":null},"missingRecords":{"id":1592,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"DnsRecord","dependency":null},"requiredRecords":{"id":1758,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"DnsRecord","dependency":null}},"app":"sys","version":"73"}}), - "CloseSessionServicePost": () => Promise.resolve({"_TypeModel":{"name":"CloseSessionServicePost","since":50,"type":"DATA_TRANSFER_TYPE","id":1595,"rootId":"A3N5cwAGOw","versioned":false,"encrypted":false,"values":{"_format":{"id":1596,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accessToken":{"id":1597,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"sessionId":{"id":1598,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Session"}},"app":"sys","version":"73"}}), - "ReceivedGroupInvitation": () => Promise.resolve({"_TypeModel":{"name":"ReceivedGroupInvitation","since":52,"type":"LIST_ELEMENT_TYPE","id":1602,"rootId":"A3N5cwAGQg","versioned":false,"encrypted":true,"values":{"_format":{"id":1606,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1604,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1608,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1607,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1605,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"capability":{"id":1614,"type":"Number","cardinality":"One","final":false,"encrypted":false},"groupType":{"id":1868,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"inviteeMailAddress":{"id":1613,"type":"String","cardinality":"One","final":false,"encrypted":false},"inviterMailAddress":{"id":1611,"type":"String","cardinality":"One","final":false,"encrypted":false},"inviterName":{"id":1612,"type":"String","cardinality":"One","final":false,"encrypted":true},"sharedGroupKey":{"id":1609,"type":"Bytes","cardinality":"One","final":false,"encrypted":true},"sharedGroupName":{"id":1610,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"sentInvitation":{"id":1616,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"SentGroupInvitation"},"sharedGroup":{"id":1615,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"}},"app":"sys","version":"73"}}), - "UserGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"UserGroupRoot","since":52,"type":"ELEMENT_TYPE","id":1618,"rootId":"A3N5cwAGUg","versioned":false,"encrypted":false,"values":{"_format":{"id":1622,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1620,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1623,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1621,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"invitations":{"id":1624,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"ReceivedGroupInvitation"}},"app":"sys","version":"73"}}), - "PaymentErrorInfo": () => Promise.resolve({"_TypeModel":{"name":"PaymentErrorInfo","since":52,"type":"AGGREGATED_TYPE","id":1632,"rootId":"A3N5cwAGYA","versioned":false,"encrypted":false,"values":{"_id":{"id":1633,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"errorCode":{"id":1635,"type":"String","cardinality":"One","final":true,"encrypted":false},"errorTime":{"id":1634,"type":"Date","cardinality":"One","final":true,"encrypted":false},"thirdPartyErrorId":{"id":1636,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "InvoiceItem": () => Promise.resolve({"_TypeModel":{"name":"InvoiceItem","since":52,"type":"AGGREGATED_TYPE","id":1641,"rootId":"A3N5cwAGaQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1642,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"amount":{"id":1643,"type":"Number","cardinality":"One","final":true,"encrypted":true},"endDate":{"id":1648,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":true},"singlePrice":{"id":1645,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":true},"singleType":{"id":1649,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"startDate":{"id":1647,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":true},"totalPrice":{"id":1646,"type":"Number","cardinality":"One","final":true,"encrypted":true},"type":{"id":1644,"type":"Number","cardinality":"One","final":true,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), - "Invoice": () => Promise.resolve({"_TypeModel":{"name":"Invoice","since":52,"type":"ELEMENT_TYPE","id":1650,"rootId":"A3N5cwAGcg","versioned":false,"encrypted":true,"values":{"_format":{"id":1654,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1652,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1656,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1655,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1653,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"address":{"id":1661,"type":"String","cardinality":"One","final":false,"encrypted":true},"adminUser":{"id":1668,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"business":{"id":1662,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"country":{"id":1660,"type":"String","cardinality":"One","final":true,"encrypted":true},"date":{"id":1658,"type":"Date","cardinality":"One","final":true,"encrypted":true},"grandTotal":{"id":1667,"type":"Number","cardinality":"One","final":true,"encrypted":true},"paymentMethod":{"id":1659,"type":"Number","cardinality":"One","final":false,"encrypted":true},"reason":{"id":1669,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"subTotal":{"id":1666,"type":"Number","cardinality":"One","final":true,"encrypted":true},"type":{"id":1657,"type":"Number","cardinality":"One","final":true,"encrypted":true},"vat":{"id":1665,"type":"Number","cardinality":"One","final":true,"encrypted":true},"vatIdNumber":{"id":1663,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"vatRate":{"id":1664,"type":"Number","cardinality":"One","final":true,"encrypted":true}},"associations":{"items":{"id":1670,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"InvoiceItem","dependency":null},"bookings":{"id":1672,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"Booking"},"customer":{"id":1671,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer"}},"app":"sys","version":"73"}}), - "MissedNotification": () => Promise.resolve({"_TypeModel":{"name":"MissedNotification","since":53,"type":"ELEMENT_TYPE","id":1693,"rootId":"A3N5cwAGnQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1697,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1695,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1699,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1698,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1696,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"changeTime":{"id":1701,"type":"Date","cardinality":"One","final":true,"encrypted":false},"confirmationId":{"id":1700,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"lastProcessedNotificationId":{"id":1722,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"alarmNotifications":{"id":1703,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"AlarmNotification","dependency":null},"notificationInfos":{"id":1702,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"NotificationInfo","dependency":null}},"app":"sys","version":"73"}}), - "BrandingDomainGetReturn": () => Promise.resolve({"_TypeModel":{"name":"BrandingDomainGetReturn","since":56,"type":"DATA_TRANSFER_TYPE","id":1723,"rootId":"A3N5cwAGuw","versioned":false,"encrypted":false,"values":{"_format":{"id":1724,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"certificateInfo":{"id":1725,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CertificateInfo","dependency":null}},"app":"sys","version":"73"}}), - "RejectedSender": () => Promise.resolve({"_TypeModel":{"name":"RejectedSender","since":60,"type":"LIST_ELEMENT_TYPE","id":1736,"rootId":"A3N5cwAGyA","versioned":false,"encrypted":false,"values":{"_format":{"id":1740,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1738,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1741,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1739,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"reason":{"id":1746,"type":"String","cardinality":"One","final":true,"encrypted":false},"recipientMailAddress":{"id":1745,"type":"String","cardinality":"One","final":true,"encrypted":false},"senderHostname":{"id":1744,"type":"String","cardinality":"One","final":true,"encrypted":false},"senderIp":{"id":1743,"type":"String","cardinality":"One","final":true,"encrypted":false},"senderMailAddress":{"id":1742,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "RejectedSendersRef": () => Promise.resolve({"_TypeModel":{"name":"RejectedSendersRef","since":60,"type":"AGGREGATED_TYPE","id":1747,"rootId":"A3N5cwAG0w","versioned":false,"encrypted":false,"values":{"_id":{"id":1748,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1749,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"RejectedSender"}},"app":"sys","version":"73"}}), - "SecondFactorAuthDeleteData": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthDeleteData","since":62,"type":"DATA_TRANSFER_TYPE","id":1755,"rootId":"A3N5cwAG2w","versioned":false,"encrypted":false,"values":{"_format":{"id":1756,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"session":{"id":1757,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Session"}},"app":"sys","version":"73"}}), - "TakeOverDeletedAddressData": () => Promise.resolve({"_TypeModel":{"name":"TakeOverDeletedAddressData","since":63,"type":"DATA_TRANSFER_TYPE","id":1759,"rootId":"A3N5cwAG3w","versioned":false,"encrypted":false,"values":{"_format":{"id":1760,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authVerifier":{"id":1762,"type":"String","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":1761,"type":"String","cardinality":"One","final":false,"encrypted":false},"recoverCodeVerifier":{"id":1763,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"targetAccountMailAddress":{"id":1764,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "WebsocketLeaderStatus": () => Promise.resolve({"_TypeModel":{"name":"WebsocketLeaderStatus","since":64,"type":"DATA_TRANSFER_TYPE","id":1766,"rootId":"A3N5cwAG5g","versioned":false,"encrypted":false,"values":{"_format":{"id":1767,"type":"Number","cardinality":"One","final":false,"encrypted":false},"leaderStatus":{"id":1768,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "GiftCard": () => Promise.resolve({"_TypeModel":{"name":"GiftCard","since":65,"type":"LIST_ELEMENT_TYPE","id":1769,"rootId":"A3N5cwAG6Q","versioned":false,"encrypted":true,"values":{"_format":{"id":1773,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1771,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1775,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1774,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1772,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"country":{"id":1780,"type":"String","cardinality":"One","final":true,"encrypted":false},"message":{"id":1778,"type":"String","cardinality":"One","final":false,"encrypted":true},"orderDate":{"id":1779,"type":"Date","cardinality":"One","final":true,"encrypted":false},"usable":{"id":1776,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"value":{"id":1777,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "GiftCardsRef": () => Promise.resolve({"_TypeModel":{"name":"GiftCardsRef","since":65,"type":"AGGREGATED_TYPE","id":1791,"rootId":"A3N5cwAG_w","versioned":false,"encrypted":false,"values":{"_id":{"id":1792,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1793,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCard"}},"app":"sys","version":"73"}}), - "GiftCardOption": () => Promise.resolve({"_TypeModel":{"name":"GiftCardOption","since":65,"type":"AGGREGATED_TYPE","id":1795,"rootId":"A3N5cwAHAw","versioned":false,"encrypted":false,"values":{"_id":{"id":1796,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"value":{"id":1797,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "GiftCardGetReturn": () => Promise.resolve({"_TypeModel":{"name":"GiftCardGetReturn","since":65,"type":"DATA_TRANSFER_TYPE","id":1798,"rootId":"A3N5cwAHBg","versioned":false,"encrypted":false,"values":{"_format":{"id":1799,"type":"Number","cardinality":"One","final":false,"encrypted":false},"maxPerPeriod":{"id":1800,"type":"Number","cardinality":"One","final":false,"encrypted":false},"period":{"id":1801,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"options":{"id":1802,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"GiftCardOption","dependency":null}},"app":"sys","version":"73"}}), - "GiftCardCreateData": () => Promise.resolve({"_TypeModel":{"name":"GiftCardCreateData","since":65,"type":"DATA_TRANSFER_TYPE","id":1803,"rootId":"A3N5cwAHCw","versioned":false,"encrypted":true,"values":{"_format":{"id":1804,"type":"Number","cardinality":"One","final":false,"encrypted":false},"country":{"id":1808,"type":"String","cardinality":"One","final":false,"encrypted":false},"keyHash":{"id":1809,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"message":{"id":1805,"type":"String","cardinality":"One","final":false,"encrypted":true},"ownerEncSessionKey":{"id":1806,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"value":{"id":1807,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "GiftCardDeleteData": () => Promise.resolve({"_TypeModel":{"name":"GiftCardDeleteData","since":65,"type":"DATA_TRANSFER_TYPE","id":1810,"rootId":"A3N5cwAHEg","versioned":false,"encrypted":false,"values":{"_format":{"id":1811,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"giftCard":{"id":1812,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCard"}},"app":"sys","version":"73"}}), - "GiftCardCreateReturn": () => Promise.resolve({"_TypeModel":{"name":"GiftCardCreateReturn","since":65,"type":"DATA_TRANSFER_TYPE","id":1813,"rootId":"A3N5cwAHFQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1814,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"giftCard":{"id":1815,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCard"}},"app":"sys","version":"73"}}), - "GiftCardRedeemData": () => Promise.resolve({"_TypeModel":{"name":"GiftCardRedeemData","since":65,"type":"DATA_TRANSFER_TYPE","id":1817,"rootId":"A3N5cwAHGQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1818,"type":"Number","cardinality":"One","final":false,"encrypted":false},"keyHash":{"id":1820,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"giftCardInfo":{"id":1819,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCardInfo"}},"app":"sys","version":"73"}}), - "GiftCardRedeemGetReturn": () => Promise.resolve({"_TypeModel":{"name":"GiftCardRedeemGetReturn","since":65,"type":"DATA_TRANSFER_TYPE","id":1821,"rootId":"A3N5cwAHHQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1822,"type":"Number","cardinality":"One","final":false,"encrypted":false},"country":{"id":1826,"type":"String","cardinality":"One","final":true,"encrypted":false},"message":{"id":1824,"type":"String","cardinality":"One","final":true,"encrypted":true},"value":{"id":1825,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"giftCard":{"id":1823,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCard"}},"app":"sys","version":"73"}}), - "Braintree3ds2Request": () => Promise.resolve({"_TypeModel":{"name":"Braintree3ds2Request","since":66,"type":"AGGREGATED_TYPE","id":1828,"rootId":"A3N5cwAHJA","versioned":false,"encrypted":false,"values":{"_id":{"id":1829,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bin":{"id":1832,"type":"String","cardinality":"One","final":false,"encrypted":false},"clientToken":{"id":1830,"type":"String","cardinality":"One","final":false,"encrypted":false},"nonce":{"id":1831,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "Braintree3ds2Response": () => Promise.resolve({"_TypeModel":{"name":"Braintree3ds2Response","since":66,"type":"AGGREGATED_TYPE","id":1833,"rootId":"A3N5cwAHKQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1834,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"clientToken":{"id":1835,"type":"String","cardinality":"One","final":false,"encrypted":false},"nonce":{"id":1836,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "PaymentDataServicePostData": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServicePostData","since":66,"type":"DATA_TRANSFER_TYPE","id":1837,"rootId":"A3N5cwAHLQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1838,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"braintree3dsResponse":{"id":1839,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"Braintree3ds2Response","dependency":null}},"app":"sys","version":"73"}}), - "PaymentDataServiceGetData": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServiceGetData","since":67,"type":"DATA_TRANSFER_TYPE","id":1861,"rootId":"A3N5cwAHRQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1862,"type":"Number","cardinality":"One","final":false,"encrypted":false},"clientType":{"id":1863,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "TypeInfo": () => Promise.resolve({"_TypeModel":{"name":"TypeInfo","since":69,"type":"AGGREGATED_TYPE","id":1869,"rootId":"A3N5cwAHTQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1870,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"application":{"id":1871,"type":"String","cardinality":"One","final":false,"encrypted":false},"typeId":{"id":1872,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), "ArchiveRef": () => Promise.resolve({"_TypeModel":{"name":"ArchiveRef","since":69,"type":"AGGREGATED_TYPE","id":1873,"rootId":"A3N5cwAHUQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1874,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"archiveId":{"id":1875,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), "ArchiveType": () => Promise.resolve({"_TypeModel":{"name":"ArchiveType","since":69,"type":"AGGREGATED_TYPE","id":1876,"rootId":"A3N5cwAHVA","versioned":false,"encrypted":false,"values":{"_id":{"id":1877,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"active":{"id":1879,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"ArchiveRef","dependency":null},"inactive":{"id":1880,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ArchiveRef","dependency":null},"type":{"id":1878,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"TypeInfo","dependency":null}},"app":"sys","version":"73"}}), + "AuditLogEntry": () => Promise.resolve({"_TypeModel":{"name":"AuditLogEntry","since":22,"type":"LIST_ELEMENT_TYPE","id":1101,"rootId":"A3N5cwAETQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1105,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1103,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1107,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1106,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1104,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"action":{"id":1110,"type":"String","cardinality":"One","final":true,"encrypted":true},"actorIpAddress":{"id":1109,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"actorMailAddress":{"id":1108,"type":"String","cardinality":"One","final":true,"encrypted":true},"date":{"id":1112,"type":"Date","cardinality":"One","final":true,"encrypted":true},"modifiedEntity":{"id":1111,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"groupInfo":{"id":1113,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"GroupInfo","dependency":null},"modifiedGroupInfo":{"id":1307,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"GroupInfo","dependency":null}},"app":"sys","version":"73"}}), + "AuditLogRef": () => Promise.resolve({"_TypeModel":{"name":"AuditLogRef","since":22,"type":"AGGREGATED_TYPE","id":1114,"rootId":"A3N5cwAEWg","versioned":false,"encrypted":false,"values":{"_id":{"id":1115,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1116,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"AuditLogEntry","dependency":null}},"app":"sys","version":"73"}}), + "AuthenticatedDevice": () => Promise.resolve({"_TypeModel":{"name":"AuthenticatedDevice","since":1,"type":"AGGREGATED_TYPE","id":43,"rootId":"A3N5cwAr","versioned":false,"encrypted":false,"values":{"_id":{"id":44,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"authType":{"id":45,"type":"Number","cardinality":"One","final":true,"encrypted":false},"deviceKey":{"id":47,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"deviceToken":{"id":46,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "Authentication": () => Promise.resolve({"_TypeModel":{"name":"Authentication","since":1,"type":"AGGREGATED_TYPE","id":453,"rootId":"A3N5cwABxQ","versioned":false,"encrypted":false,"values":{"_id":{"id":454,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"accessToken":{"id":1239,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"authVerifier":{"id":456,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"externalAuthToken":{"id":968,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"userId":{"id":455,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "AutoLoginDataDelete": () => Promise.resolve({"_TypeModel":{"name":"AutoLoginDataDelete","since":1,"type":"DATA_TRANSFER_TYPE","id":435,"rootId":"A3N5cwABsw","versioned":false,"encrypted":false,"values":{"_format":{"id":436,"type":"Number","cardinality":"One","final":false,"encrypted":false},"deviceToken":{"id":437,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "AutoLoginDataGet": () => Promise.resolve({"_TypeModel":{"name":"AutoLoginDataGet","since":1,"type":"DATA_TRANSFER_TYPE","id":431,"rootId":"A3N5cwABrw","versioned":false,"encrypted":false,"values":{"_format":{"id":432,"type":"Number","cardinality":"One","final":false,"encrypted":false},"deviceToken":{"id":434,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"userId":{"id":433,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "AutoLoginDataReturn": () => Promise.resolve({"_TypeModel":{"name":"AutoLoginDataReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":438,"rootId":"A3N5cwABtg","versioned":false,"encrypted":false,"values":{"_format":{"id":439,"type":"Number","cardinality":"One","final":false,"encrypted":false},"deviceKey":{"id":440,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "AutoLoginPostReturn": () => Promise.resolve({"_TypeModel":{"name":"AutoLoginPostReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":441,"rootId":"A3N5cwABuQ","versioned":false,"encrypted":false,"values":{"_format":{"id":442,"type":"Number","cardinality":"One","final":false,"encrypted":false},"deviceToken":{"id":443,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), "Blob": () => Promise.resolve({"_TypeModel":{"name":"Blob","since":69,"type":"AGGREGATED_TYPE","id":1882,"rootId":"A3N5cwAHWg","versioned":false,"encrypted":false,"values":{"_id":{"id":1883,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"archiveId":{"id":1884,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"blobId":{"id":1906,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"size":{"id":1898,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "BlobId": () => Promise.resolve({"_TypeModel":{"name":"BlobId","since":69,"type":"AGGREGATED_TYPE","id":1886,"rootId":"A3N5cwAHXg","versioned":false,"encrypted":false,"values":{"_id":{"id":1887,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"blobId":{"id":1907,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "TargetServer": () => Promise.resolve({"_TypeModel":{"name":"TargetServer","since":69,"type":"AGGREGATED_TYPE","id":1889,"rootId":"A3N5cwAHYQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1890,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"url":{"id":1891,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), "BlobAccessInfo": () => Promise.resolve({"_TypeModel":{"name":"BlobAccessInfo","since":69,"type":"AGGREGATED_TYPE","id":1892,"rootId":"A3N5cwAHZA","versioned":false,"encrypted":false,"values":{"_id":{"id":1893,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"archiveId":{"id":1897,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"storageAccessToken":{"id":1894,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"blobIds":{"id":1908,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"BlobId","dependency":null},"servers":{"id":1895,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"TargetServer","dependency":null}},"app":"sys","version":"73"}}), - "WebauthnResponseData": () => Promise.resolve({"_TypeModel":{"name":"WebauthnResponseData","since":71,"type":"AGGREGATED_TYPE","id":1899,"rootId":"A3N5cwAHaw","versioned":false,"encrypted":false,"values":{"_id":{"id":1900,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"authenticatorData":{"id":1903,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"clientData":{"id":1902,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"keyHandle":{"id":1901,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"signature":{"id":1904,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "BlobId": () => Promise.resolve({"_TypeModel":{"name":"BlobId","since":69,"type":"AGGREGATED_TYPE","id":1886,"rootId":"A3N5cwAHXg","versioned":false,"encrypted":false,"values":{"_id":{"id":1887,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"blobId":{"id":1907,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "Booking": () => Promise.resolve({"_TypeModel":{"name":"Booking","since":9,"type":"LIST_ELEMENT_TYPE","id":709,"rootId":"A3N5cwACxQ","versioned":false,"encrypted":false,"values":{"_area":{"id":715,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":713,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":711,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":714,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1004,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":712,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"business":{"id":720,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"createDate":{"id":716,"type":"Date","cardinality":"One","final":false,"encrypted":false},"endDate":{"id":718,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"paymentInterval":{"id":719,"type":"Number","cardinality":"One","final":false,"encrypted":false},"paymentMonths":{"id":717,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"items":{"id":721,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"BookingItem","dependency":null}},"app":"sys","version":"73"}}), + "BookingItem": () => Promise.resolve({"_TypeModel":{"name":"BookingItem","since":9,"type":"AGGREGATED_TYPE","id":700,"rootId":"A3N5cwACvA","versioned":false,"encrypted":false,"values":{"_id":{"id":701,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"currentCount":{"id":703,"type":"Number","cardinality":"One","final":false,"encrypted":false},"currentInvoicedCount":{"id":706,"type":"Number","cardinality":"One","final":false,"encrypted":false},"featureType":{"id":702,"type":"Number","cardinality":"One","final":false,"encrypted":false},"maxCount":{"id":704,"type":"Number","cardinality":"One","final":false,"encrypted":false},"price":{"id":707,"type":"Number","cardinality":"One","final":false,"encrypted":false},"priceType":{"id":708,"type":"Number","cardinality":"One","final":false,"encrypted":false},"totalInvoicedCount":{"id":705,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "BookingServiceData": () => Promise.resolve({"_TypeModel":{"name":"BookingServiceData","since":18,"type":"DATA_TRANSFER_TYPE","id":1061,"rootId":"A3N5cwAEJQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1062,"type":"Number","cardinality":"One","final":false,"encrypted":false},"amount":{"id":1064,"type":"Number","cardinality":"One","final":false,"encrypted":false},"date":{"id":1065,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"featureType":{"id":1063,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "BookingsRef": () => Promise.resolve({"_TypeModel":{"name":"BookingsRef","since":9,"type":"AGGREGATED_TYPE","id":722,"rootId":"A3N5cwAC0g","versioned":false,"encrypted":false,"values":{"_id":{"id":723,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":724,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Booking","dependency":null}},"app":"sys","version":"73"}}), + "BootstrapFeature": () => Promise.resolve({"_TypeModel":{"name":"BootstrapFeature","since":24,"type":"AGGREGATED_TYPE","id":1249,"rootId":"A3N5cwAE4Q","versioned":false,"encrypted":false,"values":{"_id":{"id":1250,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"feature":{"id":1309,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "Braintree3ds2Request": () => Promise.resolve({"_TypeModel":{"name":"Braintree3ds2Request","since":66,"type":"AGGREGATED_TYPE","id":1828,"rootId":"A3N5cwAHJA","versioned":false,"encrypted":false,"values":{"_id":{"id":1829,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bin":{"id":1832,"type":"String","cardinality":"One","final":false,"encrypted":false},"clientToken":{"id":1830,"type":"String","cardinality":"One","final":false,"encrypted":false},"nonce":{"id":1831,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "Braintree3ds2Response": () => Promise.resolve({"_TypeModel":{"name":"Braintree3ds2Response","since":66,"type":"AGGREGATED_TYPE","id":1833,"rootId":"A3N5cwAHKQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1834,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"clientToken":{"id":1835,"type":"String","cardinality":"One","final":false,"encrypted":false},"nonce":{"id":1836,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "BrandingDomainData": () => Promise.resolve({"_TypeModel":{"name":"BrandingDomainData","since":22,"type":"DATA_TRANSFER_TYPE","id":1149,"rootId":"A3N5cwAEfQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1150,"type":"Number","cardinality":"One","final":false,"encrypted":false},"domain":{"id":1151,"type":"String","cardinality":"One","final":true,"encrypted":false},"sessionEncPemCertificateChain":{"id":1152,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"sessionEncPemPrivateKey":{"id":1153,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"systemAdminPubEncSessionKey":{"id":1154,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "BrandingDomainDeleteData": () => Promise.resolve({"_TypeModel":{"name":"BrandingDomainDeleteData","since":22,"type":"DATA_TRANSFER_TYPE","id":1155,"rootId":"A3N5cwAEgw","versioned":false,"encrypted":false,"values":{"_format":{"id":1156,"type":"Number","cardinality":"One","final":false,"encrypted":false},"domain":{"id":1157,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "BrandingDomainGetReturn": () => Promise.resolve({"_TypeModel":{"name":"BrandingDomainGetReturn","since":56,"type":"DATA_TRANSFER_TYPE","id":1723,"rootId":"A3N5cwAGuw","versioned":false,"encrypted":false,"values":{"_format":{"id":1724,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"certificateInfo":{"id":1725,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CertificateInfo","dependency":null}},"app":"sys","version":"73"}}), + "Bucket": () => Promise.resolve({"_TypeModel":{"name":"Bucket","since":1,"type":"AGGREGATED_TYPE","id":129,"rootId":"A3N5cwAAgQ","versioned":false,"encrypted":false,"values":{"_id":{"id":130,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"bucketPermissions":{"id":131,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"BucketPermission","dependency":null}},"app":"sys","version":"73"}}), + "BucketPermission": () => Promise.resolve({"_TypeModel":{"name":"BucketPermission","since":1,"type":"LIST_ELEMENT_TYPE","id":118,"rootId":"A3N5cwB2","versioned":false,"encrypted":false,"values":{"_format":{"id":122,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":120,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1000,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":121,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"ownerEncBucketKey":{"id":1001,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"pubEncBucketKey":{"id":125,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"pubKeyVersion":{"id":126,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"symEncBucketKey":{"id":124,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"type":{"id":123,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":128,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "CalendarEventRef": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventRef","since":48,"type":"AGGREGATED_TYPE","id":1532,"rootId":"A3N5cwAF_A","versioned":false,"encrypted":false,"values":{"_id":{"id":1533,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"elementId":{"id":1534,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"listId":{"id":1535,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "CertificateInfo": () => Promise.resolve({"_TypeModel":{"name":"CertificateInfo","since":44,"type":"AGGREGATED_TYPE","id":1500,"rootId":"A3N5cwAF3A","versioned":false,"encrypted":false,"values":{"_id":{"id":1501,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"expiryDate":{"id":1502,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"state":{"id":1503,"type":"Number","cardinality":"One","final":true,"encrypted":false},"type":{"id":1504,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"certificate":{"id":1505,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"SslCertificate","dependency":null}},"app":"sys","version":"73"}}), + "Challenge": () => Promise.resolve({"_TypeModel":{"name":"Challenge","since":23,"type":"AGGREGATED_TYPE","id":1187,"rootId":"A3N5cwAEow","versioned":false,"encrypted":false,"values":{"_id":{"id":1188,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"type":{"id":1189,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"otp":{"id":1247,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"OtpChallenge","dependency":null},"u2f":{"id":1190,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"U2fChallenge","dependency":null}},"app":"sys","version":"73"}}), + "ChangePasswordData": () => Promise.resolve({"_TypeModel":{"name":"ChangePasswordData","since":1,"type":"DATA_TRANSFER_TYPE","id":534,"rootId":"A3N5cwACFg","versioned":false,"encrypted":false,"values":{"_format":{"id":535,"type":"Number","cardinality":"One","final":false,"encrypted":false},"code":{"id":539,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"oldVerifier":{"id":1240,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"pwEncUserGroupKey":{"id":538,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"recoverCodeVerifier":{"id":1418,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"salt":{"id":537,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":536,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "Chat": () => Promise.resolve({"_TypeModel":{"name":"Chat","since":1,"type":"AGGREGATED_TYPE","id":457,"rootId":"A3N5cwAByQ","versioned":false,"encrypted":false,"values":{"_id":{"id":458,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"recipient":{"id":460,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"sender":{"id":459,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"text":{"id":461,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "CloseSessionServicePost": () => Promise.resolve({"_TypeModel":{"name":"CloseSessionServicePost","since":50,"type":"DATA_TRANSFER_TYPE","id":1595,"rootId":"A3N5cwAGOw","versioned":false,"encrypted":false,"values":{"_format":{"id":1596,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accessToken":{"id":1597,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"sessionId":{"id":1598,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Session","dependency":null}},"app":"sys","version":"73"}}), + "CreateCustomerServerPropertiesData": () => Promise.resolve({"_TypeModel":{"name":"CreateCustomerServerPropertiesData","since":13,"type":"DATA_TRANSFER_TYPE","id":961,"rootId":"A3N5cwADwQ","versioned":false,"encrypted":false,"values":{"_format":{"id":962,"type":"Number","cardinality":"One","final":false,"encrypted":false},"adminGroupEncSessionKey":{"id":963,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "CreateCustomerServerPropertiesReturn": () => Promise.resolve({"_TypeModel":{"name":"CreateCustomerServerPropertiesReturn","since":13,"type":"DATA_TRANSFER_TYPE","id":964,"rootId":"A3N5cwADxA","versioned":false,"encrypted":false,"values":{"_format":{"id":965,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"id":{"id":966,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"CustomerServerProperties","dependency":null}},"app":"sys","version":"73"}}), + "CreateGroupData": () => Promise.resolve({"_TypeModel":{"name":"CreateGroupData","since":1,"type":"AGGREGATED_TYPE","id":356,"rootId":"A3N5cwABZA","versioned":false,"encrypted":false,"values":{"_id":{"id":357,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"adminEncGKey":{"id":363,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncUserGroupInfoSessionKey":{"id":1040,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"encryptedName":{"id":358,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"listEncSessionKey":{"id":364,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":359,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"pubKey":{"id":360,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"symEncGKey":{"id":362,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"symEncPrivKey":{"id":361,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "CreateGroupListData": () => Promise.resolve({"_TypeModel":{"name":"CreateGroupListData","since":1,"type":"AGGREGATED_TYPE","id":365,"rootId":"A3N5cwABbQ","versioned":false,"encrypted":false,"values":{"_id":{"id":366,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"adminEncGroupInfoListKey":{"id":368,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncGroupInfoListKey":{"id":367,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"createGroupData":{"id":369,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CreateGroupData","dependency":null}},"app":"sys","version":"73"}}), + "CreateSessionData": () => Promise.resolve({"_TypeModel":{"name":"CreateSessionData","since":23,"type":"DATA_TRANSFER_TYPE","id":1211,"rootId":"A3N5cwAEuw","versioned":false,"encrypted":false,"values":{"_format":{"id":1212,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accessKey":{"id":1216,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"authToken":{"id":1217,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"authVerifier":{"id":1214,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"clientIdentifier":{"id":1215,"type":"String","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":1213,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"recoverCodeVerifier":{"id":1417,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"user":{"id":1218,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "CreateSessionReturn": () => Promise.resolve({"_TypeModel":{"name":"CreateSessionReturn","since":23,"type":"DATA_TRANSFER_TYPE","id":1219,"rootId":"A3N5cwAEww","versioned":false,"encrypted":false,"values":{"_format":{"id":1220,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accessToken":{"id":1221,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"challenges":{"id":1222,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"Challenge","dependency":null},"user":{"id":1223,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "CreditCard": () => Promise.resolve({"_TypeModel":{"name":"CreditCard","since":30,"type":"AGGREGATED_TYPE","id":1313,"rootId":"A3N5cwAFIQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1314,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"cardHolderName":{"id":1315,"type":"String","cardinality":"One","final":false,"encrypted":true},"cvv":{"id":1317,"type":"String","cardinality":"One","final":false,"encrypted":true},"expirationMonth":{"id":1318,"type":"String","cardinality":"One","final":false,"encrypted":true},"expirationYear":{"id":1319,"type":"String","cardinality":"One","final":false,"encrypted":true},"number":{"id":1316,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), + "CustomDomainCheckData": () => Promise.resolve({"_TypeModel":{"name":"CustomDomainCheckData","since":49,"type":"DATA_TRANSFER_TYPE","id":1586,"rootId":"A3N5cwAGMg","versioned":false,"encrypted":false,"values":{"_format":{"id":1587,"type":"Number","cardinality":"One","final":false,"encrypted":false},"domain":{"id":1588,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "CustomDomainCheckReturn": () => Promise.resolve({"_TypeModel":{"name":"CustomDomainCheckReturn","since":49,"type":"DATA_TRANSFER_TYPE","id":1589,"rootId":"A3N5cwAGNQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1590,"type":"Number","cardinality":"One","final":false,"encrypted":false},"checkResult":{"id":1591,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"invalidRecords":{"id":1593,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"DnsRecord","dependency":null},"missingRecords":{"id":1592,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"DnsRecord","dependency":null},"requiredRecords":{"id":1758,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"DnsRecord","dependency":null}},"app":"sys","version":"73"}}), + "CustomDomainData": () => Promise.resolve({"_TypeModel":{"name":"CustomDomainData","since":9,"type":"DATA_TRANSFER_TYPE","id":735,"rootId":"A3N5cwAC3w","versioned":false,"encrypted":false,"values":{"_format":{"id":736,"type":"Number","cardinality":"One","final":false,"encrypted":false},"domain":{"id":737,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"catchAllMailGroup":{"id":1045,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "CustomDomainReturn": () => Promise.resolve({"_TypeModel":{"name":"CustomDomainReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":731,"rootId":"A3N5cwAC2w","versioned":false,"encrypted":false,"values":{"_format":{"id":732,"type":"Number","cardinality":"One","final":false,"encrypted":false},"validationResult":{"id":733,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"invalidDnsRecords":{"id":734,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"StringWrapper","dependency":null}},"app":"sys","version":"73"}}), + "Customer": () => Promise.resolve({"_TypeModel":{"name":"Customer","since":1,"type":"ELEMENT_TYPE","id":31,"rootId":"A3N5cwAf","versioned":false,"encrypted":false,"values":{"_format":{"id":35,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":33,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":991,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":34,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"approvalStatus":{"id":926,"type":"Number","cardinality":"One","final":false,"encrypted":false},"businessUse":{"id":1754,"type":"Boolean","cardinality":"ZeroOrOne","final":false,"encrypted":false},"canceledPremiumAccount":{"id":902,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"orderProcessingAgreementNeeded":{"id":1347,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"type":{"id":36,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"adminGroup":{"id":37,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null},"adminGroups":{"id":39,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null},"auditLog":{"id":1161,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"AuditLogRef","dependency":null},"contactFormUserAreaGroups":{"id":1160,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAreaGroups","dependency":null},"contactFormUserGroups":{"id":1159,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAreaGroups","dependency":null},"customerGroup":{"id":38,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null},"customerGroups":{"id":40,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null},"customerInfo":{"id":160,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"CustomerInfo","dependency":null},"customizations":{"id":1256,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"Feature","dependency":null},"orderProcessingAgreement":{"id":1348,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"OrderProcessingAgreement","dependency":null},"properties":{"id":662,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"CustomerProperties","dependency":null},"rejectedSenders":{"id":1750,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"RejectedSendersRef","dependency":null},"serverProperties":{"id":960,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"CustomerServerProperties","dependency":null},"teamGroups":{"id":42,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null},"userAreaGroups":{"id":992,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAreaGroups","dependency":null},"userGroups":{"id":41,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null},"whitelabelChildren":{"id":1277,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"WhitelabelChildrenRef","dependency":null},"whitelabelParent":{"id":1276,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"WhitelabelParent","dependency":null}},"app":"sys","version":"73"}}), + "CustomerData": () => Promise.resolve({"_TypeModel":{"name":"CustomerData","since":1,"type":"DATA_TRANSFER_TYPE","id":374,"rootId":"A3N5cwABdg","versioned":false,"encrypted":false,"values":{"_format":{"id":375,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accountingInfoBucketEncAccountingInfoSessionKey":{"id":385,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"adminEncAccountingInfoSessionKey":{"id":383,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":376,"type":"String","cardinality":"One","final":false,"encrypted":false},"company":{"id":377,"type":"String","cardinality":"One","final":false,"encrypted":false},"date":{"id":877,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"domain":{"id":378,"type":"String","cardinality":"One","final":false,"encrypted":false},"salt":{"id":388,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"symEncAccountGroupKey":{"id":390,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"systemCustomerPubEncAccountingInfoBucketKey":{"id":386,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"systemCustomerPubKeyVersion":{"id":387,"type":"Number","cardinality":"One","final":false,"encrypted":false},"userEncClientKey":{"id":384,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":389,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminGroupList":{"id":379,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CreateGroupListData","dependency":null},"customerGroupList":{"id":381,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CreateGroupListData","dependency":null},"teamGroupList":{"id":382,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CreateGroupListData","dependency":null},"userGroupList":{"id":380,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CreateGroupListData","dependency":null}},"app":"sys","version":"73"}}), + "CustomerInfo": () => Promise.resolve({"_TypeModel":{"name":"CustomerInfo","since":1,"type":"LIST_ELEMENT_TYPE","id":148,"rootId":"A3N5cwAAlA","versioned":false,"encrypted":false,"values":{"_format":{"id":152,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":150,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1011,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":151,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"activationTime":{"id":157,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"company":{"id":153,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"creationTime":{"id":155,"type":"Date","cardinality":"One","final":true,"encrypted":false},"deletionReason":{"id":640,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"deletionTime":{"id":639,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"domain":{"id":154,"type":"String","cardinality":"One","final":true,"encrypted":false},"erased":{"id":1381,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"includedEmailAliases":{"id":1067,"type":"Number","cardinality":"One","final":false,"encrypted":false},"includedStorageCapacity":{"id":1068,"type":"Number","cardinality":"One","final":false,"encrypted":false},"promotionEmailAliases":{"id":976,"type":"Number","cardinality":"One","final":false,"encrypted":false},"promotionStorageCapacity":{"id":650,"type":"Number","cardinality":"One","final":false,"encrypted":false},"registrationMailAddress":{"id":597,"type":"String","cardinality":"One","final":true,"encrypted":false},"source":{"id":725,"type":"String","cardinality":"One","final":false,"encrypted":false},"testEndTime":{"id":156,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"usedSharedEmailAliases":{"id":977,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"accountingInfo":{"id":159,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"AccountingInfo","dependency":null},"bookings":{"id":727,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"BookingsRef","dependency":null},"customer":{"id":158,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer","dependency":null},"domainInfos":{"id":726,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DomainInfo","dependency":null},"giftCards":{"id":1794,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"GiftCardsRef","dependency":null},"takeoverCustomer":{"id":1076,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Customer","dependency":null}},"app":"sys","version":"73"}}), + "CustomerInfoReturn": () => Promise.resolve({"_TypeModel":{"name":"CustomerInfoReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":550,"rootId":"A3N5cwACJg","versioned":false,"encrypted":false,"values":{"_format":{"id":551,"type":"Number","cardinality":"One","final":false,"encrypted":false},"sendMailDisabled":{"id":552,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "CustomerProperties": () => Promise.resolve({"_TypeModel":{"name":"CustomerProperties","since":6,"type":"ELEMENT_TYPE","id":656,"rootId":"A3N5cwACkA","versioned":false,"encrypted":false,"values":{"_format":{"id":660,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":658,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":985,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":659,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"externalUserWelcomeMessage":{"id":661,"type":"String","cardinality":"One","final":false,"encrypted":false},"lastUpgradeReminder":{"id":975,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"bigLogo":{"id":923,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"File","dependency":null},"notificationMailTemplates":{"id":1522,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"NotificationMailTemplate","dependency":null},"smallLogo":{"id":922,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"File","dependency":null}},"app":"sys","version":"73"}}), + "CustomerReturn": () => Promise.resolve({"_TypeModel":{"name":"CustomerReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":370,"rootId":"A3N5cwABcg","versioned":false,"encrypted":false,"values":{"_format":{"id":371,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminUser":{"id":372,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User","dependency":null},"adminUserGroup":{"id":373,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "CustomerServerProperties": () => Promise.resolve({"_TypeModel":{"name":"CustomerServerProperties","since":13,"type":"ELEMENT_TYPE","id":954,"rootId":"A3N5cwADug","versioned":false,"encrypted":true,"values":{"_format":{"id":958,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":956,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":987,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":986,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":957,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"requirePasswordUpdateAfterReset":{"id":1100,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"saveEncryptedIpAddressInSession":{"id":1406,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"whitelabelCode":{"id":1278,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"emailSenderList":{"id":959,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"EmailSenderListElement","dependency":null},"whitelabelRegistrationDomains":{"id":1279,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"StringWrapper","dependency":null},"whitelistedDomains":{"id":1099,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"DomainsRef","dependency":null}},"app":"sys","version":"73"}}), + "DebitServicePutData": () => Promise.resolve({"_TypeModel":{"name":"DebitServicePutData","since":18,"type":"DATA_TRANSFER_TYPE","id":1041,"rootId":"A3N5cwAEEQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1042,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"invoice":{"id":1043,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"LegacyInvoice","dependency":null}},"app":"sys","version":"73"}}), + "DeleteCustomerData": () => Promise.resolve({"_TypeModel":{"name":"DeleteCustomerData","since":5,"type":"DATA_TRANSFER_TYPE","id":641,"rootId":"A3N5cwACgQ","versioned":false,"encrypted":false,"values":{"_format":{"id":642,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authVerifier":{"id":1325,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"reason":{"id":644,"type":"String","cardinality":"One","final":false,"encrypted":false},"takeoverMailAddress":{"id":1077,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"undelete":{"id":643,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"customer":{"id":645,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Customer","dependency":null}},"app":"sys","version":"73"}}), + "DnsRecord": () => Promise.resolve({"_TypeModel":{"name":"DnsRecord","since":49,"type":"AGGREGATED_TYPE","id":1581,"rootId":"A3N5cwAGLQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1582,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"subdomain":{"id":1583,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"type":{"id":1584,"type":"Number","cardinality":"One","final":false,"encrypted":false},"value":{"id":1585,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "DomainInfo": () => Promise.resolve({"_TypeModel":{"name":"DomainInfo","since":9,"type":"AGGREGATED_TYPE","id":696,"rootId":"A3N5cwACuA","versioned":false,"encrypted":false,"values":{"_id":{"id":697,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"domain":{"id":698,"type":"String","cardinality":"One","final":true,"encrypted":false},"validatedMxRecord":{"id":699,"type":"Boolean","cardinality":"One","final":true,"encrypted":false}},"associations":{"catchAllMailGroup":{"id":1044,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group","dependency":null},"whitelabelConfig":{"id":1136,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"WhitelabelConfig","dependency":null}},"app":"sys","version":"73"}}), + "DomainMailAddressAvailabilityData": () => Promise.resolve({"_TypeModel":{"name":"DomainMailAddressAvailabilityData","since":2,"type":"DATA_TRANSFER_TYPE","id":599,"rootId":"A3N5cwACVw","versioned":false,"encrypted":false,"values":{"_format":{"id":600,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":601,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "DomainMailAddressAvailabilityReturn": () => Promise.resolve({"_TypeModel":{"name":"DomainMailAddressAvailabilityReturn","since":2,"type":"DATA_TRANSFER_TYPE","id":602,"rootId":"A3N5cwACWg","versioned":false,"encrypted":false,"values":{"_format":{"id":603,"type":"Number","cardinality":"One","final":false,"encrypted":false},"available":{"id":604,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "DomainsRef": () => Promise.resolve({"_TypeModel":{"name":"DomainsRef","since":21,"type":"AGGREGATED_TYPE","id":1096,"rootId":"A3N5cwAESA","versioned":false,"encrypted":false,"values":{"_id":{"id":1097,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1098,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Domain","dependency":null}},"app":"sys","version":"73"}}), + "EmailSenderListElement": () => Promise.resolve({"_TypeModel":{"name":"EmailSenderListElement","since":13,"type":"AGGREGATED_TYPE","id":949,"rootId":"A3N5cwADtQ","versioned":false,"encrypted":false,"values":{"_id":{"id":950,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"field":{"id":1705,"type":"Number","cardinality":"One","final":false,"encrypted":false},"hashedValue":{"id":951,"type":"String","cardinality":"One","final":false,"encrypted":false},"type":{"id":953,"type":"Number","cardinality":"One","final":false,"encrypted":false},"value":{"id":952,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), + "EntityEventBatch": () => Promise.resolve({"_TypeModel":{"name":"EntityEventBatch","since":20,"type":"LIST_ELEMENT_TYPE","id":1079,"rootId":"A3N5cwAENw","versioned":false,"encrypted":false,"values":{"_format":{"id":1083,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1081,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1084,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1082,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"events":{"id":1085,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"EntityUpdate","dependency":null}},"app":"sys","version":"73"}}), + "EntityUpdate": () => Promise.resolve({"_TypeModel":{"name":"EntityUpdate","since":1,"type":"AGGREGATED_TYPE","id":462,"rootId":"A3N5cwABzg","versioned":false,"encrypted":false,"values":{"_id":{"id":463,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"application":{"id":464,"type":"String","cardinality":"One","final":false,"encrypted":false},"instanceId":{"id":467,"type":"String","cardinality":"One","final":false,"encrypted":false},"instanceListId":{"id":466,"type":"String","cardinality":"One","final":false,"encrypted":false},"operation":{"id":624,"type":"Number","cardinality":"One","final":false,"encrypted":false},"type":{"id":465,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "Exception": () => Promise.resolve({"_TypeModel":{"name":"Exception","since":1,"type":"AGGREGATED_TYPE","id":468,"rootId":"A3N5cwAB1A","versioned":false,"encrypted":false,"values":{"_id":{"id":469,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"msg":{"id":471,"type":"String","cardinality":"One","final":false,"encrypted":false},"type":{"id":470,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "ExternalPropertiesReturn": () => Promise.resolve({"_TypeModel":{"name":"ExternalPropertiesReturn","since":6,"type":"DATA_TRANSFER_TYPE","id":663,"rootId":"A3N5cwAClw","versioned":false,"encrypted":false,"values":{"_format":{"id":664,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accountType":{"id":666,"type":"Number","cardinality":"One","final":false,"encrypted":false},"message":{"id":665,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"bigLogo":{"id":925,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"File","dependency":null},"smallLogo":{"id":924,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"File","dependency":null}},"app":"sys","version":"73"}}), + "ExternalUserReference": () => Promise.resolve({"_TypeModel":{"name":"ExternalUserReference","since":1,"type":"LIST_ELEMENT_TYPE","id":103,"rootId":"A3N5cwBn","versioned":false,"encrypted":false,"values":{"_format":{"id":107,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":105,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":997,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":106,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"user":{"id":108,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User","dependency":null},"userGroup":{"id":109,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "Feature": () => Promise.resolve({"_TypeModel":{"name":"Feature","since":25,"type":"AGGREGATED_TYPE","id":1253,"rootId":"A3N5cwAE5Q","versioned":false,"encrypted":false,"values":{"_id":{"id":1254,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"feature":{"id":1255,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "File": () => Promise.resolve({"_TypeModel":{"name":"File","since":11,"type":"AGGREGATED_TYPE","id":917,"rootId":"A3N5cwADlQ","versioned":false,"encrypted":false,"values":{"_id":{"id":918,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"data":{"id":921,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mimeType":{"id":920,"type":"String","cardinality":"One","final":false,"encrypted":false},"name":{"id":919,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "GeneratedIdWrapper": () => Promise.resolve({"_TypeModel":{"name":"GeneratedIdWrapper","since":32,"type":"AGGREGATED_TYPE","id":1349,"rootId":"A3N5cwAFRQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1350,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"value":{"id":1351,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "GiftCard": () => Promise.resolve({"_TypeModel":{"name":"GiftCard","since":65,"type":"LIST_ELEMENT_TYPE","id":1769,"rootId":"A3N5cwAG6Q","versioned":false,"encrypted":true,"values":{"_format":{"id":1773,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1771,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1775,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1774,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1772,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"country":{"id":1780,"type":"String","cardinality":"One","final":true,"encrypted":false},"message":{"id":1778,"type":"String","cardinality":"One","final":false,"encrypted":true},"orderDate":{"id":1779,"type":"Date","cardinality":"One","final":true,"encrypted":false},"usable":{"id":1776,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"value":{"id":1777,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "GiftCardCreateData": () => Promise.resolve({"_TypeModel":{"name":"GiftCardCreateData","since":65,"type":"DATA_TRANSFER_TYPE","id":1803,"rootId":"A3N5cwAHCw","versioned":false,"encrypted":true,"values":{"_format":{"id":1804,"type":"Number","cardinality":"One","final":false,"encrypted":false},"country":{"id":1808,"type":"String","cardinality":"One","final":false,"encrypted":false},"keyHash":{"id":1809,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"message":{"id":1805,"type":"String","cardinality":"One","final":false,"encrypted":true},"ownerEncSessionKey":{"id":1806,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"value":{"id":1807,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "GiftCardCreateReturn": () => Promise.resolve({"_TypeModel":{"name":"GiftCardCreateReturn","since":65,"type":"DATA_TRANSFER_TYPE","id":1813,"rootId":"A3N5cwAHFQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1814,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"giftCard":{"id":1815,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCard","dependency":null}},"app":"sys","version":"73"}}), + "GiftCardDeleteData": () => Promise.resolve({"_TypeModel":{"name":"GiftCardDeleteData","since":65,"type":"DATA_TRANSFER_TYPE","id":1810,"rootId":"A3N5cwAHEg","versioned":false,"encrypted":false,"values":{"_format":{"id":1811,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"giftCard":{"id":1812,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCard","dependency":null}},"app":"sys","version":"73"}}), + "GiftCardGetReturn": () => Promise.resolve({"_TypeModel":{"name":"GiftCardGetReturn","since":65,"type":"DATA_TRANSFER_TYPE","id":1798,"rootId":"A3N5cwAHBg","versioned":false,"encrypted":false,"values":{"_format":{"id":1799,"type":"Number","cardinality":"One","final":false,"encrypted":false},"maxPerPeriod":{"id":1800,"type":"Number","cardinality":"One","final":false,"encrypted":false},"period":{"id":1801,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"options":{"id":1802,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"GiftCardOption","dependency":null}},"app":"sys","version":"73"}}), + "GiftCardOption": () => Promise.resolve({"_TypeModel":{"name":"GiftCardOption","since":65,"type":"AGGREGATED_TYPE","id":1795,"rootId":"A3N5cwAHAw","versioned":false,"encrypted":false,"values":{"_id":{"id":1796,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"value":{"id":1797,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "GiftCardRedeemData": () => Promise.resolve({"_TypeModel":{"name":"GiftCardRedeemData","since":65,"type":"DATA_TRANSFER_TYPE","id":1817,"rootId":"A3N5cwAHGQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1818,"type":"Number","cardinality":"One","final":false,"encrypted":false},"keyHash":{"id":1820,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"giftCardInfo":{"id":1819,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCardInfo","dependency":null}},"app":"sys","version":"73"}}), + "GiftCardRedeemGetReturn": () => Promise.resolve({"_TypeModel":{"name":"GiftCardRedeemGetReturn","since":65,"type":"DATA_TRANSFER_TYPE","id":1821,"rootId":"A3N5cwAHHQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1822,"type":"Number","cardinality":"One","final":false,"encrypted":false},"country":{"id":1826,"type":"String","cardinality":"One","final":true,"encrypted":false},"message":{"id":1824,"type":"String","cardinality":"One","final":true,"encrypted":true},"value":{"id":1825,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"giftCard":{"id":1823,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCard","dependency":null}},"app":"sys","version":"73"}}), + "GiftCardsRef": () => Promise.resolve({"_TypeModel":{"name":"GiftCardsRef","since":65,"type":"AGGREGATED_TYPE","id":1791,"rootId":"A3N5cwAG_w","versioned":false,"encrypted":false,"values":{"_id":{"id":1792,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1793,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GiftCard","dependency":null}},"app":"sys","version":"73"}}), + "Group": () => Promise.resolve({"_TypeModel":{"name":"Group","since":1,"type":"ELEMENT_TYPE","id":5,"rootId":"A3N5cwAF","versioned":false,"encrypted":false,"values":{"_format":{"id":9,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":7,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":981,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":8,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"adminGroupEncGKey":{"id":11,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"enabled":{"id":12,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"external":{"id":982,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"type":{"id":10,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"admin":{"id":224,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group","dependency":null},"administratedGroups":{"id":1306,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"AdministratedGroupsRef","dependency":null},"archives":{"id":1881,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"ArchiveType","dependency":null},"customer":{"id":226,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Customer","dependency":null},"groupInfo":{"id":227,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null},"invitations":{"id":228,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"SentGroupInvitation","dependency":null},"keys":{"id":13,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"KeyPair","dependency":null},"members":{"id":229,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupMember","dependency":null},"user":{"id":225,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "GroupInfo": () => Promise.resolve({"_TypeModel":{"name":"GroupInfo","since":1,"type":"LIST_ELEMENT_TYPE","id":14,"rootId":"A3N5cwAO","versioned":false,"encrypted":true,"values":{"_format":{"id":18,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":16,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_listEncSessionKey":{"id":19,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"_ownerEncSessionKey":{"id":984,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":983,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":17,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"created":{"id":23,"type":"Date","cardinality":"One","final":true,"encrypted":false},"deleted":{"id":24,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"groupType":{"id":1286,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"mailAddress":{"id":22,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"name":{"id":21,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"group":{"id":20,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null},"localAdmin":{"id":1287,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group","dependency":null},"mailAddressAliases":{"id":687,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"MailAddressAlias","dependency":null}},"app":"sys","version":"73"}}), + "GroupMember": () => Promise.resolve({"_TypeModel":{"name":"GroupMember","since":1,"type":"LIST_ELEMENT_TYPE","id":216,"rootId":"A3N5cwAA2A","versioned":false,"encrypted":false,"values":{"_format":{"id":220,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":218,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1021,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":219,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"capability":{"id":1625,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"group":{"id":222,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null},"user":{"id":223,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User","dependency":null},"userGroupInfo":{"id":221,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null}},"app":"sys","version":"73"}}), + "GroupMembership": () => Promise.resolve({"_TypeModel":{"name":"GroupMembership","since":1,"type":"AGGREGATED_TYPE","id":25,"rootId":"A3N5cwAZ","versioned":false,"encrypted":false,"values":{"_id":{"id":26,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"admin":{"id":28,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"capability":{"id":1626,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"groupType":{"id":1030,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"symEncGKey":{"id":27,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"group":{"id":29,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null},"groupInfo":{"id":30,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null},"groupMember":{"id":230,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupMember","dependency":null}},"app":"sys","version":"73"}}), + "GroupRoot": () => Promise.resolve({"_TypeModel":{"name":"GroupRoot","since":1,"type":"ELEMENT_TYPE","id":110,"rootId":"A3N5cwBu","versioned":false,"encrypted":false,"values":{"_format":{"id":114,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":112,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":998,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":113,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"externalGroupInfos":{"id":116,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null},"externalUserAreaGroupInfos":{"id":999,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAreaGroups","dependency":null},"externalUserReferences":{"id":117,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"ExternalUserReference","dependency":null}},"app":"sys","version":"73"}}), + "Invoice": () => Promise.resolve({"_TypeModel":{"name":"Invoice","since":52,"type":"ELEMENT_TYPE","id":1650,"rootId":"A3N5cwAGcg","versioned":false,"encrypted":true,"values":{"_format":{"id":1654,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1652,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1656,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1655,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1653,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"address":{"id":1661,"type":"String","cardinality":"One","final":false,"encrypted":true},"adminUser":{"id":1668,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"business":{"id":1662,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"country":{"id":1660,"type":"String","cardinality":"One","final":true,"encrypted":true},"date":{"id":1658,"type":"Date","cardinality":"One","final":true,"encrypted":true},"grandTotal":{"id":1667,"type":"Number","cardinality":"One","final":true,"encrypted":true},"paymentMethod":{"id":1659,"type":"Number","cardinality":"One","final":false,"encrypted":true},"reason":{"id":1669,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"subTotal":{"id":1666,"type":"Number","cardinality":"One","final":true,"encrypted":true},"type":{"id":1657,"type":"Number","cardinality":"One","final":true,"encrypted":true},"vat":{"id":1665,"type":"Number","cardinality":"One","final":true,"encrypted":true},"vatIdNumber":{"id":1663,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"vatRate":{"id":1664,"type":"Number","cardinality":"One","final":true,"encrypted":true}},"associations":{"bookings":{"id":1672,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"Booking","dependency":null},"customer":{"id":1671,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer","dependency":null},"items":{"id":1670,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"InvoiceItem","dependency":null}},"app":"sys","version":"73"}}), + "InvoiceInfo": () => Promise.resolve({"_TypeModel":{"name":"InvoiceInfo","since":9,"type":"ELEMENT_TYPE","id":752,"rootId":"A3N5cwAC8A","versioned":false,"encrypted":false,"values":{"_format":{"id":756,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":754,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1008,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":755,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"extendedPeriodOfPaymentDays":{"id":1638,"type":"Number","cardinality":"One","final":false,"encrypted":false},"persistentPaymentPeriodExtension":{"id":1639,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"publishInvoices":{"id":759,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"reminderState":{"id":1637,"type":"Number","cardinality":"One","final":false,"encrypted":false},"specialPriceBrandingPerUser":{"id":1282,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceBusinessPerUser":{"id":1864,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceContactFormSingle":{"id":1284,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceSharedGroupSingle":{"id":1283,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceSharingPerUser":{"id":1627,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceUserSingle":{"id":758,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"specialPriceUserTotal":{"id":757,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"invoices":{"id":760,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"LegacyInvoice","dependency":null},"paymentErrorInfo":{"id":1640,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"PaymentErrorInfo","dependency":null}},"app":"sys","version":"73"}}), + "InvoiceItem": () => Promise.resolve({"_TypeModel":{"name":"InvoiceItem","since":52,"type":"AGGREGATED_TYPE","id":1641,"rootId":"A3N5cwAGaQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1642,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"amount":{"id":1643,"type":"Number","cardinality":"One","final":true,"encrypted":true},"endDate":{"id":1648,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":true},"singlePrice":{"id":1645,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":true},"singleType":{"id":1649,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"startDate":{"id":1647,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":true},"totalPrice":{"id":1646,"type":"Number","cardinality":"One","final":true,"encrypted":true},"type":{"id":1644,"type":"Number","cardinality":"One","final":true,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), + "KeyPair": () => Promise.resolve({"_TypeModel":{"name":"KeyPair","since":1,"type":"AGGREGATED_TYPE","id":0,"rootId":"A3N5cwAA","versioned":false,"encrypted":false,"values":{"_id":{"id":1,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"pubKey":{"id":2,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"symEncPrivKey":{"id":3,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"version":{"id":4,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "LocationServiceGetReturn": () => Promise.resolve({"_TypeModel":{"name":"LocationServiceGetReturn","since":30,"type":"DATA_TRANSFER_TYPE","id":1321,"rootId":"A3N5cwAFKQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1322,"type":"Number","cardinality":"One","final":false,"encrypted":false},"country":{"id":1323,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "Login": () => Promise.resolve({"_TypeModel":{"name":"Login","since":1,"type":"LIST_ELEMENT_TYPE","id":48,"rootId":"A3N5cwAw","versioned":false,"encrypted":false,"values":{"_format":{"id":52,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":50,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":993,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":51,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"time":{"id":53,"type":"Date","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "MailAddressAlias": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAlias","since":8,"type":"AGGREGATED_TYPE","id":684,"rootId":"A3N5cwACrA","versioned":false,"encrypted":false,"values":{"_id":{"id":685,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"enabled":{"id":784,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":686,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "MailAddressAliasServiceData": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAliasServiceData","since":8,"type":"DATA_TRANSFER_TYPE","id":688,"rootId":"A3N5cwACsA","versioned":false,"encrypted":false,"values":{"_format":{"id":689,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":690,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":691,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "MailAddressAliasServiceDataDelete": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAliasServiceDataDelete","since":9,"type":"DATA_TRANSFER_TYPE","id":785,"rootId":"A3N5cwADEQ","versioned":false,"encrypted":false,"values":{"_format":{"id":786,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":787,"type":"String","cardinality":"One","final":false,"encrypted":false},"restore":{"id":788,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":789,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "MailAddressAliasServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAliasServiceReturn","since":8,"type":"DATA_TRANSFER_TYPE","id":692,"rootId":"A3N5cwACtA","versioned":false,"encrypted":false,"values":{"_format":{"id":693,"type":"Number","cardinality":"One","final":false,"encrypted":false},"enabledAliases":{"id":1071,"type":"Number","cardinality":"One","final":false,"encrypted":false},"nbrOfFreeAliases":{"id":694,"type":"Number","cardinality":"One","final":false,"encrypted":false},"totalAliases":{"id":1069,"type":"Number","cardinality":"One","final":false,"encrypted":false},"usedAliases":{"id":1070,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "MailAddressAvailabilityData": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAvailabilityData","since":1,"type":"DATA_TRANSFER_TYPE","id":309,"rootId":"A3N5cwABNQ","versioned":false,"encrypted":false,"values":{"_format":{"id":310,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":311,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "MailAddressAvailabilityReturn": () => Promise.resolve({"_TypeModel":{"name":"MailAddressAvailabilityReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":312,"rootId":"A3N5cwABOA","versioned":false,"encrypted":false,"values":{"_format":{"id":313,"type":"Number","cardinality":"One","final":false,"encrypted":false},"available":{"id":314,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "MailAddressToGroup": () => Promise.resolve({"_TypeModel":{"name":"MailAddressToGroup","since":1,"type":"ELEMENT_TYPE","id":204,"rootId":"A3N5cwAAzA","versioned":false,"encrypted":false,"values":{"_format":{"id":208,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":206,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1019,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":207,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"internalGroup":{"id":209,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "MembershipAddData": () => Promise.resolve({"_TypeModel":{"name":"MembershipAddData","since":1,"type":"DATA_TRANSFER_TYPE","id":505,"rootId":"A3N5cwAB-Q","versioned":false,"encrypted":false,"values":{"_format":{"id":506,"type":"Number","cardinality":"One","final":false,"encrypted":false},"symEncGKey":{"id":507,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":509,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null},"user":{"id":508,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "MembershipRemoveData": () => Promise.resolve({"_TypeModel":{"name":"MembershipRemoveData","since":9,"type":"DATA_TRANSFER_TYPE","id":867,"rootId":"A3N5cwADYw","versioned":false,"encrypted":false,"values":{"_format":{"id":868,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":870,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null},"user":{"id":869,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "MissedNotification": () => Promise.resolve({"_TypeModel":{"name":"MissedNotification","since":53,"type":"ELEMENT_TYPE","id":1693,"rootId":"A3N5cwAGnQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1697,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1695,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1699,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1698,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1696,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"changeTime":{"id":1701,"type":"Date","cardinality":"One","final":true,"encrypted":false},"confirmationId":{"id":1700,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"lastProcessedNotificationId":{"id":1722,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"alarmNotifications":{"id":1703,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"AlarmNotification","dependency":null},"notificationInfos":{"id":1702,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"NotificationInfo","dependency":null}},"app":"sys","version":"73"}}), + "NotificationInfo": () => Promise.resolve({"_TypeModel":{"name":"NotificationInfo","since":32,"type":"AGGREGATED_TYPE","id":1364,"rootId":"A3N5cwAFVA","versioned":false,"encrypted":false,"values":{"_id":{"id":1365,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"counter":{"id":1367,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":1366,"type":"String","cardinality":"One","final":false,"encrypted":false},"userId":{"id":1368,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "NotificationMailTemplate": () => Promise.resolve({"_TypeModel":{"name":"NotificationMailTemplate","since":45,"type":"AGGREGATED_TYPE","id":1517,"rootId":"A3N5cwAF7Q","versioned":false,"encrypted":false,"values":{"_id":{"id":1518,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"body":{"id":1520,"type":"String","cardinality":"One","final":false,"encrypted":false},"language":{"id":1519,"type":"String","cardinality":"One","final":false,"encrypted":false},"subject":{"id":1521,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "NotificationSessionKey": () => Promise.resolve({"_TypeModel":{"name":"NotificationSessionKey","since":48,"type":"AGGREGATED_TYPE","id":1553,"rootId":"A3N5cwAGEQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1554,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"pushIdentifierSessionEncSessionKey":{"id":1556,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"pushIdentifier":{"id":1555,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"PushIdentifier","dependency":null}},"app":"sys","version":"73"}}), + "OrderProcessingAgreement": () => Promise.resolve({"_TypeModel":{"name":"OrderProcessingAgreement","since":31,"type":"LIST_ELEMENT_TYPE","id":1326,"rootId":"A3N5cwAFLg","versioned":false,"encrypted":true,"values":{"_format":{"id":1330,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1328,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1332,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1331,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1329,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"customerAddress":{"id":1334,"type":"String","cardinality":"One","final":false,"encrypted":true},"signatureDate":{"id":1335,"type":"Date","cardinality":"One","final":false,"encrypted":false},"version":{"id":1333,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"customer":{"id":1337,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer","dependency":null},"signerUserGroupInfo":{"id":1336,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"GroupInfo","dependency":null}},"app":"sys","version":"73"}}), + "OtpChallenge": () => Promise.resolve({"_TypeModel":{"name":"OtpChallenge","since":24,"type":"AGGREGATED_TYPE","id":1244,"rootId":"A3N5cwAE3A","versioned":false,"encrypted":false,"values":{"_id":{"id":1245,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"secondFactors":{"id":1246,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"SecondFactor","dependency":null}},"app":"sys","version":"73"}}), + "PaymentDataServiceGetData": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServiceGetData","since":67,"type":"DATA_TRANSFER_TYPE","id":1861,"rootId":"A3N5cwAHRQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1862,"type":"Number","cardinality":"One","final":false,"encrypted":false},"clientType":{"id":1863,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PaymentDataServiceGetReturn": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServiceGetReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":790,"rootId":"A3N5cwADFg","versioned":false,"encrypted":false,"values":{"_format":{"id":791,"type":"Number","cardinality":"One","final":false,"encrypted":false},"loginUrl":{"id":792,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PaymentDataServicePostData": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServicePostData","since":66,"type":"DATA_TRANSFER_TYPE","id":1837,"rootId":"A3N5cwAHLQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1838,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"braintree3dsResponse":{"id":1839,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"Braintree3ds2Response","dependency":null}},"app":"sys","version":"73"}}), + "PaymentDataServicePutData": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServicePutData","since":9,"type":"DATA_TRANSFER_TYPE","id":793,"rootId":"A3N5cwADGQ","versioned":false,"encrypted":true,"values":{"_format":{"id":794,"type":"Number","cardinality":"One","final":false,"encrypted":false},"business":{"id":795,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"confirmedCountry":{"id":804,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"invoiceAddress":{"id":797,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceCountry":{"id":798,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceName":{"id":796,"type":"String","cardinality":"One","final":false,"encrypted":true},"invoiceVatIdNo":{"id":799,"type":"String","cardinality":"One","final":false,"encrypted":true},"paymentInterval":{"id":802,"type":"Number","cardinality":"One","final":false,"encrypted":false},"paymentMethod":{"id":800,"type":"Number","cardinality":"One","final":false,"encrypted":true},"paymentMethodInfo":{"id":801,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"paymentToken":{"id":803,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true}},"associations":{"creditCard":{"id":1320,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CreditCard","dependency":null}},"app":"sys","version":"73"}}), + "PaymentDataServicePutReturn": () => Promise.resolve({"_TypeModel":{"name":"PaymentDataServicePutReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":805,"rootId":"A3N5cwADJQ","versioned":false,"encrypted":false,"values":{"_format":{"id":806,"type":"Number","cardinality":"One","final":false,"encrypted":false},"result":{"id":807,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"braintree3dsRequest":{"id":1840,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"Braintree3ds2Request","dependency":null}},"app":"sys","version":"73"}}), + "PaymentErrorInfo": () => Promise.resolve({"_TypeModel":{"name":"PaymentErrorInfo","since":52,"type":"AGGREGATED_TYPE","id":1632,"rootId":"A3N5cwAGYA","versioned":false,"encrypted":false,"values":{"_id":{"id":1633,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"errorCode":{"id":1635,"type":"String","cardinality":"One","final":true,"encrypted":false},"errorTime":{"id":1634,"type":"Date","cardinality":"One","final":true,"encrypted":false},"thirdPartyErrorId":{"id":1636,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PdfInvoiceServiceData": () => Promise.resolve({"_TypeModel":{"name":"PdfInvoiceServiceData","since":9,"type":"DATA_TRANSFER_TYPE","id":777,"rootId":"A3N5cwADCQ","versioned":false,"encrypted":false,"values":{"_format":{"id":778,"type":"Number","cardinality":"One","final":false,"encrypted":false},"invoiceNumber":{"id":1629,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"invoice":{"id":779,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"LegacyInvoice","dependency":null}},"app":"sys","version":"73"}}), + "PdfInvoiceServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"PdfInvoiceServiceReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":780,"rootId":"A3N5cwADDA","versioned":false,"encrypted":true,"values":{"_format":{"id":781,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_ownerGroup":{"id":1630,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerPublicEncSessionKey":{"id":1631,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"data":{"id":782,"type":"Bytes","cardinality":"One","final":true,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), + "Permission": () => Promise.resolve({"_TypeModel":{"name":"Permission","since":1,"type":"LIST_ELEMENT_TYPE","id":132,"rootId":"A3N5cwAAhA","versioned":false,"encrypted":false,"values":{"_format":{"id":136,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":134,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1003,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1002,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":135,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"bucketEncSessionKey":{"id":139,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"listElementApplication":{"id":1524,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"listElementTypeId":{"id":1523,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"ops":{"id":140,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"symEncSessionKey":{"id":138,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"type":{"id":137,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"bucket":{"id":142,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"Bucket","dependency":null},"group":{"id":141,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "PhoneNumber": () => Promise.resolve({"_TypeModel":{"name":"PhoneNumber","since":1,"type":"AGGREGATED_TYPE","id":63,"rootId":"A3N5cwA_","versioned":false,"encrypted":false,"values":{"_id":{"id":64,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"number":{"id":65,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PlanPrices": () => Promise.resolve({"_TypeModel":{"name":"PlanPrices","since":39,"type":"AGGREGATED_TYPE","id":1460,"rootId":"A3N5cwAFtA","versioned":false,"encrypted":false,"values":{"_id":{"id":1461,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"additionalUserPriceMonthly":{"id":1465,"type":"Number","cardinality":"One","final":false,"encrypted":false},"contactFormPriceMonthly":{"id":1466,"type":"Number","cardinality":"One","final":false,"encrypted":false},"firstYearDiscount":{"id":1464,"type":"Number","cardinality":"One","final":false,"encrypted":false},"includedAliases":{"id":1467,"type":"Number","cardinality":"One","final":false,"encrypted":false},"includedStorage":{"id":1468,"type":"Number","cardinality":"One","final":false,"encrypted":false},"monthlyPrice":{"id":1463,"type":"Number","cardinality":"One","final":false,"encrypted":false},"monthlyReferencePrice":{"id":1462,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PremiumFeatureData": () => Promise.resolve({"_TypeModel":{"name":"PremiumFeatureData","since":6,"type":"DATA_TRANSFER_TYPE","id":651,"rootId":"A3N5cwACiw","versioned":false,"encrypted":false,"values":{"_format":{"id":652,"type":"Number","cardinality":"One","final":false,"encrypted":false},"activationCode":{"id":654,"type":"String","cardinality":"One","final":false,"encrypted":false},"featureName":{"id":653,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PremiumFeatureReturn": () => Promise.resolve({"_TypeModel":{"name":"PremiumFeatureReturn","since":16,"type":"DATA_TRANSFER_TYPE","id":978,"rootId":"A3N5cwAD0g","versioned":false,"encrypted":false,"values":{"_format":{"id":979,"type":"Number","cardinality":"One","final":false,"encrypted":false},"activatedFeature":{"id":980,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PriceData": () => Promise.resolve({"_TypeModel":{"name":"PriceData","since":9,"type":"AGGREGATED_TYPE","id":853,"rootId":"A3N5cwADVQ","versioned":false,"encrypted":false,"values":{"_id":{"id":854,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"paymentInterval":{"id":857,"type":"Number","cardinality":"One","final":false,"encrypted":false},"price":{"id":855,"type":"Number","cardinality":"One","final":false,"encrypted":false},"taxIncluded":{"id":856,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"items":{"id":858,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"PriceItemData","dependency":null}},"app":"sys","version":"73"}}), + "PriceItemData": () => Promise.resolve({"_TypeModel":{"name":"PriceItemData","since":9,"type":"AGGREGATED_TYPE","id":847,"rootId":"A3N5cwADTw","versioned":false,"encrypted":false,"values":{"_id":{"id":848,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"count":{"id":850,"type":"Number","cardinality":"One","final":false,"encrypted":false},"featureType":{"id":849,"type":"Number","cardinality":"One","final":false,"encrypted":false},"price":{"id":851,"type":"Number","cardinality":"One","final":false,"encrypted":false},"singleType":{"id":852,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PriceRequestData": () => Promise.resolve({"_TypeModel":{"name":"PriceRequestData","since":9,"type":"AGGREGATED_TYPE","id":836,"rootId":"A3N5cwADRA","versioned":false,"encrypted":false,"values":{"_id":{"id":837,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"accountType":{"id":842,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"business":{"id":840,"type":"Boolean","cardinality":"ZeroOrOne","final":false,"encrypted":false},"count":{"id":839,"type":"Number","cardinality":"One","final":false,"encrypted":false},"featureType":{"id":838,"type":"Number","cardinality":"One","final":false,"encrypted":false},"paymentInterval":{"id":841,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"reactivate":{"id":1285,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PriceServiceData": () => Promise.resolve({"_TypeModel":{"name":"PriceServiceData","since":9,"type":"DATA_TRANSFER_TYPE","id":843,"rootId":"A3N5cwADSw","versioned":false,"encrypted":false,"values":{"_format":{"id":844,"type":"Number","cardinality":"One","final":false,"encrypted":false},"campaign":{"id":1455,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"date":{"id":846,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"priceRequest":{"id":845,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PriceRequestData","dependency":null}},"app":"sys","version":"73"}}), + "PriceServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"PriceServiceReturn","since":9,"type":"DATA_TRANSFER_TYPE","id":859,"rootId":"A3N5cwADWw","versioned":false,"encrypted":false,"values":{"_format":{"id":860,"type":"Number","cardinality":"One","final":false,"encrypted":false},"currentPeriodAddedPrice":{"id":862,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false},"periodEndDate":{"id":861,"type":"Date","cardinality":"One","final":false,"encrypted":false}},"associations":{"currentPriceNextPeriod":{"id":864,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PriceData","dependency":null},"currentPriceThisPeriod":{"id":863,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PriceData","dependency":null},"futurePriceNextPeriod":{"id":865,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PriceData","dependency":null}},"app":"sys","version":"73"}}), + "PublicKeyData": () => Promise.resolve({"_TypeModel":{"name":"PublicKeyData","since":1,"type":"DATA_TRANSFER_TYPE","id":409,"rootId":"A3N5cwABmQ","versioned":false,"encrypted":false,"values":{"_format":{"id":410,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":411,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PublicKeyReturn": () => Promise.resolve({"_TypeModel":{"name":"PublicKeyReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":412,"rootId":"A3N5cwABnA","versioned":false,"encrypted":false,"values":{"_format":{"id":413,"type":"Number","cardinality":"One","final":false,"encrypted":false},"pubKey":{"id":414,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"pubKeyVersion":{"id":415,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PushIdentifier": () => Promise.resolve({"_TypeModel":{"name":"PushIdentifier","since":5,"type":"LIST_ELEMENT_TYPE","id":625,"rootId":"A3N5cwACcQ","versioned":false,"encrypted":true,"values":{"_area":{"id":631,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":629,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":627,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":630,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1497,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1029,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":628,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"disabled":{"id":1476,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"displayName":{"id":1498,"type":"String","cardinality":"One","final":false,"encrypted":true},"identifier":{"id":633,"type":"String","cardinality":"One","final":false,"encrypted":false},"language":{"id":634,"type":"String","cardinality":"One","final":false,"encrypted":false},"lastNotificationDate":{"id":1248,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"lastUsageTime":{"id":1704,"type":"Date","cardinality":"One","final":false,"encrypted":false},"pushServiceType":{"id":632,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "PushIdentifierList": () => Promise.resolve({"_TypeModel":{"name":"PushIdentifierList","since":5,"type":"AGGREGATED_TYPE","id":635,"rootId":"A3N5cwACew","versioned":false,"encrypted":false,"values":{"_id":{"id":636,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":637,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"PushIdentifier","dependency":null}},"app":"sys","version":"73"}}), + "ReceivedGroupInvitation": () => Promise.resolve({"_TypeModel":{"name":"ReceivedGroupInvitation","since":52,"type":"LIST_ELEMENT_TYPE","id":1602,"rootId":"A3N5cwAGQg","versioned":false,"encrypted":true,"values":{"_format":{"id":1606,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1604,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1608,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1607,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1605,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"capability":{"id":1614,"type":"Number","cardinality":"One","final":false,"encrypted":false},"groupType":{"id":1868,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"inviteeMailAddress":{"id":1613,"type":"String","cardinality":"One","final":false,"encrypted":false},"inviterMailAddress":{"id":1611,"type":"String","cardinality":"One","final":false,"encrypted":false},"inviterName":{"id":1612,"type":"String","cardinality":"One","final":false,"encrypted":true},"sharedGroupKey":{"id":1609,"type":"Bytes","cardinality":"One","final":false,"encrypted":true},"sharedGroupName":{"id":1610,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"sentInvitation":{"id":1616,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"SentGroupInvitation","dependency":null},"sharedGroup":{"id":1615,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "RecoverCode": () => Promise.resolve({"_TypeModel":{"name":"RecoverCode","since":36,"type":"ELEMENT_TYPE","id":1407,"rootId":"A3N5cwAFfw","versioned":false,"encrypted":false,"values":{"_format":{"id":1411,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1409,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1412,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1410,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"recoverCodeEncUserGroupKey":{"id":1414,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"userEncRecoverCode":{"id":1413,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"verifier":{"id":1415,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "RegistrationCaptchaServiceData": () => Promise.resolve({"_TypeModel":{"name":"RegistrationCaptchaServiceData","since":7,"type":"DATA_TRANSFER_TYPE","id":674,"rootId":"A3N5cwACog","versioned":false,"encrypted":false,"values":{"_format":{"id":675,"type":"Number","cardinality":"One","final":false,"encrypted":false},"response":{"id":677,"type":"String","cardinality":"One","final":false,"encrypted":false},"token":{"id":676,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "RegistrationCaptchaServiceGetData": () => Promise.resolve({"_TypeModel":{"name":"RegistrationCaptchaServiceGetData","since":40,"type":"DATA_TRANSFER_TYPE","id":1479,"rootId":"A3N5cwAFxw","versioned":false,"encrypted":false,"values":{"_format":{"id":1480,"type":"Number","cardinality":"One","final":false,"encrypted":false},"businessUseSelected":{"id":1752,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":1482,"type":"String","cardinality":"One","final":false,"encrypted":false},"paidSubscriptionSelected":{"id":1751,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"signupToken":{"id":1731,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"token":{"id":1481,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "RegistrationCaptchaServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"RegistrationCaptchaServiceReturn","since":7,"type":"DATA_TRANSFER_TYPE","id":678,"rootId":"A3N5cwACpg","versioned":false,"encrypted":false,"values":{"_format":{"id":679,"type":"Number","cardinality":"One","final":false,"encrypted":false},"challenge":{"id":681,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"token":{"id":680,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "RegistrationConfigReturn": () => Promise.resolve({"_TypeModel":{"name":"RegistrationConfigReturn","since":2,"type":"DATA_TRANSFER_TYPE","id":606,"rootId":"A3N5cwACXg","versioned":false,"encrypted":false,"values":{"_format":{"id":607,"type":"Number","cardinality":"One","final":false,"encrypted":false},"freeEnabled":{"id":609,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"starterEnabled":{"id":608,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "RegistrationReturn": () => Promise.resolve({"_TypeModel":{"name":"RegistrationReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":326,"rootId":"A3N5cwABRg","versioned":false,"encrypted":false,"values":{"_format":{"id":327,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":328,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "RegistrationServiceData": () => Promise.resolve({"_TypeModel":{"name":"RegistrationServiceData","since":1,"type":"DATA_TRANSFER_TYPE","id":316,"rootId":"A3N5cwABPA","versioned":false,"encrypted":false,"values":{"_format":{"id":317,"type":"Number","cardinality":"One","final":false,"encrypted":false},"source":{"id":874,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"starterDomain":{"id":322,"type":"String","cardinality":"One","final":false,"encrypted":false},"state":{"id":325,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "RejectedSender": () => Promise.resolve({"_TypeModel":{"name":"RejectedSender","since":60,"type":"LIST_ELEMENT_TYPE","id":1736,"rootId":"A3N5cwAGyA","versioned":false,"encrypted":false,"values":{"_format":{"id":1740,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1738,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1741,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1739,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"reason":{"id":1746,"type":"String","cardinality":"One","final":true,"encrypted":false},"recipientMailAddress":{"id":1745,"type":"String","cardinality":"One","final":true,"encrypted":false},"senderHostname":{"id":1744,"type":"String","cardinality":"One","final":true,"encrypted":false},"senderIp":{"id":1743,"type":"String","cardinality":"One","final":true,"encrypted":false},"senderMailAddress":{"id":1742,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "RejectedSendersRef": () => Promise.resolve({"_TypeModel":{"name":"RejectedSendersRef","since":60,"type":"AGGREGATED_TYPE","id":1747,"rootId":"A3N5cwAG0w","versioned":false,"encrypted":false,"values":{"_id":{"id":1748,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1749,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"RejectedSender","dependency":null}},"app":"sys","version":"73"}}), + "RepeatRule": () => Promise.resolve({"_TypeModel":{"name":"RepeatRule","since":48,"type":"AGGREGATED_TYPE","id":1557,"rootId":"A3N5cwAGFQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1558,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"endType":{"id":1560,"type":"Number","cardinality":"One","final":false,"encrypted":true},"endValue":{"id":1561,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":true},"frequency":{"id":1559,"type":"Number","cardinality":"One","final":false,"encrypted":true},"interval":{"id":1562,"type":"Number","cardinality":"One","final":false,"encrypted":true},"timeZone":{"id":1563,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"sys","version":"73"}}), + "ResetFactorsDeleteData": () => Promise.resolve({"_TypeModel":{"name":"ResetFactorsDeleteData","since":36,"type":"DATA_TRANSFER_TYPE","id":1419,"rootId":"A3N5cwAFiw","versioned":false,"encrypted":false,"values":{"_format":{"id":1420,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authVerifier":{"id":1422,"type":"String","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":1421,"type":"String","cardinality":"One","final":true,"encrypted":false},"recoverCodeVerifier":{"id":1423,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "ResetPasswordData": () => Promise.resolve({"_TypeModel":{"name":"ResetPasswordData","since":1,"type":"DATA_TRANSFER_TYPE","id":584,"rootId":"A3N5cwACSA","versioned":false,"encrypted":false,"values":{"_format":{"id":585,"type":"Number","cardinality":"One","final":false,"encrypted":false},"pwEncUserGroupKey":{"id":588,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"salt":{"id":587,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":586,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"user":{"id":589,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "RootInstance": () => Promise.resolve({"_TypeModel":{"name":"RootInstance","since":1,"type":"LIST_ELEMENT_TYPE","id":231,"rootId":"A3N5cwAA5w","versioned":false,"encrypted":false,"values":{"_format":{"id":235,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":233,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1022,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":234,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"reference":{"id":236,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SaltData": () => Promise.resolve({"_TypeModel":{"name":"SaltData","since":1,"type":"DATA_TRANSFER_TYPE","id":417,"rootId":"A3N5cwABoQ","versioned":false,"encrypted":false,"values":{"_format":{"id":418,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":419,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SaltReturn": () => Promise.resolve({"_TypeModel":{"name":"SaltReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":420,"rootId":"A3N5cwABpA","versioned":false,"encrypted":false,"values":{"_format":{"id":421,"type":"Number","cardinality":"One","final":false,"encrypted":false},"salt":{"id":422,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SecondFactor": () => Promise.resolve({"_TypeModel":{"name":"SecondFactor","since":23,"type":"LIST_ELEMENT_TYPE","id":1169,"rootId":"A3N5cwAEkQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1173,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1171,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1174,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1172,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"name":{"id":1176,"type":"String","cardinality":"One","final":true,"encrypted":false},"otpSecret":{"id":1242,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"type":{"id":1175,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"u2f":{"id":1177,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"U2fRegisteredDevice","dependency":null}},"app":"sys","version":"73"}}), + "SecondFactorAuthAllowedReturn": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthAllowedReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":546,"rootId":"A3N5cwACIg","versioned":false,"encrypted":false,"values":{"_format":{"id":547,"type":"Number","cardinality":"One","final":false,"encrypted":false},"allowed":{"id":548,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SecondFactorAuthData": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthData","since":1,"type":"DATA_TRANSFER_TYPE","id":541,"rootId":"A3N5cwACHQ","versioned":false,"encrypted":false,"values":{"_format":{"id":542,"type":"Number","cardinality":"One","final":false,"encrypted":false},"otpCode":{"id":1243,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false},"type":{"id":1230,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"session":{"id":1232,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Session","dependency":null},"u2f":{"id":1231,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"U2fResponseData","dependency":null},"webauthn":{"id":1905,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"WebauthnResponseData","dependency":null}},"app":"sys","version":"73"}}), + "SecondFactorAuthDeleteData": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthDeleteData","since":62,"type":"DATA_TRANSFER_TYPE","id":1755,"rootId":"A3N5cwAG2w","versioned":false,"encrypted":false,"values":{"_format":{"id":1756,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"session":{"id":1757,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Session","dependency":null}},"app":"sys","version":"73"}}), + "SecondFactorAuthGetData": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthGetData","since":23,"type":"DATA_TRANSFER_TYPE","id":1233,"rootId":"A3N5cwAE0Q","versioned":false,"encrypted":false,"values":{"_format":{"id":1234,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accessToken":{"id":1235,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SecondFactorAuthGetReturn": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthGetReturn","since":23,"type":"DATA_TRANSFER_TYPE","id":1236,"rootId":"A3N5cwAE1A","versioned":false,"encrypted":false,"values":{"_format":{"id":1237,"type":"Number","cardinality":"One","final":false,"encrypted":false},"secondFactorPending":{"id":1238,"type":"Boolean","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SecondFactorAuthentication": () => Promise.resolve({"_TypeModel":{"name":"SecondFactorAuthentication","since":1,"type":"LIST_ELEMENT_TYPE","id":54,"rootId":"A3N5cwA2","versioned":false,"encrypted":false,"values":{"_format":{"id":58,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":56,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":994,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":57,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"code":{"id":59,"type":"String","cardinality":"One","final":false,"encrypted":false},"finished":{"id":61,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"service":{"id":62,"type":"String","cardinality":"One","final":false,"encrypted":false},"verifyCount":{"id":60,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SendRegistrationCodeData": () => Promise.resolve({"_TypeModel":{"name":"SendRegistrationCodeData","since":1,"type":"DATA_TRANSFER_TYPE","id":341,"rootId":"A3N5cwABVQ","versioned":false,"encrypted":false,"values":{"_format":{"id":342,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accountType":{"id":345,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":343,"type":"String","cardinality":"One","final":false,"encrypted":false},"language":{"id":344,"type":"String","cardinality":"One","final":false,"encrypted":false},"mobilePhoneNumber":{"id":346,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SendRegistrationCodeReturn": () => Promise.resolve({"_TypeModel":{"name":"SendRegistrationCodeReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":347,"rootId":"A3N5cwABWw","versioned":false,"encrypted":false,"values":{"_format":{"id":348,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":349,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SentGroupInvitation": () => Promise.resolve({"_TypeModel":{"name":"SentGroupInvitation","since":1,"type":"LIST_ELEMENT_TYPE","id":195,"rootId":"A3N5cwAAww","versioned":false,"encrypted":false,"values":{"_format":{"id":199,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":197,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1018,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":198,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"capability":{"id":1601,"type":"Number","cardinality":"One","final":false,"encrypted":false},"inviteeMailAddress":{"id":1600,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"receivedInvitation":{"id":1617,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"ReceivedGroupInvitation","dependency":null},"sharedGroup":{"id":203,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "Session": () => Promise.resolve({"_TypeModel":{"name":"Session","since":23,"type":"LIST_ELEMENT_TYPE","id":1191,"rootId":"A3N5cwAEpw","versioned":false,"encrypted":true,"values":{"_format":{"id":1195,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1193,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1197,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1196,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1194,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"accessKey":{"id":1202,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"clientIdentifier":{"id":1198,"type":"String","cardinality":"One","final":false,"encrypted":true},"lastAccessTime":{"id":1201,"type":"Date","cardinality":"One","final":true,"encrypted":false},"loginIpAddress":{"id":1200,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"loginTime":{"id":1199,"type":"Date","cardinality":"One","final":true,"encrypted":true},"state":{"id":1203,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"challenges":{"id":1204,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"Challenge","dependency":null},"user":{"id":1205,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "SignOrderProcessingAgreementData": () => Promise.resolve({"_TypeModel":{"name":"SignOrderProcessingAgreementData","since":31,"type":"DATA_TRANSFER_TYPE","id":1342,"rootId":"A3N5cwAFPg","versioned":false,"encrypted":false,"values":{"_format":{"id":1343,"type":"Number","cardinality":"One","final":false,"encrypted":false},"customerAddress":{"id":1345,"type":"String","cardinality":"One","final":false,"encrypted":false},"version":{"id":1344,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SseConnectData": () => Promise.resolve({"_TypeModel":{"name":"SseConnectData","since":32,"type":"DATA_TRANSFER_TYPE","id":1352,"rootId":"A3N5cwAFSA","versioned":false,"encrypted":false,"values":{"_format":{"id":1353,"type":"Number","cardinality":"One","final":false,"encrypted":false},"identifier":{"id":1354,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"userIds":{"id":1355,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"GeneratedIdWrapper","dependency":null}},"app":"sys","version":"73"}}), + "StringConfigValue": () => Promise.resolve({"_TypeModel":{"name":"StringConfigValue","since":1,"type":"AGGREGATED_TYPE","id":515,"rootId":"A3N5cwACAw","versioned":false,"encrypted":false,"values":{"_id":{"id":516,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"name":{"id":517,"type":"String","cardinality":"One","final":false,"encrypted":false},"value":{"id":518,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "StringWrapper": () => Promise.resolve({"_TypeModel":{"name":"StringWrapper","since":9,"type":"AGGREGATED_TYPE","id":728,"rootId":"A3N5cwAC2A","versioned":false,"encrypted":false,"values":{"_id":{"id":729,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"value":{"id":730,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SwitchAccountTypeData": () => Promise.resolve({"_TypeModel":{"name":"SwitchAccountTypeData","since":9,"type":"DATA_TRANSFER_TYPE","id":772,"rootId":"A3N5cwADBA","versioned":false,"encrypted":false,"values":{"_format":{"id":773,"type":"Number","cardinality":"One","final":false,"encrypted":false},"accountType":{"id":774,"type":"Number","cardinality":"One","final":false,"encrypted":false},"campaign":{"id":1454,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"date":{"id":775,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"subscriptionType":{"id":1310,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "SystemKeysReturn": () => Promise.resolve({"_TypeModel":{"name":"SystemKeysReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":301,"rootId":"A3N5cwABLQ","versioned":false,"encrypted":false,"values":{"_format":{"id":302,"type":"Number","cardinality":"One","final":false,"encrypted":false},"freeGroupKey":{"id":305,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"premiumGroupKey":{"id":306,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"starterGroupKey":{"id":307,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"systemAdminPubKey":{"id":303,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"systemAdminPubKeyVersion":{"id":304,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"freeGroup":{"id":880,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group","dependency":null},"premiumGroup":{"id":881,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "TakeOverDeletedAddressData": () => Promise.resolve({"_TypeModel":{"name":"TakeOverDeletedAddressData","since":63,"type":"DATA_TRANSFER_TYPE","id":1759,"rootId":"A3N5cwAG3w","versioned":false,"encrypted":false,"values":{"_format":{"id":1760,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authVerifier":{"id":1762,"type":"String","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":1761,"type":"String","cardinality":"One","final":false,"encrypted":false},"recoverCodeVerifier":{"id":1763,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"targetAccountMailAddress":{"id":1764,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "TargetServer": () => Promise.resolve({"_TypeModel":{"name":"TargetServer","since":69,"type":"AGGREGATED_TYPE","id":1889,"rootId":"A3N5cwAHYQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1890,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"url":{"id":1891,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "TypeInfo": () => Promise.resolve({"_TypeModel":{"name":"TypeInfo","since":69,"type":"AGGREGATED_TYPE","id":1869,"rootId":"A3N5cwAHTQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1870,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"application":{"id":1871,"type":"String","cardinality":"One","final":false,"encrypted":false},"typeId":{"id":1872,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "U2fChallenge": () => Promise.resolve({"_TypeModel":{"name":"U2fChallenge","since":23,"type":"AGGREGATED_TYPE","id":1183,"rootId":"A3N5cwAEnw","versioned":false,"encrypted":false,"values":{"_id":{"id":1184,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"challenge":{"id":1185,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"keys":{"id":1186,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"U2fKey","dependency":null}},"app":"sys","version":"73"}}), + "U2fKey": () => Promise.resolve({"_TypeModel":{"name":"U2fKey","since":23,"type":"AGGREGATED_TYPE","id":1178,"rootId":"A3N5cwAEmg","versioned":false,"encrypted":false,"values":{"_id":{"id":1179,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"appId":{"id":1181,"type":"String","cardinality":"One","final":true,"encrypted":false},"keyHandle":{"id":1180,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"secondFactor":{"id":1182,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"SecondFactor","dependency":null}},"app":"sys","version":"73"}}), + "U2fRegisteredDevice": () => Promise.resolve({"_TypeModel":{"name":"U2fRegisteredDevice","since":23,"type":"AGGREGATED_TYPE","id":1162,"rootId":"A3N5cwAEig","versioned":false,"encrypted":false,"values":{"_id":{"id":1163,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"appId":{"id":1165,"type":"String","cardinality":"One","final":true,"encrypted":false},"compromised":{"id":1168,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"counter":{"id":1167,"type":"Number","cardinality":"One","final":true,"encrypted":false},"keyHandle":{"id":1164,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"publicKey":{"id":1166,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "U2fResponseData": () => Promise.resolve({"_TypeModel":{"name":"U2fResponseData","since":23,"type":"AGGREGATED_TYPE","id":1225,"rootId":"A3N5cwAEyQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1226,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"clientData":{"id":1228,"type":"String","cardinality":"One","final":true,"encrypted":false},"keyHandle":{"id":1227,"type":"String","cardinality":"One","final":true,"encrypted":false},"signatureData":{"id":1229,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "UpdateAdminshipData": () => Promise.resolve({"_TypeModel":{"name":"UpdateAdminshipData","since":27,"type":"DATA_TRANSFER_TYPE","id":1288,"rootId":"A3N5cwAFCA","versioned":false,"encrypted":false,"values":{"_format":{"id":1289,"type":"Number","cardinality":"One","final":false,"encrypted":false},"newAdminGroupEncGKey":{"id":1290,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"group":{"id":1291,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null},"newAdminGroup":{"id":1292,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "UpdatePermissionKeyData": () => Promise.resolve({"_TypeModel":{"name":"UpdatePermissionKeyData","since":1,"type":"DATA_TRANSFER_TYPE","id":445,"rootId":"A3N5cwABvQ","versioned":false,"encrypted":false,"values":{"_format":{"id":446,"type":"Number","cardinality":"One","final":false,"encrypted":false},"ownerEncSessionKey":{"id":1031,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"symEncSessionKey":{"id":447,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"bucketPermission":{"id":451,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"BucketPermission","dependency":null},"permission":{"id":450,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Permission","dependency":null}},"app":"sys","version":"73"}}), + "UpgradePriceServiceData": () => Promise.resolve({"_TypeModel":{"name":"UpgradePriceServiceData","since":39,"type":"DATA_TRANSFER_TYPE","id":1456,"rootId":"A3N5cwAFsA","versioned":false,"encrypted":false,"values":{"_format":{"id":1457,"type":"Number","cardinality":"One","final":false,"encrypted":false},"campaign":{"id":1459,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"date":{"id":1458,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "UpgradePriceServiceReturn": () => Promise.resolve({"_TypeModel":{"name":"UpgradePriceServiceReturn","since":39,"type":"DATA_TRANSFER_TYPE","id":1469,"rootId":"A3N5cwAFvQ","versioned":false,"encrypted":false,"values":{"_format":{"id":1470,"type":"Number","cardinality":"One","final":false,"encrypted":false},"business":{"id":1472,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"messageTextId":{"id":1471,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"premiumBusinessPrices":{"id":1866,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null},"premiumPrices":{"id":1473,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null},"proPrices":{"id":1474,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null},"teamsBusinessPrices":{"id":1867,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null},"teamsPrices":{"id":1729,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"PlanPrices","dependency":null}},"app":"sys","version":"73"}}), + "UsageTestAssignment": () => Promise.resolve({"_TypeModel":{"name":"UsageTestAssignment","since":73,"type":"AGGREGATED_TYPE","id":1959,"rootId":"A3N5cwAHpw","versioned":false,"encrypted":false,"values":{"_id":{"id":1960,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"name":{"id":1962,"type":"String","cardinality":"One","final":false,"encrypted":false},"state":{"id":1964,"type":"Number","cardinality":"One","final":false,"encrypted":false},"testId":{"id":1961,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"variant":{"id":1963,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"stages":{"id":1965,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"UsageTestStage","dependency":null}},"app":"sys","version":"73"}}), + "UsageTestAssignmentIn": () => Promise.resolve({"_TypeModel":{"name":"UsageTestAssignmentIn","since":73,"type":"DATA_TRANSFER_TYPE","id":1956,"rootId":"A3N5cwAHpA","versioned":false,"encrypted":false,"values":{"_format":{"id":1957,"type":"Number","cardinality":"One","final":false,"encrypted":false},"testDeviceId":{"id":1958,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "UsageTestAssignmentOut": () => Promise.resolve({"_TypeModel":{"name":"UsageTestAssignmentOut","since":73,"type":"DATA_TRANSFER_TYPE","id":1966,"rootId":"A3N5cwAHrg","versioned":false,"encrypted":false,"values":{"_format":{"id":1967,"type":"Number","cardinality":"One","final":false,"encrypted":false},"testDeviceId":{"id":1968,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"assignments":{"id":1969,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"UsageTestAssignment","dependency":null}},"app":"sys","version":"73"}}), "UsageTestMetricConfig": () => Promise.resolve({"_TypeModel":{"name":"UsageTestMetricConfig","since":73,"type":"AGGREGATED_TYPE","id":1917,"rootId":"A3N5cwAHfQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1918,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"name":{"id":1919,"type":"String","cardinality":"One","final":true,"encrypted":false},"type":{"id":1920,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), "UsageTestMetricData": () => Promise.resolve({"_TypeModel":{"name":"UsageTestMetricData","since":73,"type":"AGGREGATED_TYPE","id":1921,"rootId":"A3N5cwAHgQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1922,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"name":{"id":1923,"type":"String","cardinality":"One","final":true,"encrypted":false},"value":{"id":1924,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "UsageTestStage": () => Promise.resolve({"_TypeModel":{"name":"UsageTestStage","since":73,"type":"AGGREGATED_TYPE","id":1939,"rootId":"A3N5cwAHkw","versioned":false,"encrypted":false,"values":{"_id":{"id":1940,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"name":{"id":1941,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"metrics":{"id":1942,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"UsageTestMetricConfig","dependency":null}},"app":"sys","version":"73"}}), - "UsageTestAssignmentIn": () => Promise.resolve({"_TypeModel":{"name":"UsageTestAssignmentIn","since":73,"type":"DATA_TRANSFER_TYPE","id":1956,"rootId":"A3N5cwAHpA","versioned":false,"encrypted":false,"values":{"_format":{"id":1957,"type":"Number","cardinality":"One","final":false,"encrypted":false},"testDeviceId":{"id":1958,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), - "UsageTestAssignment": () => Promise.resolve({"_TypeModel":{"name":"UsageTestAssignment","since":73,"type":"AGGREGATED_TYPE","id":1959,"rootId":"A3N5cwAHpw","versioned":false,"encrypted":false,"values":{"_id":{"id":1960,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"name":{"id":1962,"type":"String","cardinality":"One","final":false,"encrypted":false},"state":{"id":1964,"type":"Number","cardinality":"One","final":false,"encrypted":false},"testId":{"id":1961,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"variant":{"id":1963,"type":"Number","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"stages":{"id":1965,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"UsageTestStage","dependency":null}},"app":"sys","version":"73"}}), - "UsageTestAssignmentOut": () => Promise.resolve({"_TypeModel":{"name":"UsageTestAssignmentOut","since":73,"type":"DATA_TRANSFER_TYPE","id":1966,"rootId":"A3N5cwAHrg","versioned":false,"encrypted":false,"values":{"_format":{"id":1967,"type":"Number","cardinality":"One","final":false,"encrypted":false},"testDeviceId":{"id":1968,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"assignments":{"id":1969,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"UsageTestAssignment","dependency":null}},"app":"sys","version":"73"}}), "UsageTestParticipationIn": () => Promise.resolve({"_TypeModel":{"name":"UsageTestParticipationIn","since":73,"type":"DATA_TRANSFER_TYPE","id":1983,"rootId":"A3N5cwAHvw","versioned":false,"encrypted":false,"values":{"_format":{"id":1984,"type":"Number","cardinality":"One","final":false,"encrypted":false},"stage":{"id":1986,"type":"Number","cardinality":"One","final":false,"encrypted":false},"testDeviceId":{"id":1987,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"testId":{"id":1985,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"metrics":{"id":1988,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"UsageTestMetricData","dependency":null}},"app":"sys","version":"73"}}), + "UsageTestStage": () => Promise.resolve({"_TypeModel":{"name":"UsageTestStage","since":73,"type":"AGGREGATED_TYPE","id":1939,"rootId":"A3N5cwAHkw","versioned":false,"encrypted":false,"values":{"_id":{"id":1940,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"name":{"id":1941,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"metrics":{"id":1942,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"UsageTestMetricConfig","dependency":null}},"app":"sys","version":"73"}}), + "User": () => Promise.resolve({"_TypeModel":{"name":"User","since":1,"type":"ELEMENT_TYPE","id":84,"rootId":"A3N5cwBU","versioned":false,"encrypted":false,"values":{"_format":{"id":88,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":86,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":996,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":87,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"accountType":{"id":92,"type":"Number","cardinality":"One","final":true,"encrypted":false},"enabled":{"id":93,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"requirePasswordUpdate":{"id":1117,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"salt":{"id":90,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"userEncClientKey":{"id":89,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"verifier":{"id":91,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"alarmInfoList":{"id":1552,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"UserAlarmInfoListType","dependency":null},"auth":{"id":1210,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserAuthentication","dependency":null},"authenticatedDevices":{"id":97,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"AuthenticatedDevice","dependency":null},"customer":{"id":99,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Customer","dependency":null},"externalAuthInfo":{"id":98,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"UserExternalAuthInfo","dependency":null},"failedLogins":{"id":101,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Login","dependency":null},"memberships":{"id":96,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"GroupMembership","dependency":null},"phoneNumbers":{"id":94,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"PhoneNumber","dependency":null},"pushIdentifierList":{"id":638,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PushIdentifierList","dependency":null},"secondFactorAuthentications":{"id":102,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"SecondFactorAuthentication","dependency":null},"successfulLogins":{"id":100,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Login","dependency":null},"userGroup":{"id":95,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"GroupMembership","dependency":null}},"app":"sys","version":"73"}}), + "UserAlarmInfo": () => Promise.resolve({"_TypeModel":{"name":"UserAlarmInfo","since":48,"type":"LIST_ELEMENT_TYPE","id":1541,"rootId":"A3N5cwAGBQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1545,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1543,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1547,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1546,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1544,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"alarmInfo":{"id":1548,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"AlarmInfo","dependency":null}},"app":"sys","version":"73"}}), + "UserAlarmInfoListType": () => Promise.resolve({"_TypeModel":{"name":"UserAlarmInfoListType","since":48,"type":"AGGREGATED_TYPE","id":1549,"rootId":"A3N5cwAGDQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1550,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"alarms":{"id":1551,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"UserAlarmInfo","dependency":null}},"app":"sys","version":"73"}}), + "UserAreaGroups": () => Promise.resolve({"_TypeModel":{"name":"UserAreaGroups","since":17,"type":"AGGREGATED_TYPE","id":988,"rootId":"A3N5cwAD3A","versioned":false,"encrypted":false,"values":{"_id":{"id":989,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":990,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null}},"app":"sys","version":"73"}}), + "UserAuthentication": () => Promise.resolve({"_TypeModel":{"name":"UserAuthentication","since":23,"type":"AGGREGATED_TYPE","id":1206,"rootId":"A3N5cwAEtg","versioned":false,"encrypted":false,"values":{"_id":{"id":1207,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"recoverCode":{"id":1416,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"RecoverCode","dependency":null},"secondFactors":{"id":1209,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"SecondFactor","dependency":null},"sessions":{"id":1208,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Session","dependency":null}},"app":"sys","version":"73"}}), + "UserData": () => Promise.resolve({"_TypeModel":{"name":"UserData","since":1,"type":"DATA_TRANSFER_TYPE","id":396,"rootId":"A3N5cwABjA","versioned":false,"encrypted":false,"values":{"_format":{"id":397,"type":"Number","cardinality":"One","final":false,"encrypted":false},"date":{"id":878,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"mobilePhoneNumber":{"id":403,"type":"String","cardinality":"One","final":false,"encrypted":false},"salt":{"id":401,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncClientKey":{"id":398,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncCustomerGroupKey":{"id":399,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":402,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"userGroupData":{"id":400,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CreateGroupData","dependency":null}},"app":"sys","version":"73"}}), + "UserDataDelete": () => Promise.resolve({"_TypeModel":{"name":"UserDataDelete","since":1,"type":"DATA_TRANSFER_TYPE","id":404,"rootId":"A3N5cwABlA","versioned":false,"encrypted":false,"values":{"_format":{"id":405,"type":"Number","cardinality":"One","final":false,"encrypted":false},"date":{"id":879,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"restore":{"id":406,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"user":{"id":407,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "UserExternalAuthInfo": () => Promise.resolve({"_TypeModel":{"name":"UserExternalAuthInfo","since":1,"type":"AGGREGATED_TYPE","id":77,"rootId":"A3N5cwBN","versioned":false,"encrypted":false,"values":{"_id":{"id":78,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"authUpdateCounter":{"id":82,"type":"Number","cardinality":"One","final":false,"encrypted":false},"autoAuthenticationId":{"id":79,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"autoTransmitPassword":{"id":81,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"latestSaltHash":{"id":80,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"variableAuthInfo":{"id":83,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"VariableExternalAuthInfo","dependency":null}},"app":"sys","version":"73"}}), + "UserGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"UserGroupRoot","since":52,"type":"ELEMENT_TYPE","id":1618,"rootId":"A3N5cwAGUg","versioned":false,"encrypted":false,"values":{"_format":{"id":1622,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1620,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1623,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1621,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"invitations":{"id":1624,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"ReceivedGroupInvitation","dependency":null}},"app":"sys","version":"73"}}), + "UserIdData": () => Promise.resolve({"_TypeModel":{"name":"UserIdData","since":1,"type":"DATA_TRANSFER_TYPE","id":424,"rootId":"A3N5cwABqA","versioned":false,"encrypted":false,"values":{"_format":{"id":425,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":426,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "UserIdReturn": () => Promise.resolve({"_TypeModel":{"name":"UserIdReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":427,"rootId":"A3N5cwABqw","versioned":false,"encrypted":false,"values":{"_format":{"id":428,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"userId":{"id":429,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User","dependency":null}},"app":"sys","version":"73"}}), + "UserReturn": () => Promise.resolve({"_TypeModel":{"name":"UserReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":392,"rootId":"A3N5cwABiA","versioned":false,"encrypted":false,"values":{"_format":{"id":393,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"user":{"id":394,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"User","dependency":null},"userGroup":{"id":395,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null}},"app":"sys","version":"73"}}), + "VariableExternalAuthInfo": () => Promise.resolve({"_TypeModel":{"name":"VariableExternalAuthInfo","since":1,"type":"ELEMENT_TYPE","id":66,"rootId":"A3N5cwBC","versioned":false,"encrypted":false,"values":{"_format":{"id":70,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":68,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":995,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":69,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"authUpdateCounter":{"id":76,"type":"Number","cardinality":"One","final":false,"encrypted":false},"lastSentTimestamp":{"id":75,"type":"Date","cardinality":"One","final":false,"encrypted":false},"loggedInIpAddressHash":{"id":73,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"loggedInTimestamp":{"id":72,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"loggedInVerifier":{"id":71,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"sentCount":{"id":74,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "VerifyRegistrationCodeData": () => Promise.resolve({"_TypeModel":{"name":"VerifyRegistrationCodeData","since":1,"type":"DATA_TRANSFER_TYPE","id":351,"rootId":"A3N5cwABXw","versioned":false,"encrypted":false,"values":{"_format":{"id":352,"type":"Number","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":353,"type":"String","cardinality":"One","final":false,"encrypted":false},"code":{"id":354,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "Version": () => Promise.resolve({"_TypeModel":{"name":"Version","since":1,"type":"AGGREGATED_TYPE","id":480,"rootId":"A3N5cwAB4A","versioned":false,"encrypted":false,"values":{"_id":{"id":481,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"operation":{"id":484,"type":"String","cardinality":"One","final":false,"encrypted":false},"timestamp":{"id":483,"type":"Date","cardinality":"One","final":false,"encrypted":false},"version":{"id":482,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"author":{"id":485,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null},"authorGroupInfo":{"id":486,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"GroupInfo","dependency":null}},"app":"sys","version":"73"}}), + "VersionData": () => Promise.resolve({"_TypeModel":{"name":"VersionData","since":1,"type":"DATA_TRANSFER_TYPE","id":487,"rootId":"A3N5cwAB5w","versioned":false,"encrypted":false,"values":{"_format":{"id":488,"type":"Number","cardinality":"One","final":false,"encrypted":false},"application":{"id":489,"type":"String","cardinality":"One","final":false,"encrypted":false},"id":{"id":491,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"listId":{"id":492,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false},"typeId":{"id":490,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "VersionInfo": () => Promise.resolve({"_TypeModel":{"name":"VersionInfo","since":1,"type":"LIST_ELEMENT_TYPE","id":237,"rootId":"A3N5cwAA7Q","versioned":false,"encrypted":false,"values":{"_format":{"id":241,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":239,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1023,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":240,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"app":{"id":242,"type":"String","cardinality":"One","final":false,"encrypted":false},"operation":{"id":246,"type":"String","cardinality":"One","final":false,"encrypted":false},"referenceList":{"id":244,"type":"GeneratedId","cardinality":"ZeroOrOne","final":false,"encrypted":false},"timestamp":{"id":245,"type":"Date","cardinality":"One","final":false,"encrypted":false},"type":{"id":243,"type":"Number","cardinality":"One","final":false,"encrypted":false},"versionData":{"id":247,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"author":{"id":248,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null},"authorGroupInfo":{"id":249,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"GroupInfo","dependency":null}},"app":"sys","version":"73"}}), + "VersionReturn": () => Promise.resolve({"_TypeModel":{"name":"VersionReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":493,"rootId":"A3N5cwAB7Q","versioned":false,"encrypted":false,"values":{"_format":{"id":494,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"versions":{"id":495,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"Version","dependency":null}},"app":"sys","version":"73"}}), + "WebauthnResponseData": () => Promise.resolve({"_TypeModel":{"name":"WebauthnResponseData","since":71,"type":"AGGREGATED_TYPE","id":1899,"rootId":"A3N5cwAHaw","versioned":false,"encrypted":false,"values":{"_id":{"id":1900,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"authenticatorData":{"id":1903,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"clientData":{"id":1902,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"keyHandle":{"id":1901,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"signature":{"id":1904,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "WebsocketCounterData": () => Promise.resolve({"_TypeModel":{"name":"WebsocketCounterData","since":41,"type":"DATA_TRANSFER_TYPE","id":1492,"rootId":"A3N5cwAF1A","versioned":false,"encrypted":false,"values":{"_format":{"id":1493,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailGroup":{"id":1494,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"counterValues":{"id":1495,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"WebsocketCounterValue","dependency":null}},"app":"sys","version":"73"}}), + "WebsocketCounterValue": () => Promise.resolve({"_TypeModel":{"name":"WebsocketCounterValue","since":41,"type":"AGGREGATED_TYPE","id":1488,"rootId":"A3N5cwAF0A","versioned":false,"encrypted":false,"values":{"_id":{"id":1489,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"count":{"id":1491,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailListId":{"id":1490,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "WebsocketEntityData": () => Promise.resolve({"_TypeModel":{"name":"WebsocketEntityData","since":41,"type":"DATA_TRANSFER_TYPE","id":1483,"rootId":"A3N5cwAFyw","versioned":false,"encrypted":false,"values":{"_format":{"id":1484,"type":"Number","cardinality":"One","final":false,"encrypted":false},"eventBatchId":{"id":1485,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"eventBatchOwner":{"id":1486,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"eventBatch":{"id":1487,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"EntityUpdate","dependency":null}},"app":"sys","version":"73"}}), + "WebsocketLeaderStatus": () => Promise.resolve({"_TypeModel":{"name":"WebsocketLeaderStatus","since":64,"type":"DATA_TRANSFER_TYPE","id":1766,"rootId":"A3N5cwAG5g","versioned":false,"encrypted":false,"values":{"_format":{"id":1767,"type":"Number","cardinality":"One","final":false,"encrypted":false},"leaderStatus":{"id":1768,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"sys","version":"73"}}), + "WhitelabelChild": () => Promise.resolve({"_TypeModel":{"name":"WhitelabelChild","since":26,"type":"LIST_ELEMENT_TYPE","id":1257,"rootId":"A3N5cwAE6Q","versioned":false,"encrypted":true,"values":{"_format":{"id":1261,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1259,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1263,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1262,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1260,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"comment":{"id":1267,"type":"String","cardinality":"One","final":false,"encrypted":true},"createdDate":{"id":1265,"type":"Date","cardinality":"One","final":true,"encrypted":false},"deletedDate":{"id":1266,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"mailAddress":{"id":1264,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"customer":{"id":1268,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer","dependency":null}},"app":"sys","version":"73"}}), + "WhitelabelChildrenRef": () => Promise.resolve({"_TypeModel":{"name":"WhitelabelChildrenRef","since":26,"type":"AGGREGATED_TYPE","id":1269,"rootId":"A3N5cwAE9Q","versioned":false,"encrypted":false,"values":{"_id":{"id":1270,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":1271,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"WhitelabelChild","dependency":null}},"app":"sys","version":"73"}}), + "WhitelabelConfig": () => Promise.resolve({"_TypeModel":{"name":"WhitelabelConfig","since":22,"type":"ELEMENT_TYPE","id":1127,"rootId":"A3N5cwAEZw","versioned":false,"encrypted":false,"values":{"_format":{"id":1131,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1129,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1132,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1130,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"germanLanguageCode":{"id":1308,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"imprintUrl":{"id":1425,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"jsonTheme":{"id":1133,"type":"String","cardinality":"One","final":false,"encrypted":false},"metaTags":{"id":1281,"type":"String","cardinality":"One","final":false,"encrypted":false},"privacyStatementUrl":{"id":1496,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"whitelabelCode":{"id":1727,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"bootstrapCustomizations":{"id":1252,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"BootstrapFeature","dependency":null},"certificateInfo":{"id":1506,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CertificateInfo","dependency":null},"whitelabelRegistrationDomains":{"id":1728,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"StringWrapper","dependency":null}},"app":"sys","version":"73"}}), + "WhitelabelParent": () => Promise.resolve({"_TypeModel":{"name":"WhitelabelParent","since":26,"type":"AGGREGATED_TYPE","id":1272,"rootId":"A3N5cwAE-A","versioned":false,"encrypted":false,"values":{"_id":{"id":1273,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"customer":{"id":1274,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Customer","dependency":null},"whitelabelChildInParent":{"id":1275,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"WhitelabelChild","dependency":null}},"app":"sys","version":"73"}}), } export default map \ No newline at end of file diff --git a/src/api/entities/tutanota/AttachmentKeyData.ts b/src/api/entities/tutanota/AttachmentKeyData.ts index fae99369be..33946a721e 100644 --- a/src/api/entities/tutanota/AttachmentKeyData.ts +++ b/src/api/entities/tutanota/AttachmentKeyData.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "File" + "refType": "File", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CalendarDeleteData.ts b/src/api/entities/tutanota/CalendarDeleteData.ts index 602ab375aa..c4bf062ec7 100644 --- a/src/api/entities/tutanota/CalendarDeleteData.ts +++ b/src/api/entities/tutanota/CalendarDeleteData.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "CalendarGroupRoot" + "refType": "CalendarGroupRoot", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CalendarEvent.ts b/src/api/entities/tutanota/CalendarEvent.ts index 21056deb1b..165ae23f48 100644 --- a/src/api/entities/tutanota/CalendarEvent.ts +++ b/src/api/entities/tutanota/CalendarEvent.ts @@ -116,6 +116,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "alarmInfos": { + "id": 946, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "Any", + "final": false, + "refType": "UserAlarmInfo", + "dependency": null + }, "attendees": { "id": 1091, "type": "AGGREGATION", @@ -139,13 +147,6 @@ export const _TypeModel: TypeModel = { "final": false, "refType": "CalendarRepeatRule", "dependency": null - }, - "alarmInfos": { - "id": 946, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "Any", - "final": false, - "refType": "UserAlarmInfo" } }, "app": "tutanota", @@ -175,8 +176,8 @@ export type CalendarEvent = { summary: string; uid: null | string; + alarmInfos: IdTuple[]; attendees: CalendarEventAttendee[]; organizer: null | EncryptedMailAddress; repeatRule: null | CalendarRepeatRule; - alarmInfos: IdTuple[]; } \ No newline at end of file diff --git a/src/api/entities/tutanota/CalendarEventIndexRef.ts b/src/api/entities/tutanota/CalendarEventIndexRef.ts index 561fa14298..9159e933b7 100644 --- a/src/api/entities/tutanota/CalendarEventIndexRef.ts +++ b/src/api/entities/tutanota/CalendarEventIndexRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "CalendarEventUidIndex" + "refType": "CalendarEventUidIndex", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CalendarEventUidIndex.ts b/src/api/entities/tutanota/CalendarEventUidIndex.ts index 12b119a43a..a4e7599a53 100644 --- a/src/api/entities/tutanota/CalendarEventUidIndex.ts +++ b/src/api/entities/tutanota/CalendarEventUidIndex.ts @@ -48,7 +48,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "CalendarEvent" + "refType": "CalendarEvent", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CalendarEventUpdate.ts b/src/api/entities/tutanota/CalendarEventUpdate.ts index 7feb29d980..c6c2134060 100644 --- a/src/api/entities/tutanota/CalendarEventUpdate.ts +++ b/src/api/entities/tutanota/CalendarEventUpdate.ts @@ -62,7 +62,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "File" + "refType": "File", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CalendarEventUpdateList.ts b/src/api/entities/tutanota/CalendarEventUpdateList.ts index e42ed349de..3f7bf3089b 100644 --- a/src/api/entities/tutanota/CalendarEventUpdateList.ts +++ b/src/api/entities/tutanota/CalendarEventUpdateList.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "CalendarEventUpdate" + "refType": "CalendarEventUpdate", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CalendarGroupRoot.ts b/src/api/entities/tutanota/CalendarGroupRoot.ts index c9c3e55e2d..fb78372e32 100644 --- a/src/api/entities/tutanota/CalendarGroupRoot.ts +++ b/src/api/entities/tutanota/CalendarGroupRoot.ts @@ -64,14 +64,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "CalendarEvent" + "refType": "CalendarEvent", + "dependency": null }, "shortEvents": { "id": 954, "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "CalendarEvent" + "refType": "CalendarEvent", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/Contact.ts b/src/api/entities/tutanota/Contact.ts index 2f37c1fe15..69ff9e8d69 100644 --- a/src/api/entities/tutanota/Contact.ts +++ b/src/api/entities/tutanota/Contact.ts @@ -178,6 +178,14 @@ export const _TypeModel: TypeModel = { "refType": "ContactPhoneNumber", "dependency": null }, + "photo": { + "id": 852, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": false, + "refType": "File", + "dependency": null + }, "socialIds": { "id": 83, "type": "AGGREGATION", @@ -185,13 +193,6 @@ export const _TypeModel: TypeModel = { "final": false, "refType": "ContactSocialId", "dependency": null - }, - "photo": { - "id": 852, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": false, - "refType": "File" } }, "app": "tutanota", @@ -229,6 +230,6 @@ export type Contact = { mailAddresses: ContactMailAddress[]; oldBirthdayAggregate: null | Birthday; phoneNumbers: ContactPhoneNumber[]; - socialIds: ContactSocialId[]; photo: null | IdTuple; + socialIds: ContactSocialId[]; } \ No newline at end of file diff --git a/src/api/entities/tutanota/ContactForm.ts b/src/api/entities/tutanota/ContactForm.ts index fa0b314238..d7cadf1d39 100644 --- a/src/api/entities/tutanota/ContactForm.ts +++ b/src/api/entities/tutanota/ContactForm.ts @@ -51,6 +51,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "delegationGroups_removed": { + "id": 747, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "Any", + "final": false, + "refType": "Group", + "dependency": null + }, "languages": { "id": 865, "type": "AGGREGATION", @@ -59,33 +67,29 @@ export const _TypeModel: TypeModel = { "refType": "ContactFormLanguage", "dependency": null }, - "delegationGroups_removed": { - "id": 747, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "Any", - "final": false, - "refType": "Group" - }, "participantGroupInfos": { "id": 822, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "Any", "final": false, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null }, "targetGroup": { "id": 746, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null }, "targetGroupInfo": { "id": 821, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null } }, "app": "tutanota", @@ -105,8 +109,8 @@ export type ContactForm = { _permissions: Id; path: string; - languages: ContactFormLanguage[]; delegationGroups_removed: Id[]; + languages: ContactFormLanguage[]; participantGroupInfos: IdTuple[]; targetGroup: Id; targetGroupInfo: null | IdTuple; diff --git a/src/api/entities/tutanota/ContactFormAccountData.ts b/src/api/entities/tutanota/ContactFormAccountData.ts index 99014f0266..423cacf525 100644 --- a/src/api/entities/tutanota/ContactFormAccountData.ts +++ b/src/api/entities/tutanota/ContactFormAccountData.ts @@ -24,6 +24,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "contactForm": { + "id": 796, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": false, + "refType": "ContactForm", + "dependency": null + }, "userData": { "id": 793, "type": "AGGREGATION", @@ -39,13 +47,6 @@ export const _TypeModel: TypeModel = { "final": false, "refType": "InternalGroupData", "dependency": null - }, - "contactForm": { - "id": 796, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": false, - "refType": "ContactForm" } }, "app": "tutanota", @@ -61,7 +62,7 @@ export type ContactFormAccountData = { _format: NumberString; + contactForm: IdTuple; userData: ContactFormUserData; userGroupData: InternalGroupData; - contactForm: IdTuple; } \ No newline at end of file diff --git a/src/api/entities/tutanota/ContactList.ts b/src/api/entities/tutanota/ContactList.ts index 416a906935..78e860fc01 100644 --- a/src/api/entities/tutanota/ContactList.ts +++ b/src/api/entities/tutanota/ContactList.ts @@ -51,6 +51,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "contacts": { + "id": 160, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Contact", + "dependency": null + }, "photos": { "id": 856, "type": "AGGREGATION", @@ -58,13 +66,6 @@ export const _TypeModel: TypeModel = { "final": false, "refType": "PhotosRef", "dependency": null - }, - "contacts": { - "id": 160, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Contact" } }, "app": "tutanota", @@ -85,6 +86,6 @@ export type ContactList = { _ownerGroup: null | Id; _permissions: Id; - photos: null | PhotosRef; contacts: Id; + photos: null | PhotosRef; } \ No newline at end of file diff --git a/src/api/entities/tutanota/ConversationEntry.ts b/src/api/entities/tutanota/ConversationEntry.ts index 809e294ee5..283b767cbd 100644 --- a/src/api/entities/tutanota/ConversationEntry.ts +++ b/src/api/entities/tutanota/ConversationEntry.ts @@ -62,14 +62,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "Mail" + "refType": "Mail", + "dependency": null }, "previous": { "id": 123, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "ConversationEntry" + "refType": "ConversationEntry", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CreateExternalUserGroupData.ts b/src/api/entities/tutanota/CreateExternalUserGroupData.ts index 55621caaa1..9126c445f9 100644 --- a/src/api/entities/tutanota/CreateExternalUserGroupData.ts +++ b/src/api/entities/tutanota/CreateExternalUserGroupData.ts @@ -20,6 +20,13 @@ export const _TypeModel: TypeModel = { "final": true, "encrypted": false }, + "externalPwEncUserGroupKey": { + "id": 142, + "type": "Bytes", + "cardinality": "One", + "final": false, + "encrypted": false + }, "internalUserEncUserGroupKey": { "id": 143, "type": "Bytes", @@ -33,13 +40,6 @@ export const _TypeModel: TypeModel = { "cardinality": "One", "final": false, "encrypted": false - }, - "externalPwEncUserGroupKey": { - "id": 142, - "type": "Bytes", - "cardinality": "One", - "final": false, - "encrypted": false } }, "associations": {}, @@ -55,7 +55,7 @@ export type CreateExternalUserGroupData = { _type: TypeRef; _id: Id; + externalPwEncUserGroupKey: Uint8Array; internalUserEncUserGroupKey: Uint8Array; mailAddress: string; - externalPwEncUserGroupKey: Uint8Array; } \ No newline at end of file diff --git a/src/api/entities/tutanota/CreateFileData.ts b/src/api/entities/tutanota/CreateFileData.ts index 77f0febb56..bc50e615eb 100644 --- a/src/api/entities/tutanota/CreateFileData.ts +++ b/src/api/entities/tutanota/CreateFileData.ts @@ -34,19 +34,19 @@ export const _TypeModel: TypeModel = { "final": false, "encrypted": false }, - "ownerEncSessionKey": { - "id": 351, - "type": "Bytes", - "cardinality": "One", - "final": false, - "encrypted": false - }, "mimeType": { "id": 349, "type": "String", "cardinality": "One", "final": true, "encrypted": true + }, + "ownerEncSessionKey": { + "id": 351, + "type": "Bytes", + "cardinality": "One", + "final": false, + "encrypted": false } }, "associations": { @@ -55,14 +55,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "FileData" + "refType": "FileData", + "dependency": null }, "parentFolder": { "id": 353, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "File" + "refType": "File", + "dependency": null } }, "app": "tutanota", @@ -80,8 +82,8 @@ export type CreateFileData = { _format: NumberString; fileName: string; group: Id; - ownerEncSessionKey: Uint8Array; mimeType: string; + ownerEncSessionKey: Uint8Array; fileData: Id; parentFolder: null | IdTuple; diff --git a/src/api/entities/tutanota/CreateGroupPostReturn.ts b/src/api/entities/tutanota/CreateGroupPostReturn.ts index f738fbc5d2..ed4e9a19dc 100644 --- a/src/api/entities/tutanota/CreateGroupPostReturn.ts +++ b/src/api/entities/tutanota/CreateGroupPostReturn.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CreateMailFolderData.ts b/src/api/entities/tutanota/CreateMailFolderData.ts index 34d2333e31..15e6a79d76 100644 --- a/src/api/entities/tutanota/CreateMailFolderData.ts +++ b/src/api/entities/tutanota/CreateMailFolderData.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "MailFolder" + "refType": "MailFolder", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CreateMailFolderReturn.ts b/src/api/entities/tutanota/CreateMailFolderReturn.ts index 7502cfadc4..c38dc984ce 100644 --- a/src/api/entities/tutanota/CreateMailFolderReturn.ts +++ b/src/api/entities/tutanota/CreateMailFolderReturn.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "MailFolder" + "refType": "MailFolder", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/CustomerContactFormGroupRoot.ts b/src/api/entities/tutanota/CustomerContactFormGroupRoot.ts index 5aec8fd415..a63554d7f4 100644 --- a/src/api/entities/tutanota/CustomerContactFormGroupRoot.ts +++ b/src/api/entities/tutanota/CustomerContactFormGroupRoot.ts @@ -57,7 +57,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "ContactForm" + "refType": "ContactForm", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/DeleteContactFormConversationIndex.ts b/src/api/entities/tutanota/DeleteContactFormConversationIndex.ts index c47cf3543f..2b1e034eeb 100644 --- a/src/api/entities/tutanota/DeleteContactFormConversationIndex.ts +++ b/src/api/entities/tutanota/DeleteContactFormConversationIndex.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "DeleteContactFormConversationIndexEntry" + "refType": "DeleteContactFormConversationIndexEntry", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/DeleteGroupData.ts b/src/api/entities/tutanota/DeleteGroupData.ts index abfca0906b..a57a9bc77c 100644 --- a/src/api/entities/tutanota/DeleteGroupData.ts +++ b/src/api/entities/tutanota/DeleteGroupData.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/DeleteMailData.ts b/src/api/entities/tutanota/DeleteMailData.ts index d42986c7a8..f12a7b0643 100644 --- a/src/api/entities/tutanota/DeleteMailData.ts +++ b/src/api/entities/tutanota/DeleteMailData.ts @@ -27,14 +27,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "MailFolder" + "refType": "MailFolder", + "dependency": null }, "mails": { "id": 421, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "Any", "final": false, - "refType": "Mail" + "refType": "Mail", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/DeleteMailFolderData.ts b/src/api/entities/tutanota/DeleteMailFolderData.ts index b6f21fdd10..faf1879ebc 100644 --- a/src/api/entities/tutanota/DeleteMailFolderData.ts +++ b/src/api/entities/tutanota/DeleteMailFolderData.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "Any", "final": false, - "refType": "MailFolder" + "refType": "MailFolder", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/DraftAttachment.ts b/src/api/entities/tutanota/DraftAttachment.ts index ab92e9a0ae..53cf257d36 100644 --- a/src/api/entities/tutanota/DraftAttachment.ts +++ b/src/api/entities/tutanota/DraftAttachment.ts @@ -30,6 +30,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "existingFile": { + "id": 495, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "File", + "dependency": null + }, "newFile": { "id": 494, "type": "AGGREGATION", @@ -37,13 +45,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "NewDraftAttachment", "dependency": null - }, - "existingFile": { - "id": 495, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "File" } }, "app": "tutanota", @@ -60,6 +61,6 @@ export type DraftAttachment = { _id: Id; ownerEncFileSessionKey: Uint8Array; - newFile: null | NewDraftAttachment; existingFile: null | IdTuple; + newFile: null | NewDraftAttachment; } \ No newline at end of file diff --git a/src/api/entities/tutanota/DraftCreateReturn.ts b/src/api/entities/tutanota/DraftCreateReturn.ts index c37efe862e..6277d011c9 100644 --- a/src/api/entities/tutanota/DraftCreateReturn.ts +++ b/src/api/entities/tutanota/DraftCreateReturn.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Mail" + "refType": "Mail", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/DraftData.ts b/src/api/entities/tutanota/DraftData.ts index 76304d722f..2f82545616 100644 --- a/src/api/entities/tutanota/DraftData.ts +++ b/src/api/entities/tutanota/DraftData.ts @@ -98,6 +98,14 @@ export const _TypeModel: TypeModel = { "refType": "DraftRecipient", "dependency": null }, + "removedAttachments": { + "id": 507, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "Any", + "final": true, + "refType": "File", + "dependency": null + }, "replyTos": { "id": 819, "type": "AGGREGATION", @@ -113,13 +121,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "DraftRecipient", "dependency": null - }, - "removedAttachments": { - "id": 507, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "Any", - "final": true, - "refType": "File" } }, "app": "tutanota", @@ -145,7 +146,7 @@ export type DraftData = { addedAttachments: DraftAttachment[]; bccRecipients: DraftRecipient[]; ccRecipients: DraftRecipient[]; + removedAttachments: IdTuple[]; replyTos: EncryptedMailAddress[]; toRecipients: DraftRecipient[]; - removedAttachments: IdTuple[]; } \ No newline at end of file diff --git a/src/api/entities/tutanota/DraftUpdateData.ts b/src/api/entities/tutanota/DraftUpdateData.ts index ac951bf47b..2ce8c98cde 100644 --- a/src/api/entities/tutanota/DraftUpdateData.ts +++ b/src/api/entities/tutanota/DraftUpdateData.ts @@ -23,6 +23,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "draft": { + "id": 522, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": false, + "refType": "Mail", + "dependency": null + }, "draftData": { "id": 521, "type": "AGGREGATION", @@ -30,13 +38,6 @@ export const _TypeModel: TypeModel = { "final": false, "refType": "DraftData", "dependency": null - }, - "draft": { - "id": 522, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": false, - "refType": "Mail" } }, "app": "tutanota", @@ -53,6 +54,6 @@ export type DraftUpdateData = { _format: NumberString; - draftData: DraftData; draft: IdTuple; + draftData: DraftData; } \ No newline at end of file diff --git a/src/api/entities/tutanota/DraftUpdateReturn.ts b/src/api/entities/tutanota/DraftUpdateReturn.ts index 6a9c6f6783..07ec577685 100644 --- a/src/api/entities/tutanota/DraftUpdateReturn.ts +++ b/src/api/entities/tutanota/DraftUpdateReturn.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "Any", "final": true, - "refType": "File" + "refType": "File", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/EncryptTutanotaPropertiesData.ts b/src/api/entities/tutanota/EncryptTutanotaPropertiesData.ts index 3262b31177..b3bcd45f42 100644 --- a/src/api/entities/tutanota/EncryptTutanotaPropertiesData.ts +++ b/src/api/entities/tutanota/EncryptTutanotaPropertiesData.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "TutanotaProperties" + "refType": "TutanotaProperties", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/File.ts b/src/api/entities/tutanota/File.ts index 4ede478ea2..bf64b66ba8 100644 --- a/src/api/entities/tutanota/File.ts +++ b/src/api/entities/tutanota/File.ts @@ -93,6 +93,22 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "data": { + "id": 24, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "FileData", + "dependency": null + }, + "parent": { + "id": 25, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "File", + "dependency": null + }, "subFiles": { "id": 26, "type": "AGGREGATION", @@ -100,20 +116,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "Subfiles", "dependency": null - }, - "data": { - "id": 24, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "FileData" - }, - "parent": { - "id": 25, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "File" } }, "app": "tutanota", @@ -140,7 +142,7 @@ export type File = { name: string; size: NumberString; - subFiles: null | Subfiles; data: null | Id; parent: null | IdTuple; + subFiles: null | Subfiles; } \ No newline at end of file diff --git a/src/api/entities/tutanota/FileDataDataGet.ts b/src/api/entities/tutanota/FileDataDataGet.ts index f9a2598581..c379bd5669 100644 --- a/src/api/entities/tutanota/FileDataDataGet.ts +++ b/src/api/entities/tutanota/FileDataDataGet.ts @@ -34,7 +34,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "File" + "refType": "File", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/FileDataReturnPost.ts b/src/api/entities/tutanota/FileDataReturnPost.ts index 160f341f10..60f05ce359 100644 --- a/src/api/entities/tutanota/FileDataReturnPost.ts +++ b/src/api/entities/tutanota/FileDataReturnPost.ts @@ -36,7 +36,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "FileData" + "refType": "FileData", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/FileSystem.ts b/src/api/entities/tutanota/FileSystem.ts index 2f2636f162..e96497ee9c 100644 --- a/src/api/entities/tutanota/FileSystem.ts +++ b/src/api/entities/tutanota/FileSystem.ts @@ -55,7 +55,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "File" + "refType": "File", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/GroupInvitationDeleteData.ts b/src/api/entities/tutanota/GroupInvitationDeleteData.ts index 1da54c53f6..20a46c64f5 100644 --- a/src/api/entities/tutanota/GroupInvitationDeleteData.ts +++ b/src/api/entities/tutanota/GroupInvitationDeleteData.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "ReceivedGroupInvitation" + "refType": "ReceivedGroupInvitation", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/GroupInvitationPutData.ts b/src/api/entities/tutanota/GroupInvitationPutData.ts index 4a123668e3..b56ecdb7c3 100644 --- a/src/api/entities/tutanota/GroupInvitationPutData.ts +++ b/src/api/entities/tutanota/GroupInvitationPutData.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "ReceivedGroupInvitation" + "refType": "ReceivedGroupInvitation", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/GroupSettings.ts b/src/api/entities/tutanota/GroupSettings.ts index a745f284c5..85af70cf2f 100644 --- a/src/api/entities/tutanota/GroupSettings.ts +++ b/src/api/entities/tutanota/GroupSettings.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/ImapFolder.ts b/src/api/entities/tutanota/ImapFolder.ts index 22844e58b2..f6c43db135 100644 --- a/src/api/entities/tutanota/ImapFolder.ts +++ b/src/api/entities/tutanota/ImapFolder.ts @@ -48,7 +48,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "RemoteImapSyncInfo" + "refType": "RemoteImapSyncInfo", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/ImapSyncConfiguration.ts b/src/api/entities/tutanota/ImapSyncConfiguration.ts index caccaf1955..247775d041 100644 --- a/src/api/entities/tutanota/ImapSyncConfiguration.ts +++ b/src/api/entities/tutanota/ImapSyncConfiguration.ts @@ -55,7 +55,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "ImapSyncState" + "refType": "ImapSyncState", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/InboxRule.ts b/src/api/entities/tutanota/InboxRule.ts index 9c6c3dc8d1..c4acd24fd3 100644 --- a/src/api/entities/tutanota/InboxRule.ts +++ b/src/api/entities/tutanota/InboxRule.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "MailFolder" + "refType": "MailFolder", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/InternalGroupData.ts b/src/api/entities/tutanota/InternalGroupData.ts index 082ad817eb..5f6411a7cc 100644 --- a/src/api/entities/tutanota/InternalGroupData.ts +++ b/src/api/entities/tutanota/InternalGroupData.ts @@ -55,7 +55,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/ListUnsubscribeData.ts b/src/api/entities/tutanota/ListUnsubscribeData.ts index 6cb855c3ae..cb4f28c479 100644 --- a/src/api/entities/tutanota/ListUnsubscribeData.ts +++ b/src/api/entities/tutanota/ListUnsubscribeData.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Mail" + "refType": "Mail", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/Mail.ts b/src/api/entities/tutanota/Mail.ts index ed9f0f1067..7605f3ca05 100644 --- a/src/api/entities/tutanota/Mail.ts +++ b/src/api/entities/tutanota/Mail.ts @@ -166,6 +166,14 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "attachments": { + "id": 115, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "Any", + "final": true, + "refType": "File", + "dependency": null + }, "bccRecipients": { "id": 114, "type": "AGGREGATION", @@ -174,6 +182,14 @@ export const _TypeModel: TypeModel = { "refType": "MailAddress", "dependency": null }, + "body": { + "id": 116, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "MailBody", + "dependency": null + }, "bodyBlob": { "id": 1224, "type": "AGGREGATION", @@ -190,6 +206,22 @@ export const _TypeModel: TypeModel = { "refType": "MailAddress", "dependency": null }, + "conversationEntry": { + "id": 117, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "ConversationEntry", + "dependency": null + }, + "headers": { + "id": 618, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "MailHeaders", + "dependency": null + }, "headersBlob": { "id": 1223, "type": "AGGREGATION", @@ -229,34 +261,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "MailAddress", "dependency": null - }, - "attachments": { - "id": 115, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "Any", - "final": true, - "refType": "File" - }, - "body": { - "id": 116, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "MailBody" - }, - "conversationEntry": { - "id": 117, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "ConversationEntry" - }, - "headers": { - "id": 618, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "MailHeaders" } }, "app": "tutanota", @@ -293,16 +297,16 @@ export type Mail = { trashed: boolean; unread: boolean; + attachments: IdTuple[]; bccRecipients: MailAddress[]; + body: Id; bodyBlob: null | Blob; ccRecipients: MailAddress[]; + conversationEntry: IdTuple; + headers: null | Id; headersBlob: null | Blob; replyTos: EncryptedMailAddress[]; restrictions: null | MailRestriction; sender: MailAddress; toRecipients: MailAddress[]; - attachments: IdTuple[]; - body: Id; - conversationEntry: IdTuple; - headers: null | Id; } \ No newline at end of file diff --git a/src/api/entities/tutanota/MailAddress.ts b/src/api/entities/tutanota/MailAddress.ts index 50f8472cfe..ea4e70cb42 100644 --- a/src/api/entities/tutanota/MailAddress.ts +++ b/src/api/entities/tutanota/MailAddress.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "Contact" + "refType": "Contact", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/MailBox.ts b/src/api/entities/tutanota/MailBox.ts index a378cac95b..5f6743aef1 100644 --- a/src/api/entities/tutanota/MailBox.ts +++ b/src/api/entities/tutanota/MailBox.ts @@ -66,6 +66,30 @@ export const _TypeModel: TypeModel = { } }, "associations": { + "mails": { + "id": 132, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Mail", + "dependency": null + }, + "receivedAttachments": { + "id": 134, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "File", + "dependency": null + }, + "sentAttachments": { + "id": 133, + "type": "LIST_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "File", + "dependency": null + }, "spamResults": { "id": 1220, "type": "AGGREGATION", @@ -81,27 +105,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "MailFolderRef", "dependency": null - }, - "mails": { - "id": 132, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Mail" - }, - "receivedAttachments": { - "id": 134, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "File" - }, - "sentAttachments": { - "id": 133, - "type": "LIST_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "File" } }, "app": "tutanota", @@ -124,9 +127,9 @@ export type MailBox = { lastInfoDate: Date; symEncShareBucketKey: null | Uint8Array; - spamResults: null | SpamResults; - systemFolders: null | MailFolderRef; mails: Id; receivedAttachments: Id; sentAttachments: Id; + spamResults: null | SpamResults; + systemFolders: null | MailFolderRef; } \ No newline at end of file diff --git a/src/api/entities/tutanota/MailFolder.ts b/src/api/entities/tutanota/MailFolder.ts index 90f339af94..cdc93f58f4 100644 --- a/src/api/entities/tutanota/MailFolder.ts +++ b/src/api/entities/tutanota/MailFolder.ts @@ -69,21 +69,24 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Mail" + "refType": "Mail", + "dependency": null }, "parentFolder": { "id": 439, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "MailFolder" + "refType": "MailFolder", + "dependency": null }, "subFolders": { "id": 438, "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "MailFolder" + "refType": "MailFolder", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/MailFolderRef.ts b/src/api/entities/tutanota/MailFolderRef.ts index 0887f45446..2b6d1502fd 100644 --- a/src/api/entities/tutanota/MailFolderRef.ts +++ b/src/api/entities/tutanota/MailFolderRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "MailFolder" + "refType": "MailFolder", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/MailRestriction.ts b/src/api/entities/tutanota/MailRestriction.ts index 1f53d7768d..ae5e56c691 100644 --- a/src/api/entities/tutanota/MailRestriction.ts +++ b/src/api/entities/tutanota/MailRestriction.ts @@ -27,14 +27,16 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "Any", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null }, "participantGroupInfos": { "id": 820, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "Any", "final": true, - "refType": "GroupInfo" + "refType": "GroupInfo", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/MailboxGroupRoot.ts b/src/api/entities/tutanota/MailboxGroupRoot.ts index c7ae46c3ac..c79dc171d1 100644 --- a/src/api/entities/tutanota/MailboxGroupRoot.ts +++ b/src/api/entities/tutanota/MailboxGroupRoot.ts @@ -53,6 +53,38 @@ export const _TypeModel: TypeModel = { "refType": "CalendarEventUpdateList", "dependency": null }, + "contactFormUserContactForm": { + "id": 748, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "ContactForm", + "dependency": null + }, + "mailbox": { + "id": 699, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "MailBox", + "dependency": null + }, + "mailboxProperties": { + "id": 1203, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "MailboxProperties", + "dependency": null + }, + "outOfOfficeNotification": { + "id": 1150, + "type": "ELEMENT_ASSOCIATION", + "cardinality": "ZeroOrOne", + "final": true, + "refType": "OutOfOfficeNotification", + "dependency": null + }, "outOfOfficeNotificationRecipientList": { "id": 1151, "type": "AGGREGATION", @@ -61,61 +93,37 @@ export const _TypeModel: TypeModel = { "refType": "OutOfOfficeNotificationRecipientList", "dependency": null }, - "contactFormUserContactForm": { - "id": 748, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "ContactForm" - }, - "mailbox": { - "id": 699, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "MailBox" - }, - "mailboxProperties": { - "id": 1203, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "MailboxProperties" - }, - "outOfOfficeNotification": { - "id": 1150, - "type": "ELEMENT_ASSOCIATION", - "cardinality": "ZeroOrOne", - "final": true, - "refType": "OutOfOfficeNotification" - }, "participatingContactForms": { "id": 842, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "Any", "final": false, - "refType": "ContactForm" + "refType": "ContactForm", + "dependency": null }, "serverProperties": { "id": 700, "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "MailboxServerProperties" + "refType": "MailboxServerProperties", + "dependency": null }, "targetMailGroupContactForm": { "id": 749, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "ContactForm" + "refType": "ContactForm", + "dependency": null }, "whitelistRequests": { "id": 701, "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "WhitelistRequest" + "refType": "WhitelistRequest", + "dependency": null } }, "app": "tutanota", @@ -135,11 +143,11 @@ export type MailboxGroupRoot = { _permissions: Id; calendarEventUpdates: null | CalendarEventUpdateList; - outOfOfficeNotificationRecipientList: null | OutOfOfficeNotificationRecipientList; contactFormUserContactForm: null | IdTuple; mailbox: Id; mailboxProperties: null | Id; outOfOfficeNotification: null | Id; + outOfOfficeNotificationRecipientList: null | OutOfOfficeNotificationRecipientList; participatingContactForms: IdTuple[]; serverProperties: Id; targetMailGroupContactForm: null | IdTuple; diff --git a/src/api/entities/tutanota/MoveMailData.ts b/src/api/entities/tutanota/MoveMailData.ts index 33056a9121..e2d7eba57d 100644 --- a/src/api/entities/tutanota/MoveMailData.ts +++ b/src/api/entities/tutanota/MoveMailData.ts @@ -27,14 +27,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "Any", "final": false, - "refType": "Mail" + "refType": "Mail", + "dependency": null }, "targetFolder": { "id": 447, "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "MailFolder" + "refType": "MailFolder", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/NewDraftAttachment.ts b/src/api/entities/tutanota/NewDraftAttachment.ts index 7fe4266ee0..d8ede5be15 100644 --- a/src/api/entities/tutanota/NewDraftAttachment.ts +++ b/src/api/entities/tutanota/NewDraftAttachment.ts @@ -48,7 +48,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "FileData" + "refType": "FileData", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/OutOfOfficeNotificationRecipientList.ts b/src/api/entities/tutanota/OutOfOfficeNotificationRecipientList.ts index 48cbd467a0..571f377f26 100644 --- a/src/api/entities/tutanota/OutOfOfficeNotificationRecipientList.ts +++ b/src/api/entities/tutanota/OutOfOfficeNotificationRecipientList.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "OutOfOfficeNotificationRecipient" + "refType": "OutOfOfficeNotificationRecipient", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/PhotosRef.ts b/src/api/entities/tutanota/PhotosRef.ts index c83a3f3d46..4fd6b9a40f 100644 --- a/src/api/entities/tutanota/PhotosRef.ts +++ b/src/api/entities/tutanota/PhotosRef.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "File" + "refType": "File", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/RemoteImapSyncInfo.ts b/src/api/entities/tutanota/RemoteImapSyncInfo.ts index e59cfa56ab..1aec2d13f3 100644 --- a/src/api/entities/tutanota/RemoteImapSyncInfo.ts +++ b/src/api/entities/tutanota/RemoteImapSyncInfo.ts @@ -55,7 +55,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Mail" + "refType": "Mail", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/ReportMailPostData.ts b/src/api/entities/tutanota/ReportMailPostData.ts index c59dd43738..8440dc39f3 100644 --- a/src/api/entities/tutanota/ReportMailPostData.ts +++ b/src/api/entities/tutanota/ReportMailPostData.ts @@ -41,7 +41,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Mail" + "refType": "Mail", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/SendDraftData.ts b/src/api/entities/tutanota/SendDraftData.ts index 1c2558f43b..117bd39a96 100644 --- a/src/api/entities/tutanota/SendDraftData.ts +++ b/src/api/entities/tutanota/SendDraftData.ts @@ -83,6 +83,14 @@ export const _TypeModel: TypeModel = { "refType": "InternalRecipientKeyData", "dependency": null }, + "mail": { + "id": 556, + "type": "LIST_ELEMENT_ASSOCIATION", + "cardinality": "One", + "final": true, + "refType": "Mail", + "dependency": null + }, "secureExternalRecipientKeyData": { "id": 554, "type": "AGGREGATION", @@ -90,13 +98,6 @@ export const _TypeModel: TypeModel = { "final": true, "refType": "SecureExternalRecipientKeyData", "dependency": null - }, - "mail": { - "id": 556, - "type": "LIST_ELEMENT_ASSOCIATION", - "cardinality": "One", - "final": true, - "refType": "Mail" } }, "app": "tutanota", @@ -120,6 +121,6 @@ export type SendDraftData = { attachmentKeyData: AttachmentKeyData[]; internalRecipientKeyData: InternalRecipientKeyData[]; - secureExternalRecipientKeyData: SecureExternalRecipientKeyData[]; mail: IdTuple; + secureExternalRecipientKeyData: SecureExternalRecipientKeyData[]; } \ No newline at end of file diff --git a/src/api/entities/tutanota/SendDraftReturn.ts b/src/api/entities/tutanota/SendDraftReturn.ts index c037e9886e..3879c158c2 100644 --- a/src/api/entities/tutanota/SendDraftReturn.ts +++ b/src/api/entities/tutanota/SendDraftReturn.ts @@ -50,7 +50,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "Mail" + "refType": "Mail", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/Services.ts b/src/api/entities/tutanota/Services.ts index 11b03d6910..873c943fa1 100644 --- a/src/api/entities/tutanota/Services.ts +++ b/src/api/entities/tutanota/Services.ts @@ -1,25 +1,216 @@ -export const enum TutanotaService { - ExternalUserService = "externaluserservice", - MailService = "mailservice", - PasswordMessagingService = "passwordmessagingservice", - PasswordAutoAuthenticationService = "passwordautoauthenticationservice", - PasswordRetrievalService = "passwordretrievalservice", - PasswordChannelResource = "passwordchannelresource", - FileDataService = "filedataservice", - MoveMailService = "movemailservice", - MailFolderService = "mailfolderservice", - EncryptTutanotaPropertiesService = "encrypttutanotapropertiesservice", - DraftService = "draftservice", - SendDraftService = "senddraftservice", - ReceiveInfoService = "receiveinfoservice", - UserAccountService = "useraccountservice", - MailGroupService = "mailgroupservice", - LocalAdminGroupService = "localadmingroupservice", - ContactFormAccountService = "contactformaccountservice", - ListUnsubscribeService = "listunsubscribeservice", - CalendarService = "calendarservice", - GroupInvitationService = "groupinvitationservice", - ReportMailService = "reportmailservice", - EntropyService = "entropyservice", - TemplateGroupService = "templategroupservice", -} \ No newline at end of file +import {UserAreaGroupPostDataTypeRef} from "./UserAreaGroupPostData.js" +import {CreateGroupPostReturnTypeRef} from "./CreateGroupPostReturn.js" +import {CalendarDeleteDataTypeRef} from "./CalendarDeleteData.js" +import {ContactFormAccountDataTypeRef} from "./ContactFormAccountData.js" +import {ContactFormAccountReturnTypeRef} from "./ContactFormAccountReturn.js" +import {CustomerAccountCreateDataTypeRef} from "./CustomerAccountCreateData.js" +import {DraftCreateDataTypeRef} from "./DraftCreateData.js" +import {DraftCreateReturnTypeRef} from "./DraftCreateReturn.js" +import {DraftUpdateDataTypeRef} from "./DraftUpdateData.js" +import {DraftUpdateReturnTypeRef} from "./DraftUpdateReturn.js" +import {EncryptTutanotaPropertiesDataTypeRef} from "./EncryptTutanotaPropertiesData.js" +import {EntropyDataTypeRef} from "./EntropyData.js" +import {ExternalUserDataTypeRef} from "./ExternalUserData.js" +import {FileDataDataGetTypeRef} from "./FileDataDataGet.js" +import {FileDataDataPostTypeRef} from "./FileDataDataPost.js" +import {FileDataReturnPostTypeRef} from "./FileDataReturnPost.js" +import {FileDataDataReturnTypeRef} from "./FileDataDataReturn.js" +import {GroupInvitationPostDataTypeRef} from "./GroupInvitationPostData.js" +import {GroupInvitationPostReturnTypeRef} from "./GroupInvitationPostReturn.js" +import {GroupInvitationPutDataTypeRef} from "./GroupInvitationPutData.js" +import {GroupInvitationDeleteDataTypeRef} from "./GroupInvitationDeleteData.js" +import {ListUnsubscribeDataTypeRef} from "./ListUnsubscribeData.js" +import {CreateLocalAdminGroupDataTypeRef} from "./CreateLocalAdminGroupData.js" +import {DeleteGroupDataTypeRef} from "./DeleteGroupData.js" +import {CreateMailFolderDataTypeRef} from "./CreateMailFolderData.js" +import {CreateMailFolderReturnTypeRef} from "./CreateMailFolderReturn.js" +import {DeleteMailFolderDataTypeRef} from "./DeleteMailFolderData.js" +import {CreateMailGroupDataTypeRef} from "./CreateMailGroupData.js" +import {DeleteMailDataTypeRef} from "./DeleteMailData.js" +import {MoveMailDataTypeRef} from "./MoveMailData.js" +import {ReceiveInfoServiceDataTypeRef} from "./ReceiveInfoServiceData.js" +import {ReportMailPostDataTypeRef} from "./ReportMailPostData.js" +import {SendDraftDataTypeRef} from "./SendDraftData.js" +import {SendDraftReturnTypeRef} from "./SendDraftReturn.js" +import {UserAreaGroupDeleteDataTypeRef} from "./UserAreaGroupDeleteData.js" +import {UserAccountCreateDataTypeRef} from "./UserAccountCreateData.js" + +export const CalendarService = Object.freeze({ + app: "tutanota", + name: "CalendarService", + get: null, + post: {data: UserAreaGroupPostDataTypeRef, return: CreateGroupPostReturnTypeRef}, + put: null, + delete: {data: CalendarDeleteDataTypeRef, return: null}, +} as const) + +export const ContactFormAccountService = Object.freeze({ + app: "tutanota", + name: "ContactFormAccountService", + get: null, + post: {data: ContactFormAccountDataTypeRef, return: ContactFormAccountReturnTypeRef}, + put: null, + delete: null, +} as const) + +export const CustomerAccountService = Object.freeze({ + app: "tutanota", + name: "CustomerAccountService", + get: null, + post: {data: CustomerAccountCreateDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const DraftService = Object.freeze({ + app: "tutanota", + name: "DraftService", + get: null, + post: {data: DraftCreateDataTypeRef, return: DraftCreateReturnTypeRef}, + put: {data: DraftUpdateDataTypeRef, return: DraftUpdateReturnTypeRef}, + delete: null, +} as const) + +export const EncryptTutanotaPropertiesService = Object.freeze({ + app: "tutanota", + name: "EncryptTutanotaPropertiesService", + get: null, + post: {data: EncryptTutanotaPropertiesDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const EntropyService = Object.freeze({ + app: "tutanota", + name: "EntropyService", + get: null, + post: null, + put: {data: EntropyDataTypeRef, return: null}, + delete: null, +} as const) + +export const ExternalUserService = Object.freeze({ + app: "tutanota", + name: "ExternalUserService", + get: null, + post: {data: ExternalUserDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const FileDataService = Object.freeze({ + app: "tutanota", + name: "FileDataService", + get: {data: FileDataDataGetTypeRef, return: null}, + post: {data: FileDataDataPostTypeRef, return: FileDataReturnPostTypeRef}, + put: {data: FileDataDataReturnTypeRef, return: null}, + delete: null, +} as const) + +export const GroupInvitationService = Object.freeze({ + app: "tutanota", + name: "GroupInvitationService", + get: null, + post: {data: GroupInvitationPostDataTypeRef, return: GroupInvitationPostReturnTypeRef}, + put: {data: GroupInvitationPutDataTypeRef, return: null}, + delete: {data: GroupInvitationDeleteDataTypeRef, return: null}, +} as const) + +export const ListUnsubscribeService = Object.freeze({ + app: "tutanota", + name: "ListUnsubscribeService", + get: null, + post: {data: ListUnsubscribeDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const LocalAdminGroupService = Object.freeze({ + app: "tutanota", + name: "LocalAdminGroupService", + get: null, + post: {data: CreateLocalAdminGroupDataTypeRef, return: null}, + put: null, + delete: {data: DeleteGroupDataTypeRef, return: null}, +} as const) + +export const MailFolderService = Object.freeze({ + app: "tutanota", + name: "MailFolderService", + get: null, + post: {data: CreateMailFolderDataTypeRef, return: CreateMailFolderReturnTypeRef}, + put: null, + delete: {data: DeleteMailFolderDataTypeRef, return: null}, +} as const) + +export const MailGroupService = Object.freeze({ + app: "tutanota", + name: "MailGroupService", + get: null, + post: {data: CreateMailGroupDataTypeRef, return: null}, + put: null, + delete: {data: DeleteGroupDataTypeRef, return: null}, +} as const) + +export const MailService = Object.freeze({ + app: "tutanota", + name: "MailService", + get: null, + post: null, + put: null, + delete: {data: DeleteMailDataTypeRef, return: null}, +} as const) + +export const MoveMailService = Object.freeze({ + app: "tutanota", + name: "MoveMailService", + get: null, + post: {data: MoveMailDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const ReceiveInfoService = Object.freeze({ + app: "tutanota", + name: "ReceiveInfoService", + get: null, + post: {data: ReceiveInfoServiceDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const ReportMailService = Object.freeze({ + app: "tutanota", + name: "ReportMailService", + get: null, + post: {data: ReportMailPostDataTypeRef, return: null}, + put: null, + delete: null, +} as const) + +export const SendDraftService = Object.freeze({ + app: "tutanota", + name: "SendDraftService", + get: null, + post: {data: SendDraftDataTypeRef, return: SendDraftReturnTypeRef}, + put: null, + delete: null, +} as const) + +export const TemplateGroupService = Object.freeze({ + app: "tutanota", + name: "TemplateGroupService", + get: null, + post: {data: UserAreaGroupPostDataTypeRef, return: CreateGroupPostReturnTypeRef}, + put: null, + delete: {data: UserAreaGroupDeleteDataTypeRef, return: null}, +} as const) + +export const UserAccountService = Object.freeze({ + app: "tutanota", + name: "UserAccountService", + get: null, + post: {data: UserAccountCreateDataTypeRef, return: null}, + put: null, + delete: null, +} as const) \ No newline at end of file diff --git a/src/api/entities/tutanota/SpamResults.ts b/src/api/entities/tutanota/SpamResults.ts index 8e23205dd2..927d9645f3 100644 --- a/src/api/entities/tutanota/SpamResults.ts +++ b/src/api/entities/tutanota/SpamResults.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "SpamResult" + "refType": "SpamResult", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/Subfiles.ts b/src/api/entities/tutanota/Subfiles.ts index 0c1c72b1cc..a0a6a82156 100644 --- a/src/api/entities/tutanota/Subfiles.ts +++ b/src/api/entities/tutanota/Subfiles.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "File" + "refType": "File", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/TemplateGroupRoot.ts b/src/api/entities/tutanota/TemplateGroupRoot.ts index d3c596b267..5de9350285 100644 --- a/src/api/entities/tutanota/TemplateGroupRoot.ts +++ b/src/api/entities/tutanota/TemplateGroupRoot.ts @@ -55,14 +55,16 @@ export const _TypeModel: TypeModel = { "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "KnowledgeBaseEntry" + "refType": "KnowledgeBaseEntry", + "dependency": null }, "templates": { "id": 1188, "type": "LIST_ASSOCIATION", "cardinality": "One", "final": true, - "refType": "EmailTemplate" + "refType": "EmailTemplate", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/TutanotaProperties.ts b/src/api/entities/tutanota/TutanotaProperties.ts index a32c3d278e..de11a3f52a 100644 --- a/src/api/entities/tutanota/TutanotaProperties.ts +++ b/src/api/entities/tutanota/TutanotaProperties.ts @@ -136,7 +136,8 @@ export const _TypeModel: TypeModel = { "type": "LIST_ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": false, - "refType": "Mail" + "refType": "Mail", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/UserAreaGroupData.ts b/src/api/entities/tutanota/UserAreaGroupData.ts index f76e349a0c..fc1f6660db 100644 --- a/src/api/entities/tutanota/UserAreaGroupData.ts +++ b/src/api/entities/tutanota/UserAreaGroupData.ts @@ -27,6 +27,13 @@ export const _TypeModel: TypeModel = { "final": false, "encrypted": false }, + "customerEncGroupInfoSessionKey": { + "id": 960, + "type": "Bytes", + "cardinality": "One", + "final": false, + "encrypted": false + }, "groupEncGroupRootSessionKey": { "id": 958, "type": "Bytes", @@ -41,13 +48,6 @@ export const _TypeModel: TypeModel = { "final": false, "encrypted": false }, - "customerEncGroupInfoSessionKey": { - "id": 960, - "type": "Bytes", - "cardinality": "One", - "final": false, - "encrypted": false - }, "userEncGroupKey": { "id": 961, "type": "Bytes", @@ -62,7 +62,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "ZeroOrOne", "final": true, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "tutanota", @@ -78,9 +79,9 @@ export type UserAreaGroupData = { _id: Id; adminEncGroupKey: null | Uint8Array; + customerEncGroupInfoSessionKey: Uint8Array; groupEncGroupRootSessionKey: Uint8Array; groupInfoEncName: Uint8Array; - customerEncGroupInfoSessionKey: Uint8Array; userEncGroupKey: Uint8Array; adminGroup: null | Id; diff --git a/src/api/entities/tutanota/UserAreaGroupDeleteData.ts b/src/api/entities/tutanota/UserAreaGroupDeleteData.ts index 601f25ced8..c2ca946173 100644 --- a/src/api/entities/tutanota/UserAreaGroupDeleteData.ts +++ b/src/api/entities/tutanota/UserAreaGroupDeleteData.ts @@ -27,7 +27,8 @@ export const _TypeModel: TypeModel = { "type": "ELEMENT_ASSOCIATION", "cardinality": "One", "final": false, - "refType": "Group" + "refType": "Group", + "dependency": null } }, "app": "tutanota", diff --git a/src/api/entities/tutanota/tutanotaModelMap.ts b/src/api/entities/tutanota/tutanotaModelMap.ts index 9f61cf6a3e..aa4759e2b7 100644 --- a/src/api/entities/tutanota/tutanotaModelMap.ts +++ b/src/api/entities/tutanota/tutanotaModelMap.ts @@ -1,119 +1,119 @@ const map = { - DataBlock: () => import('./DataBlock.js'), - FileData: () => import('./FileData.js'), - Subfiles: () => import('./Subfiles.js'), - File: () => import('./File.js'), - FileSystem: () => import('./FileSystem.js'), - MailBody: () => import('./MailBody.js'), + AttachmentKeyData: () => import('./AttachmentKeyData.js'), + Birthday: () => import('./Birthday.js'), + CalendarDeleteData: () => import('./CalendarDeleteData.js'), + CalendarEvent: () => import('./CalendarEvent.js'), + CalendarEventAttendee: () => import('./CalendarEventAttendee.js'), + CalendarEventIndexRef: () => import('./CalendarEventIndexRef.js'), + CalendarEventUidIndex: () => import('./CalendarEventUidIndex.js'), + CalendarEventUpdate: () => import('./CalendarEventUpdate.js'), + CalendarEventUpdateList: () => import('./CalendarEventUpdateList.js'), + CalendarGroupRoot: () => import('./CalendarGroupRoot.js'), + CalendarRepeatRule: () => import('./CalendarRepeatRule.js'), + Contact: () => import('./Contact.js'), + ContactAddress: () => import('./ContactAddress.js'), + ContactForm: () => import('./ContactForm.js'), + ContactFormAccountData: () => import('./ContactFormAccountData.js'), + ContactFormAccountReturn: () => import('./ContactFormAccountReturn.js'), + ContactFormLanguage: () => import('./ContactFormLanguage.js'), + ContactFormUserData: () => import('./ContactFormUserData.js'), + ContactList: () => import('./ContactList.js'), ContactMailAddress: () => import('./ContactMailAddress.js'), ContactPhoneNumber: () => import('./ContactPhoneNumber.js'), - ContactAddress: () => import('./ContactAddress.js'), ContactSocialId: () => import('./ContactSocialId.js'), - Contact: () => import('./Contact.js'), ConversationEntry: () => import('./ConversationEntry.js'), - MailAddress: () => import('./MailAddress.js'), - Mail: () => import('./Mail.js'), - MailBox: () => import('./MailBox.js'), - PasswordChannelPhoneNumber: () => import('./PasswordChannelPhoneNumber.js'), CreateExternalUserGroupData: () => import('./CreateExternalUserGroupData.js'), + CreateFileData: () => import('./CreateFileData.js'), + CreateGroupPostReturn: () => import('./CreateGroupPostReturn.js'), + CreateLocalAdminGroupData: () => import('./CreateLocalAdminGroupData.js'), + CreateMailFolderData: () => import('./CreateMailFolderData.js'), + CreateMailFolderReturn: () => import('./CreateMailFolderReturn.js'), + CreateMailGroupData: () => import('./CreateMailGroupData.js'), + CustomerAccountCreateData: () => import('./CustomerAccountCreateData.js'), + CustomerContactFormGroupRoot: () => import('./CustomerContactFormGroupRoot.js'), + DataBlock: () => import('./DataBlock.js'), + DeleteContactFormConversationIndex: () => import('./DeleteContactFormConversationIndex.js'), + DeleteContactFormConversationIndexEntry: () => import('./DeleteContactFormConversationIndexEntry.js'), + DeleteGroupData: () => import('./DeleteGroupData.js'), + DeleteMailData: () => import('./DeleteMailData.js'), + DeleteMailFolderData: () => import('./DeleteMailFolderData.js'), + DraftAttachment: () => import('./DraftAttachment.js'), + DraftCreateData: () => import('./DraftCreateData.js'), + DraftCreateReturn: () => import('./DraftCreateReturn.js'), + DraftData: () => import('./DraftData.js'), + DraftRecipient: () => import('./DraftRecipient.js'), + DraftUpdateData: () => import('./DraftUpdateData.js'), + DraftUpdateReturn: () => import('./DraftUpdateReturn.js'), + EmailTemplate: () => import('./EmailTemplate.js'), + EmailTemplateContent: () => import('./EmailTemplateContent.js'), + EncryptTutanotaPropertiesData: () => import('./EncryptTutanotaPropertiesData.js'), + EncryptedMailAddress: () => import('./EncryptedMailAddress.js'), + EntropyData: () => import('./EntropyData.js'), ExternalUserData: () => import('./ExternalUserData.js'), - ContactList: () => import('./ContactList.js'), - RemoteImapSyncInfo: () => import('./RemoteImapSyncInfo.js'), - ImapFolder: () => import('./ImapFolder.js'), - ImapSyncState: () => import('./ImapSyncState.js'), - ImapSyncConfiguration: () => import('./ImapSyncConfiguration.js'), - TutanotaProperties: () => import('./TutanotaProperties.js'), - NotificationMail: () => import('./NotificationMail.js'), - PasswordMessagingData: () => import('./PasswordMessagingData.js'), - PasswordMessagingReturn: () => import('./PasswordMessagingReturn.js'), - PasswordAutoAuthenticationReturn: () => import('./PasswordAutoAuthenticationReturn.js'), - PasswordRetrievalData: () => import('./PasswordRetrievalData.js'), - PasswordRetrievalReturn: () => import('./PasswordRetrievalReturn.js'), - PasswordChannelReturn: () => import('./PasswordChannelReturn.js'), + File: () => import('./File.js'), + FileData: () => import('./FileData.js'), FileDataDataGet: () => import('./FileDataDataGet.js'), FileDataDataPost: () => import('./FileDataDataPost.js'), FileDataDataReturn: () => import('./FileDataDataReturn.js'), FileDataReturnPost: () => import('./FileDataReturnPost.js'), - CreateFileData: () => import('./CreateFileData.js'), - DeleteMailData: () => import('./DeleteMailData.js'), - MailFolder: () => import('./MailFolder.js'), - MailFolderRef: () => import('./MailFolderRef.js'), - MoveMailData: () => import('./MoveMailData.js'), - CreateMailFolderData: () => import('./CreateMailFolderData.js'), - CreateMailFolderReturn: () => import('./CreateMailFolderReturn.js'), - DeleteMailFolderData: () => import('./DeleteMailFolderData.js'), - EncryptTutanotaPropertiesData: () => import('./EncryptTutanotaPropertiesData.js'), - DraftRecipient: () => import('./DraftRecipient.js'), - NewDraftAttachment: () => import('./NewDraftAttachment.js'), - DraftAttachment: () => import('./DraftAttachment.js'), - DraftData: () => import('./DraftData.js'), - DraftCreateData: () => import('./DraftCreateData.js'), - DraftCreateReturn: () => import('./DraftCreateReturn.js'), - DraftUpdateData: () => import('./DraftUpdateData.js'), - DraftUpdateReturn: () => import('./DraftUpdateReturn.js'), - InternalRecipientKeyData: () => import('./InternalRecipientKeyData.js'), - SecureExternalRecipientKeyData: () => import('./SecureExternalRecipientKeyData.js'), - AttachmentKeyData: () => import('./AttachmentKeyData.js'), - SendDraftData: () => import('./SendDraftData.js'), - SendDraftReturn: () => import('./SendDraftReturn.js'), - ReceiveInfoServiceData: () => import('./ReceiveInfoServiceData.js'), - InboxRule: () => import('./InboxRule.js'), - MailHeaders: () => import('./MailHeaders.js'), - EncryptedMailAddress: () => import('./EncryptedMailAddress.js'), - UserAccountUserData: () => import('./UserAccountUserData.js'), - InternalGroupData: () => import('./InternalGroupData.js'), - CustomerAccountCreateData: () => import('./CustomerAccountCreateData.js'), - UserAccountCreateData: () => import('./UserAccountCreateData.js'), - MailboxServerProperties: () => import('./MailboxServerProperties.js'), - MailboxGroupRoot: () => import('./MailboxGroupRoot.js'), - CreateLocalAdminGroupData: () => import('./CreateLocalAdminGroupData.js'), - CreateMailGroupData: () => import('./CreateMailGroupData.js'), - DeleteGroupData: () => import('./DeleteGroupData.js'), - MailRestriction: () => import('./MailRestriction.js'), - ContactForm: () => import('./ContactForm.js'), - ContactFormAccountReturn: () => import('./ContactFormAccountReturn.js'), - ContactFormUserData: () => import('./ContactFormUserData.js'), - CustomerContactFormGroupRoot: () => import('./CustomerContactFormGroupRoot.js'), - ContactFormAccountData: () => import('./ContactFormAccountData.js'), - DeleteContactFormConversationIndexEntry: () => import('./DeleteContactFormConversationIndexEntry.js'), - DeleteContactFormConversationIndex: () => import('./DeleteContactFormConversationIndex.js'), - Birthday: () => import('./Birthday.js'), - PhotosRef: () => import('./PhotosRef.js'), - ContactFormLanguage: () => import('./ContactFormLanguage.js'), - ListUnsubscribeData: () => import('./ListUnsubscribeData.js'), - CalendarRepeatRule: () => import('./CalendarRepeatRule.js'), - CalendarEvent: () => import('./CalendarEvent.js'), - CalendarGroupRoot: () => import('./CalendarGroupRoot.js'), - UserAreaGroupData: () => import('./UserAreaGroupData.js'), - UserAreaGroupPostData: () => import('./UserAreaGroupPostData.js'), - GroupSettings: () => import('./GroupSettings.js'), - UserSettingsGroupRoot: () => import('./UserSettingsGroupRoot.js'), - CalendarDeleteData: () => import('./CalendarDeleteData.js'), - CreateGroupPostReturn: () => import('./CreateGroupPostReturn.js'), - SharedGroupData: () => import('./SharedGroupData.js'), + FileSystem: () => import('./FileSystem.js'), + GroupInvitationDeleteData: () => import('./GroupInvitationDeleteData.js'), GroupInvitationPostData: () => import('./GroupInvitationPostData.js'), GroupInvitationPostReturn: () => import('./GroupInvitationPostReturn.js'), GroupInvitationPutData: () => import('./GroupInvitationPutData.js'), - GroupInvitationDeleteData: () => import('./GroupInvitationDeleteData.js'), + GroupSettings: () => import('./GroupSettings.js'), + ImapFolder: () => import('./ImapFolder.js'), + ImapSyncConfiguration: () => import('./ImapSyncConfiguration.js'), + ImapSyncState: () => import('./ImapSyncState.js'), + InboxRule: () => import('./InboxRule.js'), + InternalGroupData: () => import('./InternalGroupData.js'), + InternalRecipientKeyData: () => import('./InternalRecipientKeyData.js'), + KnowledgeBaseEntry: () => import('./KnowledgeBaseEntry.js'), + KnowledgeBaseEntryKeyword: () => import('./KnowledgeBaseEntryKeyword.js'), + ListUnsubscribeData: () => import('./ListUnsubscribeData.js'), + Mail: () => import('./Mail.js'), + MailAddress: () => import('./MailAddress.js'), + MailBody: () => import('./MailBody.js'), + MailBox: () => import('./MailBox.js'), + MailFolder: () => import('./MailFolder.js'), + MailFolderRef: () => import('./MailFolderRef.js'), + MailHeaders: () => import('./MailHeaders.js'), + MailRestriction: () => import('./MailRestriction.js'), + MailboxGroupRoot: () => import('./MailboxGroupRoot.js'), + MailboxProperties: () => import('./MailboxProperties.js'), + MailboxServerProperties: () => import('./MailboxServerProperties.js'), + MoveMailData: () => import('./MoveMailData.js'), + NewDraftAttachment: () => import('./NewDraftAttachment.js'), + NotificationMail: () => import('./NotificationMail.js'), + OutOfOfficeNotification: () => import('./OutOfOfficeNotification.js'), + OutOfOfficeNotificationMessage: () => import('./OutOfOfficeNotificationMessage.js'), + OutOfOfficeNotificationRecipientList: () => import('./OutOfOfficeNotificationRecipientList.js'), + PasswordAutoAuthenticationReturn: () => import('./PasswordAutoAuthenticationReturn.js'), + PasswordChannelPhoneNumber: () => import('./PasswordChannelPhoneNumber.js'), + PasswordChannelReturn: () => import('./PasswordChannelReturn.js'), + PasswordMessagingData: () => import('./PasswordMessagingData.js'), + PasswordMessagingReturn: () => import('./PasswordMessagingReturn.js'), + PasswordRetrievalData: () => import('./PasswordRetrievalData.js'), + PasswordRetrievalReturn: () => import('./PasswordRetrievalReturn.js'), PhishingMarker: () => import('./PhishingMarker.js'), PhishingMarkerWebsocketData: () => import('./PhishingMarkerWebsocketData.js'), + PhotosRef: () => import('./PhotosRef.js'), + ReceiveInfoServiceData: () => import('./ReceiveInfoServiceData.js'), + RemoteImapSyncInfo: () => import('./RemoteImapSyncInfo.js'), ReportMailPostData: () => import('./ReportMailPostData.js'), - CalendarEventAttendee: () => import('./CalendarEventAttendee.js'), - CalendarEventUidIndex: () => import('./CalendarEventUidIndex.js'), - CalendarEventIndexRef: () => import('./CalendarEventIndexRef.js'), - CalendarEventUpdate: () => import('./CalendarEventUpdate.js'), - CalendarEventUpdateList: () => import('./CalendarEventUpdateList.js'), - EntropyData: () => import('./EntropyData.js'), - OutOfOfficeNotificationMessage: () => import('./OutOfOfficeNotificationMessage.js'), - OutOfOfficeNotification: () => import('./OutOfOfficeNotification.js'), - OutOfOfficeNotificationRecipientList: () => import('./OutOfOfficeNotificationRecipientList.js'), - EmailTemplateContent: () => import('./EmailTemplateContent.js'), - EmailTemplate: () => import('./EmailTemplate.js'), - KnowledgeBaseEntryKeyword: () => import('./KnowledgeBaseEntryKeyword.js'), - KnowledgeBaseEntry: () => import('./KnowledgeBaseEntry.js'), + SecureExternalRecipientKeyData: () => import('./SecureExternalRecipientKeyData.js'), + SendDraftData: () => import('./SendDraftData.js'), + SendDraftReturn: () => import('./SendDraftReturn.js'), + SharedGroupData: () => import('./SharedGroupData.js'), + SpamResults: () => import('./SpamResults.js'), + Subfiles: () => import('./Subfiles.js'), TemplateGroupRoot: () => import('./TemplateGroupRoot.js'), + TutanotaProperties: () => import('./TutanotaProperties.js'), + UserAccountCreateData: () => import('./UserAccountCreateData.js'), + UserAccountUserData: () => import('./UserAccountUserData.js'), + UserAreaGroupData: () => import('./UserAreaGroupData.js'), UserAreaGroupDeleteData: () => import('./UserAreaGroupDeleteData.js'), - MailboxProperties: () => import('./MailboxProperties.js'), - SpamResults: () => import('./SpamResults.js') + UserAreaGroupPostData: () => import('./UserAreaGroupPostData.js'), + UserSettingsGroupRoot: () => import('./UserSettingsGroupRoot.js') } export default map \ No newline at end of file diff --git a/src/api/entities/tutanota/tutanotaModelMapDebug.ts b/src/api/entities/tutanota/tutanotaModelMapDebug.ts index 7ecffcf9e8..90cfe80eed 100644 --- a/src/api/entities/tutanota/tutanotaModelMapDebug.ts +++ b/src/api/entities/tutanota/tutanotaModelMapDebug.ts @@ -1,118 +1,118 @@ -const map = { "DataBlock": () => Promise.resolve({"_TypeModel":{"name":"DataBlock","since":1,"type":"AGGREGATED_TYPE","id":0,"rootId":"CHR1dGFub3RhAAA","versioned":false,"encrypted":false,"values":{"_id":{"id":1,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"blockData":{"id":3,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"size":{"id":2,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "FileData": () => Promise.resolve({"_TypeModel":{"name":"FileData","since":1,"type":"ELEMENT_TYPE","id":4,"rootId":"CHR1dGFub3RhAAQ","versioned":false,"encrypted":false,"values":{"_format":{"id":8,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":6,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":579,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":7,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"size":{"id":9,"type":"Number","cardinality":"One","final":false,"encrypted":false},"unreferenced":{"id":409,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"blobs":{"id":1221,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"Blob","dependency":"sys"},"blocks":{"id":10,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"DataBlock","dependency":null}},"app":"tutanota","version":"51"}}), - "Subfiles": () => Promise.resolve({"_TypeModel":{"name":"Subfiles","since":1,"type":"AGGREGATED_TYPE","id":11,"rootId":"CHR1dGFub3RhAAs","versioned":false,"encrypted":false,"values":{"_id":{"id":12,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"files":{"id":27,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "File": () => Promise.resolve({"_TypeModel":{"name":"File","since":1,"type":"LIST_ELEMENT_TYPE","id":13,"rootId":"CHR1dGFub3RhAA0","versioned":false,"encrypted":true,"values":{"_area":{"id":20,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":17,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":15,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":19,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":18,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":580,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":16,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"cid":{"id":924,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"mimeType":{"id":23,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"name":{"id":21,"type":"String","cardinality":"One","final":false,"encrypted":true},"size":{"id":22,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"subFiles":{"id":26,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"Subfiles","dependency":null},"data":{"id":24,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"FileData"},"parent":{"id":25,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "FileSystem": () => Promise.resolve({"_TypeModel":{"name":"FileSystem","since":1,"type":"ELEMENT_TYPE","id":28,"rootId":"CHR1dGFub3RhABw","versioned":false,"encrypted":true,"values":{"_format":{"id":32,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":30,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":582,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":581,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":31,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"files":{"id":35,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "MailBody": () => Promise.resolve({"_TypeModel":{"name":"MailBody","since":1,"type":"ELEMENT_TYPE","id":36,"rootId":"CHR1dGFub3RhACQ","versioned":false,"encrypted":true,"values":{"_area":{"id":42,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":40,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":38,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":41,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":584,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":583,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":39,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"compressedText":{"id":989,"type":"CompressedString","cardinality":"ZeroOrOne","final":true,"encrypted":true},"text":{"id":43,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), +const map = { "AttachmentKeyData": () => Promise.resolve({"_TypeModel":{"name":"AttachmentKeyData","since":11,"type":"AGGREGATED_TYPE","id":542,"rootId":"CHR1dGFub3RhAAIe","versioned":false,"encrypted":false,"values":{"_id":{"id":543,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bucketEncFileSessionKey":{"id":544,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"fileSessionKey":{"id":545,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"file":{"id":546,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"File","dependency":null}},"app":"tutanota","version":"51"}}), + "Birthday": () => Promise.resolve({"_TypeModel":{"name":"Birthday","since":23,"type":"AGGREGATED_TYPE","id":844,"rootId":"CHR1dGFub3RhAANM","versioned":false,"encrypted":false,"values":{"_id":{"id":845,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"day":{"id":846,"type":"Number","cardinality":"One","final":false,"encrypted":false},"month":{"id":847,"type":"Number","cardinality":"One","final":false,"encrypted":false},"year":{"id":848,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "CalendarDeleteData": () => Promise.resolve({"_TypeModel":{"name":"CalendarDeleteData","since":34,"type":"DATA_TRANSFER_TYPE","id":982,"rootId":"CHR1dGFub3RhAAPW","versioned":false,"encrypted":false,"values":{"_format":{"id":983,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"groupRootId":{"id":984,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"CalendarGroupRoot","dependency":null}},"app":"tutanota","version":"51"}}), + "CalendarEvent": () => Promise.resolve({"_TypeModel":{"name":"CalendarEvent","since":33,"type":"LIST_ELEMENT_TYPE","id":933,"rootId":"CHR1dGFub3RhAAOl","versioned":false,"encrypted":true,"values":{"_format":{"id":937,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":935,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":939,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":938,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":936,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"description":{"id":941,"type":"String","cardinality":"One","final":false,"encrypted":true},"endTime":{"id":943,"type":"Date","cardinality":"One","final":false,"encrypted":true},"hashedUid":{"id":1088,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"invitedConfidentially":{"id":1090,"type":"Boolean","cardinality":"ZeroOrOne","final":false,"encrypted":true},"location":{"id":944,"type":"String","cardinality":"One","final":false,"encrypted":true},"sequence":{"id":1089,"type":"Number","cardinality":"One","final":false,"encrypted":true},"startTime":{"id":942,"type":"Date","cardinality":"One","final":false,"encrypted":true},"summary":{"id":940,"type":"String","cardinality":"One","final":false,"encrypted":true},"uid":{"id":988,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true}},"associations":{"alarmInfos":{"id":946,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"UserAlarmInfo","dependency":null},"attendees":{"id":1091,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"CalendarEventAttendee","dependency":null},"organizer":{"id":1092,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"EncryptedMailAddress","dependency":null},"repeatRule":{"id":945,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CalendarRepeatRule","dependency":null}},"app":"tutanota","version":"51"}}), + "CalendarEventAttendee": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventAttendee","since":42,"type":"AGGREGATED_TYPE","id":1084,"rootId":"CHR1dGFub3RhAAQ8","versioned":false,"encrypted":false,"values":{"_id":{"id":1085,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"status":{"id":1086,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{"address":{"id":1087,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"EncryptedMailAddress","dependency":null}},"app":"tutanota","version":"51"}}), + "CalendarEventIndexRef": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventIndexRef","since":42,"type":"AGGREGATED_TYPE","id":1100,"rootId":"CHR1dGFub3RhAARM","versioned":false,"encrypted":false,"values":{"_id":{"id":1101,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":1102,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEventUidIndex","dependency":null}},"app":"tutanota","version":"51"}}), + "CalendarEventUidIndex": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventUidIndex","since":42,"type":"LIST_ELEMENT_TYPE","id":1093,"rootId":"CHR1dGFub3RhAARF","versioned":false,"encrypted":false,"values":{"_format":{"id":1097,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1095,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1098,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1096,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"calendarEvent":{"id":1099,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEvent","dependency":null}},"app":"tutanota","version":"51"}}), + "CalendarEventUpdate": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventUpdate","since":42,"type":"LIST_ELEMENT_TYPE","id":1104,"rootId":"CHR1dGFub3RhAARQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1108,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1106,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1110,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1109,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1107,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"sender":{"id":1111,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"file":{"id":1112,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"File","dependency":null}},"app":"tutanota","version":"51"}}), + "CalendarEventUpdateList": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventUpdateList","since":42,"type":"AGGREGATED_TYPE","id":1113,"rootId":"CHR1dGFub3RhAARZ","versioned":false,"encrypted":false,"values":{"_id":{"id":1114,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":1115,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEventUpdate","dependency":null}},"app":"tutanota","version":"51"}}), + "CalendarGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"CalendarGroupRoot","since":33,"type":"ELEMENT_TYPE","id":947,"rootId":"CHR1dGFub3RhAAOz","versioned":false,"encrypted":true,"values":{"_format":{"id":951,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":949,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":953,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":952,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":950,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"index":{"id":1103,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"CalendarEventIndexRef","dependency":null},"longEvents":{"id":955,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEvent","dependency":null},"shortEvents":{"id":954,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEvent","dependency":null}},"app":"tutanota","version":"51"}}), + "CalendarRepeatRule": () => Promise.resolve({"_TypeModel":{"name":"CalendarRepeatRule","since":33,"type":"AGGREGATED_TYPE","id":926,"rootId":"CHR1dGFub3RhAAOe","versioned":false,"encrypted":false,"values":{"_id":{"id":927,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"endType":{"id":929,"type":"Number","cardinality":"One","final":false,"encrypted":true},"endValue":{"id":930,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":true},"frequency":{"id":928,"type":"Number","cardinality":"One","final":false,"encrypted":true},"interval":{"id":931,"type":"Number","cardinality":"One","final":false,"encrypted":true},"timeZone":{"id":932,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), + "Contact": () => Promise.resolve({"_TypeModel":{"name":"Contact","since":1,"type":"LIST_ELEMENT_TYPE","id":64,"rootId":"CHR1dGFub3RhAEA","versioned":true,"encrypted":true,"values":{"_area":{"id":71,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":68,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":66,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":70,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":69,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":585,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":67,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"autoTransmitPassword":{"id":78,"type":"String","cardinality":"One","final":false,"encrypted":true},"birthdayIso":{"id":1083,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"comment":{"id":77,"type":"String","cardinality":"One","final":false,"encrypted":true},"company":{"id":74,"type":"String","cardinality":"One","final":false,"encrypted":true},"firstName":{"id":72,"type":"String","cardinality":"One","final":false,"encrypted":true},"lastName":{"id":73,"type":"String","cardinality":"One","final":false,"encrypted":true},"nickname":{"id":849,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"oldBirthdayDate":{"id":76,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":true},"presharedPassword":{"id":79,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"role":{"id":75,"type":"String","cardinality":"One","final":false,"encrypted":true},"title":{"id":850,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true}},"associations":{"addresses":{"id":82,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactAddress","dependency":null},"mailAddresses":{"id":80,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactMailAddress","dependency":null},"oldBirthdayAggregate":{"id":851,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"Birthday","dependency":null},"phoneNumbers":{"id":81,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactPhoneNumber","dependency":null},"photo":{"id":852,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"File","dependency":null},"socialIds":{"id":83,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactSocialId","dependency":null}},"app":"tutanota","version":"51"}}), + "ContactAddress": () => Promise.resolve({"_TypeModel":{"name":"ContactAddress","since":1,"type":"AGGREGATED_TYPE","id":54,"rootId":"CHR1dGFub3RhADY","versioned":false,"encrypted":false,"values":{"_id":{"id":55,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"address":{"id":57,"type":"String","cardinality":"One","final":false,"encrypted":true},"customTypeName":{"id":58,"type":"String","cardinality":"One","final":false,"encrypted":true},"type":{"id":56,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), + "ContactForm": () => Promise.resolve({"_TypeModel":{"name":"ContactForm","since":19,"type":"LIST_ELEMENT_TYPE","id":733,"rootId":"CHR1dGFub3RhAALd","versioned":false,"encrypted":false,"values":{"_format":{"id":737,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":735,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":738,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":736,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"path":{"id":739,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"delegationGroups_removed":{"id":747,"type":"ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"Group","dependency":null},"languages":{"id":865,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactFormLanguage","dependency":null},"participantGroupInfos":{"id":822,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"GroupInfo","dependency":null},"targetGroup":{"id":746,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null},"targetGroupInfo":{"id":821,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"GroupInfo","dependency":null}},"app":"tutanota","version":"51"}}), + "ContactFormAccountData": () => Promise.resolve({"_TypeModel":{"name":"ContactFormAccountData","since":19,"type":"DATA_TRANSFER_TYPE","id":791,"rootId":"CHR1dGFub3RhAAMX","versioned":false,"encrypted":false,"values":{"_format":{"id":792,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"contactForm":{"id":796,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"ContactForm","dependency":null},"userData":{"id":793,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"ContactFormUserData","dependency":null},"userGroupData":{"id":794,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null}},"app":"tutanota","version":"51"}}), + "ContactFormAccountReturn": () => Promise.resolve({"_TypeModel":{"name":"ContactFormAccountReturn","since":19,"type":"DATA_TRANSFER_TYPE","id":750,"rootId":"CHR1dGFub3RhAALu","versioned":false,"encrypted":false,"values":{"_format":{"id":751,"type":"Number","cardinality":"One","final":false,"encrypted":false},"requestMailAddress":{"id":752,"type":"String","cardinality":"One","final":true,"encrypted":false},"responseMailAddress":{"id":753,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "ContactFormLanguage": () => Promise.resolve({"_TypeModel":{"name":"ContactFormLanguage","since":24,"type":"AGGREGATED_TYPE","id":857,"rootId":"CHR1dGFub3RhAANZ","versioned":false,"encrypted":false,"values":{"_id":{"id":858,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"code":{"id":859,"type":"String","cardinality":"One","final":false,"encrypted":false},"footerHtml":{"id":862,"type":"String","cardinality":"One","final":false,"encrypted":false},"headerHtml":{"id":861,"type":"String","cardinality":"One","final":false,"encrypted":false},"helpHtml":{"id":863,"type":"String","cardinality":"One","final":false,"encrypted":false},"pageTitle":{"id":860,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "ContactFormUserData": () => Promise.resolve({"_TypeModel":{"name":"ContactFormUserData","since":19,"type":"AGGREGATED_TYPE","id":754,"rootId":"CHR1dGFub3RhAALy","versioned":false,"encrypted":false,"values":{"_id":{"id":755,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"mailEncMailBoxSessionKey":{"id":763,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"ownerEncMailGroupInfoSessionKey":{"id":764,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"pwEncUserGroupKey":{"id":759,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"salt":{"id":756,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncClientKey":{"id":758,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncEntropy":{"id":761,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncMailGroupKey":{"id":760,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncTutanotaPropertiesSessionKey":{"id":762,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":757,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "ContactList": () => Promise.resolve({"_TypeModel":{"name":"ContactList","since":1,"type":"ELEMENT_TYPE","id":153,"rootId":"CHR1dGFub3RhAACZ","versioned":false,"encrypted":true,"values":{"_format":{"id":157,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":155,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":593,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":592,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":156,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"contacts":{"id":160,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Contact","dependency":null},"photos":{"id":856,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PhotosRef","dependency":null}},"app":"tutanota","version":"51"}}), "ContactMailAddress": () => Promise.resolve({"_TypeModel":{"name":"ContactMailAddress","since":1,"type":"AGGREGATED_TYPE","id":44,"rootId":"CHR1dGFub3RhACw","versioned":false,"encrypted":false,"values":{"_id":{"id":45,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"address":{"id":47,"type":"String","cardinality":"One","final":false,"encrypted":true},"customTypeName":{"id":48,"type":"String","cardinality":"One","final":false,"encrypted":true},"type":{"id":46,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), "ContactPhoneNumber": () => Promise.resolve({"_TypeModel":{"name":"ContactPhoneNumber","since":1,"type":"AGGREGATED_TYPE","id":49,"rootId":"CHR1dGFub3RhADE","versioned":false,"encrypted":false,"values":{"_id":{"id":50,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"customTypeName":{"id":53,"type":"String","cardinality":"One","final":false,"encrypted":true},"number":{"id":52,"type":"String","cardinality":"One","final":false,"encrypted":true},"type":{"id":51,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), - "ContactAddress": () => Promise.resolve({"_TypeModel":{"name":"ContactAddress","since":1,"type":"AGGREGATED_TYPE","id":54,"rootId":"CHR1dGFub3RhADY","versioned":false,"encrypted":false,"values":{"_id":{"id":55,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"address":{"id":57,"type":"String","cardinality":"One","final":false,"encrypted":true},"customTypeName":{"id":58,"type":"String","cardinality":"One","final":false,"encrypted":true},"type":{"id":56,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), "ContactSocialId": () => Promise.resolve({"_TypeModel":{"name":"ContactSocialId","since":1,"type":"AGGREGATED_TYPE","id":59,"rootId":"CHR1dGFub3RhADs","versioned":false,"encrypted":false,"values":{"_id":{"id":60,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"customTypeName":{"id":63,"type":"String","cardinality":"One","final":false,"encrypted":true},"socialId":{"id":62,"type":"String","cardinality":"One","final":false,"encrypted":true},"type":{"id":61,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), - "Contact": () => Promise.resolve({"_TypeModel":{"name":"Contact","since":1,"type":"LIST_ELEMENT_TYPE","id":64,"rootId":"CHR1dGFub3RhAEA","versioned":true,"encrypted":true,"values":{"_area":{"id":71,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":68,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":66,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":70,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":69,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":585,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":67,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"autoTransmitPassword":{"id":78,"type":"String","cardinality":"One","final":false,"encrypted":true},"birthdayIso":{"id":1083,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"comment":{"id":77,"type":"String","cardinality":"One","final":false,"encrypted":true},"company":{"id":74,"type":"String","cardinality":"One","final":false,"encrypted":true},"firstName":{"id":72,"type":"String","cardinality":"One","final":false,"encrypted":true},"lastName":{"id":73,"type":"String","cardinality":"One","final":false,"encrypted":true},"nickname":{"id":849,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"oldBirthdayDate":{"id":76,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":true},"presharedPassword":{"id":79,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true},"role":{"id":75,"type":"String","cardinality":"One","final":false,"encrypted":true},"title":{"id":850,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true}},"associations":{"addresses":{"id":82,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactAddress","dependency":null},"mailAddresses":{"id":80,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactMailAddress","dependency":null},"oldBirthdayAggregate":{"id":851,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"Birthday","dependency":null},"phoneNumbers":{"id":81,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactPhoneNumber","dependency":null},"socialIds":{"id":83,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactSocialId","dependency":null},"photo":{"id":852,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"File"}},"app":"tutanota","version":"51"}}), - "ConversationEntry": () => Promise.resolve({"_TypeModel":{"name":"ConversationEntry","since":1,"type":"LIST_ELEMENT_TYPE","id":84,"rootId":"CHR1dGFub3RhAFQ","versioned":false,"encrypted":false,"values":{"_format":{"id":120,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":118,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":588,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":119,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"conversationType":{"id":122,"type":"Number","cardinality":"One","final":true,"encrypted":false},"messageId":{"id":121,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"mail":{"id":124,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Mail"},"previous":{"id":123,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"ConversationEntry"}},"app":"tutanota","version":"51"}}), - "MailAddress": () => Promise.resolve({"_TypeModel":{"name":"MailAddress","since":1,"type":"AGGREGATED_TYPE","id":92,"rootId":"CHR1dGFub3RhAFw","versioned":false,"encrypted":false,"values":{"_id":{"id":93,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"address":{"id":95,"type":"String","cardinality":"One","final":true,"encrypted":false},"name":{"id":94,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"contact":{"id":96,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Contact"}},"app":"tutanota","version":"51"}}), - "Mail": () => Promise.resolve({"_TypeModel":{"name":"Mail","since":1,"type":"LIST_ELEMENT_TYPE","id":97,"rootId":"CHR1dGFub3RhAGE","versioned":false,"encrypted":true,"values":{"_area":{"id":104,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":101,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":99,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":103,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":102,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":587,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":100,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"authStatus":{"id":1022,"type":"Number","cardinality":"One","final":false,"encrypted":false},"confidential":{"id":426,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"differentEnvelopeSender":{"id":617,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"listUnsubscribe":{"id":866,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"method":{"id":1120,"type":"Number","cardinality":"One","final":true,"encrypted":true},"movedTime":{"id":896,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"phishingStatus":{"id":1021,"type":"Number","cardinality":"One","final":false,"encrypted":false},"receivedDate":{"id":107,"type":"Date","cardinality":"One","final":true,"encrypted":false},"replyType":{"id":466,"type":"Number","cardinality":"One","final":false,"encrypted":true},"sentDate":{"id":106,"type":"Date","cardinality":"One","final":true,"encrypted":false},"state":{"id":108,"type":"Number","cardinality":"One","final":true,"encrypted":false},"subject":{"id":105,"type":"String","cardinality":"One","final":true,"encrypted":true},"trashed":{"id":110,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"unread":{"id":109,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"bccRecipients":{"id":114,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"MailAddress","dependency":null},"bodyBlob":{"id":1224,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"Blob","dependency":"sys"},"ccRecipients":{"id":113,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"MailAddress","dependency":null},"headersBlob":{"id":1223,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"Blob","dependency":"sys"},"replyTos":{"id":616,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"EncryptedMailAddress","dependency":null},"restrictions":{"id":723,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"MailRestriction","dependency":null},"sender":{"id":111,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"MailAddress","dependency":null},"toRecipients":{"id":112,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"MailAddress","dependency":null},"attachments":{"id":115,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"File"},"body":{"id":116,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"MailBody"},"conversationEntry":{"id":117,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"ConversationEntry"},"headers":{"id":618,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"MailHeaders"}},"app":"tutanota","version":"51"}}), - "MailBox": () => Promise.resolve({"_TypeModel":{"name":"MailBox","since":1,"type":"ELEMENT_TYPE","id":125,"rootId":"CHR1dGFub3RhAH0","versioned":false,"encrypted":true,"values":{"_format":{"id":129,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":127,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":591,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":590,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":128,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"lastInfoDate":{"id":569,"type":"Date","cardinality":"One","final":true,"encrypted":false},"symEncShareBucketKey":{"id":131,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"spamResults":{"id":1220,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"SpamResults","dependency":null},"systemFolders":{"id":443,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"MailFolderRef","dependency":null},"mails":{"id":132,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Mail"},"receivedAttachments":{"id":134,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File"},"sentAttachments":{"id":133,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "PasswordChannelPhoneNumber": () => Promise.resolve({"_TypeModel":{"name":"PasswordChannelPhoneNumber","since":1,"type":"AGGREGATED_TYPE","id":135,"rootId":"CHR1dGFub3RhAACH","versioned":false,"encrypted":false,"values":{"_id":{"id":136,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"number":{"id":137,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "CreateExternalUserGroupData": () => Promise.resolve({"_TypeModel":{"name":"CreateExternalUserGroupData","since":1,"type":"AGGREGATED_TYPE","id":138,"rootId":"CHR1dGFub3RhAACK","versioned":false,"encrypted":false,"values":{"_id":{"id":139,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"internalUserEncUserGroupKey":{"id":143,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":141,"type":"String","cardinality":"One","final":false,"encrypted":false},"externalPwEncUserGroupKey":{"id":142,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "ConversationEntry": () => Promise.resolve({"_TypeModel":{"name":"ConversationEntry","since":1,"type":"LIST_ELEMENT_TYPE","id":84,"rootId":"CHR1dGFub3RhAFQ","versioned":false,"encrypted":false,"values":{"_format":{"id":120,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":118,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":588,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":119,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"conversationType":{"id":122,"type":"Number","cardinality":"One","final":true,"encrypted":false},"messageId":{"id":121,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{"mail":{"id":124,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Mail","dependency":null},"previous":{"id":123,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"ConversationEntry","dependency":null}},"app":"tutanota","version":"51"}}), + "CreateExternalUserGroupData": () => Promise.resolve({"_TypeModel":{"name":"CreateExternalUserGroupData","since":1,"type":"AGGREGATED_TYPE","id":138,"rootId":"CHR1dGFub3RhAACK","versioned":false,"encrypted":false,"values":{"_id":{"id":139,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"externalPwEncUserGroupKey":{"id":142,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"internalUserEncUserGroupKey":{"id":143,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":141,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "CreateFileData": () => Promise.resolve({"_TypeModel":{"name":"CreateFileData","since":1,"type":"DATA_TRANSFER_TYPE","id":346,"rootId":"CHR1dGFub3RhAAFa","versioned":false,"encrypted":true,"values":{"_format":{"id":347,"type":"Number","cardinality":"One","final":false,"encrypted":false},"fileName":{"id":348,"type":"String","cardinality":"One","final":true,"encrypted":true},"group":{"id":350,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"mimeType":{"id":349,"type":"String","cardinality":"One","final":true,"encrypted":true},"ownerEncSessionKey":{"id":351,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"fileData":{"id":352,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"FileData","dependency":null},"parentFolder":{"id":353,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"File","dependency":null}},"app":"tutanota","version":"51"}}), + "CreateGroupPostReturn": () => Promise.resolve({"_TypeModel":{"name":"CreateGroupPostReturn","since":34,"type":"DATA_TRANSFER_TYPE","id":985,"rootId":"CHR1dGFub3RhAAPZ","versioned":false,"encrypted":true,"values":{"_format":{"id":986,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":987,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null}},"app":"tutanota","version":"51"}}), + "CreateLocalAdminGroupData": () => Promise.resolve({"_TypeModel":{"name":"CreateLocalAdminGroupData","since":19,"type":"DATA_TRANSFER_TYPE","id":703,"rootId":"CHR1dGFub3RhAAK_","versioned":false,"encrypted":false,"values":{"_format":{"id":704,"type":"Number","cardinality":"One","final":false,"encrypted":false},"encryptedName":{"id":705,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"groupData":{"id":706,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null}},"app":"tutanota","version":"51"}}), + "CreateMailFolderData": () => Promise.resolve({"_TypeModel":{"name":"CreateMailFolderData","since":7,"type":"DATA_TRANSFER_TYPE","id":450,"rootId":"CHR1dGFub3RhAAHC","versioned":false,"encrypted":true,"values":{"_format":{"id":451,"type":"Number","cardinality":"One","final":false,"encrypted":false},"folderName":{"id":453,"type":"String","cardinality":"One","final":true,"encrypted":true},"ownerEncSessionKey":{"id":454,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"parentFolder":{"id":452,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"MailFolder","dependency":null}},"app":"tutanota","version":"51"}}), + "CreateMailFolderReturn": () => Promise.resolve({"_TypeModel":{"name":"CreateMailFolderReturn","since":7,"type":"DATA_TRANSFER_TYPE","id":455,"rootId":"CHR1dGFub3RhAAHH","versioned":false,"encrypted":true,"values":{"_format":{"id":456,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"newFolder":{"id":457,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"MailFolder","dependency":null}},"app":"tutanota","version":"51"}}), + "CreateMailGroupData": () => Promise.resolve({"_TypeModel":{"name":"CreateMailGroupData","since":19,"type":"DATA_TRANSFER_TYPE","id":707,"rootId":"CHR1dGFub3RhAALD","versioned":false,"encrypted":false,"values":{"_format":{"id":708,"type":"Number","cardinality":"One","final":false,"encrypted":false},"encryptedName":{"id":710,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":709,"type":"String","cardinality":"One","final":false,"encrypted":false},"mailEncMailboxSessionKey":{"id":711,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"groupData":{"id":712,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null}},"app":"tutanota","version":"51"}}), + "CustomerAccountCreateData": () => Promise.resolve({"_TypeModel":{"name":"CustomerAccountCreateData","since":16,"type":"DATA_TRANSFER_TYPE","id":648,"rootId":"CHR1dGFub3RhAAKI","versioned":false,"encrypted":false,"values":{"_format":{"id":649,"type":"Number","cardinality":"One","final":false,"encrypted":false},"adminEncAccountingInfoSessionKey":{"id":659,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"adminEncCustomerServerPropertiesSessionKey":{"id":661,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":650,"type":"String","cardinality":"One","final":false,"encrypted":false},"code":{"id":873,"type":"String","cardinality":"One","final":false,"encrypted":false},"date":{"id":651,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"lang":{"id":652,"type":"String","cardinality":"One","final":false,"encrypted":false},"systemAdminPubEncAccountingInfoSessionKey":{"id":660,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncAccountGroupKey":{"id":655,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncAdminGroupKey":{"id":654,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminGroupData":{"id":657,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null},"customerGroupData":{"id":658,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null},"userData":{"id":653,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"UserAccountUserData","dependency":null},"userGroupData":{"id":656,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null}},"app":"tutanota","version":"51"}}), + "CustomerContactFormGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"CustomerContactFormGroupRoot","since":19,"type":"ELEMENT_TYPE","id":783,"rootId":"CHR1dGFub3RhAAMP","versioned":false,"encrypted":false,"values":{"_format":{"id":787,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":785,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":788,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":786,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"contactFormConversations":{"id":841,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"DeleteContactFormConversationIndex","dependency":null},"contactForms":{"id":789,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"ContactForm","dependency":null}},"app":"tutanota","version":"51"}}), + "DataBlock": () => Promise.resolve({"_TypeModel":{"name":"DataBlock","since":1,"type":"AGGREGATED_TYPE","id":0,"rootId":"CHR1dGFub3RhAAA","versioned":false,"encrypted":false,"values":{"_id":{"id":1,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"blockData":{"id":3,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"size":{"id":2,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "DeleteContactFormConversationIndex": () => Promise.resolve({"_TypeModel":{"name":"DeleteContactFormConversationIndex","since":22,"type":"AGGREGATED_TYPE","id":838,"rootId":"CHR1dGFub3RhAANG","versioned":false,"encrypted":false,"values":{"_id":{"id":839,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":840,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"DeleteContactFormConversationIndexEntry","dependency":null}},"app":"tutanota","version":"51"}}), + "DeleteContactFormConversationIndexEntry": () => Promise.resolve({"_TypeModel":{"name":"DeleteContactFormConversationIndexEntry","since":22,"type":"LIST_ELEMENT_TYPE","id":832,"rootId":"CHR1dGFub3RhAANA","versioned":false,"encrypted":false,"values":{"_format":{"id":836,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":834,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":837,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":835,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "DeleteGroupData": () => Promise.resolve({"_TypeModel":{"name":"DeleteGroupData","since":19,"type":"DATA_TRANSFER_TYPE","id":713,"rootId":"CHR1dGFub3RhAALJ","versioned":false,"encrypted":false,"values":{"_format":{"id":714,"type":"Number","cardinality":"One","final":false,"encrypted":false},"restore":{"id":715,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":716,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null}},"app":"tutanota","version":"51"}}), + "DeleteMailData": () => Promise.resolve({"_TypeModel":{"name":"DeleteMailData","since":5,"type":"DATA_TRANSFER_TYPE","id":419,"rootId":"CHR1dGFub3RhAAGj","versioned":false,"encrypted":false,"values":{"_format":{"id":420,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"folder":{"id":724,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"MailFolder","dependency":null},"mails":{"id":421,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"Mail","dependency":null}},"app":"tutanota","version":"51"}}), + "DeleteMailFolderData": () => Promise.resolve({"_TypeModel":{"name":"DeleteMailFolderData","since":7,"type":"DATA_TRANSFER_TYPE","id":458,"rootId":"CHR1dGFub3RhAAHK","versioned":false,"encrypted":true,"values":{"_format":{"id":459,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"folders":{"id":460,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"MailFolder","dependency":null}},"app":"tutanota","version":"51"}}), + "DraftAttachment": () => Promise.resolve({"_TypeModel":{"name":"DraftAttachment","since":11,"type":"AGGREGATED_TYPE","id":491,"rootId":"CHR1dGFub3RhAAHr","versioned":false,"encrypted":false,"values":{"_id":{"id":492,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"ownerEncFileSessionKey":{"id":493,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"existingFile":{"id":495,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"File","dependency":null},"newFile":{"id":494,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"NewDraftAttachment","dependency":null}},"app":"tutanota","version":"51"}}), + "DraftCreateData": () => Promise.resolve({"_TypeModel":{"name":"DraftCreateData","since":11,"type":"DATA_TRANSFER_TYPE","id":508,"rootId":"CHR1dGFub3RhAAH8","versioned":false,"encrypted":true,"values":{"_format":{"id":509,"type":"Number","cardinality":"One","final":false,"encrypted":false},"conversationType":{"id":511,"type":"Number","cardinality":"One","final":true,"encrypted":false},"ownerEncSessionKey":{"id":512,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"previousMessageId":{"id":510,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"symEncSessionKey":{"id":513,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"draftData":{"id":515,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"DraftData","dependency":null}},"app":"tutanota","version":"51"}}), + "DraftCreateReturn": () => Promise.resolve({"_TypeModel":{"name":"DraftCreateReturn","since":11,"type":"DATA_TRANSFER_TYPE","id":516,"rootId":"CHR1dGFub3RhAAIE","versioned":false,"encrypted":false,"values":{"_format":{"id":517,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"draft":{"id":518,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail","dependency":null}},"app":"tutanota","version":"51"}}), + "DraftData": () => Promise.resolve({"_TypeModel":{"name":"DraftData","since":11,"type":"AGGREGATED_TYPE","id":496,"rootId":"CHR1dGFub3RhAAHw","versioned":false,"encrypted":false,"values":{"_id":{"id":497,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bodyText":{"id":499,"type":"String","cardinality":"One","final":true,"encrypted":true},"compressedBodyText":{"id":1194,"type":"CompressedString","cardinality":"ZeroOrOne","final":true,"encrypted":true},"confidential":{"id":502,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"method":{"id":1116,"type":"Number","cardinality":"One","final":true,"encrypted":true},"senderMailAddress":{"id":500,"type":"String","cardinality":"One","final":true,"encrypted":false},"senderName":{"id":501,"type":"String","cardinality":"One","final":true,"encrypted":true},"subject":{"id":498,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"addedAttachments":{"id":506,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DraftAttachment","dependency":null},"bccRecipients":{"id":505,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DraftRecipient","dependency":null},"ccRecipients":{"id":504,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DraftRecipient","dependency":null},"removedAttachments":{"id":507,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"File","dependency":null},"replyTos":{"id":819,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"EncryptedMailAddress","dependency":null},"toRecipients":{"id":503,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DraftRecipient","dependency":null}},"app":"tutanota","version":"51"}}), + "DraftRecipient": () => Promise.resolve({"_TypeModel":{"name":"DraftRecipient","since":11,"type":"AGGREGATED_TYPE","id":482,"rootId":"CHR1dGFub3RhAAHi","versioned":false,"encrypted":false,"values":{"_id":{"id":483,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":485,"type":"String","cardinality":"One","final":true,"encrypted":false},"name":{"id":484,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), + "DraftUpdateData": () => Promise.resolve({"_TypeModel":{"name":"DraftUpdateData","since":11,"type":"DATA_TRANSFER_TYPE","id":519,"rootId":"CHR1dGFub3RhAAIH","versioned":false,"encrypted":true,"values":{"_format":{"id":520,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"draft":{"id":522,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail","dependency":null},"draftData":{"id":521,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"DraftData","dependency":null}},"app":"tutanota","version":"51"}}), + "DraftUpdateReturn": () => Promise.resolve({"_TypeModel":{"name":"DraftUpdateReturn","since":11,"type":"DATA_TRANSFER_TYPE","id":523,"rootId":"CHR1dGFub3RhAAIL","versioned":false,"encrypted":true,"values":{"_format":{"id":524,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"attachments":{"id":525,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"File","dependency":null}},"app":"tutanota","version":"51"}}), + "EmailTemplate": () => Promise.resolve({"_TypeModel":{"name":"EmailTemplate","since":45,"type":"LIST_ELEMENT_TYPE","id":1158,"rootId":"CHR1dGFub3RhAASG","versioned":false,"encrypted":true,"values":{"_format":{"id":1162,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1160,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1164,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1163,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1161,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"tag":{"id":1166,"type":"String","cardinality":"One","final":false,"encrypted":true},"title":{"id":1165,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"contents":{"id":1167,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"EmailTemplateContent","dependency":null}},"app":"tutanota","version":"51"}}), + "EmailTemplateContent": () => Promise.resolve({"_TypeModel":{"name":"EmailTemplateContent","since":45,"type":"AGGREGATED_TYPE","id":1154,"rootId":"CHR1dGFub3RhAASC","versioned":false,"encrypted":false,"values":{"_id":{"id":1155,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"languageCode":{"id":1157,"type":"String","cardinality":"One","final":false,"encrypted":true},"text":{"id":1156,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), + "EncryptTutanotaPropertiesData": () => Promise.resolve({"_TypeModel":{"name":"EncryptTutanotaPropertiesData","since":9,"type":"DATA_TRANSFER_TYPE","id":473,"rootId":"CHR1dGFub3RhAAHZ","versioned":false,"encrypted":false,"values":{"_format":{"id":474,"type":"Number","cardinality":"One","final":false,"encrypted":false},"symEncSessionKey":{"id":476,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"properties":{"id":475,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"TutanotaProperties","dependency":null}},"app":"tutanota","version":"51"}}), + "EncryptedMailAddress": () => Promise.resolve({"_TypeModel":{"name":"EncryptedMailAddress","since":14,"type":"AGGREGATED_TYPE","id":612,"rootId":"CHR1dGFub3RhAAJk","versioned":false,"encrypted":false,"values":{"_id":{"id":613,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"address":{"id":615,"type":"String","cardinality":"One","final":true,"encrypted":true},"name":{"id":614,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), + "EntropyData": () => Promise.resolve({"_TypeModel":{"name":"EntropyData","since":43,"type":"DATA_TRANSFER_TYPE","id":1122,"rootId":"CHR1dGFub3RhAARi","versioned":false,"encrypted":false,"values":{"_format":{"id":1123,"type":"Number","cardinality":"One","final":false,"encrypted":false},"groupEncEntropy":{"id":1124,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), "ExternalUserData": () => Promise.resolve({"_TypeModel":{"name":"ExternalUserData","since":1,"type":"DATA_TRANSFER_TYPE","id":145,"rootId":"CHR1dGFub3RhAACR","versioned":false,"encrypted":false,"values":{"_format":{"id":146,"type":"Number","cardinality":"One","final":false,"encrypted":false},"externalMailEncMailBoxSessionKey":{"id":673,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"externalMailEncMailGroupInfoSessionKey":{"id":670,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"externalUserEncEntropy":{"id":412,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"externalUserEncMailGroupKey":{"id":148,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"externalUserEncTutanotaPropertiesSessionKey":{"id":672,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"externalUserEncUserGroupInfoSessionKey":{"id":150,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"internalMailEncMailGroupInfoSessionKey":{"id":671,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"internalMailEncUserGroupInfoSessionKey":{"id":669,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncClientKey":{"id":147,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":149,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"userGroupData":{"id":151,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"CreateExternalUserGroupData","dependency":null}},"app":"tutanota","version":"51"}}), - "ContactList": () => Promise.resolve({"_TypeModel":{"name":"ContactList","since":1,"type":"ELEMENT_TYPE","id":153,"rootId":"CHR1dGFub3RhAACZ","versioned":false,"encrypted":true,"values":{"_format":{"id":157,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":155,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":593,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":592,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":156,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"photos":{"id":856,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"PhotosRef","dependency":null},"contacts":{"id":160,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Contact"}},"app":"tutanota","version":"51"}}), - "RemoteImapSyncInfo": () => Promise.resolve({"_TypeModel":{"name":"RemoteImapSyncInfo","since":1,"type":"LIST_ELEMENT_TYPE","id":183,"rootId":"CHR1dGFub3RhAAC3","versioned":false,"encrypted":false,"values":{"_format":{"id":187,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":185,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":594,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":186,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"seen":{"id":189,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"message":{"id":188,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail"}},"app":"tutanota","version":"51"}}), - "ImapFolder": () => Promise.resolve({"_TypeModel":{"name":"ImapFolder","since":1,"type":"AGGREGATED_TYPE","id":190,"rootId":"CHR1dGFub3RhAAC-","versioned":false,"encrypted":false,"values":{"_id":{"id":191,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"lastseenuid":{"id":193,"type":"String","cardinality":"One","final":false,"encrypted":false},"name":{"id":192,"type":"String","cardinality":"One","final":false,"encrypted":false},"uidvalidity":{"id":194,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"syncInfo":{"id":195,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"RemoteImapSyncInfo"}},"app":"tutanota","version":"51"}}), - "ImapSyncState": () => Promise.resolve({"_TypeModel":{"name":"ImapSyncState","since":1,"type":"ELEMENT_TYPE","id":196,"rootId":"CHR1dGFub3RhAADE","versioned":false,"encrypted":false,"values":{"_format":{"id":200,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":198,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":595,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":199,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"folders":{"id":201,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ImapFolder","dependency":null}},"app":"tutanota","version":"51"}}), - "ImapSyncConfiguration": () => Promise.resolve({"_TypeModel":{"name":"ImapSyncConfiguration","since":1,"type":"AGGREGATED_TYPE","id":209,"rootId":"CHR1dGFub3RhAADR","versioned":false,"encrypted":false,"values":{"_id":{"id":210,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"host":{"id":211,"type":"String","cardinality":"One","final":false,"encrypted":false},"password":{"id":214,"type":"String","cardinality":"One","final":false,"encrypted":false},"port":{"id":212,"type":"Number","cardinality":"One","final":false,"encrypted":false},"user":{"id":213,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"imapSyncState":{"id":215,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"ImapSyncState"}},"app":"tutanota","version":"51"}}), - "TutanotaProperties": () => Promise.resolve({"_TypeModel":{"name":"TutanotaProperties","since":1,"type":"ELEMENT_TYPE","id":216,"rootId":"CHR1dGFub3RhAADY","versioned":false,"encrypted":true,"values":{"_format":{"id":220,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":218,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":598,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":597,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":219,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"customEmailSignature":{"id":471,"type":"String","cardinality":"One","final":false,"encrypted":true},"defaultSender":{"id":469,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"defaultUnconfidential":{"id":470,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"emailSignatureType":{"id":472,"type":"Number","cardinality":"One","final":false,"encrypted":false},"groupEncEntropy":{"id":410,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"lastSeenAnnouncement":{"id":897,"type":"Number","cardinality":"One","final":false,"encrypted":false},"noAutomaticContacts":{"id":568,"type":"Boolean","cardinality":"One","final":false,"encrypted":true},"notificationMailLanguage":{"id":418,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"sendPlaintextOnly":{"id":676,"type":"Boolean","cardinality":"One","final":false,"encrypted":true}},"associations":{"imapSyncConfig":{"id":222,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ImapSyncConfiguration","dependency":null},"inboxRules":{"id":578,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"InboxRule","dependency":null},"lastPushedMail":{"id":221,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Mail"}},"app":"tutanota","version":"51"}}), - "NotificationMail": () => Promise.resolve({"_TypeModel":{"name":"NotificationMail","since":1,"type":"AGGREGATED_TYPE","id":223,"rootId":"CHR1dGFub3RhAADf","versioned":false,"encrypted":false,"values":{"_id":{"id":224,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bodyText":{"id":226,"type":"String","cardinality":"One","final":false,"encrypted":false},"mailboxLink":{"id":417,"type":"String","cardinality":"One","final":false,"encrypted":false},"recipientMailAddress":{"id":227,"type":"String","cardinality":"One","final":false,"encrypted":false},"recipientName":{"id":228,"type":"String","cardinality":"One","final":false,"encrypted":false},"subject":{"id":225,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "PasswordMessagingData": () => Promise.resolve({"_TypeModel":{"name":"PasswordMessagingData","since":1,"type":"DATA_TRANSFER_TYPE","id":308,"rootId":"CHR1dGFub3RhAAE0","versioned":false,"encrypted":false,"values":{"_format":{"id":309,"type":"Number","cardinality":"One","final":false,"encrypted":false},"language":{"id":310,"type":"String","cardinality":"One","final":true,"encrypted":false},"numberId":{"id":311,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"symKeyForPasswordTransmission":{"id":312,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "PasswordMessagingReturn": () => Promise.resolve({"_TypeModel":{"name":"PasswordMessagingReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":313,"rootId":"CHR1dGFub3RhAAE5","versioned":false,"encrypted":false,"values":{"_format":{"id":314,"type":"Number","cardinality":"One","final":false,"encrypted":false},"autoAuthenticationId":{"id":315,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "PasswordAutoAuthenticationReturn": () => Promise.resolve({"_TypeModel":{"name":"PasswordAutoAuthenticationReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":317,"rootId":"CHR1dGFub3RhAAE9","versioned":false,"encrypted":false,"values":{"_format":{"id":318,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "PasswordRetrievalData": () => Promise.resolve({"_TypeModel":{"name":"PasswordRetrievalData","since":1,"type":"DATA_TRANSFER_TYPE","id":320,"rootId":"CHR1dGFub3RhAAFA","versioned":false,"encrypted":false,"values":{"_format":{"id":321,"type":"Number","cardinality":"One","final":false,"encrypted":false},"autoAuthenticationId":{"id":322,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "PasswordRetrievalReturn": () => Promise.resolve({"_TypeModel":{"name":"PasswordRetrievalReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":323,"rootId":"CHR1dGFub3RhAAFD","versioned":false,"encrypted":false,"values":{"_format":{"id":324,"type":"Number","cardinality":"One","final":false,"encrypted":false},"transmissionKeyEncryptedPassword":{"id":325,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "PasswordChannelReturn": () => Promise.resolve({"_TypeModel":{"name":"PasswordChannelReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":327,"rootId":"CHR1dGFub3RhAAFH","versioned":false,"encrypted":false,"values":{"_format":{"id":328,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"phoneNumberChannels":{"id":329,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"PasswordChannelPhoneNumber","dependency":null}},"app":"tutanota","version":"51"}}), - "FileDataDataGet": () => Promise.resolve({"_TypeModel":{"name":"FileDataDataGet","since":1,"type":"DATA_TRANSFER_TYPE","id":331,"rootId":"CHR1dGFub3RhAAFL","versioned":false,"encrypted":true,"values":{"_format":{"id":332,"type":"Number","cardinality":"One","final":false,"encrypted":false},"base64":{"id":333,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"file":{"id":334,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"File"}},"app":"tutanota","version":"51"}}), + "File": () => Promise.resolve({"_TypeModel":{"name":"File","since":1,"type":"LIST_ELEMENT_TYPE","id":13,"rootId":"CHR1dGFub3RhAA0","versioned":false,"encrypted":true,"values":{"_area":{"id":20,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":17,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":15,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":19,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":18,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":580,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":16,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"cid":{"id":924,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"mimeType":{"id":23,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"name":{"id":21,"type":"String","cardinality":"One","final":false,"encrypted":true},"size":{"id":22,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{"data":{"id":24,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"FileData","dependency":null},"parent":{"id":25,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"File","dependency":null},"subFiles":{"id":26,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"Subfiles","dependency":null}},"app":"tutanota","version":"51"}}), + "FileData": () => Promise.resolve({"_TypeModel":{"name":"FileData","since":1,"type":"ELEMENT_TYPE","id":4,"rootId":"CHR1dGFub3RhAAQ","versioned":false,"encrypted":false,"values":{"_format":{"id":8,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":6,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":579,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":7,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"size":{"id":9,"type":"Number","cardinality":"One","final":false,"encrypted":false},"unreferenced":{"id":409,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"blobs":{"id":1221,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"Blob","dependency":"sys"},"blocks":{"id":10,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"DataBlock","dependency":null}},"app":"tutanota","version":"51"}}), + "FileDataDataGet": () => Promise.resolve({"_TypeModel":{"name":"FileDataDataGet","since":1,"type":"DATA_TRANSFER_TYPE","id":331,"rootId":"CHR1dGFub3RhAAFL","versioned":false,"encrypted":true,"values":{"_format":{"id":332,"type":"Number","cardinality":"One","final":false,"encrypted":false},"base64":{"id":333,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"file":{"id":334,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"File","dependency":null}},"app":"tutanota","version":"51"}}), "FileDataDataPost": () => Promise.resolve({"_TypeModel":{"name":"FileDataDataPost","since":1,"type":"DATA_TRANSFER_TYPE","id":335,"rootId":"CHR1dGFub3RhAAFP","versioned":false,"encrypted":true,"values":{"_format":{"id":336,"type":"Number","cardinality":"One","final":false,"encrypted":false},"group":{"id":337,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"size":{"id":338,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), "FileDataDataReturn": () => Promise.resolve({"_TypeModel":{"name":"FileDataDataReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":339,"rootId":"CHR1dGFub3RhAAFT","versioned":false,"encrypted":true,"values":{"_format":{"id":340,"type":"Number","cardinality":"One","final":false,"encrypted":false},"size":{"id":341,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "FileDataReturnPost": () => Promise.resolve({"_TypeModel":{"name":"FileDataReturnPost","since":1,"type":"DATA_TRANSFER_TYPE","id":342,"rootId":"CHR1dGFub3RhAAFW","versioned":false,"encrypted":true,"values":{"_format":{"id":343,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"accessInfo":{"id":1222,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"BlobAccessInfo","dependency":"sys"},"fileData":{"id":344,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"FileData"}},"app":"tutanota","version":"51"}}), - "CreateFileData": () => Promise.resolve({"_TypeModel":{"name":"CreateFileData","since":1,"type":"DATA_TRANSFER_TYPE","id":346,"rootId":"CHR1dGFub3RhAAFa","versioned":false,"encrypted":true,"values":{"_format":{"id":347,"type":"Number","cardinality":"One","final":false,"encrypted":false},"fileName":{"id":348,"type":"String","cardinality":"One","final":true,"encrypted":true},"group":{"id":350,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"ownerEncSessionKey":{"id":351,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mimeType":{"id":349,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"fileData":{"id":352,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"FileData"},"parentFolder":{"id":353,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "DeleteMailData": () => Promise.resolve({"_TypeModel":{"name":"DeleteMailData","since":5,"type":"DATA_TRANSFER_TYPE","id":419,"rootId":"CHR1dGFub3RhAAGj","versioned":false,"encrypted":false,"values":{"_format":{"id":420,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"folder":{"id":724,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"MailFolder"},"mails":{"id":421,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"Mail"}},"app":"tutanota","version":"51"}}), - "MailFolder": () => Promise.resolve({"_TypeModel":{"name":"MailFolder","since":7,"type":"LIST_ELEMENT_TYPE","id":429,"rootId":"CHR1dGFub3RhAAGt","versioned":false,"encrypted":true,"values":{"_format":{"id":433,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":431,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":434,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":589,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":432,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"folderType":{"id":436,"type":"Number","cardinality":"One","final":true,"encrypted":false},"name":{"id":435,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"mails":{"id":437,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Mail"},"parentFolder":{"id":439,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"MailFolder"},"subFolders":{"id":438,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"MailFolder"}},"app":"tutanota","version":"51"}}), - "MailFolderRef": () => Promise.resolve({"_TypeModel":{"name":"MailFolderRef","since":7,"type":"AGGREGATED_TYPE","id":440,"rootId":"CHR1dGFub3RhAAG4","versioned":false,"encrypted":false,"values":{"_id":{"id":441,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"folders":{"id":442,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"MailFolder"}},"app":"tutanota","version":"51"}}), - "MoveMailData": () => Promise.resolve({"_TypeModel":{"name":"MoveMailData","since":7,"type":"DATA_TRANSFER_TYPE","id":445,"rootId":"CHR1dGFub3RhAAG9","versioned":false,"encrypted":false,"values":{"_format":{"id":446,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"mails":{"id":448,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"Mail"},"targetFolder":{"id":447,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"MailFolder"}},"app":"tutanota","version":"51"}}), - "CreateMailFolderData": () => Promise.resolve({"_TypeModel":{"name":"CreateMailFolderData","since":7,"type":"DATA_TRANSFER_TYPE","id":450,"rootId":"CHR1dGFub3RhAAHC","versioned":false,"encrypted":true,"values":{"_format":{"id":451,"type":"Number","cardinality":"One","final":false,"encrypted":false},"folderName":{"id":453,"type":"String","cardinality":"One","final":true,"encrypted":true},"ownerEncSessionKey":{"id":454,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"parentFolder":{"id":452,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"MailFolder"}},"app":"tutanota","version":"51"}}), - "CreateMailFolderReturn": () => Promise.resolve({"_TypeModel":{"name":"CreateMailFolderReturn","since":7,"type":"DATA_TRANSFER_TYPE","id":455,"rootId":"CHR1dGFub3RhAAHH","versioned":false,"encrypted":true,"values":{"_format":{"id":456,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"newFolder":{"id":457,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"MailFolder"}},"app":"tutanota","version":"51"}}), - "DeleteMailFolderData": () => Promise.resolve({"_TypeModel":{"name":"DeleteMailFolderData","since":7,"type":"DATA_TRANSFER_TYPE","id":458,"rootId":"CHR1dGFub3RhAAHK","versioned":false,"encrypted":true,"values":{"_format":{"id":459,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"folders":{"id":460,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"MailFolder"}},"app":"tutanota","version":"51"}}), - "EncryptTutanotaPropertiesData": () => Promise.resolve({"_TypeModel":{"name":"EncryptTutanotaPropertiesData","since":9,"type":"DATA_TRANSFER_TYPE","id":473,"rootId":"CHR1dGFub3RhAAHZ","versioned":false,"encrypted":false,"values":{"_format":{"id":474,"type":"Number","cardinality":"One","final":false,"encrypted":false},"symEncSessionKey":{"id":476,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"properties":{"id":475,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"TutanotaProperties"}},"app":"tutanota","version":"51"}}), - "DraftRecipient": () => Promise.resolve({"_TypeModel":{"name":"DraftRecipient","since":11,"type":"AGGREGATED_TYPE","id":482,"rootId":"CHR1dGFub3RhAAHi","versioned":false,"encrypted":false,"values":{"_id":{"id":483,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":485,"type":"String","cardinality":"One","final":true,"encrypted":false},"name":{"id":484,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), - "NewDraftAttachment": () => Promise.resolve({"_TypeModel":{"name":"NewDraftAttachment","since":11,"type":"AGGREGATED_TYPE","id":486,"rootId":"CHR1dGFub3RhAAHm","versioned":false,"encrypted":false,"values":{"_id":{"id":487,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"encCid":{"id":925,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"encFileName":{"id":488,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"encMimeType":{"id":489,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"fileData":{"id":490,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"FileData"}},"app":"tutanota","version":"51"}}), - "DraftAttachment": () => Promise.resolve({"_TypeModel":{"name":"DraftAttachment","since":11,"type":"AGGREGATED_TYPE","id":491,"rootId":"CHR1dGFub3RhAAHr","versioned":false,"encrypted":false,"values":{"_id":{"id":492,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"ownerEncFileSessionKey":{"id":493,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"newFile":{"id":494,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"NewDraftAttachment","dependency":null},"existingFile":{"id":495,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "DraftData": () => Promise.resolve({"_TypeModel":{"name":"DraftData","since":11,"type":"AGGREGATED_TYPE","id":496,"rootId":"CHR1dGFub3RhAAHw","versioned":false,"encrypted":false,"values":{"_id":{"id":497,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bodyText":{"id":499,"type":"String","cardinality":"One","final":true,"encrypted":true},"compressedBodyText":{"id":1194,"type":"CompressedString","cardinality":"ZeroOrOne","final":true,"encrypted":true},"confidential":{"id":502,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"method":{"id":1116,"type":"Number","cardinality":"One","final":true,"encrypted":true},"senderMailAddress":{"id":500,"type":"String","cardinality":"One","final":true,"encrypted":false},"senderName":{"id":501,"type":"String","cardinality":"One","final":true,"encrypted":true},"subject":{"id":498,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"addedAttachments":{"id":506,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DraftAttachment","dependency":null},"bccRecipients":{"id":505,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DraftRecipient","dependency":null},"ccRecipients":{"id":504,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DraftRecipient","dependency":null},"replyTos":{"id":819,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"EncryptedMailAddress","dependency":null},"toRecipients":{"id":503,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"DraftRecipient","dependency":null},"removedAttachments":{"id":507,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "DraftCreateData": () => Promise.resolve({"_TypeModel":{"name":"DraftCreateData","since":11,"type":"DATA_TRANSFER_TYPE","id":508,"rootId":"CHR1dGFub3RhAAH8","versioned":false,"encrypted":true,"values":{"_format":{"id":509,"type":"Number","cardinality":"One","final":false,"encrypted":false},"conversationType":{"id":511,"type":"Number","cardinality":"One","final":true,"encrypted":false},"ownerEncSessionKey":{"id":512,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"previousMessageId":{"id":510,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"symEncSessionKey":{"id":513,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"draftData":{"id":515,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"DraftData","dependency":null}},"app":"tutanota","version":"51"}}), - "DraftCreateReturn": () => Promise.resolve({"_TypeModel":{"name":"DraftCreateReturn","since":11,"type":"DATA_TRANSFER_TYPE","id":516,"rootId":"CHR1dGFub3RhAAIE","versioned":false,"encrypted":false,"values":{"_format":{"id":517,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"draft":{"id":518,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail"}},"app":"tutanota","version":"51"}}), - "DraftUpdateData": () => Promise.resolve({"_TypeModel":{"name":"DraftUpdateData","since":11,"type":"DATA_TRANSFER_TYPE","id":519,"rootId":"CHR1dGFub3RhAAIH","versioned":false,"encrypted":true,"values":{"_format":{"id":520,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"draftData":{"id":521,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"DraftData","dependency":null},"draft":{"id":522,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail"}},"app":"tutanota","version":"51"}}), - "DraftUpdateReturn": () => Promise.resolve({"_TypeModel":{"name":"DraftUpdateReturn","since":11,"type":"DATA_TRANSFER_TYPE","id":523,"rootId":"CHR1dGFub3RhAAIL","versioned":false,"encrypted":true,"values":{"_format":{"id":524,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"attachments":{"id":525,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "InternalRecipientKeyData": () => Promise.resolve({"_TypeModel":{"name":"InternalRecipientKeyData","since":11,"type":"AGGREGATED_TYPE","id":527,"rootId":"CHR1dGFub3RhAAIP","versioned":false,"encrypted":false,"values":{"_id":{"id":528,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":529,"type":"String","cardinality":"One","final":true,"encrypted":false},"pubEncBucketKey":{"id":530,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"pubKeyVersion":{"id":531,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "SecureExternalRecipientKeyData": () => Promise.resolve({"_TypeModel":{"name":"SecureExternalRecipientKeyData","since":11,"type":"AGGREGATED_TYPE","id":532,"rootId":"CHR1dGFub3RhAAIU","versioned":false,"encrypted":false,"values":{"_id":{"id":533,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"autoTransmitPassword":{"id":537,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"mailAddress":{"id":534,"type":"String","cardinality":"One","final":true,"encrypted":false},"ownerEncBucketKey":{"id":599,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"passwordVerifier":{"id":536,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"pwEncCommunicationKey":{"id":540,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"salt":{"id":538,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"saltHash":{"id":539,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"symEncBucketKey":{"id":535,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"passwordChannelPhoneNumbers":{"id":541,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"PasswordChannelPhoneNumber","dependency":null}},"app":"tutanota","version":"51"}}), - "AttachmentKeyData": () => Promise.resolve({"_TypeModel":{"name":"AttachmentKeyData","since":11,"type":"AGGREGATED_TYPE","id":542,"rootId":"CHR1dGFub3RhAAIe","versioned":false,"encrypted":false,"values":{"_id":{"id":543,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bucketEncFileSessionKey":{"id":544,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"fileSessionKey":{"id":545,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"file":{"id":546,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "SendDraftData": () => Promise.resolve({"_TypeModel":{"name":"SendDraftData","since":11,"type":"DATA_TRANSFER_TYPE","id":547,"rootId":"CHR1dGFub3RhAAIj","versioned":false,"encrypted":false,"values":{"_format":{"id":548,"type":"Number","cardinality":"One","final":false,"encrypted":false},"bucketEncMailSessionKey":{"id":551,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"calendarMethod":{"id":1117,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"language":{"id":549,"type":"String","cardinality":"One","final":true,"encrypted":false},"mailSessionKey":{"id":550,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"plaintext":{"id":675,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"senderNameUnencrypted":{"id":552,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"attachmentKeyData":{"id":555,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"AttachmentKeyData","dependency":null},"internalRecipientKeyData":{"id":553,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"InternalRecipientKeyData","dependency":null},"secureExternalRecipientKeyData":{"id":554,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"SecureExternalRecipientKeyData","dependency":null},"mail":{"id":556,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Mail"}},"app":"tutanota","version":"51"}}), - "SendDraftReturn": () => Promise.resolve({"_TypeModel":{"name":"SendDraftReturn","since":11,"type":"DATA_TRANSFER_TYPE","id":557,"rootId":"CHR1dGFub3RhAAIt","versioned":false,"encrypted":false,"values":{"_format":{"id":558,"type":"Number","cardinality":"One","final":false,"encrypted":false},"messageId":{"id":559,"type":"String","cardinality":"One","final":false,"encrypted":false},"sentDate":{"id":560,"type":"Date","cardinality":"One","final":false,"encrypted":false}},"associations":{"notifications":{"id":561,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"NotificationMail","dependency":null},"sentMail":{"id":562,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Mail"}},"app":"tutanota","version":"51"}}), - "ReceiveInfoServiceData": () => Promise.resolve({"_TypeModel":{"name":"ReceiveInfoServiceData","since":12,"type":"DATA_TRANSFER_TYPE","id":570,"rootId":"CHR1dGFub3RhAAI6","versioned":false,"encrypted":false,"values":{"_format":{"id":571,"type":"Number","cardinality":"One","final":false,"encrypted":false},"language":{"id":1121,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "InboxRule": () => Promise.resolve({"_TypeModel":{"name":"InboxRule","since":12,"type":"AGGREGATED_TYPE","id":573,"rootId":"CHR1dGFub3RhAAI9","versioned":false,"encrypted":false,"values":{"_id":{"id":574,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"type":{"id":575,"type":"String","cardinality":"One","final":false,"encrypted":true},"value":{"id":576,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"targetFolder":{"id":577,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"MailFolder"}},"app":"tutanota","version":"51"}}), - "MailHeaders": () => Promise.resolve({"_TypeModel":{"name":"MailHeaders","since":14,"type":"ELEMENT_TYPE","id":604,"rootId":"CHR1dGFub3RhAAJc","versioned":false,"encrypted":true,"values":{"_format":{"id":608,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":606,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":610,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":609,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":607,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"compressedHeaders":{"id":990,"type":"CompressedString","cardinality":"ZeroOrOne","final":true,"encrypted":true},"headers":{"id":611,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), - "EncryptedMailAddress": () => Promise.resolve({"_TypeModel":{"name":"EncryptedMailAddress","since":14,"type":"AGGREGATED_TYPE","id":612,"rootId":"CHR1dGFub3RhAAJk","versioned":false,"encrypted":false,"values":{"_id":{"id":613,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"address":{"id":615,"type":"String","cardinality":"One","final":true,"encrypted":true},"name":{"id":614,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), - "UserAccountUserData": () => Promise.resolve({"_TypeModel":{"name":"UserAccountUserData","since":16,"type":"AGGREGATED_TYPE","id":622,"rootId":"CHR1dGFub3RhAAJu","versioned":false,"encrypted":false,"values":{"_id":{"id":623,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"contactEncContactListSessionKey":{"id":637,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncContactGroupInfoSessionKey":{"id":640,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncFileGroupInfoSessionKey":{"id":641,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncMailGroupInfoSessionKey":{"id":639,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"encryptedName":{"id":625,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"fileEncFileSystemSessionKey":{"id":638,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":624,"type":"String","cardinality":"One","final":false,"encrypted":false},"mailEncMailBoxSessionKey":{"id":636,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"pwEncUserGroupKey":{"id":629,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"recoverCodeEncUserGroupKey":{"id":893,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"recoverCodeVerifier":{"id":894,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"salt":{"id":626,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncClientKey":{"id":628,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncContactGroupKey":{"id":632,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncCustomerGroupKey":{"id":630,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncEntropy":{"id":634,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncFileGroupKey":{"id":633,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncMailGroupKey":{"id":631,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncRecoverCode":{"id":892,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncTutanotaPropertiesSessionKey":{"id":635,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":627,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "InternalGroupData": () => Promise.resolve({"_TypeModel":{"name":"InternalGroupData","since":16,"type":"AGGREGATED_TYPE","id":642,"rootId":"CHR1dGFub3RhAAKC","versioned":false,"encrypted":false,"values":{"_id":{"id":643,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"adminEncGroupKey":{"id":646,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"groupEncPrivateKey":{"id":645,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"ownerEncGroupInfoSessionKey":{"id":647,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"publicKey":{"id":644,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminGroup":{"id":874,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group"}},"app":"tutanota","version":"51"}}), - "CustomerAccountCreateData": () => Promise.resolve({"_TypeModel":{"name":"CustomerAccountCreateData","since":16,"type":"DATA_TRANSFER_TYPE","id":648,"rootId":"CHR1dGFub3RhAAKI","versioned":false,"encrypted":false,"values":{"_format":{"id":649,"type":"Number","cardinality":"One","final":false,"encrypted":false},"adminEncAccountingInfoSessionKey":{"id":659,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"adminEncCustomerServerPropertiesSessionKey":{"id":661,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"authToken":{"id":650,"type":"String","cardinality":"One","final":false,"encrypted":false},"code":{"id":873,"type":"String","cardinality":"One","final":false,"encrypted":false},"date":{"id":651,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"lang":{"id":652,"type":"String","cardinality":"One","final":false,"encrypted":false},"systemAdminPubEncAccountingInfoSessionKey":{"id":660,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncAccountGroupKey":{"id":655,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncAdminGroupKey":{"id":654,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminGroupData":{"id":657,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null},"customerGroupData":{"id":658,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null},"userData":{"id":653,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"UserAccountUserData","dependency":null},"userGroupData":{"id":656,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null}},"app":"tutanota","version":"51"}}), - "UserAccountCreateData": () => Promise.resolve({"_TypeModel":{"name":"UserAccountCreateData","since":16,"type":"DATA_TRANSFER_TYPE","id":663,"rootId":"CHR1dGFub3RhAAKX","versioned":false,"encrypted":false,"values":{"_format":{"id":664,"type":"Number","cardinality":"One","final":false,"encrypted":false},"date":{"id":665,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"userData":{"id":666,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"UserAccountUserData","dependency":null},"userGroupData":{"id":667,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null}},"app":"tutanota","version":"51"}}), - "MailboxServerProperties": () => Promise.resolve({"_TypeModel":{"name":"MailboxServerProperties","since":18,"type":"ELEMENT_TYPE","id":677,"rootId":"CHR1dGFub3RhAAKl","versioned":false,"encrypted":false,"values":{"_format":{"id":681,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":679,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":682,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":680,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"whitelistProtectionEnabled":{"id":683,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "MailboxGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"MailboxGroupRoot","since":18,"type":"ELEMENT_TYPE","id":693,"rootId":"CHR1dGFub3RhAAK1","versioned":false,"encrypted":false,"values":{"_format":{"id":697,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":695,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":698,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":696,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"calendarEventUpdates":{"id":1119,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"CalendarEventUpdateList","dependency":null},"outOfOfficeNotificationRecipientList":{"id":1151,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"OutOfOfficeNotificationRecipientList","dependency":null},"contactFormUserContactForm":{"id":748,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"ContactForm"},"mailbox":{"id":699,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"MailBox"},"mailboxProperties":{"id":1203,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"MailboxProperties"},"outOfOfficeNotification":{"id":1150,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"OutOfOfficeNotification"},"participatingContactForms":{"id":842,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"ContactForm"},"serverProperties":{"id":700,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"MailboxServerProperties"},"targetMailGroupContactForm":{"id":749,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"ContactForm"},"whitelistRequests":{"id":701,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"WhitelistRequest"}},"app":"tutanota","version":"51"}}), - "CreateLocalAdminGroupData": () => Promise.resolve({"_TypeModel":{"name":"CreateLocalAdminGroupData","since":19,"type":"DATA_TRANSFER_TYPE","id":703,"rootId":"CHR1dGFub3RhAAK_","versioned":false,"encrypted":false,"values":{"_format":{"id":704,"type":"Number","cardinality":"One","final":false,"encrypted":false},"encryptedName":{"id":705,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"groupData":{"id":706,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null}},"app":"tutanota","version":"51"}}), - "CreateMailGroupData": () => Promise.resolve({"_TypeModel":{"name":"CreateMailGroupData","since":19,"type":"DATA_TRANSFER_TYPE","id":707,"rootId":"CHR1dGFub3RhAALD","versioned":false,"encrypted":false,"values":{"_format":{"id":708,"type":"Number","cardinality":"One","final":false,"encrypted":false},"encryptedName":{"id":710,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":709,"type":"String","cardinality":"One","final":false,"encrypted":false},"mailEncMailboxSessionKey":{"id":711,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"groupData":{"id":712,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null}},"app":"tutanota","version":"51"}}), - "DeleteGroupData": () => Promise.resolve({"_TypeModel":{"name":"DeleteGroupData","since":19,"type":"DATA_TRANSFER_TYPE","id":713,"rootId":"CHR1dGFub3RhAALJ","versioned":false,"encrypted":false,"values":{"_format":{"id":714,"type":"Number","cardinality":"One","final":false,"encrypted":false},"restore":{"id":715,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":716,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"}},"app":"tutanota","version":"51"}}), - "MailRestriction": () => Promise.resolve({"_TypeModel":{"name":"MailRestriction","since":19,"type":"AGGREGATED_TYPE","id":719,"rootId":"CHR1dGFub3RhAALP","versioned":false,"encrypted":false,"values":{"_id":{"id":720,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"delegationGroups_removed":{"id":722,"type":"ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"Group"},"participantGroupInfos":{"id":820,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"GroupInfo"}},"app":"tutanota","version":"51"}}), - "ContactForm": () => Promise.resolve({"_TypeModel":{"name":"ContactForm","since":19,"type":"LIST_ELEMENT_TYPE","id":733,"rootId":"CHR1dGFub3RhAALd","versioned":false,"encrypted":false,"values":{"_format":{"id":737,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":735,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":738,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":736,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"path":{"id":739,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"languages":{"id":865,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ContactFormLanguage","dependency":null},"delegationGroups_removed":{"id":747,"type":"ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"Group"},"participantGroupInfos":{"id":822,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"GroupInfo"},"targetGroup":{"id":746,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"},"targetGroupInfo":{"id":821,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"GroupInfo"}},"app":"tutanota","version":"51"}}), - "ContactFormAccountReturn": () => Promise.resolve({"_TypeModel":{"name":"ContactFormAccountReturn","since":19,"type":"DATA_TRANSFER_TYPE","id":750,"rootId":"CHR1dGFub3RhAALu","versioned":false,"encrypted":false,"values":{"_format":{"id":751,"type":"Number","cardinality":"One","final":false,"encrypted":false},"requestMailAddress":{"id":752,"type":"String","cardinality":"One","final":true,"encrypted":false},"responseMailAddress":{"id":753,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "ContactFormUserData": () => Promise.resolve({"_TypeModel":{"name":"ContactFormUserData","since":19,"type":"AGGREGATED_TYPE","id":754,"rootId":"CHR1dGFub3RhAALy","versioned":false,"encrypted":false,"values":{"_id":{"id":755,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"mailEncMailBoxSessionKey":{"id":763,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"ownerEncMailGroupInfoSessionKey":{"id":764,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"pwEncUserGroupKey":{"id":759,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"salt":{"id":756,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncClientKey":{"id":758,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncEntropy":{"id":761,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncMailGroupKey":{"id":760,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncTutanotaPropertiesSessionKey":{"id":762,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":757,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "CustomerContactFormGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"CustomerContactFormGroupRoot","since":19,"type":"ELEMENT_TYPE","id":783,"rootId":"CHR1dGFub3RhAAMP","versioned":false,"encrypted":false,"values":{"_format":{"id":787,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":785,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":788,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":786,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"contactFormConversations":{"id":841,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"DeleteContactFormConversationIndex","dependency":null},"contactForms":{"id":789,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"ContactForm"}},"app":"tutanota","version":"51"}}), - "ContactFormAccountData": () => Promise.resolve({"_TypeModel":{"name":"ContactFormAccountData","since":19,"type":"DATA_TRANSFER_TYPE","id":791,"rootId":"CHR1dGFub3RhAAMX","versioned":false,"encrypted":false,"values":{"_format":{"id":792,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"userData":{"id":793,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"ContactFormUserData","dependency":null},"userGroupData":{"id":794,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null},"contactForm":{"id":796,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"ContactForm"}},"app":"tutanota","version":"51"}}), - "DeleteContactFormConversationIndexEntry": () => Promise.resolve({"_TypeModel":{"name":"DeleteContactFormConversationIndexEntry","since":22,"type":"LIST_ELEMENT_TYPE","id":832,"rootId":"CHR1dGFub3RhAANA","versioned":false,"encrypted":false,"values":{"_format":{"id":836,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":834,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":837,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":835,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "DeleteContactFormConversationIndex": () => Promise.resolve({"_TypeModel":{"name":"DeleteContactFormConversationIndex","since":22,"type":"AGGREGATED_TYPE","id":838,"rootId":"CHR1dGFub3RhAANG","versioned":false,"encrypted":false,"values":{"_id":{"id":839,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"items":{"id":840,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"DeleteContactFormConversationIndexEntry"}},"app":"tutanota","version":"51"}}), - "Birthday": () => Promise.resolve({"_TypeModel":{"name":"Birthday","since":23,"type":"AGGREGATED_TYPE","id":844,"rootId":"CHR1dGFub3RhAANM","versioned":false,"encrypted":false,"values":{"_id":{"id":845,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"day":{"id":846,"type":"Number","cardinality":"One","final":false,"encrypted":false},"month":{"id":847,"type":"Number","cardinality":"One","final":false,"encrypted":false},"year":{"id":848,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "PhotosRef": () => Promise.resolve({"_TypeModel":{"name":"PhotosRef","since":23,"type":"AGGREGATED_TYPE","id":853,"rootId":"CHR1dGFub3RhAANV","versioned":false,"encrypted":false,"values":{"_id":{"id":854,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"files":{"id":855,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "ContactFormLanguage": () => Promise.resolve({"_TypeModel":{"name":"ContactFormLanguage","since":24,"type":"AGGREGATED_TYPE","id":857,"rootId":"CHR1dGFub3RhAANZ","versioned":false,"encrypted":false,"values":{"_id":{"id":858,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"code":{"id":859,"type":"String","cardinality":"One","final":false,"encrypted":false},"footerHtml":{"id":862,"type":"String","cardinality":"One","final":false,"encrypted":false},"headerHtml":{"id":861,"type":"String","cardinality":"One","final":false,"encrypted":false},"helpHtml":{"id":863,"type":"String","cardinality":"One","final":false,"encrypted":false},"pageTitle":{"id":860,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "ListUnsubscribeData": () => Promise.resolve({"_TypeModel":{"name":"ListUnsubscribeData","since":24,"type":"DATA_TRANSFER_TYPE","id":867,"rootId":"CHR1dGFub3RhAANj","versioned":false,"encrypted":false,"values":{"_format":{"id":868,"type":"Number","cardinality":"One","final":false,"encrypted":false},"headers":{"id":871,"type":"String","cardinality":"One","final":false,"encrypted":false},"recipient":{"id":870,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"mail":{"id":869,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail"}},"app":"tutanota","version":"51"}}), - "CalendarRepeatRule": () => Promise.resolve({"_TypeModel":{"name":"CalendarRepeatRule","since":33,"type":"AGGREGATED_TYPE","id":926,"rootId":"CHR1dGFub3RhAAOe","versioned":false,"encrypted":false,"values":{"_id":{"id":927,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"endType":{"id":929,"type":"Number","cardinality":"One","final":false,"encrypted":true},"endValue":{"id":930,"type":"Number","cardinality":"ZeroOrOne","final":false,"encrypted":true},"frequency":{"id":928,"type":"Number","cardinality":"One","final":false,"encrypted":true},"interval":{"id":931,"type":"Number","cardinality":"One","final":false,"encrypted":true},"timeZone":{"id":932,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), - "CalendarEvent": () => Promise.resolve({"_TypeModel":{"name":"CalendarEvent","since":33,"type":"LIST_ELEMENT_TYPE","id":933,"rootId":"CHR1dGFub3RhAAOl","versioned":false,"encrypted":true,"values":{"_format":{"id":937,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":935,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":939,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":938,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":936,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"description":{"id":941,"type":"String","cardinality":"One","final":false,"encrypted":true},"endTime":{"id":943,"type":"Date","cardinality":"One","final":false,"encrypted":true},"hashedUid":{"id":1088,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"invitedConfidentially":{"id":1090,"type":"Boolean","cardinality":"ZeroOrOne","final":false,"encrypted":true},"location":{"id":944,"type":"String","cardinality":"One","final":false,"encrypted":true},"sequence":{"id":1089,"type":"Number","cardinality":"One","final":false,"encrypted":true},"startTime":{"id":942,"type":"Date","cardinality":"One","final":false,"encrypted":true},"summary":{"id":940,"type":"String","cardinality":"One","final":false,"encrypted":true},"uid":{"id":988,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true}},"associations":{"attendees":{"id":1091,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"CalendarEventAttendee","dependency":null},"organizer":{"id":1092,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"EncryptedMailAddress","dependency":null},"repeatRule":{"id":945,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"CalendarRepeatRule","dependency":null},"alarmInfos":{"id":946,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"UserAlarmInfo"}},"app":"tutanota","version":"51"}}), - "CalendarGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"CalendarGroupRoot","since":33,"type":"ELEMENT_TYPE","id":947,"rootId":"CHR1dGFub3RhAAOz","versioned":false,"encrypted":true,"values":{"_format":{"id":951,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":949,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":953,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":952,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":950,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"index":{"id":1103,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"CalendarEventIndexRef","dependency":null},"longEvents":{"id":955,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEvent"},"shortEvents":{"id":954,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEvent"}},"app":"tutanota","version":"51"}}), - "UserAreaGroupData": () => Promise.resolve({"_TypeModel":{"name":"UserAreaGroupData","since":33,"type":"AGGREGATED_TYPE","id":956,"rootId":"CHR1dGFub3RhAAO8","versioned":false,"encrypted":false,"values":{"_id":{"id":957,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"adminEncGroupKey":{"id":959,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"groupEncGroupRootSessionKey":{"id":958,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"groupInfoEncName":{"id":962,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncGroupInfoSessionKey":{"id":960,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncGroupKey":{"id":961,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminGroup":{"id":963,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group"}},"app":"tutanota","version":"51"}}), - "UserAreaGroupPostData": () => Promise.resolve({"_TypeModel":{"name":"UserAreaGroupPostData","since":33,"type":"DATA_TRANSFER_TYPE","id":964,"rootId":"CHR1dGFub3RhAAPE","versioned":false,"encrypted":false,"values":{"_format":{"id":965,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"groupData":{"id":966,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"UserAreaGroupData","dependency":null}},"app":"tutanota","version":"51"}}), - "GroupSettings": () => Promise.resolve({"_TypeModel":{"name":"GroupSettings","since":34,"type":"AGGREGATED_TYPE","id":968,"rootId":"CHR1dGFub3RhAAPI","versioned":false,"encrypted":false,"values":{"_id":{"id":969,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"color":{"id":971,"type":"String","cardinality":"One","final":false,"encrypted":true},"name":{"id":1020,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true}},"associations":{"group":{"id":970,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"}},"app":"tutanota","version":"51"}}), - "UserSettingsGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"UserSettingsGroupRoot","since":34,"type":"ELEMENT_TYPE","id":972,"rootId":"CHR1dGFub3RhAAPM","versioned":false,"encrypted":true,"values":{"_format":{"id":976,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":974,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":978,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":977,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":975,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"startOfTheWeek":{"id":981,"type":"Number","cardinality":"One","final":false,"encrypted":true},"timeFormat":{"id":980,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{"groupSettings":{"id":979,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"GroupSettings","dependency":null}},"app":"tutanota","version":"51"}}), - "CalendarDeleteData": () => Promise.resolve({"_TypeModel":{"name":"CalendarDeleteData","since":34,"type":"DATA_TRANSFER_TYPE","id":982,"rootId":"CHR1dGFub3RhAAPW","versioned":false,"encrypted":false,"values":{"_format":{"id":983,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"groupRootId":{"id":984,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"CalendarGroupRoot"}},"app":"tutanota","version":"51"}}), - "CreateGroupPostReturn": () => Promise.resolve({"_TypeModel":{"name":"CreateGroupPostReturn","since":34,"type":"DATA_TRANSFER_TYPE","id":985,"rootId":"CHR1dGFub3RhAAPZ","versioned":false,"encrypted":true,"values":{"_format":{"id":986,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":987,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group"}},"app":"tutanota","version":"51"}}), - "SharedGroupData": () => Promise.resolve({"_TypeModel":{"name":"SharedGroupData","since":38,"type":"AGGREGATED_TYPE","id":992,"rootId":"CHR1dGFub3RhAAPg","versioned":false,"encrypted":false,"values":{"_id":{"id":993,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bucketEncInvitationSessionKey":{"id":998,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"capability":{"id":994,"type":"Number","cardinality":"One","final":false,"encrypted":false},"sessionEncInviterName":{"id":997,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"sessionEncSharedGroupKey":{"id":995,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"sessionEncSharedGroupName":{"id":996,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"sharedGroup":{"id":1001,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"sharedGroupEncInviterGroupInfoKey":{"id":999,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"sharedGroupEncSharedGroupInfoKey":{"id":1000,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "FileDataReturnPost": () => Promise.resolve({"_TypeModel":{"name":"FileDataReturnPost","since":1,"type":"DATA_TRANSFER_TYPE","id":342,"rootId":"CHR1dGFub3RhAAFW","versioned":false,"encrypted":true,"values":{"_format":{"id":343,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"accessInfo":{"id":1222,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":false,"refType":"BlobAccessInfo","dependency":"sys"},"fileData":{"id":344,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"FileData","dependency":null}},"app":"tutanota","version":"51"}}), + "FileSystem": () => Promise.resolve({"_TypeModel":{"name":"FileSystem","since":1,"type":"ELEMENT_TYPE","id":28,"rootId":"CHR1dGFub3RhABw","versioned":false,"encrypted":true,"values":{"_format":{"id":32,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":30,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":582,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":581,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":31,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"files":{"id":35,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File","dependency":null}},"app":"tutanota","version":"51"}}), + "GroupInvitationDeleteData": () => Promise.resolve({"_TypeModel":{"name":"GroupInvitationDeleteData","since":38,"type":"DATA_TRANSFER_TYPE","id":1016,"rootId":"CHR1dGFub3RhAAP4","versioned":false,"encrypted":false,"values":{"_format":{"id":1017,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"receivedInvitation":{"id":1018,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"ReceivedGroupInvitation","dependency":null}},"app":"tutanota","version":"51"}}), "GroupInvitationPostData": () => Promise.resolve({"_TypeModel":{"name":"GroupInvitationPostData","since":38,"type":"DATA_TRANSFER_TYPE","id":1002,"rootId":"CHR1dGFub3RhAAPq","versioned":false,"encrypted":false,"values":{"_format":{"id":1003,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"internalKeyData":{"id":1005,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"InternalRecipientKeyData","dependency":null},"sharedGroupData":{"id":1004,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"SharedGroupData","dependency":null}},"app":"tutanota","version":"51"}}), "GroupInvitationPostReturn": () => Promise.resolve({"_TypeModel":{"name":"GroupInvitationPostReturn","since":38,"type":"DATA_TRANSFER_TYPE","id":1006,"rootId":"CHR1dGFub3RhAAPu","versioned":false,"encrypted":false,"values":{"_format":{"id":1007,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"existingMailAddresses":{"id":1008,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"MailAddress","dependency":null},"invalidMailAddresses":{"id":1009,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"MailAddress","dependency":null},"invitedMailAddresses":{"id":1010,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"MailAddress","dependency":null}},"app":"tutanota","version":"51"}}), - "GroupInvitationPutData": () => Promise.resolve({"_TypeModel":{"name":"GroupInvitationPutData","since":38,"type":"DATA_TRANSFER_TYPE","id":1011,"rootId":"CHR1dGFub3RhAAPz","versioned":false,"encrypted":false,"values":{"_format":{"id":1012,"type":"Number","cardinality":"One","final":false,"encrypted":false},"sharedGroupEncInviteeGroupInfoKey":{"id":1014,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"userGroupEncGroupKey":{"id":1013,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"receivedInvitation":{"id":1015,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"ReceivedGroupInvitation"}},"app":"tutanota","version":"51"}}), - "GroupInvitationDeleteData": () => Promise.resolve({"_TypeModel":{"name":"GroupInvitationDeleteData","since":38,"type":"DATA_TRANSFER_TYPE","id":1016,"rootId":"CHR1dGFub3RhAAP4","versioned":false,"encrypted":false,"values":{"_format":{"id":1017,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"receivedInvitation":{"id":1018,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"ReceivedGroupInvitation"}},"app":"tutanota","version":"51"}}), + "GroupInvitationPutData": () => Promise.resolve({"_TypeModel":{"name":"GroupInvitationPutData","since":38,"type":"DATA_TRANSFER_TYPE","id":1011,"rootId":"CHR1dGFub3RhAAPz","versioned":false,"encrypted":false,"values":{"_format":{"id":1012,"type":"Number","cardinality":"One","final":false,"encrypted":false},"sharedGroupEncInviteeGroupInfoKey":{"id":1014,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"userGroupEncGroupKey":{"id":1013,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"receivedInvitation":{"id":1015,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"ReceivedGroupInvitation","dependency":null}},"app":"tutanota","version":"51"}}), + "GroupSettings": () => Promise.resolve({"_TypeModel":{"name":"GroupSettings","since":34,"type":"AGGREGATED_TYPE","id":968,"rootId":"CHR1dGFub3RhAAPI","versioned":false,"encrypted":false,"values":{"_id":{"id":969,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"color":{"id":971,"type":"String","cardinality":"One","final":false,"encrypted":true},"name":{"id":1020,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":true}},"associations":{"group":{"id":970,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Group","dependency":null}},"app":"tutanota","version":"51"}}), + "ImapFolder": () => Promise.resolve({"_TypeModel":{"name":"ImapFolder","since":1,"type":"AGGREGATED_TYPE","id":190,"rootId":"CHR1dGFub3RhAAC-","versioned":false,"encrypted":false,"values":{"_id":{"id":191,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"lastseenuid":{"id":193,"type":"String","cardinality":"One","final":false,"encrypted":false},"name":{"id":192,"type":"String","cardinality":"One","final":false,"encrypted":false},"uidvalidity":{"id":194,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"syncInfo":{"id":195,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"RemoteImapSyncInfo","dependency":null}},"app":"tutanota","version":"51"}}), + "ImapSyncConfiguration": () => Promise.resolve({"_TypeModel":{"name":"ImapSyncConfiguration","since":1,"type":"AGGREGATED_TYPE","id":209,"rootId":"CHR1dGFub3RhAADR","versioned":false,"encrypted":false,"values":{"_id":{"id":210,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"host":{"id":211,"type":"String","cardinality":"One","final":false,"encrypted":false},"password":{"id":214,"type":"String","cardinality":"One","final":false,"encrypted":false},"port":{"id":212,"type":"Number","cardinality":"One","final":false,"encrypted":false},"user":{"id":213,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"imapSyncState":{"id":215,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"ImapSyncState","dependency":null}},"app":"tutanota","version":"51"}}), + "ImapSyncState": () => Promise.resolve({"_TypeModel":{"name":"ImapSyncState","since":1,"type":"ELEMENT_TYPE","id":196,"rootId":"CHR1dGFub3RhAADE","versioned":false,"encrypted":false,"values":{"_format":{"id":200,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":198,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":595,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":199,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"folders":{"id":201,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ImapFolder","dependency":null}},"app":"tutanota","version":"51"}}), + "InboxRule": () => Promise.resolve({"_TypeModel":{"name":"InboxRule","since":12,"type":"AGGREGATED_TYPE","id":573,"rootId":"CHR1dGFub3RhAAI9","versioned":false,"encrypted":false,"values":{"_id":{"id":574,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"type":{"id":575,"type":"String","cardinality":"One","final":false,"encrypted":true},"value":{"id":576,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"targetFolder":{"id":577,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"MailFolder","dependency":null}},"app":"tutanota","version":"51"}}), + "InternalGroupData": () => Promise.resolve({"_TypeModel":{"name":"InternalGroupData","since":16,"type":"AGGREGATED_TYPE","id":642,"rootId":"CHR1dGFub3RhAAKC","versioned":false,"encrypted":false,"values":{"_id":{"id":643,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"adminEncGroupKey":{"id":646,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"groupEncPrivateKey":{"id":645,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"ownerEncGroupInfoSessionKey":{"id":647,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"publicKey":{"id":644,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminGroup":{"id":874,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group","dependency":null}},"app":"tutanota","version":"51"}}), + "InternalRecipientKeyData": () => Promise.resolve({"_TypeModel":{"name":"InternalRecipientKeyData","since":11,"type":"AGGREGATED_TYPE","id":527,"rootId":"CHR1dGFub3RhAAIP","versioned":false,"encrypted":false,"values":{"_id":{"id":528,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"mailAddress":{"id":529,"type":"String","cardinality":"One","final":true,"encrypted":false},"pubEncBucketKey":{"id":530,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"pubKeyVersion":{"id":531,"type":"Number","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "KnowledgeBaseEntry": () => Promise.resolve({"_TypeModel":{"name":"KnowledgeBaseEntry","since":45,"type":"LIST_ELEMENT_TYPE","id":1171,"rootId":"CHR1dGFub3RhAAST","versioned":false,"encrypted":true,"values":{"_format":{"id":1175,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1173,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1177,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1176,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1174,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"description":{"id":1179,"type":"String","cardinality":"One","final":false,"encrypted":true},"title":{"id":1178,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"keywords":{"id":1180,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"KnowledgeBaseEntryKeyword","dependency":null}},"app":"tutanota","version":"51"}}), + "KnowledgeBaseEntryKeyword": () => Promise.resolve({"_TypeModel":{"name":"KnowledgeBaseEntryKeyword","since":45,"type":"AGGREGATED_TYPE","id":1168,"rootId":"CHR1dGFub3RhAASQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1169,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"keyword":{"id":1170,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), + "ListUnsubscribeData": () => Promise.resolve({"_TypeModel":{"name":"ListUnsubscribeData","since":24,"type":"DATA_TRANSFER_TYPE","id":867,"rootId":"CHR1dGFub3RhAANj","versioned":false,"encrypted":false,"values":{"_format":{"id":868,"type":"Number","cardinality":"One","final":false,"encrypted":false},"headers":{"id":871,"type":"String","cardinality":"One","final":false,"encrypted":false},"recipient":{"id":870,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{"mail":{"id":869,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail","dependency":null}},"app":"tutanota","version":"51"}}), + "Mail": () => Promise.resolve({"_TypeModel":{"name":"Mail","since":1,"type":"LIST_ELEMENT_TYPE","id":97,"rootId":"CHR1dGFub3RhAGE","versioned":false,"encrypted":true,"values":{"_area":{"id":104,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":101,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":99,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":103,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":102,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":587,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":100,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"authStatus":{"id":1022,"type":"Number","cardinality":"One","final":false,"encrypted":false},"confidential":{"id":426,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"differentEnvelopeSender":{"id":617,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true},"listUnsubscribe":{"id":866,"type":"Boolean","cardinality":"One","final":true,"encrypted":true},"method":{"id":1120,"type":"Number","cardinality":"One","final":true,"encrypted":true},"movedTime":{"id":896,"type":"Date","cardinality":"ZeroOrOne","final":true,"encrypted":false},"phishingStatus":{"id":1021,"type":"Number","cardinality":"One","final":false,"encrypted":false},"receivedDate":{"id":107,"type":"Date","cardinality":"One","final":true,"encrypted":false},"replyType":{"id":466,"type":"Number","cardinality":"One","final":false,"encrypted":true},"sentDate":{"id":106,"type":"Date","cardinality":"One","final":true,"encrypted":false},"state":{"id":108,"type":"Number","cardinality":"One","final":true,"encrypted":false},"subject":{"id":105,"type":"String","cardinality":"One","final":true,"encrypted":true},"trashed":{"id":110,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"unread":{"id":109,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"attachments":{"id":115,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"File","dependency":null},"bccRecipients":{"id":114,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"MailAddress","dependency":null},"body":{"id":116,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"MailBody","dependency":null},"bodyBlob":{"id":1224,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"Blob","dependency":"sys"},"ccRecipients":{"id":113,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"MailAddress","dependency":null},"conversationEntry":{"id":117,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"ConversationEntry","dependency":null},"headers":{"id":618,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"MailHeaders","dependency":null},"headersBlob":{"id":1223,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"Blob","dependency":"sys"},"replyTos":{"id":616,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"EncryptedMailAddress","dependency":null},"restrictions":{"id":723,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"MailRestriction","dependency":null},"sender":{"id":111,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"MailAddress","dependency":null},"toRecipients":{"id":112,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"MailAddress","dependency":null}},"app":"tutanota","version":"51"}}), + "MailAddress": () => Promise.resolve({"_TypeModel":{"name":"MailAddress","since":1,"type":"AGGREGATED_TYPE","id":92,"rootId":"CHR1dGFub3RhAFw","versioned":false,"encrypted":false,"values":{"_id":{"id":93,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"address":{"id":95,"type":"String","cardinality":"One","final":true,"encrypted":false},"name":{"id":94,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"contact":{"id":96,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Contact","dependency":null}},"app":"tutanota","version":"51"}}), + "MailBody": () => Promise.resolve({"_TypeModel":{"name":"MailBody","since":1,"type":"ELEMENT_TYPE","id":36,"rootId":"CHR1dGFub3RhACQ","versioned":false,"encrypted":true,"values":{"_area":{"id":42,"type":"Number","cardinality":"One","final":true,"encrypted":false},"_format":{"id":40,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":38,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_owner":{"id":41,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":584,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":583,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":39,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"compressedText":{"id":989,"type":"CompressedString","cardinality":"ZeroOrOne","final":true,"encrypted":true},"text":{"id":43,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), + "MailBox": () => Promise.resolve({"_TypeModel":{"name":"MailBox","since":1,"type":"ELEMENT_TYPE","id":125,"rootId":"CHR1dGFub3RhAH0","versioned":false,"encrypted":true,"values":{"_format":{"id":129,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":127,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":591,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":590,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":128,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"lastInfoDate":{"id":569,"type":"Date","cardinality":"One","final":true,"encrypted":false},"symEncShareBucketKey":{"id":131,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"mails":{"id":132,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Mail","dependency":null},"receivedAttachments":{"id":134,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File","dependency":null},"sentAttachments":{"id":133,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File","dependency":null},"spamResults":{"id":1220,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"SpamResults","dependency":null},"systemFolders":{"id":443,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"MailFolderRef","dependency":null}},"app":"tutanota","version":"51"}}), + "MailFolder": () => Promise.resolve({"_TypeModel":{"name":"MailFolder","since":7,"type":"LIST_ELEMENT_TYPE","id":429,"rootId":"CHR1dGFub3RhAAGt","versioned":false,"encrypted":true,"values":{"_format":{"id":433,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":431,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":434,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":589,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":432,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"folderType":{"id":436,"type":"Number","cardinality":"One","final":true,"encrypted":false},"name":{"id":435,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"mails":{"id":437,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"Mail","dependency":null},"parentFolder":{"id":439,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"MailFolder","dependency":null},"subFolders":{"id":438,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"MailFolder","dependency":null}},"app":"tutanota","version":"51"}}), + "MailFolderRef": () => Promise.resolve({"_TypeModel":{"name":"MailFolderRef","since":7,"type":"AGGREGATED_TYPE","id":440,"rootId":"CHR1dGFub3RhAAG4","versioned":false,"encrypted":false,"values":{"_id":{"id":441,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"folders":{"id":442,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"MailFolder","dependency":null}},"app":"tutanota","version":"51"}}), + "MailHeaders": () => Promise.resolve({"_TypeModel":{"name":"MailHeaders","since":14,"type":"ELEMENT_TYPE","id":604,"rootId":"CHR1dGFub3RhAAJc","versioned":false,"encrypted":true,"values":{"_format":{"id":608,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":606,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":610,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":609,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":607,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"compressedHeaders":{"id":990,"type":"CompressedString","cardinality":"ZeroOrOne","final":true,"encrypted":true},"headers":{"id":611,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), + "MailRestriction": () => Promise.resolve({"_TypeModel":{"name":"MailRestriction","since":19,"type":"AGGREGATED_TYPE","id":719,"rootId":"CHR1dGFub3RhAALP","versioned":false,"encrypted":false,"values":{"_id":{"id":720,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"delegationGroups_removed":{"id":722,"type":"ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"Group","dependency":null},"participantGroupInfos":{"id":820,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":true,"refType":"GroupInfo","dependency":null}},"app":"tutanota","version":"51"}}), + "MailboxGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"MailboxGroupRoot","since":18,"type":"ELEMENT_TYPE","id":693,"rootId":"CHR1dGFub3RhAAK1","versioned":false,"encrypted":false,"values":{"_format":{"id":697,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":695,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":698,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":696,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"calendarEventUpdates":{"id":1119,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"CalendarEventUpdateList","dependency":null},"contactFormUserContactForm":{"id":748,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"ContactForm","dependency":null},"mailbox":{"id":699,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"MailBox","dependency":null},"mailboxProperties":{"id":1203,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"MailboxProperties","dependency":null},"outOfOfficeNotification":{"id":1150,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"OutOfOfficeNotification","dependency":null},"outOfOfficeNotificationRecipientList":{"id":1151,"type":"AGGREGATION","cardinality":"ZeroOrOne","final":true,"refType":"OutOfOfficeNotificationRecipientList","dependency":null},"participatingContactForms":{"id":842,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"ContactForm","dependency":null},"serverProperties":{"id":700,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"MailboxServerProperties","dependency":null},"targetMailGroupContactForm":{"id":749,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"ContactForm","dependency":null},"whitelistRequests":{"id":701,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"WhitelistRequest","dependency":null}},"app":"tutanota","version":"51"}}), + "MailboxProperties": () => Promise.resolve({"_TypeModel":{"name":"MailboxProperties","since":47,"type":"ELEMENT_TYPE","id":1195,"rootId":"CHR1dGFub3RhAASr","versioned":false,"encrypted":true,"values":{"_format":{"id":1199,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1197,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1201,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1200,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1198,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"reportMovedMails":{"id":1202,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), + "MailboxServerProperties": () => Promise.resolve({"_TypeModel":{"name":"MailboxServerProperties","since":18,"type":"ELEMENT_TYPE","id":677,"rootId":"CHR1dGFub3RhAAKl","versioned":false,"encrypted":false,"values":{"_format":{"id":681,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":679,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":682,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":680,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"whitelistProtectionEnabled":{"id":683,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "MoveMailData": () => Promise.resolve({"_TypeModel":{"name":"MoveMailData","since":7,"type":"DATA_TRANSFER_TYPE","id":445,"rootId":"CHR1dGFub3RhAAG9","versioned":false,"encrypted":false,"values":{"_format":{"id":446,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"mails":{"id":448,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"Any","final":false,"refType":"Mail","dependency":null},"targetFolder":{"id":447,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"MailFolder","dependency":null}},"app":"tutanota","version":"51"}}), + "NewDraftAttachment": () => Promise.resolve({"_TypeModel":{"name":"NewDraftAttachment","since":11,"type":"AGGREGATED_TYPE","id":486,"rootId":"CHR1dGFub3RhAAHm","versioned":false,"encrypted":false,"values":{"_id":{"id":487,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"encCid":{"id":925,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"encFileName":{"id":488,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"encMimeType":{"id":489,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{"fileData":{"id":490,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"FileData","dependency":null}},"app":"tutanota","version":"51"}}), + "NotificationMail": () => Promise.resolve({"_TypeModel":{"name":"NotificationMail","since":1,"type":"AGGREGATED_TYPE","id":223,"rootId":"CHR1dGFub3RhAADf","versioned":false,"encrypted":false,"values":{"_id":{"id":224,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bodyText":{"id":226,"type":"String","cardinality":"One","final":false,"encrypted":false},"mailboxLink":{"id":417,"type":"String","cardinality":"One","final":false,"encrypted":false},"recipientMailAddress":{"id":227,"type":"String","cardinality":"One","final":false,"encrypted":false},"recipientName":{"id":228,"type":"String","cardinality":"One","final":false,"encrypted":false},"subject":{"id":225,"type":"String","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "OutOfOfficeNotification": () => Promise.resolve({"_TypeModel":{"name":"OutOfOfficeNotification","since":44,"type":"ELEMENT_TYPE","id":1131,"rootId":"CHR1dGFub3RhAARr","versioned":false,"encrypted":false,"values":{"_format":{"id":1135,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1133,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1136,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1134,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"enabled":{"id":1137,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"endDate":{"id":1139,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"startDate":{"id":1138,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"notifications":{"id":1140,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"OutOfOfficeNotificationMessage","dependency":null}},"app":"tutanota","version":"51"}}), + "OutOfOfficeNotificationMessage": () => Promise.resolve({"_TypeModel":{"name":"OutOfOfficeNotificationMessage","since":44,"type":"AGGREGATED_TYPE","id":1126,"rootId":"CHR1dGFub3RhAARm","versioned":false,"encrypted":false,"values":{"_id":{"id":1127,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"message":{"id":1129,"type":"String","cardinality":"One","final":false,"encrypted":false},"subject":{"id":1128,"type":"String","cardinality":"One","final":false,"encrypted":false},"type":{"id":1130,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "OutOfOfficeNotificationRecipientList": () => Promise.resolve({"_TypeModel":{"name":"OutOfOfficeNotificationRecipientList","since":44,"type":"AGGREGATED_TYPE","id":1147,"rootId":"CHR1dGFub3RhAAR7","versioned":false,"encrypted":false,"values":{"_id":{"id":1148,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":1149,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"OutOfOfficeNotificationRecipient","dependency":null}},"app":"tutanota","version":"51"}}), + "PasswordAutoAuthenticationReturn": () => Promise.resolve({"_TypeModel":{"name":"PasswordAutoAuthenticationReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":317,"rootId":"CHR1dGFub3RhAAE9","versioned":false,"encrypted":false,"values":{"_format":{"id":318,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "PasswordChannelPhoneNumber": () => Promise.resolve({"_TypeModel":{"name":"PasswordChannelPhoneNumber","since":1,"type":"AGGREGATED_TYPE","id":135,"rootId":"CHR1dGFub3RhAACH","versioned":false,"encrypted":false,"values":{"_id":{"id":136,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"number":{"id":137,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "PasswordChannelReturn": () => Promise.resolve({"_TypeModel":{"name":"PasswordChannelReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":327,"rootId":"CHR1dGFub3RhAAFH","versioned":false,"encrypted":false,"values":{"_format":{"id":328,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"phoneNumberChannels":{"id":329,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"PasswordChannelPhoneNumber","dependency":null}},"app":"tutanota","version":"51"}}), + "PasswordMessagingData": () => Promise.resolve({"_TypeModel":{"name":"PasswordMessagingData","since":1,"type":"DATA_TRANSFER_TYPE","id":308,"rootId":"CHR1dGFub3RhAAE0","versioned":false,"encrypted":false,"values":{"_format":{"id":309,"type":"Number","cardinality":"One","final":false,"encrypted":false},"language":{"id":310,"type":"String","cardinality":"One","final":true,"encrypted":false},"numberId":{"id":311,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"symKeyForPasswordTransmission":{"id":312,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "PasswordMessagingReturn": () => Promise.resolve({"_TypeModel":{"name":"PasswordMessagingReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":313,"rootId":"CHR1dGFub3RhAAE5","versioned":false,"encrypted":false,"values":{"_format":{"id":314,"type":"Number","cardinality":"One","final":false,"encrypted":false},"autoAuthenticationId":{"id":315,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "PasswordRetrievalData": () => Promise.resolve({"_TypeModel":{"name":"PasswordRetrievalData","since":1,"type":"DATA_TRANSFER_TYPE","id":320,"rootId":"CHR1dGFub3RhAAFA","versioned":false,"encrypted":false,"values":{"_format":{"id":321,"type":"Number","cardinality":"One","final":false,"encrypted":false},"autoAuthenticationId":{"id":322,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "PasswordRetrievalReturn": () => Promise.resolve({"_TypeModel":{"name":"PasswordRetrievalReturn","since":1,"type":"DATA_TRANSFER_TYPE","id":323,"rootId":"CHR1dGFub3RhAAFD","versioned":false,"encrypted":false,"values":{"_format":{"id":324,"type":"Number","cardinality":"One","final":false,"encrypted":false},"transmissionKeyEncryptedPassword":{"id":325,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), "PhishingMarker": () => Promise.resolve({"_TypeModel":{"name":"PhishingMarker","since":40,"type":"AGGREGATED_TYPE","id":1023,"rootId":"CHR1dGFub3RhAAP_","versioned":false,"encrypted":false,"values":{"_id":{"id":1024,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"marker":{"id":1025,"type":"String","cardinality":"One","final":false,"encrypted":false},"status":{"id":1026,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), "PhishingMarkerWebsocketData": () => Promise.resolve({"_TypeModel":{"name":"PhishingMarkerWebsocketData","since":40,"type":"DATA_TRANSFER_TYPE","id":1034,"rootId":"CHR1dGFub3RhAAQK","versioned":false,"encrypted":false,"values":{"_format":{"id":1035,"type":"Number","cardinality":"One","final":false,"encrypted":false},"lastId":{"id":1036,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false}},"associations":{"markers":{"id":1037,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"PhishingMarker","dependency":null}},"app":"tutanota","version":"51"}}), - "ReportMailPostData": () => Promise.resolve({"_TypeModel":{"name":"ReportMailPostData","since":40,"type":"DATA_TRANSFER_TYPE","id":1066,"rootId":"CHR1dGFub3RhAAQq","versioned":false,"encrypted":false,"values":{"_format":{"id":1067,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailSessionKey":{"id":1068,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"reportType":{"id":1082,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"mailId":{"id":1069,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail"}},"app":"tutanota","version":"51"}}), - "CalendarEventAttendee": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventAttendee","since":42,"type":"AGGREGATED_TYPE","id":1084,"rootId":"CHR1dGFub3RhAAQ8","versioned":false,"encrypted":false,"values":{"_id":{"id":1085,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"status":{"id":1086,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{"address":{"id":1087,"type":"AGGREGATION","cardinality":"One","final":true,"refType":"EncryptedMailAddress","dependency":null}},"app":"tutanota","version":"51"}}), - "CalendarEventUidIndex": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventUidIndex","since":42,"type":"LIST_ELEMENT_TYPE","id":1093,"rootId":"CHR1dGFub3RhAARF","versioned":false,"encrypted":false,"values":{"_format":{"id":1097,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1095,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1098,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1096,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"calendarEvent":{"id":1099,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEvent"}},"app":"tutanota","version":"51"}}), - "CalendarEventIndexRef": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventIndexRef","since":42,"type":"AGGREGATED_TYPE","id":1100,"rootId":"CHR1dGFub3RhAARM","versioned":false,"encrypted":false,"values":{"_id":{"id":1101,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":1102,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEventUidIndex"}},"app":"tutanota","version":"51"}}), - "CalendarEventUpdate": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventUpdate","since":42,"type":"LIST_ELEMENT_TYPE","id":1104,"rootId":"CHR1dGFub3RhAARQ","versioned":false,"encrypted":true,"values":{"_format":{"id":1108,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1106,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1110,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1109,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1107,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"sender":{"id":1111,"type":"String","cardinality":"One","final":true,"encrypted":true}},"associations":{"file":{"id":1112,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"File"}},"app":"tutanota","version":"51"}}), - "CalendarEventUpdateList": () => Promise.resolve({"_TypeModel":{"name":"CalendarEventUpdateList","since":42,"type":"AGGREGATED_TYPE","id":1113,"rootId":"CHR1dGFub3RhAARZ","versioned":false,"encrypted":false,"values":{"_id":{"id":1114,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":1115,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"CalendarEventUpdate"}},"app":"tutanota","version":"51"}}), - "EntropyData": () => Promise.resolve({"_TypeModel":{"name":"EntropyData","since":43,"type":"DATA_TRANSFER_TYPE","id":1122,"rootId":"CHR1dGFub3RhAARi","versioned":false,"encrypted":false,"values":{"_format":{"id":1123,"type":"Number","cardinality":"One","final":false,"encrypted":false},"groupEncEntropy":{"id":1124,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "OutOfOfficeNotificationMessage": () => Promise.resolve({"_TypeModel":{"name":"OutOfOfficeNotificationMessage","since":44,"type":"AGGREGATED_TYPE","id":1126,"rootId":"CHR1dGFub3RhAARm","versioned":false,"encrypted":false,"values":{"_id":{"id":1127,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"message":{"id":1129,"type":"String","cardinality":"One","final":false,"encrypted":false},"subject":{"id":1128,"type":"String","cardinality":"One","final":false,"encrypted":false},"type":{"id":1130,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), - "OutOfOfficeNotification": () => Promise.resolve({"_TypeModel":{"name":"OutOfOfficeNotification","since":44,"type":"ELEMENT_TYPE","id":1131,"rootId":"CHR1dGFub3RhAARr","versioned":false,"encrypted":false,"values":{"_format":{"id":1135,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1133,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":1136,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1134,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"enabled":{"id":1137,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"endDate":{"id":1139,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false},"startDate":{"id":1138,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"notifications":{"id":1140,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"OutOfOfficeNotificationMessage","dependency":null}},"app":"tutanota","version":"51"}}), - "OutOfOfficeNotificationRecipientList": () => Promise.resolve({"_TypeModel":{"name":"OutOfOfficeNotificationRecipientList","since":44,"type":"AGGREGATED_TYPE","id":1147,"rootId":"CHR1dGFub3RhAAR7","versioned":false,"encrypted":false,"values":{"_id":{"id":1148,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":1149,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"OutOfOfficeNotificationRecipient"}},"app":"tutanota","version":"51"}}), - "EmailTemplateContent": () => Promise.resolve({"_TypeModel":{"name":"EmailTemplateContent","since":45,"type":"AGGREGATED_TYPE","id":1154,"rootId":"CHR1dGFub3RhAASC","versioned":false,"encrypted":false,"values":{"_id":{"id":1155,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"languageCode":{"id":1157,"type":"String","cardinality":"One","final":false,"encrypted":true},"text":{"id":1156,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), - "EmailTemplate": () => Promise.resolve({"_TypeModel":{"name":"EmailTemplate","since":45,"type":"LIST_ELEMENT_TYPE","id":1158,"rootId":"CHR1dGFub3RhAASG","versioned":false,"encrypted":true,"values":{"_format":{"id":1162,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1160,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1164,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1163,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1161,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"tag":{"id":1166,"type":"String","cardinality":"One","final":false,"encrypted":true},"title":{"id":1165,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"contents":{"id":1167,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"EmailTemplateContent","dependency":null}},"app":"tutanota","version":"51"}}), - "KnowledgeBaseEntryKeyword": () => Promise.resolve({"_TypeModel":{"name":"KnowledgeBaseEntryKeyword","since":45,"type":"AGGREGATED_TYPE","id":1168,"rootId":"CHR1dGFub3RhAASQ","versioned":false,"encrypted":false,"values":{"_id":{"id":1169,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"keyword":{"id":1170,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), - "KnowledgeBaseEntry": () => Promise.resolve({"_TypeModel":{"name":"KnowledgeBaseEntry","since":45,"type":"LIST_ELEMENT_TYPE","id":1171,"rootId":"CHR1dGFub3RhAAST","versioned":false,"encrypted":true,"values":{"_format":{"id":1175,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1173,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1177,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1176,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1174,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"description":{"id":1179,"type":"String","cardinality":"One","final":false,"encrypted":true},"title":{"id":1178,"type":"String","cardinality":"One","final":false,"encrypted":true}},"associations":{"keywords":{"id":1180,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"KnowledgeBaseEntryKeyword","dependency":null}},"app":"tutanota","version":"51"}}), - "TemplateGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"TemplateGroupRoot","since":45,"type":"ELEMENT_TYPE","id":1181,"rootId":"CHR1dGFub3RhAASd","versioned":false,"encrypted":true,"values":{"_format":{"id":1185,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1183,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1187,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1186,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1184,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"knowledgeBase":{"id":1189,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"KnowledgeBaseEntry"},"templates":{"id":1188,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"EmailTemplate"}},"app":"tutanota","version":"51"}}), - "UserAreaGroupDeleteData": () => Promise.resolve({"_TypeModel":{"name":"UserAreaGroupDeleteData","since":45,"type":"DATA_TRANSFER_TYPE","id":1190,"rootId":"CHR1dGFub3RhAASm","versioned":false,"encrypted":false,"values":{"_format":{"id":1191,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":1192,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group"}},"app":"tutanota","version":"51"}}), - "MailboxProperties": () => Promise.resolve({"_TypeModel":{"name":"MailboxProperties","since":47,"type":"ELEMENT_TYPE","id":1195,"rootId":"CHR1dGFub3RhAASr","versioned":false,"encrypted":true,"values":{"_format":{"id":1199,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1197,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1201,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1200,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1198,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"reportMovedMails":{"id":1202,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{},"app":"tutanota","version":"51"}}), - "SpamResults": () => Promise.resolve({"_TypeModel":{"name":"SpamResults","since":48,"type":"AGGREGATED_TYPE","id":1217,"rootId":"CHR1dGFub3RhAATB","versioned":false,"encrypted":false,"values":{"_id":{"id":1218,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":1219,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"SpamResult"}},"app":"tutanota","version":"51"}}), + "PhotosRef": () => Promise.resolve({"_TypeModel":{"name":"PhotosRef","since":23,"type":"AGGREGATED_TYPE","id":853,"rootId":"CHR1dGFub3RhAANV","versioned":false,"encrypted":false,"values":{"_id":{"id":854,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"files":{"id":855,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File","dependency":null}},"app":"tutanota","version":"51"}}), + "ReceiveInfoServiceData": () => Promise.resolve({"_TypeModel":{"name":"ReceiveInfoServiceData","since":12,"type":"DATA_TRANSFER_TYPE","id":570,"rootId":"CHR1dGFub3RhAAI6","versioned":false,"encrypted":false,"values":{"_format":{"id":571,"type":"Number","cardinality":"One","final":false,"encrypted":false},"language":{"id":1121,"type":"String","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "RemoteImapSyncInfo": () => Promise.resolve({"_TypeModel":{"name":"RemoteImapSyncInfo","since":1,"type":"LIST_ELEMENT_TYPE","id":183,"rootId":"CHR1dGFub3RhAAC3","versioned":false,"encrypted":false,"values":{"_format":{"id":187,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":185,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerGroup":{"id":594,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":186,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"seen":{"id":189,"type":"Boolean","cardinality":"One","final":false,"encrypted":false}},"associations":{"message":{"id":188,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail","dependency":null}},"app":"tutanota","version":"51"}}), + "ReportMailPostData": () => Promise.resolve({"_TypeModel":{"name":"ReportMailPostData","since":40,"type":"DATA_TRANSFER_TYPE","id":1066,"rootId":"CHR1dGFub3RhAAQq","versioned":false,"encrypted":false,"values":{"_format":{"id":1067,"type":"Number","cardinality":"One","final":false,"encrypted":false},"mailSessionKey":{"id":1068,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"reportType":{"id":1082,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"mailId":{"id":1069,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Mail","dependency":null}},"app":"tutanota","version":"51"}}), + "SecureExternalRecipientKeyData": () => Promise.resolve({"_TypeModel":{"name":"SecureExternalRecipientKeyData","since":11,"type":"AGGREGATED_TYPE","id":532,"rootId":"CHR1dGFub3RhAAIU","versioned":false,"encrypted":false,"values":{"_id":{"id":533,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"autoTransmitPassword":{"id":537,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false},"mailAddress":{"id":534,"type":"String","cardinality":"One","final":true,"encrypted":false},"ownerEncBucketKey":{"id":599,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"passwordVerifier":{"id":536,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"pwEncCommunicationKey":{"id":540,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"salt":{"id":538,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"saltHash":{"id":539,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"symEncBucketKey":{"id":535,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"passwordChannelPhoneNumbers":{"id":541,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"PasswordChannelPhoneNumber","dependency":null}},"app":"tutanota","version":"51"}}), + "SendDraftData": () => Promise.resolve({"_TypeModel":{"name":"SendDraftData","since":11,"type":"DATA_TRANSFER_TYPE","id":547,"rootId":"CHR1dGFub3RhAAIj","versioned":false,"encrypted":false,"values":{"_format":{"id":548,"type":"Number","cardinality":"One","final":false,"encrypted":false},"bucketEncMailSessionKey":{"id":551,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"calendarMethod":{"id":1117,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"language":{"id":549,"type":"String","cardinality":"One","final":true,"encrypted":false},"mailSessionKey":{"id":550,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"plaintext":{"id":675,"type":"Boolean","cardinality":"One","final":true,"encrypted":false},"senderNameUnencrypted":{"id":552,"type":"String","cardinality":"ZeroOrOne","final":true,"encrypted":false}},"associations":{"attachmentKeyData":{"id":555,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"AttachmentKeyData","dependency":null},"internalRecipientKeyData":{"id":553,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"InternalRecipientKeyData","dependency":null},"mail":{"id":556,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Mail","dependency":null},"secureExternalRecipientKeyData":{"id":554,"type":"AGGREGATION","cardinality":"Any","final":true,"refType":"SecureExternalRecipientKeyData","dependency":null}},"app":"tutanota","version":"51"}}), + "SendDraftReturn": () => Promise.resolve({"_TypeModel":{"name":"SendDraftReturn","since":11,"type":"DATA_TRANSFER_TYPE","id":557,"rootId":"CHR1dGFub3RhAAIt","versioned":false,"encrypted":false,"values":{"_format":{"id":558,"type":"Number","cardinality":"One","final":false,"encrypted":false},"messageId":{"id":559,"type":"String","cardinality":"One","final":false,"encrypted":false},"sentDate":{"id":560,"type":"Date","cardinality":"One","final":false,"encrypted":false}},"associations":{"notifications":{"id":561,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"NotificationMail","dependency":null},"sentMail":{"id":562,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"One","final":true,"refType":"Mail","dependency":null}},"app":"tutanota","version":"51"}}), + "SharedGroupData": () => Promise.resolve({"_TypeModel":{"name":"SharedGroupData","since":38,"type":"AGGREGATED_TYPE","id":992,"rootId":"CHR1dGFub3RhAAPg","versioned":false,"encrypted":false,"values":{"_id":{"id":993,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"bucketEncInvitationSessionKey":{"id":998,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"capability":{"id":994,"type":"Number","cardinality":"One","final":false,"encrypted":false},"sessionEncInviterName":{"id":997,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"sessionEncSharedGroupKey":{"id":995,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"sessionEncSharedGroupName":{"id":996,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"sharedGroup":{"id":1001,"type":"GeneratedId","cardinality":"One","final":false,"encrypted":false},"sharedGroupEncInviterGroupInfoKey":{"id":999,"type":"Bytes","cardinality":"One","final":true,"encrypted":false},"sharedGroupEncSharedGroupInfoKey":{"id":1000,"type":"Bytes","cardinality":"One","final":true,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "SpamResults": () => Promise.resolve({"_TypeModel":{"name":"SpamResults","since":48,"type":"AGGREGATED_TYPE","id":1217,"rootId":"CHR1dGFub3RhAATB","versioned":false,"encrypted":false,"values":{"_id":{"id":1218,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"list":{"id":1219,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"SpamResult","dependency":null}},"app":"tutanota","version":"51"}}), + "Subfiles": () => Promise.resolve({"_TypeModel":{"name":"Subfiles","since":1,"type":"AGGREGATED_TYPE","id":11,"rootId":"CHR1dGFub3RhAAs","versioned":false,"encrypted":false,"values":{"_id":{"id":12,"type":"CustomId","cardinality":"One","final":true,"encrypted":false}},"associations":{"files":{"id":27,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"File","dependency":null}},"app":"tutanota","version":"51"}}), + "TemplateGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"TemplateGroupRoot","since":45,"type":"ELEMENT_TYPE","id":1181,"rootId":"CHR1dGFub3RhAASd","versioned":false,"encrypted":true,"values":{"_format":{"id":1185,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":1183,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":1187,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":1186,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":1184,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false}},"associations":{"knowledgeBase":{"id":1189,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"KnowledgeBaseEntry","dependency":null},"templates":{"id":1188,"type":"LIST_ASSOCIATION","cardinality":"One","final":true,"refType":"EmailTemplate","dependency":null}},"app":"tutanota","version":"51"}}), + "TutanotaProperties": () => Promise.resolve({"_TypeModel":{"name":"TutanotaProperties","since":1,"type":"ELEMENT_TYPE","id":216,"rootId":"CHR1dGFub3RhAADY","versioned":false,"encrypted":true,"values":{"_format":{"id":220,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":218,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":598,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":597,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":219,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"customEmailSignature":{"id":471,"type":"String","cardinality":"One","final":false,"encrypted":true},"defaultSender":{"id":469,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"defaultUnconfidential":{"id":470,"type":"Boolean","cardinality":"One","final":false,"encrypted":false},"emailSignatureType":{"id":472,"type":"Number","cardinality":"One","final":false,"encrypted":false},"groupEncEntropy":{"id":410,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"lastSeenAnnouncement":{"id":897,"type":"Number","cardinality":"One","final":false,"encrypted":false},"noAutomaticContacts":{"id":568,"type":"Boolean","cardinality":"One","final":false,"encrypted":true},"notificationMailLanguage":{"id":418,"type":"String","cardinality":"ZeroOrOne","final":false,"encrypted":false},"sendPlaintextOnly":{"id":676,"type":"Boolean","cardinality":"One","final":false,"encrypted":true}},"associations":{"imapSyncConfig":{"id":222,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"ImapSyncConfiguration","dependency":null},"inboxRules":{"id":578,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"InboxRule","dependency":null},"lastPushedMail":{"id":221,"type":"LIST_ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":false,"refType":"Mail","dependency":null}},"app":"tutanota","version":"51"}}), + "UserAccountCreateData": () => Promise.resolve({"_TypeModel":{"name":"UserAccountCreateData","since":16,"type":"DATA_TRANSFER_TYPE","id":663,"rootId":"CHR1dGFub3RhAAKX","versioned":false,"encrypted":false,"values":{"_format":{"id":664,"type":"Number","cardinality":"One","final":false,"encrypted":false},"date":{"id":665,"type":"Date","cardinality":"ZeroOrOne","final":false,"encrypted":false}},"associations":{"userData":{"id":666,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"UserAccountUserData","dependency":null},"userGroupData":{"id":667,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"InternalGroupData","dependency":null}},"app":"tutanota","version":"51"}}), + "UserAccountUserData": () => Promise.resolve({"_TypeModel":{"name":"UserAccountUserData","since":16,"type":"AGGREGATED_TYPE","id":622,"rootId":"CHR1dGFub3RhAAJu","versioned":false,"encrypted":false,"values":{"_id":{"id":623,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"contactEncContactListSessionKey":{"id":637,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncContactGroupInfoSessionKey":{"id":640,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncFileGroupInfoSessionKey":{"id":641,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"customerEncMailGroupInfoSessionKey":{"id":639,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"encryptedName":{"id":625,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"fileEncFileSystemSessionKey":{"id":638,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"mailAddress":{"id":624,"type":"String","cardinality":"One","final":false,"encrypted":false},"mailEncMailBoxSessionKey":{"id":636,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"pwEncUserGroupKey":{"id":629,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"recoverCodeEncUserGroupKey":{"id":893,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"recoverCodeVerifier":{"id":894,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"salt":{"id":626,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncClientKey":{"id":628,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncContactGroupKey":{"id":632,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncCustomerGroupKey":{"id":630,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncEntropy":{"id":634,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncFileGroupKey":{"id":633,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncMailGroupKey":{"id":631,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncRecoverCode":{"id":892,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncTutanotaPropertiesSessionKey":{"id":635,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"verifier":{"id":627,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{},"app":"tutanota","version":"51"}}), + "UserAreaGroupData": () => Promise.resolve({"_TypeModel":{"name":"UserAreaGroupData","since":33,"type":"AGGREGATED_TYPE","id":956,"rootId":"CHR1dGFub3RhAAO8","versioned":false,"encrypted":false,"values":{"_id":{"id":957,"type":"CustomId","cardinality":"One","final":true,"encrypted":false},"adminEncGroupKey":{"id":959,"type":"Bytes","cardinality":"ZeroOrOne","final":false,"encrypted":false},"customerEncGroupInfoSessionKey":{"id":960,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"groupEncGroupRootSessionKey":{"id":958,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"groupInfoEncName":{"id":962,"type":"Bytes","cardinality":"One","final":false,"encrypted":false},"userEncGroupKey":{"id":961,"type":"Bytes","cardinality":"One","final":false,"encrypted":false}},"associations":{"adminGroup":{"id":963,"type":"ELEMENT_ASSOCIATION","cardinality":"ZeroOrOne","final":true,"refType":"Group","dependency":null}},"app":"tutanota","version":"51"}}), + "UserAreaGroupDeleteData": () => Promise.resolve({"_TypeModel":{"name":"UserAreaGroupDeleteData","since":45,"type":"DATA_TRANSFER_TYPE","id":1190,"rootId":"CHR1dGFub3RhAASm","versioned":false,"encrypted":false,"values":{"_format":{"id":1191,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"group":{"id":1192,"type":"ELEMENT_ASSOCIATION","cardinality":"One","final":false,"refType":"Group","dependency":null}},"app":"tutanota","version":"51"}}), + "UserAreaGroupPostData": () => Promise.resolve({"_TypeModel":{"name":"UserAreaGroupPostData","since":33,"type":"DATA_TRANSFER_TYPE","id":964,"rootId":"CHR1dGFub3RhAAPE","versioned":false,"encrypted":false,"values":{"_format":{"id":965,"type":"Number","cardinality":"One","final":false,"encrypted":false}},"associations":{"groupData":{"id":966,"type":"AGGREGATION","cardinality":"One","final":false,"refType":"UserAreaGroupData","dependency":null}},"app":"tutanota","version":"51"}}), + "UserSettingsGroupRoot": () => Promise.resolve({"_TypeModel":{"name":"UserSettingsGroupRoot","since":34,"type":"ELEMENT_TYPE","id":972,"rootId":"CHR1dGFub3RhAAPM","versioned":false,"encrypted":true,"values":{"_format":{"id":976,"type":"Number","cardinality":"One","final":false,"encrypted":false},"_id":{"id":974,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"_ownerEncSessionKey":{"id":978,"type":"Bytes","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_ownerGroup":{"id":977,"type":"GeneratedId","cardinality":"ZeroOrOne","final":true,"encrypted":false},"_permissions":{"id":975,"type":"GeneratedId","cardinality":"One","final":true,"encrypted":false},"startOfTheWeek":{"id":981,"type":"Number","cardinality":"One","final":false,"encrypted":true},"timeFormat":{"id":980,"type":"Number","cardinality":"One","final":false,"encrypted":true}},"associations":{"groupSettings":{"id":979,"type":"AGGREGATION","cardinality":"Any","final":false,"refType":"GroupSettings","dependency":null}},"app":"tutanota","version":"51"}}), } export default map \ No newline at end of file diff --git a/src/api/main/MainLocator.ts b/src/api/main/MainLocator.ts index 1420a505e5..22d999e690 100644 --- a/src/api/main/MainLocator.ts +++ b/src/api/main/MainLocator.ts @@ -53,6 +53,7 @@ import {BrowserWebauthn} from "../../misc/2fa/webauthn/BrowserWebauthn.js" import {UsageTestController} from "@tutao/tutanota-usagetests" import {UsageTestModel} from "../../misc/UsageTestModel" import {deviceConfig} from "../../misc/DeviceConfig" +import {IServiceExecutor} from "../common/ServiceRequest.js" assertMainOrNode() @@ -94,7 +95,7 @@ export interface IMainLocator { readonly deviceEncryptionFacade: DeviceEncryptionFacade readonly usageTestController: UsageTestController readonly usageTestModel: UsageTestModel - + readonly serviceExecutor: IServiceExecutor readonly init: () => Promise readonly initialized: Promise } @@ -132,6 +133,7 @@ class MainLocator implements IMainLocator { deviceEncryptionFacade!: DeviceEncryptionFacade usageTestController!: UsageTestController usageTestModel!: UsageTestModel + serviceExecutor!: IServiceExecutor private _nativeInterfaces: NativeInterfaces | null = null @@ -219,6 +221,7 @@ class MainLocator implements IMainLocator { contactFormFacade, deviceEncryptionFacade, restInterface, + serviceExecutor } = this.worker.getWorkerInterface() this.loginFacade = loginFacade this.customerFacade = customerFacade @@ -237,6 +240,7 @@ class MainLocator implements IMainLocator { this.userManagementFacade = userManagementFacade this.contactFormFacade = contactFormFacade this.deviceEncryptionFacade = deviceEncryptionFacade + this.serviceExecutor = serviceExecutor this.eventController = new EventController(logins) this.progressTracker = new ProgressTracker() this.search = new SearchModel(this.searchFacade) @@ -254,7 +258,7 @@ class MainLocator implements IMainLocator { throw new Error("Not implemented by this provider") }, }, - this.worker, + this.serviceExecutor, ) const lazyScheduler = async () => { @@ -268,7 +272,7 @@ class MainLocator implements IMainLocator { notifications, lazyScheduler, this.eventController, - this.worker, + this.serviceExecutor, logins, this.progressTracker, this.entityClient, diff --git a/src/api/main/ServiceRequest.ts b/src/api/main/ServiceRequest.ts deleted file mode 100644 index 575f9ad8bd..0000000000 --- a/src/api/main/ServiceRequest.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type {HttpMethod} from "../common/EntityFunctions" -import {TypeRef} from "@tutao/tutanota-utils" -import {locator} from "./MainLocator" -import {assertMainOrNode} from "../common/Env" -import {SysService} from "../entities/sys/Services"; -import {TutanotaService} from "../entities/tutanota/Services"; -import {MonitorService} from "../entities/monitor/Services"; -import {AccountingService} from "../entities/accounting/Services"; -import type {Entity} from "../common/EntityTypes" -import {SuspensionBehavior} from "../worker/rest/RestClient" - -assertMainOrNode() - -type Service = SysService | TutanotaService | MonitorService | AccountingService - -export function serviceRequest( - service: Service, - method: HttpMethod, - requestEntity?: Entity | undefined | null, - responseTypeRef?: T extends Entity ? TypeRef : never, - queryParams?: Dict, - sk?: Aes128Key, - extraHeaders?: Dict, - suspensionBehavior?: SuspensionBehavior, -): Promise { - return locator.worker.serviceRequest(service, method, requestEntity, responseTypeRef, queryParams, sk, extraHeaders, suspensionBehavior) -} - -export function serviceRequestVoid( - service: Service, - method: HttpMethod, - requestEntity?: Entity | undefined | null, - queryParams?: Dict, - sk?: Aes128Key, - extraHeaders?: Dict, - suspensionBehavior?: SuspensionBehavior, -): Promise { - return locator.worker.serviceRequest(service, method, requestEntity, undefined, queryParams, sk, extraHeaders, suspensionBehavior) -} \ No newline at end of file diff --git a/src/api/main/UserController.ts b/src/api/main/UserController.ts index 2edac8a501..a5f872e066 100644 --- a/src/api/main/UserController.ts +++ b/src/api/main/UserController.ts @@ -16,7 +16,6 @@ import type {EntityUpdateData} from "./EventController" import {isUpdateForTypeRef} from "./EventController" import type {UserSettingsGroupRoot} from "../entities/tutanota/UserSettingsGroupRoot" import {createUserSettingsGroupRoot, UserSettingsGroupRootTypeRef} from "../entities/tutanota/UserSettingsGroupRoot" -import {SysService} from "../entities/sys/Services" import {createCloseSessionServicePost} from "../entities/sys/CloseSessionServicePost" import type {GroupMembership} from "../entities/sys/GroupMembership" import {NotFoundError} from "../common/error/RestError" @@ -30,6 +29,7 @@ import type {WhitelabelConfig} from "../entities/sys/WhitelabelConfig" import type {DomainInfo} from "../entities/sys/DomainInfo" import {getWhitelabelCustomizations} from "../../misc/WhitelabelCustomizations" import {EntityClient} from "../common/EntityClient" +import {CloseSessionService} from "../entities/sys/Services" assertMainOrNode() @@ -237,7 +237,7 @@ export class UserController implements IUserController { if (sendBeacon) { try { - const path = `${getHttpOrigin()}/rest/sys/${SysService.CloseSessionService}` + const path = `${getHttpOrigin()}/rest/sys/${CloseSessionService}` const requestObject = createCloseSessionServicePost({ accessToken: this.accessToken, sessionId: this.sessionId, diff --git a/src/api/main/WorkerClient.ts b/src/api/main/WorkerClient.ts index 632a7b86d9..79600a7ff5 100644 --- a/src/api/main/WorkerClient.ts +++ b/src/api/main/WorkerClient.ts @@ -1,12 +1,11 @@ import {CryptoError} from "../common/error/CryptoError" import type {Commands} from "../common/MessageDispatcher" import {MessageDispatcher, Request, WorkerTransport} from "../common/MessageDispatcher" -import type {HttpMethod} from "../common/EntityFunctions" import {assertMainOrNode} from "../common/Env" import type {IMainLocator} from "./MainLocator" import {client} from "../../misc/ClientDetector" import type {DeferredObject} from "@tutao/tutanota-utils" -import {defer, downcast, identity, TypeRef} from "@tutao/tutanota-utils" +import {defer, downcast, identity} from "@tutao/tutanota-utils" import {objToError} from "../common/utils/Utils" import type {InfoMessage} from "../common/CommonTypes" import {handleUncaughtError} from "../../misc/ErrorHandler" @@ -15,15 +14,10 @@ import {createWebsocketLeaderStatus} from "../entities/sys/WebsocketLeaderStatus import {addSearchIndexDebugEntry} from "../../misc/IndexerDebugLogger" import type {MainInterface, WorkerInterface} from "../worker/WorkerImpl" import {exposeLocal, exposeRemote} from "../common/WorkerProxy" -import type {Entity, TypeModel} from "../common/EntityTypes" +import type {TypeModel} from "../common/EntityTypes" import type {EntropySource} from "@tutao/tutanota-crypto" import type {CloseEventBusOption} from "../common/TutanotaConstants" import stream from "mithril/stream" -import type {TutanotaService} from "../entities/tutanota/Services"; -import type {SysService} from "../entities/sys/Services"; -import type {AccountingService} from "../entities/accounting/Services"; -import type {MonitorService} from "../entities/monitor/Services"; -import type {StorageService} from "../entities/storage/Services"; import {User} from "../entities/sys/User" import type {RestClient} from "../worker/rest/RestClient" import {SuspensionBehavior} from "../worker/rest/RestClient" @@ -183,24 +177,6 @@ export class WorkerClient { return this._postRequest(new Request("resolveSessionKey", [typeModel, instance])) } - /** - * @deprecated expose service calls via facades on the server side - * - * Make sure that it matches interface of service request functions - */ - serviceRequest( - service: SysService | TutanotaService | MonitorService | AccountingService | StorageService, - method: HttpMethod, - requestEntity?: Entity | undefined | null, - responseTypeRef?: TypeRef, - queryParameter?: Dict, - sk?: Aes128Key, - extraHeaders?: Dict, - suspensionBehavior?: SuspensionBehavior, - ): Promise { - return this._postRequest(new Request("serviceRequest", [service, method, requestEntity, responseTypeRef, queryParameter, sk, extraHeaders, suspensionBehavior])) - } - entropy(entropyCache: {source: EntropySource, entropy: number, data: number}[]): Promise { return this._postRequest(new Request("entropy", [entropyCache])) } diff --git a/src/api/worker/ServiceRequestWorker.ts b/src/api/worker/ServiceRequestWorker.ts deleted file mode 100644 index 0b0d32049b..0000000000 --- a/src/api/worker/ServiceRequestWorker.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type {HttpMethod} from "../common/EntityFunctions" -import {_service} from "./rest/ServiceRestClient" -import {TypeRef} from "@tutao/tutanota-utils" -import {assertWorkerOrNode} from "../common/Env" -import type {TutanotaService} from "../entities/tutanota/Services"; -import type {SysService} from "../entities/sys/Services"; -import type {AccountingService} from "../entities/accounting/Services"; -import type {MonitorService} from "../entities/monitor/Services"; -import type {StorageService} from "../entities/storage/Services"; -import type {Entity} from "../common/EntityTypes" - -assertWorkerOrNode() - -export function serviceRequest( - service: SysService | TutanotaService | MonitorService | StorageService, - method: HttpMethod, - requestEntity: Entity | null | undefined, - responseTypeRef?: TypeRef, - queryParams?: Dict, - sk?: Aes128Key, - extraHeaders?: Dict, -): Promise { - return _service(service, method, requestEntity, responseTypeRef, queryParams, sk, extraHeaders) -} - -export function serviceRequestVoid( - service: SysService | TutanotaService | MonitorService | AccountingService, - method: HttpMethod, - requestEntity: T, - queryParams?: Dict, - sk?: Aes128Key, - extraHeaders?: Dict, -): Promise { - return _service(service, method, requestEntity, undefined, queryParams, sk, extraHeaders) -} \ No newline at end of file diff --git a/src/api/worker/WorkerImpl.ts b/src/api/worker/WorkerImpl.ts index cb9a423eed..f36000e92b 100644 --- a/src/api/worker/WorkerImpl.ts +++ b/src/api/worker/WorkerImpl.ts @@ -1,11 +1,10 @@ import type {Commands} from "../common/MessageDispatcher" import {errorToObj, MessageDispatcher, Request, WorkerTransport} from "../common/MessageDispatcher" import {CryptoError} from "../common/error/CryptoError" -import {BookingFacade, bookingFacade} from "./facades/BookingFacade" +import {BookingFacade} from "./facades/BookingFacade" import {NotAuthenticatedError} from "../common/error/RestError" import {ProgrammingError} from "../common/error/ProgrammingError" import {initLocator, locator, resetLocator} from "./WorkerLocator" -import {_service} from "./rest/ServiceRestClient" import {assertWorkerOrNode, isMainOrNode} from "../common/Env" import type {ContactFormFacade} from "./facades/ContactFormFacade" import type {BrowserData} from "../../misc/ClientConstants" @@ -42,6 +41,7 @@ import type {SecondFactorAuthHandler} from "../../misc/2fa/SecondFactorHandler" import type {EntityRestInterface} from "./rest/EntityRestClient" import {WsConnectionState} from "../main/WorkerClient"; import {RestClient} from "./rest/RestClient" +import {IServiceExecutor} from "../common/ServiceRequest.js" assertWorkerOrNode() @@ -65,6 +65,7 @@ export interface WorkerInterface { readonly contactFormFacade: ContactFormFacade readonly deviceEncryptionFacade: DeviceEncryptionFacade readonly restInterface: EntityRestInterface + readonly serviceExecutor: IServiceExecutor } /** Interface for the "main"/webpage context of the app, interface for the worker client. */ @@ -168,7 +169,7 @@ export class WorkerImpl implements NativeInterface { }, get bookingFacade() { - return bookingFacade + return locator.booking }, get mailAddressFacade() { @@ -194,6 +195,9 @@ export class WorkerImpl implements NativeInterface { get restInterface() { return locator.cache }, + get serviceExecutor() { + return locator.serviceExecutor + } } } @@ -227,10 +231,6 @@ export class WorkerImpl implements NativeInterface { options.headers = {...locator.login.createAuthHeaders(), ...options.headers} return locator.restClient.request(path, method, options) }, - serviceRequest: (message: WorkerRequest) => { - const args = message.args as Parameters - return _service(...args) - }, entropy: (message: WorkerRequest) => { return this.addEntropy(message.args[0]) }, diff --git a/src/api/worker/WorkerLocator.ts b/src/api/worker/WorkerLocator.ts index b78da262c0..26033d0ec5 100644 --- a/src/api/worker/WorkerLocator.ts +++ b/src/api/worker/WorkerLocator.ts @@ -44,11 +44,14 @@ import {SchedulerImpl} from "../common/utils/Scheduler.js" import {WorkerDateProvider} from "./utils/WorkerDateProvider.js" import {LateInitializedCacheStorage, LateInitializedCacheStorageImpl} from "./rest/CacheStorageProxy" import {uint8ArrayToKey} from "@tutao/tutanota-crypto" -import {serviceRequest, serviceRequestVoid} from "./ServiceRequestWorker" +import {IServiceExecutor} from "../common/ServiceRequest" +import {ServiceExecutor} from "./rest/ServiceExecutor" +import {BookingFacade} from "./facades/BookingFacade" assertWorkerOrNode() export type WorkerLocatorType = { + serviceExecutor: IServiceExecutor login: LoginFacadeImpl indexer: Indexer cache: EntityRestInterface @@ -77,6 +80,7 @@ export type WorkerLocatorType = { rsa: RsaImplementation crypto: CryptoFacade instanceMapper: InstanceMapper + booking: BookingFacade } export const locator: WorkerLocatorType = {} as any @@ -87,10 +91,17 @@ export async function initLocator(worker: WorkerImpl, browserData: BrowserData) locator.instanceMapper = new InstanceMapper() locator.rsa = await createRsaImplementation(worker) locator.restClient = new RestClient(suspensionHandler) + locator.serviceExecutor = new ServiceExecutor( + locator.restClient, + () => locator.login.createAuthHeaders(), + locator.instanceMapper, + () => locator.crypto, + ) const entityRestClient = new EntityRestClient(getAuthHeaders, locator.restClient, () => locator.crypto, locator.instanceMapper) locator._browserData = browserData locator.native = worker + locator.booking = new BookingFacade(locator.serviceExecutor) const uninitializedStorage = makeCacheStorage() @@ -105,7 +116,6 @@ export async function initLocator(worker: WorkerImpl, browserData: BrowserData) locator.secondFactorAuthenticationHandler = mainInterface.secondFactorAuthenticationHandler locator.login = new LoginFacadeImpl( worker, - {serviceRequest, serviceRequestVoid}, locator.restClient, /** * we don't want to try to use the cache in the login facade, because it may not be available (when no user is logged in) @@ -114,17 +124,18 @@ export async function initLocator(worker: WorkerImpl, browserData: BrowserData) locator.secondFactorAuthenticationHandler, locator.instanceMapper, () => locator.crypto, - uninitializedStorage.initialize.bind(uninitializedStorage) + uninitializedStorage.initialize.bind(uninitializedStorage), + locator.serviceExecutor, ) - locator.crypto = new CryptoFacadeImpl(locator.login, locator.cachingEntityClient, locator.restClient, locator.rsa) + locator.crypto = new CryptoFacadeImpl(locator.login, locator.cachingEntityClient, locator.restClient, locator.rsa, locator.serviceExecutor) const suggestionFacades = [ locator.indexer._contact.suggestionFacade, locator.indexer._groupInfo.suggestionFacade, locator.indexer._whitelabelChildIndexer.suggestionFacade, ] locator.search = new SearchFacade(locator.login, locator.indexer.db, locator.indexer._mail, suggestionFacades, browserData, locator.cachingEntityClient) - locator.counters = new CounterFacade() - locator.groupManagement = new GroupManagementFacadeImpl(locator.login, locator.counters, locator.cachingEntityClient, locator.rsa) + locator.counters = new CounterFacade(locator.serviceExecutor) + locator.groupManagement = new GroupManagementFacadeImpl(locator.login, locator.counters, locator.cachingEntityClient, locator.rsa, locator.serviceExecutor) locator.userManagement = new UserManagementFacade( worker, locator.login, @@ -132,6 +143,7 @@ export async function initLocator(worker: WorkerImpl, browserData: BrowserData) locator.counters, locator.rsa, locator.cachingEntityClient, + locator.serviceExecutor, ) locator.customer = new CustomerFacadeImpl( worker, @@ -141,16 +153,18 @@ export async function initLocator(worker: WorkerImpl, browserData: BrowserData) locator.counters, locator.rsa, locator.cachingEntityClient, + locator.serviceExecutor, + locator.booking, ) const fileApp = new NativeFileApp(worker) const aesApp = new AesApp(worker) - locator.file = new FileFacade(locator.login, locator.restClient, suspensionHandler, fileApp, aesApp, locator.instanceMapper) - locator.mail = new MailFacade(locator.login, locator.file, locator.cachingEntityClient, locator.crypto) + locator.file = new FileFacade(locator.login, locator.restClient, suspensionHandler, fileApp, aesApp, locator.instanceMapper, locator.serviceExecutor) + locator.mail = new MailFacade(locator.login, locator.file, locator.cachingEntityClient, locator.crypto, locator.serviceExecutor) // not needed for admin client if (cache) { - locator.calendar = new CalendarFacade(locator.login, locator.groupManagement, cache, worker, worker, locator.instanceMapper) + locator.calendar = new CalendarFacade(locator.login, locator.groupManagement, cache, worker, worker, locator.instanceMapper, locator.serviceExecutor) } - locator.mailAddress = new MailAddressFacade(locator.login) + locator.mailAddress = new MailAddressFacade(locator.login, locator.serviceExecutor) const dateProvider = new WorkerDateProvider() const scheduler = new SchedulerImpl(dateProvider, self, self) @@ -168,8 +182,8 @@ export async function initLocator(worker: WorkerImpl, browserData: BrowserData) ) locator.login.init(locator.indexer, locator.eventBusClient) locator.Const = Const - locator.share = new ShareFacade(locator.login, locator.crypto) - locator.giftCards = new GiftCardFacadeImpl(locator.login) + locator.share = new ShareFacade(locator.login, locator.crypto, locator.serviceExecutor) + locator.giftCards = new GiftCardFacadeImpl(locator.login, locator.serviceExecutor) locator.configFacade = new ConfigurationDatabase(locator.login) locator.contactFormFacade = new ContactFormFacadeImpl(locator.restClient, locator.instanceMapper) locator.deviceEncryptionFacade = new Aes256DeviceEncryptionFacade() diff --git a/src/api/worker/crypto/CryptoFacade.ts b/src/api/worker/crypto/CryptoFacade.ts index 22a00ba425..8d1c49c294 100644 --- a/src/api/worker/crypto/CryptoFacade.ts +++ b/src/api/worker/crypto/CryptoFacade.ts @@ -12,8 +12,6 @@ import { uint8ArrayToHex, } from "@tutao/tutanota-utils" import {BucketPermissionType, GroupType, PermissionType} from "../../common/TutanotaConstants" -import {serviceRequest, serviceRequestVoid} from "../ServiceRequestWorker" -import {TutanotaService} from "../../entities/tutanota/Services" import {HttpMethod, resolveTypeReference} from "../../common/EntityFunctions" import {GroupInfoTypeRef} from "../../entities/sys/GroupInfo" import {TutanotaPropertiesTypeRef} from "../../entities/tutanota/TutanotaProperties" @@ -26,7 +24,6 @@ import type {Permission} from "../../entities/sys/Permission" import {PermissionTypeRef} from "../../entities/sys/Permission" import {typeRefToPath} from "../rest/EntityRestClient" import {createUpdatePermissionKeyData} from "../../entities/sys/UpdatePermissionKeyData" -import {SysService} from "../../entities/sys/Services" import {LockedError, NotFoundError, PayloadTooLargeError, TooManyRequestsError} from "../../common/error/RestError" import {SessionKeyNotFoundError} from "../../common/error/SessionKeyNotFoundError" // importing with {} from CJS modules is not supported for dist-builds currently (must be a systemjs builder bug) import {MailBodyTypeRef} from "../../entities/tutanota/MailBody" @@ -58,10 +55,12 @@ import { import type {InternalRecipientKeyData} from "../../entities/tutanota/InternalRecipientKeyData" import {createInternalRecipientKeyData} from "../../entities/tutanota/InternalRecipientKeyData" import {createPublicKeyData} from "../../entities/sys/PublicKeyData" -import {PublicKeyReturnTypeRef} from "../../entities/sys/PublicKeyReturn" import {RecipientNotResolvedError} from "../../common/error/RecipientNotResolvedError" import type {RsaImplementation} from "./RsaImplementation" import {locator} from "../WorkerLocator" +import {IServiceExecutor} from "../../common/ServiceRequest" +import {EncryptTutanotaPropertiesService} from "../../entities/tutanota/Services" +import {PublicKeyService, UpdatePermissionKeyService} from "../../entities/sys/Services" assertWorkerOrNode() @@ -109,14 +108,13 @@ export class CryptoFacadeImpl implements CryptoFacade { // this especially improves the performance when indexing mail bodies readonly _mailBodySessionKeyCache: Record = {} - /** - * - * @param logins - * @param entityClient - * @param restClient - * @param rsa - */ - constructor(logins: LoginFacadeImpl, entityClient: EntityClient, restClient: RestClient, rsa: RsaImplementation) { + constructor( + logins: LoginFacadeImpl, + entityClient: EntityClient, + restClient: RestClient, + rsa: RsaImplementation, + private readonly serviceExecutor: IServiceExecutor, + ) { this.logins = logins this.entityClient = entityClient this.restClient = restClient @@ -145,7 +143,8 @@ export class CryptoFacadeImpl implements CryptoFacade { data._ownerEncSessionKey = uint8ArrayToBase64(groupEncSessionKey) migrationData.properties = data._id migrationData.symEncSessionKey = groupEncSessionKey - return serviceRequestVoid(TutanotaService.EncryptTutanotaPropertiesService, HttpMethod.POST, migrationData).then(() => data as any) + const result = await this.serviceExecutor.post(EncryptTutanotaPropertiesService, migrationData) + return data } else if (isSameTypeRef(typeRef, PushIdentifierTypeRef) && data._ownerEncSessionKey == null) { // set sessionKey for allowing encryption when old instance (< v43) is updated return resolveTypeReference(typeRef) @@ -425,7 +424,7 @@ export class CryptoFacadeImpl implements CryptoFacade { ): Promise { let keyData = createPublicKeyData() keyData.mailAddress = recipientMailAddress - return serviceRequest(SysService.PublicKeyService, HttpMethod.GET, keyData, PublicKeyReturnTypeRef) + return this.serviceExecutor.get(PublicKeyService, keyData) .then(publicKeyData => { let publicKey = hexToPublicKey(uint8ArrayToHex(publicKeyData.pubKey)) let uint8ArrayBucketKey = bitArrayToUint8Array(bucketKey) @@ -487,7 +486,7 @@ export class CryptoFacadeImpl implements CryptoFacade { updateService.ownerEncSessionKey = encryptKey(permissionOwnerGroupKey, sessionKey) updateService.symEncSessionKey = encryptKey(permissionGroupKey, sessionKey) // legacy can be removed - return serviceRequestVoid(SysService.UpdatePermissionKeyService, HttpMethod.POST, updateService) + return this.serviceExecutor.post(UpdatePermissionKeyService, updateService).then(noOp) } } diff --git a/src/api/worker/facades/BookingFacade.ts b/src/api/worker/facades/BookingFacade.ts index a662d6f312..ff4d8d1b97 100644 --- a/src/api/worker/facades/BookingFacade.ts +++ b/src/api/worker/facades/BookingFacade.ts @@ -2,20 +2,20 @@ import type {BookingItemFeatureType} from "../../common/TutanotaConstants" import {Const} from "../../common/TutanotaConstants" import {createPriceServiceData} from "../../entities/sys/PriceServiceData" import {createPriceRequestData} from "../../entities/sys/PriceRequestData" -import {serviceRequest} from "../ServiceRequestWorker" import type {PriceServiceReturn} from "../../entities/sys/PriceServiceReturn" -import {PriceServiceReturnTypeRef} from "../../entities/sys/PriceServiceReturn" import {neverNull} from "@tutao/tutanota-utils" -import {HttpMethod} from "../../common/EntityFunctions" -import {SysService} from "../../entities/sys/Services" import type {PriceData} from "../../entities/sys/PriceData" import type {PriceItemData} from "../../entities/sys/PriceItemData" import {assertWorkerOrNode} from "../../common/Env" +import {IServiceExecutor} from "../../common/ServiceRequest" +import {PriceService} from "../../entities/sys/Services" assertWorkerOrNode() export class BookingFacade { - constructor() { + constructor( + private readonly serviceExecutor: IServiceExecutor, + ) { } /** @@ -29,18 +29,20 @@ export class BookingFacade { * @return Resolves to PriceServiceReturn or an exception if the loading failed. */ getPrice(type: BookingItemFeatureType, count: number, reactivate: boolean): Promise { - let serviceData = createPriceServiceData() - serviceData.date = Const.CURRENT_DATE - let priceRequestData = createPriceRequestData() - priceRequestData.featureType = type - priceRequestData.count = String(count) - priceRequestData.reactivate = reactivate - priceRequestData.paymentInterval = null - priceRequestData.accountType = null - priceRequestData.business = null - serviceData.priceRequest = priceRequestData - serviceData.campaign = null - return serviceRequest(SysService.PriceService, HttpMethod.GET, serviceData, PriceServiceReturnTypeRef) + const priceRequestData = createPriceRequestData({ + featureType: type, + count: String(count), + reactivate, + paymentInterval: null, + accountType: null, + business: null + }) + const serviceData = createPriceServiceData({ + date: Const.CURRENT_DATE, + priceRequest: priceRequestData, + campaign: null, + }) + return this.serviceExecutor.get(PriceService, serviceData) } /** @@ -48,8 +50,8 @@ export class BookingFacade { * @return Resolves to PriceServiceReturn or an exception if the loading failed. */ getCurrentPrice(): Promise { - let serviceData = createPriceServiceData() - return serviceRequest(SysService.PriceService, HttpMethod.GET, serviceData, PriceServiceReturnTypeRef) + const serviceData = createPriceServiceData() + return this.serviceExecutor.get(PriceService, serviceData) } /** @@ -66,5 +68,3 @@ export class BookingFacade { return null } } - -export const bookingFacade: BookingFacade = new BookingFacade() \ No newline at end of file diff --git a/src/api/worker/facades/CalendarFacade.ts b/src/api/worker/facades/CalendarFacade.ts index 291e671234..d74f6990cc 100644 --- a/src/api/worker/facades/CalendarFacade.ts +++ b/src/api/worker/facades/CalendarFacade.ts @@ -1,4 +1,3 @@ -import {serviceRequest, serviceRequestVoid} from "../ServiceRequestWorker" import {assertWorkerOrNode} from "../../common/Env" import type {UserAlarmInfo} from "../../entities/sys/UserAlarmInfo" import {createUserAlarmInfo, UserAlarmInfoTypeRef} from "../../entities/sys/UserAlarmInfo" @@ -18,12 +17,10 @@ import { promiseMap, stringToUtf8Uint8Array, } from "@tutao/tutanota-utils" -import {HttpMethod} from "../../common/EntityFunctions" import type {PushIdentifier} from "../../entities/sys/PushIdentifier" import {_TypeModel as PushIdentifierTypeModel, PushIdentifierTypeRef} from "../../entities/sys/PushIdentifier" import {resolveSessionKey} from "../crypto/CryptoFacade" import {_TypeModel as AlarmServicePostTypeModel, createAlarmServicePost} from "../../entities/sys/AlarmServicePost" -import {SysService} from "../../entities/sys/Services" import type {AlarmNotification} from "../../entities/sys/AlarmNotification" import {createAlarmNotification} from "../../entities/sys/AlarmNotification" import type {AlarmInfo} from "../../entities/sys/AlarmInfo" @@ -32,7 +29,6 @@ import type {RepeatRule} from "../../entities/sys/RepeatRule" import {createRepeatRule} from "../../entities/sys/RepeatRule" import {GroupType, OperationType} from "../../common/TutanotaConstants" import {createNotificationSessionKey} from "../../entities/sys/NotificationSessionKey" -import {TutanotaService} from "../../entities/tutanota/Services" import type {Group} from "../../entities/sys/Group" import {GroupTypeRef} from "../../entities/sys/Group" import type {CalendarEvent} from "../../entities/tutanota/CalendarEvent" @@ -50,7 +46,6 @@ import type {CalendarRepeatRule} from "../../entities/tutanota/CalendarRepeatRul import {EntityClient} from "../../common/EntityClient" import {elementIdPart, getLetId, getListId, isSameId, listIdPart, uint8arrayToCustomId} from "../../common/utils/EntityUtils" import {Request} from "../../common/MessageDispatcher" -import {CreateGroupPostReturnTypeRef} from "../../entities/tutanota/CreateGroupPostReturn" import {GroupManagementFacadeImpl} from "./GroupManagementFacade" import {createUserAreaGroupPostData} from "../../entities/tutanota/UserAreaGroupPostData" import type {NativeInterface} from "../../../native/common/NativeInterface" @@ -59,6 +54,9 @@ import {SetupMultipleError} from "../../common/error/SetupMultipleError" import {ImportError} from "../../common/error/ImportError" import {aes128RandomKey, encryptKey, sha256Hash} from "@tutao/tutanota-crypto" import {InstanceMapper} from "../crypto/InstanceMapper" +import {IServiceExecutor} from "../../common/ServiceRequest" +import {AlarmService} from "../../entities/sys/Services" +import {CalendarService} from "../../entities/tutanota/Services" assertWorkerOrNode() @@ -88,6 +86,7 @@ export class CalendarFacade { native: NativeInterface, worker: WorkerImpl, instanceMapper: InstanceMapper, + private readonly serviceExecutor: IServiceExecutor, ) { this._loginFacade = loginFacade this._groupManagementFacade = groupManagementFacade @@ -234,7 +233,7 @@ export class CalendarFacade { const requestEntity = createAlarmServicePost({ alarmNotifications, }) - return serviceRequestVoid(SysService.AlarmService, HttpMethod.POST, requestEntity, undefined, notificationSessionKey) + return this.serviceExecutor.post(AlarmService, requestEntity, {sessionKey: notificationSessionKey}) }) } @@ -276,7 +275,7 @@ export class CalendarFacade { const postData = createUserAreaGroupPostData({ groupData, }) - const returnData = await serviceRequest(TutanotaService.CalendarService, HttpMethod.POST, postData, CreateGroupPostReturnTypeRef) + const returnData = await this.serviceExecutor.post(CalendarService, postData) const group = await this._entityClient.load(GroupTypeRef, returnData.group) // remove the user from the cache before loading it again to make sure we get the latest version. // otherwise we might not see the new calendar in case it is created at login and the websocket is not connected yet @@ -292,14 +291,8 @@ export class CalendarFacade { } } - deleteCalendar(groupRootId: Id): Promise { - return serviceRequestVoid( - TutanotaService.CalendarService, - HttpMethod.DELETE, - Object.assign(createCalendarDeleteData(), { - groupRootId, - }), - ) + async deleteCalendar(groupRootId: Id): Promise { + await this.serviceExecutor.delete(CalendarService, createCalendarDeleteData({groupRootId})) } async scheduleAlarmsForNewDevice(pushIdentifier: PushIdentifier): Promise { diff --git a/src/api/worker/facades/CounterFacade.ts b/src/api/worker/facades/CounterFacade.ts index bd3b566bb7..354e03a7fd 100644 --- a/src/api/worker/facades/CounterFacade.ts +++ b/src/api/worker/facades/CounterFacade.ts @@ -1,22 +1,22 @@ -import {ReadCounterReturnTypeRef} from "../../entities/monitor/ReadCounterReturn" -import {HttpMethod} from "../../common/EntityFunctions" import {createReadCounterData} from "../../entities/monitor/ReadCounterData" -import {serviceRequest} from "../ServiceRequestWorker" -import {MonitorService} from "../../entities/monitor/Services" import {assertWorkerOrNode} from "../../common/Env" +import {IServiceExecutor} from "../../common/ServiceRequest" +import {CounterService} from "../../entities/monitor/Services" assertWorkerOrNode() export class CounterFacade { - constructor() { + constructor( + private readonly serviceExecutor: IServiceExecutor, + ) { } - readCounterValue(monitorValue: string, ownerId: Id): Promise { - let counterData = createReadCounterData() - counterData.monitor = monitorValue - counterData.owner = ownerId - return serviceRequest(MonitorService.CounterService, HttpMethod.GET, counterData, ReadCounterReturnTypeRef).then(counterReturn => { - return counterReturn.value + async readCounterValue(monitorValue: string, ownerId: Id): Promise { + const counterData = createReadCounterData({ + monitor: monitorValue, + owner: ownerId, }) + const counterReturn = await this.serviceExecutor.get(CounterService, counterData) + return counterReturn.value } } \ No newline at end of file diff --git a/src/api/worker/facades/CustomerFacade.ts b/src/api/worker/facades/CustomerFacade.ts index f47730f651..acc347d412 100644 --- a/src/api/worker/facades/CustomerFacade.ts +++ b/src/api/worker/facades/CustomerFacade.ts @@ -1,11 +1,8 @@ -import {serviceRequest, serviceRequestVoid} from "../ServiceRequestWorker" import type {InvoiceData, PaymentData, SpamRuleFieldType, SpamRuleType} from "../../common/TutanotaConstants" import {AccountType, BookingItemFeatureType, Const, GroupType} from "../../common/TutanotaConstants" import {CustomerTypeRef} from "../../entities/sys/Customer" import {CustomerInfoTypeRef} from "../../entities/sys/CustomerInfo" -import {bookingFacade} from "./BookingFacade" import {assertWorkerOrNode} from "../../common/Env" -import {HttpMethod} from "../../common/EntityFunctions" import type {EmailSenderListElement} from "../../entities/sys/EmailSenderListElement" import {createEmailSenderListElement} from "../../entities/sys/EmailSenderListElement" import type {Hex} from "@tutao/tutanota-utils" @@ -15,20 +12,23 @@ import {CustomerServerPropertiesTypeRef} from "../../entities/sys/CustomerServer import {getWhitelabelDomain} from "../../common/utils/Utils" import {resolveSessionKey} from "../crypto/CryptoFacade" import {createCreateCustomerServerPropertiesData} from "../../entities/sys/CreateCustomerServerPropertiesData" -import {CreateCustomerServerPropertiesReturnTypeRef} from "../../entities/sys/CreateCustomerServerPropertiesReturn" -import {SysService} from "../../entities/sys/Services" +import { + BrandingDomainService, + CreateCustomerServerProperties, + CustomDomainService, + MembershipService, + PaymentDataService, + PdfInvoiceService, + SystemKeysService +} from "../../entities/sys/Services" import type {SystemKeysReturn} from "../../entities/sys/SystemKeysReturn" -import {SystemKeysReturnTypeRef} from "../../entities/sys/SystemKeysReturn" import {createCustomerAccountCreateData} from "../../entities/tutanota/CustomerAccountCreateData" import {createContactFormAccountData} from "../../entities/tutanota/ContactFormAccountData" -import {TutanotaService} from "../../entities/tutanota/Services" import type {UserManagementFacade} from "./UserManagementFacade" import type {GroupManagementFacadeImpl} from "./GroupManagementFacade" import {createCustomDomainData} from "../../entities/sys/CustomDomainData" import type {CustomDomainReturn} from "../../entities/sys/CustomDomainReturn" -import {CustomDomainReturnTypeRef} from "../../entities/sys/CustomDomainReturn" import type {ContactFormAccountReturn} from "../../entities/tutanota/ContactFormAccountReturn" -import {ContactFormAccountReturnTypeRef} from "../../entities/tutanota/ContactFormAccountReturn" import {createBrandingDomainDeleteData} from "../../entities/sys/BrandingDomainDeleteData" import {createBrandingDomainData} from "../../entities/sys/BrandingDomainData" import type {LoginFacadeImpl} from "./LoginFacade" @@ -39,11 +39,8 @@ import {createMembershipRemoveData} from "../../entities/sys/MembershipRemoveDat import {createPaymentDataServicePutData} from "../../entities/sys/PaymentDataServicePutData" import type {Country} from "../../common/CountryList" import type {PaymentDataServicePutReturn} from "../../entities/sys/PaymentDataServicePutReturn" -import {PaymentDataServicePutReturnTypeRef} from "../../entities/sys/PaymentDataServicePutReturn" import {_TypeModel as AccountingInfoTypeModel, AccountingInfoTypeRef} from "../../entities/sys/AccountingInfo" import {createPdfInvoiceServiceData} from "../../entities/sys/PdfInvoiceServiceData" -import {PdfInvoiceServiceReturnTypeRef} from "../../entities/sys/PdfInvoiceServiceReturn" -import {AccountingService} from "../../entities/accounting/Services" import type {InternalGroupData} from "../../entities/tutanota/InternalGroupData" import {LockedError} from "../../common/error/RestError" import type {RsaKeyPair} from "@tutao/tutanota-crypto" @@ -51,6 +48,9 @@ import {aes128RandomKey, bitArrayToUint8Array, encryptKey, hexToPublicKey, sha25 import type {RsaImplementation} from "../crypto/RsaImplementation" import {EntityClient} from "../../common/EntityClient" import {DataFile} from "../../common/DataFile"; +import {IServiceExecutor} from "../../common/ServiceRequest" +import {ContactFormAccountService, CustomerAccountService} from "../../entities/tutanota/Services" +import {BookingFacade} from "./BookingFacade" assertWorkerOrNode() @@ -131,6 +131,8 @@ export class CustomerFacadeImpl implements CustomerFacade { private readonly counters: CounterFacade, private readonly rsa: RsaImplementation, private readonly entityClient: EntityClient, + private readonly serviceExecutor: IServiceExecutor, + private readonly bookingFacade: BookingFacade, ) { this.contactFormUserGroupData = null } @@ -145,42 +147,52 @@ export class CustomerFacadeImpl implements CustomerFacade { } addDomain(domainName: string): Promise { - let data = createCustomDomainData() - data.domain = domainName.trim().toLowerCase() - return serviceRequest(SysService.CustomDomainService, HttpMethod.POST, data, CustomDomainReturnTypeRef) + const data = createCustomDomainData({ + domain: domainName.trim().toLowerCase(), + }) + return this.serviceExecutor.post(CustomDomainService, data) } - removeDomain(domainName: string): Promise { - let data = createCustomDomainData() - data.domain = domainName.trim().toLowerCase() - return serviceRequestVoid(SysService.CustomDomainService, HttpMethod.DELETE, data) + async removeDomain(domainName: string): Promise { + const data = createCustomDomainData({ + domain: domainName.trim().toLowerCase(), + }) + await this.serviceExecutor.delete(CustomDomainService, data) } - setCatchAllGroup(domainName: string, mailGroupId: Id | null): Promise { - let data = createCustomDomainData() - data.domain = domainName.trim().toLowerCase() - data.catchAllMailGroup = mailGroupId - return serviceRequestVoid(SysService.CustomDomainService, HttpMethod.PUT, data) + async setCatchAllGroup(domainName: string, mailGroupId: Id | null): Promise { + const data = createCustomDomainData({ + domain: domainName.trim().toLowerCase(), + catchAllMailGroup: mailGroupId, + }) + await this.serviceExecutor.put(CustomDomainService, data) } async orderWhitelabelCertificate(domainName: string): Promise { const customer = await this.entityClient.load(CustomerTypeRef, neverNull(this.login.getLoggedInUser().customer)) const customerInfo = await this.entityClient.load(CustomerInfoTypeRef, customer.customerInfo) let existingBrandingDomain = getWhitelabelDomain(customerInfo, domainName) - const keyData = await serviceRequest(SysService.SystemKeysService, HttpMethod.GET, null, SystemKeysReturnTypeRef) + const keyData = await this.serviceExecutor.get(SystemKeysService, null) let systemAdminPubKey = hexToPublicKey(uint8ArrayToHex(keyData.systemAdminPubKey)) let sessionKey = aes128RandomKey() const systemAdminPubEncAccountingInfoSessionKey = await this.rsa.encrypt(systemAdminPubKey, bitArrayToUint8Array(sessionKey)) - let data = createBrandingDomainData() - data.domain = domainName - data.systemAdminPubEncSessionKey = systemAdminPubEncAccountingInfoSessionKey - return serviceRequestVoid(SysService.BrandingDomainService, existingBrandingDomain ? HttpMethod.PUT : HttpMethod.POST, data) + + const data = createBrandingDomainData({ + domain: domainName, + systemAdminPubEncSessionKey: systemAdminPubEncAccountingInfoSessionKey, + }) + if (existingBrandingDomain) { + await this.serviceExecutor.put(BrandingDomainService, data) + } else { + await this.serviceExecutor.post(BrandingDomainService, data) + } } - deleteCertificate(domainName: string): Promise { - let data = createBrandingDomainDeleteData() - data.domain = domainName - return serviceRequestVoid(SysService.BrandingDomainService, HttpMethod.DELETE, data) + async deleteCertificate(domainName: string): Promise { + const data = createBrandingDomainDeleteData({ + domain: domainName, + }) + await this.serviceExecutor.delete(BrandingDomainService, data) } readUsedCustomerStorage(customerId: Id): Promise { @@ -200,8 +212,8 @@ export class CustomerFacadeImpl implements CustomerFacade { let bookedStorage = 0 if (customer.type === AccountType.PREMIUM) { - return bookingFacade.getCurrentPrice().then(price => { - let currentStorageItem = bookingFacade.getPriceItem(price.currentPriceNextPeriod, BookingItemFeatureType.Storage) + return this.bookingFacade.getCurrentPrice().then(price => { + let currentStorageItem = this.bookingFacade.getPriceItem(price.currentPriceNextPeriod, BookingItemFeatureType.Storage) if (currentStorageItem != null) { bookedStorage = Number(currentStorageItem.count) @@ -217,32 +229,24 @@ export class CustomerFacadeImpl implements CustomerFacade { }) } - loadCustomerServerProperties(): Promise { - return this.entityClient.load(CustomerTypeRef, neverNull(this.login.getLoggedInUser().customer)).then(customer => { - let p + async loadCustomerServerProperties(): Promise { + const customer = await this.entityClient.load(CustomerTypeRef, neverNull(this.login.getLoggedInUser().customer)) + let cspId + if (customer.serverProperties) { + cspId = customer.serverProperties + } else { + // create properties + const sessionKey = aes128RandomKey() + const adminGroupKey = this.login.getGroupKey(this.login.getGroupId(GroupType.Admin)) - if (customer.serverProperties) { - p = Promise.resolve(customer.serverProperties) - } else { - // create properties - let sessionKey = aes128RandomKey() - - let adminGroupKey = this.login.getGroupKey(this.login.getGroupId(GroupType.Admin)) - - let groupEncSessionKey = encryptKey(adminGroupKey, sessionKey) - let data = createCreateCustomerServerPropertiesData() - data.adminGroupEncSessionKey = groupEncSessionKey - p = serviceRequest(SysService.CreateCustomerServerProperties, HttpMethod.POST, data, CreateCustomerServerPropertiesReturnTypeRef).then( - returnData => { - return returnData.id - }, - ) - } - - return p.then(cspId => { - return this.entityClient.load(CustomerServerPropertiesTypeRef, cspId) + const groupEncSessionKey = encryptKey(adminGroupKey, sessionKey) + const data = createCreateCustomerServerPropertiesData({ + adminGroupEncSessionKey: groupEncSessionKey, }) - }) + const returnData = await this.serviceExecutor.post(CreateCustomerServerProperties, data) + cspId = returnData.id + } + return this.entityClient.load(CustomerServerPropertiesTypeRef, cspId) } addSpamRule(field: SpamRuleFieldType, type: SpamRuleType, value: string): Promise { @@ -283,7 +287,7 @@ export class CustomerFacadeImpl implements CustomerFacade { return [key1, key2, key3] } - signup( + async signup( keyPairs: [RsaKeyPair, RsaKeyPair, RsaKeyPair], accountType: AccountType, authToken: string, @@ -292,72 +296,70 @@ export class CustomerFacadeImpl implements CustomerFacade { registrationCode: string, currentLanguage: string, ): Promise { - return serviceRequest(SysService.SystemKeysService, HttpMethod.GET, null, SystemKeysReturnTypeRef).then(keyData => { - let systemAdminPubKey = hexToPublicKey(uint8ArrayToHex(keyData.systemAdminPubKey)) - let userGroupKey = aes128RandomKey() - let adminGroupKey = aes128RandomKey() - let customerGroupKey = aes128RandomKey() - let userGroupInfoSessionKey = aes128RandomKey() - let adminGroupInfoSessionKey = aes128RandomKey() - let customerGroupInfoSessionKey = aes128RandomKey() - let accountingInfoSessionKey = aes128RandomKey() - let customerServerPropertiesSessionKey = aes128RandomKey() - // we can not join all the following promises because they are running sync and therefore would not allow the worker sending the progress - return this.rsa.encrypt(systemAdminPubKey, bitArrayToUint8Array(accountingInfoSessionKey)).then(systemAdminPubEncAccountingInfoSessionKey => { - let userGroupData = this.groupManagement.generateInternalGroupData( - keyPairs[0], - userGroupKey, - userGroupInfoSessionKey, - null, - adminGroupKey, - customerGroupKey, - ) + const keyData = await this.serviceExecutor.get(SystemKeysService, null) + const systemAdminPubKey = hexToPublicKey(uint8ArrayToHex(keyData.systemAdminPubKey)) + const userGroupKey = aes128RandomKey() + const adminGroupKey = aes128RandomKey() + const customerGroupKey = aes128RandomKey() + const userGroupInfoSessionKey = aes128RandomKey() + const adminGroupInfoSessionKey = aes128RandomKey() + const customerGroupInfoSessionKey = aes128RandomKey() + const accountingInfoSessionKey = aes128RandomKey() + const customerServerPropertiesSessionKey = aes128RandomKey() + const systemAdminPubEncAccountingInfoSessionKey = await this.rsa.encrypt(systemAdminPubKey, bitArrayToUint8Array(accountingInfoSessionKey)) + const userGroupData = this.groupManagement.generateInternalGroupData( + keyPairs[0], + userGroupKey, + userGroupInfoSessionKey, + null, + adminGroupKey, + customerGroupKey, + ) - let adminGroupData = this.groupManagement.generateInternalGroupData( - keyPairs[1], - adminGroupKey, - adminGroupInfoSessionKey, - null, - adminGroupKey, - customerGroupKey, - ) + const adminGroupData = this.groupManagement.generateInternalGroupData( + keyPairs[1], + adminGroupKey, + adminGroupInfoSessionKey, + null, + adminGroupKey, + customerGroupKey, + ) - let customerGroupData = this.groupManagement.generateInternalGroupData( - keyPairs[2], - customerGroupKey, - customerGroupInfoSessionKey, - null, - adminGroupKey, - customerGroupKey, - ) + const customerGroupData = this.groupManagement.generateInternalGroupData( + keyPairs[2], + customerGroupKey, + customerGroupInfoSessionKey, + null, + adminGroupKey, + customerGroupKey, + ) const recoverData = this.login.generateRecoveryCode(userGroupKey) - let data = createCustomerAccountCreateData() - data.authToken = authToken - data.date = Const.CURRENT_DATE - data.lang = currentLanguage - data.code = registrationCode - data.userData = this.userManagement.generateUserAccountData( - userGroupKey, - userGroupInfoSessionKey, - customerGroupKey, - mailAddress, - password, - "", - recoverData, - ) - data.userEncAdminGroupKey = encryptKey(userGroupKey, adminGroupKey) - data.userEncAccountGroupKey = encryptKey(userGroupKey, this._getAccountGroupKey(keyData, accountType)) - data.userGroupData = userGroupData - data.adminGroupData = adminGroupData - data.customerGroupData = customerGroupData - data.adminEncAccountingInfoSessionKey = encryptKey(adminGroupKey, accountingInfoSessionKey) - data.systemAdminPubEncAccountingInfoSessionKey = systemAdminPubEncAccountingInfoSessionKey - data.adminEncCustomerServerPropertiesSessionKey = encryptKey(adminGroupKey, customerServerPropertiesSessionKey) - return serviceRequestVoid(AccountingService.CustomerAccountService, HttpMethod.POST, data).then(() => recoverData.hexCode) - }) + const data = createCustomerAccountCreateData({ + authToken, + date: Const.CURRENT_DATE, + lang: currentLanguage, + code: registrationCode, + userData: this.userManagement.generateUserAccountData( + userGroupKey, + userGroupInfoSessionKey, + customerGroupKey, + mailAddress, + password, + "", + recoverData, + ), + userEncAdminGroupKey: encryptKey(userGroupKey, adminGroupKey), + userGroupData, + adminGroupData, + customerGroupData, + adminEncAccountingInfoSessionKey: encryptKey(adminGroupKey, accountingInfoSessionKey), + systemAdminPubEncAccountingInfoSessionKey, + adminEncCustomerServerPropertiesSessionKey: encryptKey(adminGroupKey, customerServerPropertiesSessionKey) }) + await this.serviceExecutor.post(CustomerAccountService, data) + return recoverData.hexCode } createContactFormUserGroupData(): Promise { @@ -396,7 +398,7 @@ export class CustomerFacadeImpl implements CustomerFacade { await this.worker.sendProgress(95) data.userGroupData = userGroupData data.contactForm = contactFormId - const result = serviceRequest(TutanotaService.ContactFormAccountService, HttpMethod.POST, data, ContactFormAccountReturnTypeRef) + const result = this.serviceExecutor.post(ContactFormAccountService, data) this.contactFormUserGroupData = null return result } @@ -411,46 +413,46 @@ export class CustomerFacadeImpl implements CustomerFacade { } } - switchFreeToPremiumGroup(): Promise { - return serviceRequest(SysService.SystemKeysService, HttpMethod.GET, null, SystemKeysReturnTypeRef) - .then(keyData => { - let membershipAddData = createMembershipAddData() - membershipAddData.user = this.login.getLoggedInUser()._id - membershipAddData.group = neverNull(keyData.premiumGroup) - membershipAddData.symEncGKey = encryptKey(this.login.getUserGroupKey(), uint8ArrayToBitArray(keyData.premiumGroupKey)) - return serviceRequestVoid(SysService.MembershipService, HttpMethod.POST, membershipAddData).then(() => { - let membershipRemoveData = createMembershipRemoveData() - membershipRemoveData.user = this.login.getLoggedInUser()._id - membershipRemoveData.group = neverNull(keyData.freeGroup) - return serviceRequestVoid(SysService.MembershipService, HttpMethod.DELETE, membershipRemoveData) - }) + async switchFreeToPremiumGroup(): Promise { + try { + const keyData = await this.serviceExecutor.get(SystemKeysService, null) + const membershipAddData = createMembershipAddData({ + user: this.login.getLoggedInUser()._id, + group: neverNull(keyData.premiumGroup), + symEncGKey: encryptKey(this.login.getUserGroupKey(), uint8ArrayToBitArray(keyData.premiumGroupKey)), }) - .catch(e => { - e.message = e.message + " error switching free to premium group" - console.log(e) - throw e + await this.serviceExecutor.post(MembershipService, membershipAddData) + const membershipRemoveData = createMembershipRemoveData({ + user: this.login.getLoggedInUser()._id, + group: neverNull(keyData.freeGroup), }) + await this.serviceExecutor.delete(MembershipService, membershipRemoveData) + } catch (e) { + e.message = e.message + " error switching free to premium group" + console.log(e) + throw e + } } - switchPremiumToFreeGroup(): Promise { - return serviceRequest(SysService.SystemKeysService, HttpMethod.GET, null, SystemKeysReturnTypeRef) - .then(keyData => { - let membershipAddData = createMembershipAddData() - membershipAddData.user = this.login.getLoggedInUser()._id - membershipAddData.group = neverNull(keyData.freeGroup) - membershipAddData.symEncGKey = encryptKey(this.login.getUserGroupKey(), uint8ArrayToBitArray(keyData.freeGroupKey)) - return serviceRequestVoid(SysService.MembershipService, HttpMethod.POST, membershipAddData).then(() => { - let membershipRemoveData = createMembershipRemoveData() - membershipRemoveData.user = this.login.getLoggedInUser()._id - membershipRemoveData.group = neverNull(keyData.premiumGroup) - return serviceRequestVoid(SysService.MembershipService, HttpMethod.DELETE, membershipRemoveData) - }) + async switchPremiumToFreeGroup(): Promise { + try { + const keyData = await this.serviceExecutor.get(SystemKeysService, null) + const membershipAddData = createMembershipAddData({ + user: this.login.getLoggedInUser()._id, + group: neverNull(keyData.freeGroup), + symEncGKey: encryptKey(this.login.getUserGroupKey(), uint8ArrayToBitArray(keyData.freeGroupKey)) }) - .catch(e => { - e.message = e.message + " error switching premium to free group" - console.log(e) - throw e + await this.serviceExecutor.post(MembershipService, membershipAddData) + const membershipRemoveData = createMembershipRemoveData({ + user: this.login.getLoggedInUser()._id, + group: neverNull(keyData.premiumGroup), }) + await this.serviceExecutor.delete(MembershipService, membershipRemoveData) + } catch (e) { + e.message = e.message + " error switching premium to free group" + console.log(e) + throw e + } } updatePaymentData( @@ -480,24 +482,18 @@ export class CustomerFacadeImpl implements CustomerFacade { } service.confirmedCountry = confirmedInvoiceCountry ? confirmedInvoiceCountry.a : null - return serviceRequest( - SysService.PaymentDataService, - HttpMethod.PUT, - service, - PaymentDataServicePutReturnTypeRef, - undefined, - accountingInfoSessionKey ?? undefined, - ) + return this.serviceExecutor.put(PaymentDataService, service, {sessionKey: accountingInfoSessionKey ?? undefined}) }) }) }) }) } - downloadInvoice(invoiceNumber: string): Promise { - let data = createPdfInvoiceServiceData() - data.invoiceNumber = invoiceNumber - return serviceRequest(SysService.PdfInvoiceService, HttpMethod.GET, data, PdfInvoiceServiceReturnTypeRef).then(returnData => { + async downloadInvoice(invoiceNumber: string): Promise { + const data = createPdfInvoiceServiceData({ + invoiceNumber, + }) + return this.serviceExecutor.get(PdfInvoiceService, data).then(returnData => { return { _type: "DataFile", name: String(invoiceNumber) + ".pdf", diff --git a/src/api/worker/facades/FileFacade.ts b/src/api/worker/facades/FileFacade.ts index 24893fbb1e..a5bf01e969 100644 --- a/src/api/worker/facades/FileFacade.ts +++ b/src/api/worker/facades/FileFacade.ts @@ -6,8 +6,6 @@ import {_TypeModel as FileTypeModel} from "../../entities/tutanota/File" import {assert, filterInt, neverNull, TypeRef, uint8ArrayToBase64} from "@tutao/tutanota-utils" import {LoginFacadeImpl} from "./LoginFacade" import {createFileDataDataPost} from "../../entities/tutanota/FileDataDataPost" -import {_service} from "../rest/ServiceRestClient" -import {FileDataReturnPostTypeRef} from "../../entities/tutanota/FileDataReturnPost" import {GroupType} from "../../common/TutanotaConstants" import {_TypeModel as FileDataDataReturnTypeModel} from "../../entities/tutanota/FileDataDataReturn" import {HttpMethod, MediaType, resolveTypeReference} from "../../common/EntityFunctions" @@ -15,10 +13,7 @@ import {assertWorkerOrNode, getHttpOrigin, Mode} from "../../common/Env" import {handleRestError} from "../../common/error/RestError" import {convertToDataFile, DataFile} from "../../common/DataFile" import type {SuspensionHandler} from "../SuspensionHandler" -import {StorageService} from "../../entities/storage/Services" -import {serviceRequest} from "../ServiceRequestWorker" import {createBlobAccessTokenData} from "../../entities/storage/BlobAccessTokenData" -import {BlobAccessTokenReturnTypeRef} from "../../entities/storage/BlobAccessTokenReturn" import type {BlobAccessInfo} from "../../entities/sys/BlobAccessInfo" import {_TypeModel as BlobDataGetTypeModel, createBlobDataGet} from "../../entities/storage/BlobDataGet" import {createBlobWriteData} from "../../entities/storage/BlobWriteData" @@ -29,11 +24,13 @@ import type {NativeFileApp} from "../../../native/common/FileApp" import type {AesApp} from "../../../native/worker/AesApp" import {InstanceMapper} from "../crypto/InstanceMapper" import {FileReference} from "../../common/utils/FileUtils"; -import {TutanotaService} from "../../entities/tutanota/Services"; +import {IServiceExecutor} from "../../common/ServiceRequest" +import {FileDataService} from "../../entities/tutanota/Services" +import {BlobAccessTokenService, BlobService} from "../../entities/storage/Services" assertWorkerOrNode() const REST_PATH = "/rest/tutanota/filedataservice" -const STORAGE_REST_PATH = `/rest/storage/${StorageService.BlobService}` +const STORAGE_REST_PATH = `/rest/storage/${BlobService.name}` export class FileFacade { _login: LoginFacadeImpl @@ -50,6 +47,7 @@ export class FileFacade { fileApp: NativeFileApp, aesApp: AesApp, instanceMapper: InstanceMapper, + private readonly serviceExecutor: IServiceExecutor, ) { this._login = login this._restClient = restClient @@ -135,34 +133,32 @@ export class FileFacade { } } - uploadFileData(dataFile: DataFile, sessionKey: Aes128Key): Promise { - let encryptedData = encryptBytes(sessionKey, dataFile.data) - let fileData = createFileDataDataPost() - fileData.size = dataFile.data.byteLength.toString() - fileData.group = this._login.getGroupId(GroupType.Mail) // currently only used for attachments - - return _service(TutanotaService.FileDataService, HttpMethod.POST, fileData, FileDataReturnPostTypeRef, undefined, sessionKey).then(fileDataPostReturn => { - // upload the file content - let fileDataId = fileDataPostReturn.fileData - - let headers = this._login.createAuthHeaders() - - headers["v"] = FileDataDataReturnTypeModel.version - return this._restClient - .request( - REST_PATH, - HttpMethod.PUT, - { - queryParams: { - fileDataId: fileDataId, - }, - headers, - body: encryptedData, - responseType: MediaType.Binary, - }, - ) - .then(() => fileDataId) + async uploadFileData(dataFile: DataFile, sessionKey: Aes128Key): Promise { + const encryptedData = encryptBytes(sessionKey, dataFile.data) + const fileData = createFileDataDataPost({ + size: dataFile.data.byteLength.toString(), + group: this._login.getGroupId(GroupType.Mail) // currently only used for attachments }) + const fileDataPostReturn = await this.serviceExecutor.post(FileDataService, fileData, {sessionKey}) + // upload the file content + let fileDataId = fileDataPostReturn.fileData + + const headers = this._login.createAuthHeaders() + headers["v"] = FileDataDataReturnTypeModel.version + await this._restClient + .request( + REST_PATH, + HttpMethod.PUT, + { + queryParams: { + fileDataId: fileDataId, + }, + headers, + body: encryptedData, + responseType: MediaType.Binary, + }, + ) + return fileDataId } /** @@ -178,7 +174,7 @@ export class FileFacade { size: encryptedFileInfo.unencSize.toString(), group: this._login.getGroupId(GroupType.Mail), // currently only used for attachments }) - const fileDataPostReturn = await _service(TutanotaService.FileDataService, HttpMethod.POST, fileData, FileDataReturnPostTypeRef, undefined, sessionKey) + const fileDataPostReturn = await this.serviceExecutor.post(FileDataService, fileData, {sessionKey}) const fileDataId = fileDataPostReturn.fileData const headers = this._login.createAuthHeaders() @@ -276,7 +272,7 @@ export class FileFacade { archiveOwnerGroup: ownerGroupId, }), }) - const {blobAccessInfo} = await serviceRequest(StorageService.BlobAccessTokenService, HttpMethod.POST, tokenRequest, BlobAccessTokenReturnTypeRef) + const {blobAccessInfo} = await this.serviceExecutor.post(BlobAccessTokenService, tokenRequest) return blobAccessInfo } @@ -284,7 +280,7 @@ export class FileFacade { const tokenRequest = createBlobAccessTokenData({ readArchiveId, }) - const {blobAccessInfo} = await serviceRequest(StorageService.BlobAccessTokenService, HttpMethod.POST, tokenRequest, BlobAccessTokenReturnTypeRef) + const {blobAccessInfo} = await this.serviceExecutor.post(BlobAccessTokenService, tokenRequest) return blobAccessInfo } } \ No newline at end of file diff --git a/src/api/worker/facades/GiftCardFacade.ts b/src/api/worker/facades/GiftCardFacade.ts index d069282959..ac42959660 100644 --- a/src/api/worker/facades/GiftCardFacade.ts +++ b/src/api/worker/facades/GiftCardFacade.ts @@ -1,16 +1,12 @@ import {GroupType} from "../../common/TutanotaConstants" import {firstThrow} from "@tutao/tutanota-utils" import {createGiftCardCreateData} from "../../entities/sys/GiftCardCreateData" -import {serviceRequest, serviceRequestVoid} from "../ServiceRequestWorker" -import {SysService} from "../../entities/sys/Services" -import {HttpMethod} from "../../common/EntityFunctions" -import type {GiftCardCreateReturn} from "../../entities/sys/GiftCardCreateReturn" -import {GiftCardCreateReturnTypeRef} from "../../entities/sys/GiftCardCreateReturn" import type {LoginFacadeImpl} from "./LoginFacade" import type {GiftCardRedeemGetReturn} from "../../entities/sys/GiftCardRedeemGetReturn" -import {GiftCardRedeemGetReturnTypeRef} from "../../entities/sys/GiftCardRedeemGetReturn" import {createGiftCardRedeemData} from "../../entities/sys/GiftCardRedeemData" import {aes128RandomKey, base64ToKey, bitArrayToUint8Array, encryptKey, sha256Hash} from "@tutao/tutanota-crypto" +import {IServiceExecutor} from "../../common/ServiceRequest" +import {GiftCardRedeemService, GiftCardService} from "../../entities/sys/Services" export interface GiftCardFacade { generateGiftCard(message: string, value: NumberString, countryCode: string): Promise @@ -23,7 +19,10 @@ export interface GiftCardFacade { export class GiftCardFacadeImpl implements GiftCardFacade { _logins: LoginFacadeImpl - constructor(logins: LoginFacadeImpl) { + constructor( + logins: LoginFacadeImpl, + private readonly serviceExecutor: IServiceExecutor, + ) { this._logins = logins } @@ -47,9 +46,8 @@ export class GiftCardFacadeImpl implements GiftCardFacade { country: countryCode, ownerEncSessionKey, }) - return serviceRequest(SysService.GiftCardService, HttpMethod.POST, data, GiftCardCreateReturnTypeRef, undefined, sessionKey).then( - (returnData: GiftCardCreateReturn) => returnData.giftCard, - ) + return this.serviceExecutor.post(GiftCardService, data, {sessionKey}) + .then((returnData) => returnData.giftCard) } getGiftCardInfo(id: Id, key: string): Promise { @@ -59,16 +57,16 @@ export class GiftCardFacadeImpl implements GiftCardFacade { giftCardInfo: id, keyHash: keyHash, }) - return serviceRequest(SysService.GiftCardRedeemService, HttpMethod.GET, data, GiftCardRedeemGetReturnTypeRef, undefined, bitKey) + return this.serviceExecutor.get(GiftCardRedeemService, data, {sessionKey: bitKey}) } - redeemGiftCard(id: Id, key: string): Promise { + async redeemGiftCard(id: Id, key: string): Promise { const bitKey = base64ToKey(key) const keyHash = sha256Hash(bitArrayToUint8Array(bitKey)) const data = createGiftCardRedeemData({ giftCardInfo: id, keyHash: keyHash, }) - return serviceRequestVoid(SysService.GiftCardRedeemService, HttpMethod.POST, data) + await this.serviceExecutor.post(GiftCardRedeemService, data) } } \ No newline at end of file diff --git a/src/api/worker/facades/GroupManagementFacade.ts b/src/api/worker/facades/GroupManagementFacade.ts index e9f95e52ae..b558e247dc 100644 --- a/src/api/worker/facades/GroupManagementFacade.ts +++ b/src/api/worker/facades/GroupManagementFacade.ts @@ -4,9 +4,6 @@ import type {InternalGroupData} from "../../entities/tutanota/InternalGroupData" import {createInternalGroupData} from "../../entities/tutanota/InternalGroupData" import {hexToUint8Array, neverNull} from "@tutao/tutanota-utils" import {LoginFacadeImpl} from "./LoginFacade" -import {serviceRequest, serviceRequestVoid} from "../ServiceRequestWorker" -import {TutanotaService} from "../../entities/tutanota/Services" -import {HttpMethod} from "../../common/EntityFunctions" import {createCreateLocalAdminGroupData} from "../../entities/tutanota/CreateLocalAdminGroupData" import type {Group} from "../../entities/sys/Group" import {GroupTypeRef} from "../../entities/sys/Group" @@ -14,9 +11,7 @@ import {createMembershipAddData} from "../../entities/sys/MembershipAddData" import {createMembershipRemoveData} from "../../entities/sys/MembershipRemoveData" import {createDeleteGroupData} from "../../entities/tutanota/DeleteGroupData" import {CounterFacade} from "./CounterFacade" -import {SysService} from "../../entities/sys/Services" import type {User} from "../../entities/sys/User" -import {CreateGroupPostReturnTypeRef} from "../../entities/tutanota/CreateGroupPostReturn" import {createUserAreaGroupPostData} from "../../entities/tutanota/UserAreaGroupPostData" import type {UserAreaGroupData} from "../../entities/tutanota/UserAreaGroupData" import {createUserAreaGroupData} from "../../entities/tutanota/UserAreaGroupData" @@ -24,14 +19,10 @@ import {EntityClient} from "../../common/EntityClient" import {assertWorkerOrNode} from "../../common/Env" import {encryptString} from "../crypto/CryptoFacade" import type {RsaImplementation} from "../crypto/RsaImplementation" -import { - aes128RandomKey, - decryptKey, - encryptKey, - encryptRsaKey, - publicKeyToHex, - RsaKeyPair -} from "@tutao/tutanota-crypto"; +import {aes128RandomKey, decryptKey, encryptKey, encryptRsaKey, publicKeyToHex, RsaKeyPair} from "@tutao/tutanota-crypto"; +import {IServiceExecutor} from "../../common/ServiceRequest" +import {LocalAdminGroupService, MailGroupService, TemplateGroupService} from "../../entities/tutanota/Services" +import {MembershipService} from "../../entities/sys/Services" assertWorkerOrNode() @@ -57,7 +48,13 @@ export class GroupManagementFacadeImpl { private readonly _rsa: RsaImplementation private readonly _entityClient: EntityClient - constructor(login: LoginFacadeImpl, counters: CounterFacade, entity: EntityClient, rsa: RsaImplementation) { + constructor( + login: LoginFacadeImpl, + counters: CounterFacade, + entity: EntityClient, + rsa: RsaImplementation, + private readonly serivceExecutor: IServiceExecutor, + ) { this._login = login this._counters = counters this._entityClient = entity @@ -93,12 +90,13 @@ export class GroupManagementFacadeImpl { adminGroupKey, customerGroupKey, ) - let data = createCreateMailGroupData() - data.mailAddress = mailAddress - data.encryptedName = encryptString(mailGroupInfoSessionKey, name) - data.mailEncMailboxSessionKey = encryptKey(mailGroupKey, mailboxSessionKey) - data.groupData = mailGroupData - return serviceRequestVoid(TutanotaService.MailGroupService, HttpMethod.POST, data) + const data = createCreateMailGroupData({ + mailAddress, + encryptedName: encryptString(mailGroupInfoSessionKey, name), + mailEncMailboxSessionKey: encryptKey(mailGroupKey, mailboxSessionKey), + groupData: mailGroupData, + }) + await this.serivceExecutor.post(MailGroupService, data) } async createLocalAdminGroup(name: string): Promise { @@ -112,10 +110,11 @@ export class GroupManagementFacadeImpl { let groupInfoSessionKey = aes128RandomKey() const keyPair = await this._rsa.generateKey() const mailGroupData = await this.generateInternalGroupData(keyPair, groupKey, groupInfoSessionKey, adminGroupId, adminGroupKey, customerGroupKey) - let data = createCreateLocalAdminGroupData() - data.encryptedName = encryptString(groupInfoSessionKey, name) - data.groupData = mailGroupData - return serviceRequestVoid(TutanotaService.LocalAdminGroupService, HttpMethod.POST, data) + const data = createCreateLocalAdminGroupData({ + encryptedName: encryptString(groupInfoSessionKey, name), + groupData: mailGroupData, + }) + await this.serivceExecutor.post(LocalAdminGroupService, data) } /** @@ -161,9 +160,8 @@ export class GroupManagementFacadeImpl { const serviceData = createUserAreaGroupPostData({ groupData: groupData, }) - return serviceRequest(TutanotaService.TemplateGroupService, HttpMethod.POST, serviceData, CreateGroupPostReturnTypeRef).then( - returnValue => returnValue.group, - ) + return this.serivceExecutor.post(TemplateGroupService, serviceData) + .then(returnValue => returnValue.group) }) } @@ -184,36 +182,37 @@ export class GroupManagementFacadeImpl { return groupData } - addUserToGroup(user: User, groupId: Id): Promise { - return this.getGroupKeyAsAdmin(user.userGroup.group).then(userGroupKey => { - return this.getGroupKeyAsAdmin(groupId).then(groupKey => { - let data = createMembershipAddData() - data.user = user._id - data.group = groupId - data.symEncGKey = encryptKey(userGroupKey, groupKey) - return serviceRequestVoid(SysService.MembershipService, HttpMethod.POST, data) - }) + async addUserToGroup(user: User, groupId: Id): Promise { + const userGroupKey = await this.getGroupKeyAsAdmin(user.userGroup.group) + const groupKey = await this.getGroupKeyAsAdmin(groupId) + const data = createMembershipAddData({ + user: user._id, + group: groupId, + symEncGKey: encryptKey(userGroupKey, groupKey), }) + await this.serivceExecutor.post(MembershipService, data) } - removeUserFromGroup(userId: Id, groupId: Id): Promise { - let data = createMembershipRemoveData() - data.user = userId - data.group = groupId - return serviceRequestVoid(SysService.MembershipService, HttpMethod.DELETE, data) + async removeUserFromGroup(userId: Id, groupId: Id): Promise { + const data = createMembershipRemoveData({ + user: userId, + group: groupId, + }) + await this.serivceExecutor.delete(MembershipService, data) } - deactivateGroup(group: Group, restore: boolean): Promise { - let data = createDeleteGroupData() - data.group = group._id - data.restore = restore + async deactivateGroup(group: Group, restore: boolean): Promise { + const data = createDeleteGroupData({ + group: group._id, + restore, + }) if (group.type === GroupType.Mail) { - return serviceRequestVoid(TutanotaService.MailGroupService, HttpMethod.DELETE, data) + await this.serivceExecutor.delete(MailGroupService, data) } else if (group.type === GroupType.LocalAdmin) { - return serviceRequestVoid(TutanotaService.LocalAdminGroupService, HttpMethod.DELETE, data) + await this.serivceExecutor.delete(LocalAdminGroupService, data) } else { - return Promise.reject(new Error("invalid group type for deactivation")) + throw new Error("invalid group type for deactivation") } } diff --git a/src/api/worker/facades/LoginFacade.ts b/src/api/worker/facades/LoginFacade.ts index e513264a6e..0fa44a04ac 100644 --- a/src/api/worker/facades/LoginFacade.ts +++ b/src/api/worker/facades/LoginFacade.ts @@ -1,4 +1,3 @@ -import {SysService} from "../../entities/sys/Services" import type {Base64Url, Hex} from "@tutao/tutanota-utils" import { assertNotNull, @@ -20,11 +19,20 @@ import { uint8ArrayToHex, utf8Uint8ArrayToString, } from "@tutao/tutanota-utils" +import { + AutoLoginService, + ChangePasswordService, + CustomerService, + ResetFactorsService, + SaltService, + SecondFactorAuthService, + SessionService, + TakeOverDeletedAddressService +} from "../../entities/sys/Services" import {CloseEventBusOption, GroupType, OperationType} from "../../common/TutanotaConstants" import {CryptoError} from "../../common/error/CryptoError" import {createSaltData} from "../../entities/sys/SaltData" import type {SaltReturn} from "../../entities/sys/SaltReturn" -import {SaltReturnTypeRef} from "../../entities/sys/SaltReturn" import type {GroupInfo} from "../../entities/sys/GroupInfo" import {GroupInfoTypeRef} from "../../entities/sys/GroupInfo" import {TutanotaPropertiesTypeRef} from "../../entities/tutanota/TutanotaProperties" @@ -36,19 +44,15 @@ import {createChangePasswordData} from "../../entities/sys/ChangePasswordData" import {ConnectMode, EventBusClient} from "../EventBusClient" import {createCreateSessionData} from "../../entities/sys/CreateSessionData" import type {CreateSessionReturn} from "../../entities/sys/CreateSessionReturn" -import {CreateSessionReturnTypeRef} from "../../entities/sys/CreateSessionReturn" import {_TypeModel as SessionModelType, SessionTypeRef} from "../../entities/sys/Session" import {EntityRestClient, typeRefToPath} from "../rest/EntityRestClient" import {createSecondFactorAuthGetData} from "../../entities/sys/SecondFactorAuthGetData" -import {SecondFactorAuthGetReturnTypeRef} from "../../entities/sys/SecondFactorAuthGetReturn" import {ConnectionError, LockedError, NotAuthenticatedError, NotFoundError, ServiceUnavailableError} from "../../common/error/RestError" import type {WorkerImpl} from "../WorkerImpl" import type {Indexer} from "../search/Indexer" import {createDeleteCustomerData} from "../../entities/sys/DeleteCustomerData" import {createAutoLoginDataGet} from "../../entities/sys/AutoLoginDataGet" -import {AutoLoginDataReturnTypeRef} from "../../entities/sys/AutoLoginDataReturn" import {CancelledError} from "../../common/error/CancelledError" -import {TutanotaService} from "../../entities/tutanota/Services" import {createRecoverCode, RecoverCodeTypeRef} from "../../entities/sys/RecoverCode" import {createResetFactorsDeleteData} from "../../entities/sys/ResetFactorsDeleteData" import type {GroupMembership} from "../../entities/sys/GroupMembership" @@ -92,9 +96,10 @@ import type {SecondFactorAuthHandler} from "../../../misc/2fa/SecondFactorHandle import {createSecondFactorAuthDeleteData} from "../../entities/sys/SecondFactorAuthDeleteData" import type {SecondFactorAuthData} from "../../entities/sys/SecondFactorAuthData" import {Aes128Key} from "@tutao/tutanota-crypto/dist/encryption/Aes" +import {EntropyService} from "../../entities/tutanota/Services" +import {IServiceExecutor} from "../../common/ServiceRequest" import {SessionType} from "../../common/SessionType" import {LateInitializedCacheStorage} from "../rest/CacheStorageProxy" -import {ServiceRestInterface} from "../rest/ServiceRestInterface" assertWorkerOrNode() const RETRY_TIMOUT_AFTER_INIT_INDEXER_ERROR_MS = 30000 @@ -171,7 +176,6 @@ export interface LoginFacade { resetSecondFactors(mailAddress: string, password: string, recoverCode: Hex): Promise decryptUserPassword(userId: string, deviceToken: string, encryptedPassword: string): Promise - } export class LoginFacadeImpl implements LoginFacade { @@ -199,7 +203,6 @@ export class LoginFacadeImpl implements LoginFacade { constructor( readonly worker: WorkerImpl, - private readonly service: ServiceRestInterface, private readonly restClient: RestClient, private readonly entityClient: EntityClient, private readonly secondFactorAuthHandler: SecondFactorAuthHandler, @@ -210,7 +213,8 @@ export class LoginFacadeImpl implements LoginFacade { * This is necessary because we don't know if we'll be persistent or not until the user tries to login * Once the credentials handling has been changed to *always* save in desktop, then this should become obsolete */ - private readonly initializeCacheStorage: LateInitializedCacheStorage["initialize"] + private readonly initializeCacheStorage: LateInitializedCacheStorage["initialize"], + private readonly serviceExecutor: IServiceExecutor, ) { this.initializeMembers() } @@ -267,8 +271,7 @@ export class LoginFacadeImpl implements LoginFacade { accessKey = aes128RandomKey() sessionData.accessKey = keyToUint8Array(accessKey) } - - return this.service.serviceRequest(SysService.SessionService, HttpMethod.POST, sessionData, CreateSessionReturnTypeRef) + return this.serviceExecutor.post(SessionService, sessionData) .then(createSessionReturn => this._waitUntilSecondFactorApprovedOrCancelled(createSessionReturn, mailAddress)) .then(sessionData => { return this.initSession(sessionData.userId, sessionData.accessToken, userPassphraseKey, sessionType, databaseKey).then(() => { @@ -323,7 +326,7 @@ export class LoginFacadeImpl implements LoginFacade { _waitUntilSecondFactorApproved(accessToken: Base64Url, sessionId: IdTuple, retryOnNetworkError: number): Promise { let secondFactorAuthGetData = createSecondFactorAuthGetData() secondFactorAuthGetData.accessToken = accessToken - return this.service.serviceRequest(SysService.SecondFactorAuthService, HttpMethod.GET, secondFactorAuthGetData, SecondFactorAuthGetReturnTypeRef) + return this.serviceExecutor.get(SecondFactorAuthService, secondFactorAuthGetData) .then(secondFactorAuthGetReturn => { if (!this._loginRequestSessionId || !isSameId(this._loginRequestSessionId, sessionId)) { return Promise.reject(new CancelledError("login cancelled")) @@ -368,7 +371,7 @@ export class LoginFacadeImpl implements LoginFacade { sessionData.accessKey = keyToUint8Array(accessKey) } - const createSessionReturn = await this.service.serviceRequest(SysService.SessionService, HttpMethod.POST, sessionData, CreateSessionReturnTypeRef) + const createSessionReturn = await this.serviceExecutor.post(SessionService, sessionData) let sessionId = [this._getSessionListId(createSessionReturn.accessToken), this._getSessionElementId(createSessionReturn.accessToken)] as const @@ -397,7 +400,7 @@ export class LoginFacadeImpl implements LoginFacade { const secondFactorAuthDeleteData = createSecondFactorAuthDeleteData({ session: sessionId, }) - await this.service.serviceRequestVoid(SysService.SecondFactorAuthService, HttpMethod.DELETE, secondFactorAuthDeleteData) + await this.serviceExecutor.delete(SecondFactorAuthService, secondFactorAuthDeleteData) .catch(ofClass(NotFoundError, (e) => { // This can happen during some odd behavior in browser where main loop would be blocked by webauthn (hello, FF) and then we would try to // cancel too late. No harm here anyway if the session is already gone. @@ -409,7 +412,7 @@ export class LoginFacadeImpl implements LoginFacade { /** @inheritDoc */ async authenticateWithSecondFactor(data: SecondFactorAuthData): Promise { - await this.service.serviceRequestVoid(SysService.SecondFactorAuthService, HttpMethod.POST, data) + await this.serviceExecutor.post(SecondFactorAuthService, data) } /** @@ -547,9 +550,8 @@ export class LoginFacadeImpl implements LoginFacade { _loadUserPassphraseKey(mailAddress: string, passphrase: string): Promise { mailAddress = mailAddress.toLowerCase().trim() - let saltRequest = createSaltData() - saltRequest.mailAddress = mailAddress - return this.service.serviceRequest(SysService.SaltService, HttpMethod.GET, saltRequest, SaltReturnTypeRef).then((saltReturn: SaltReturn) => { + const saltRequest = createSaltData({mailAddress}) + return this.serviceExecutor.get(SaltService, saltRequest).then((saltReturn: SaltReturn) => { return generateKeyFromPassphrase(passphrase, saltReturn.salt, KeyLength.b128) }) } @@ -719,7 +721,7 @@ export class LoginFacadeImpl implements LoginFacade { const entropyData = createEntropyData({ groupEncEntropy: encryptBytes(userGroupKey, random.generateRandomData(32)), }) - return this.service.serviceRequestVoid(TutanotaService.EntropyService, HttpMethod.PUT, entropyData) + return this.serviceExecutor.put(EntropyService, entropyData) .catch(ofClass(LockedError, noOp)) .catch( ofClass(ConnectionError, e => { @@ -759,7 +761,7 @@ export class LoginFacadeImpl implements LoginFacade { }).then(noOp) } - changePassword(oldPassword: string, newPassword: string): Promise { + async changePassword(oldPassword: string, newPassword: string): Promise { let oldAuthVerifier = createAuthVerifier(generateKeyFromPassphrase(oldPassword, neverNull(neverNull(this._user).salt), KeyLength.b128)) let salt = generateRandomSalt() let userPassphraseKey = generateKeyFromPassphrase(newPassword, salt, KeyLength.b128) @@ -770,10 +772,10 @@ export class LoginFacadeImpl implements LoginFacade { service.salt = salt service.verifier = authVerifier service.pwEncUserGroupKey = pwEncUserGroupKey - return this.service.serviceRequestVoid(SysService.ChangePasswordService, HttpMethod.POST, service) + await this.serviceExecutor.post(ChangePasswordService, service) } - deleteAccount(password: string, reason: string, takeover: string): Promise { + async deleteAccount(password: string, reason: string, takeover: string): Promise { let d = createDeleteCustomerData() d.authVerifier = createAuthVerifier(generateKeyFromPassphrase(password, neverNull(neverNull(this._user).salt), KeyLength.b128)) d.undelete = false @@ -785,15 +787,14 @@ export class LoginFacadeImpl implements LoginFacade { } else { d.takeoverMailAddress = null } - - return this.service.serviceRequestVoid(SysService.CustomerService, HttpMethod.DELETE, d) + await this.serviceExecutor.delete(CustomerService, d) } decryptUserPassword(userId: string, deviceToken: string, encryptedPassword: string): Promise { const getData = createAutoLoginDataGet() getData.userId = userId getData.deviceToken = deviceToken - return this.service.serviceRequest(SysService.AutoLoginService, HttpMethod.GET, getData, AutoLoginDataReturnTypeRef, undefined).then(returnData => { + return this.serviceExecutor.get(AutoLoginService, getData).then(returnData => { const key = uint8ArrayToKey(returnData.deviceKey) return utf8Uint8ArrayToString(aes128Decrypt(key, base64ToUint8Array(encryptedPassword))) }) @@ -875,7 +876,7 @@ export class LoginFacadeImpl implements LoginFacade { this.instanceMapper, ) const entityClient = new EntityClient(eventRestClient) - return this.service.serviceRequest(SysService.SessionService, HttpMethod.POST, sessionData, CreateSessionReturnTypeRef) // Don't pass email address to avoid proposing to reset second factor when we're resetting password + return this.serviceExecutor.post(SessionService, sessionData) // Don't pass email address to avoid proposing to reset second factor when we're resetting password .then(createSessionReturn => this._waitUntilSecondFactorApprovedOrCancelled(createSessionReturn, null)) .then(sessionData => { return entityClient @@ -907,7 +908,7 @@ export class LoginFacadeImpl implements LoginFacade { const extraHeaders = { accessToken: sessionData.accessToken, } - return this.service.serviceRequestVoid(SysService.ChangePasswordService, HttpMethod.POST, postData, undefined, undefined, extraHeaders) + return this.serviceExecutor.post(ChangePasswordService, postData, {extraHeaders}) }) .finally(() => this.deleteSession(sessionData.accessToken)) }) @@ -923,7 +924,7 @@ export class LoginFacadeImpl implements LoginFacade { deleteData.mailAddress = mailAddress deleteData.authVerifier = authVerifier deleteData.recoverCodeVerifier = recoverCodeVerifier - return this.service.serviceRequestVoid(SysService.ResetFactorsService, HttpMethod.DELETE, deleteData) + return this.serviceExecutor.delete(ResetFactorsService, deleteData) }) } @@ -942,7 +943,7 @@ export class LoginFacadeImpl implements LoginFacade { data.authVerifier = authVerifier data.recoverCodeVerifier = recoverCodeVerifier data.targetAccountMailAddress = targetAccountMailAddress - return this.service.serviceRequestVoid(SysService.TakeOverDeletedAddressService, HttpMethod.POST, data) + return this.serviceExecutor.post(TakeOverDeletedAddressService, data) }) } diff --git a/src/api/worker/facades/MailAddressFacade.ts b/src/api/worker/facades/MailAddressFacade.ts index c56f8fc6fe..b273fe08e6 100644 --- a/src/api/worker/facades/MailAddressFacade.ts +++ b/src/api/worker/facades/MailAddressFacade.ts @@ -1,58 +1,55 @@ import {createMailAddressAliasServiceDataDelete} from "../../entities/sys/MailAddressAliasServiceDataDelete" -import {_service} from "../rest/ServiceRestClient" -import {HttpMethod} from "../../common/EntityFunctions" import {createMailAddressAliasServiceData} from "../../entities/sys/MailAddressAliasServiceData" import {createDomainMailAddressAvailabilityData} from "../../entities/sys/DomainMailAddressAvailabilityData" import type {LoginFacadeImpl} from "./LoginFacade" import {createMailAddressAvailabilityData} from "../../entities/sys/MailAddressAvailabilityData" -import {DomainMailAddressAvailabilityReturnTypeRef} from "../../entities/sys/DomainMailAddressAvailabilityReturn" -import {MailAddressAvailabilityReturnTypeRef} from "../../entities/sys/MailAddressAvailabilityReturn" -import {MailAddressAliasServiceReturnTypeRef} from "../../entities/sys/MailAddressAliasServiceReturn" -import {SysService} from "../../entities/sys/Services" import type {MailAddressAliasServiceReturn} from "../../entities/sys/MailAddressAliasServiceReturn" +import {DomainMailAddressAvailabilityService, MailAddressAliasService, MailAddressAvailabilityService} from "../../entities/sys/Services" import {assertWorkerOrNode} from "../../common/Env" +import {IServiceExecutor} from "../../common/ServiceRequest" assertWorkerOrNode() export class MailAddressFacade { _login: LoginFacadeImpl - constructor(login: LoginFacadeImpl) { + constructor( + login: LoginFacadeImpl, + private readonly serviceExecutor: IServiceExecutor, + ) { this._login = login } getAliasCounters(): Promise { - return _service(SysService.MailAddressAliasService, HttpMethod.GET, null, MailAddressAliasServiceReturnTypeRef) + return this.serviceExecutor.get(MailAddressAliasService, null) } isMailAddressAvailable(mailAddress: string): Promise { if (this._login.isLoggedIn()) { - let data = createDomainMailAddressAvailabilityData() - data.mailAddress = mailAddress - return _service(SysService.DomainMailAddressAvailabilityService, HttpMethod.GET, data, DomainMailAddressAvailabilityReturnTypeRef).then( - result => result.available, - ) + const data = createDomainMailAddressAvailabilityData({mailAddress}) + return this.serviceExecutor.get(DomainMailAddressAvailabilityService, data) + .then(result => result.available) } else { - let data = createMailAddressAvailabilityData() - data.mailAddress = mailAddress - return _service(SysService.MailAddressAvailabilityService, HttpMethod.GET, data, MailAddressAvailabilityReturnTypeRef).then( - result => result.available, - ) + const data = createMailAddressAvailabilityData({mailAddress}) + return this.serviceExecutor.get(MailAddressAvailabilityService, data) + .then(result => result.available) } } - addMailAlias(groupId: Id, alias: string): Promise { - let data = createMailAddressAliasServiceData() - data.group = groupId - data.mailAddress = alias - return _service(SysService.MailAddressAliasService, HttpMethod.POST, data) + async addMailAlias(groupId: Id, alias: string): Promise { + const data = createMailAddressAliasServiceData({ + group: groupId, + mailAddress: alias, + }) + await this.serviceExecutor.post(MailAddressAliasService, data) } - setMailAliasStatus(groupId: Id, alias: string, restore: boolean): Promise { - let deleteData = createMailAddressAliasServiceDataDelete() - deleteData.mailAddress = alias - deleteData.restore = restore - deleteData.group = groupId - return _service(SysService.MailAddressAliasService, HttpMethod.DELETE, deleteData) + async setMailAliasStatus(groupId: Id, alias: string, restore: boolean): Promise { + const deleteData = createMailAddressAliasServiceDataDelete({ + mailAddress: alias, + restore, + group: groupId, + }) + await this.serviceExecutor.delete(MailAddressAliasService, deleteData) } } \ No newline at end of file diff --git a/src/api/worker/facades/MailFacade.ts b/src/api/worker/facades/MailFacade.ts index a33dbd674c..596ae45bcb 100644 --- a/src/api/worker/facades/MailFacade.ts +++ b/src/api/worker/facades/MailFacade.ts @@ -1,13 +1,23 @@ import type {CryptoFacade} from "../crypto/CryptoFacade" import {encryptBytes, encryptString, resolveSessionKey} from "../crypto/CryptoFacade" -import {serviceRequest, serviceRequestVoid} from "../ServiceRequestWorker" -import {TutanotaService} from "../../entities/tutanota/Services" +import { + DraftService, + ExternalUserService, + ListUnsubscribeService, + MailFolderService, + MailService, + MoveMailService, + ReportMailService, + SendDraftService +} from "../../entities/tutanota/Services" import {LoginFacadeImpl} from "./LoginFacade" import type {ConversationType} from "../../common/TutanotaConstants" import { + CounterType_UnreadMails, GroupType, MailAuthenticationStatus as MailAuthStatus, MailMethod, + MailReportType, OperationType, PhishingMarkerStatus, ReportedMailFieldType, @@ -15,22 +25,20 @@ import { import {createCreateMailFolderData} from "../../entities/tutanota/CreateMailFolderData" import {createDraftCreateData} from "../../entities/tutanota/DraftCreateData" import {createDraftData} from "../../entities/tutanota/DraftData" -import {DraftCreateReturnTypeRef} from "../../entities/tutanota/DraftCreateReturn" import type {Mail} from "../../entities/tutanota/Mail" import {_TypeModel as MailTypeModel, MailTypeRef} from "../../entities/tutanota/Mail" import type {DraftRecipient} from "../../entities/tutanota/DraftRecipient" import {createDraftUpdateData} from "../../entities/tutanota/DraftUpdateData" -import {DraftUpdateReturnTypeRef} from "../../entities/tutanota/DraftUpdateReturn" import type {SendDraftData} from "../../entities/tutanota/SendDraftData" import {createSendDraftData} from "../../entities/tutanota/SendDraftData" import type {RecipientDetails} from "../../common/RecipientInfo" import {RecipientsNotFoundError} from "../../common/error/RecipientsNotFoundError" import {NotFoundError} from "../../common/error/RestError" import {GroupRootTypeRef} from "../../entities/sys/GroupRoot" -import {HttpMethod} from "../../common/EntityFunctions" import {ExternalUserReferenceTypeRef} from "../../entities/sys/ExternalUserReference" import { addressDomain, + assertNotNull, byteLength, contains, defer, @@ -69,8 +77,6 @@ import {htmlToText} from "../search/IndexUtils" import {MailBodyTooLargeError} from "../../common/error/MailBodyTooLargeError" import {UNCOMPRESSED_MAX_SIZE} from "../Compression" import type {PublicKeyReturn} from "../../entities/sys/PublicKeyReturn" -import {PublicKeyReturnTypeRef} from "../../entities/sys/PublicKeyReturn" -import {SysService} from "../../entities/sys/Services" import {createPublicKeyData} from "../../entities/sys/PublicKeyData" import { aes128RandomKey, @@ -88,6 +94,15 @@ import { } from "@tutao/tutanota-crypto" import {DataFile} from "../../common/DataFile"; import {FileReference} from "../../common/utils/FileUtils"; +import {createDeleteMailFolderData} from "../../entities/tutanota/DeleteMailFolderData" +import {createWriteCounterData} from "../../entities/monitor/WriteCounterData" +import {createDeleteMailData} from "../../entities/tutanota/DeleteMailData" +import {createListUnsubscribeData} from "../../entities/tutanota/ListUnsubscribeData" +import {createMoveMailData} from "../../entities/tutanota/MoveMailData" +import {createReportMailPostData} from "../../entities/tutanota/ReportMailPostData" +import {CounterService} from "../../entities/monitor/Services" +import {PublicKeyService} from "../../entities/sys/Services" +import {IServiceExecutor} from "../../common/ServiceRequest" assertWorkerOrNode() type Attachments = ReadonlyArray @@ -133,7 +148,13 @@ export class MailFacade { _entityClient: EntityClient _crypto: CryptoFacade - constructor(login: LoginFacadeImpl, fileFacade: FileFacade, entity: EntityClient, crypto: CryptoFacade) { + constructor( + login: LoginFacadeImpl, + fileFacade: FileFacade, + entity: EntityClient, + crypto: CryptoFacade, + private readonly serviceExecutor: IServiceExecutor, + ) { this._login = login this._file = fileFacade this._phishingMarkers = new Set() @@ -143,15 +164,16 @@ export class MailFacade { this._crypto = crypto } - createMailFolder(name: string, parent: IdTuple, ownerGroupId: Id): Promise { - let mailGroupKey = this._login.getGroupKey(ownerGroupId) + async createMailFolder(name: string, parent: IdTuple, ownerGroupId: Id): Promise { + const mailGroupKey = this._login.getGroupKey(ownerGroupId) - let sk = aes128RandomKey() - let newFolder = createCreateMailFolderData() - newFolder.folderName = name - newFolder.parentFolder = parent - newFolder.ownerEncSessionKey = encryptKey(mailGroupKey, sk) - return serviceRequestVoid(TutanotaService.MailFolderService, HttpMethod.POST, newFolder, undefined, sk) + const sk = aes128RandomKey() + const newFolder = createCreateMailFolderData({ + folderName: name, + parentFolder: parent, + ownerEncSessionKey: encryptKey(mailGroupKey, sk), + }) + await this.serviceExecutor.post(MailFolderService, newFolder, {sessionKey: sk}) } /** @@ -208,7 +230,7 @@ export class MailFacade { replyTos, addedAttachments: await this._createAddedAttachments(attachments, [], mailGroupKey), }) - const createDraftReturn = await serviceRequest(TutanotaService.DraftService, HttpMethod.POST, service, DraftCreateReturnTypeRef, undefined, sk) + const createDraftReturn = await this.serviceExecutor.post(DraftService, service, {sessionKey: sk}) return this._entityClient.load(MailTypeRef, createDraftReturn.draft) } @@ -270,10 +292,32 @@ export class MailFacade { this._deferredDraftUpdate = defer() // use a local reference here because this._deferredDraftUpdate is set to null when the event is received async const deferredUpdatePromiseWrapper = this._deferredDraftUpdate - await serviceRequest(TutanotaService.DraftService, HttpMethod.PUT, service, DraftUpdateReturnTypeRef, undefined, sk) + await this.serviceExecutor.put(DraftService, service, {sessionKey: sk}) return deferredUpdatePromiseWrapper.promise } + async moveMails(mails: IdTuple[], targetFolder: IdTuple): Promise { + await this.serviceExecutor.post(MoveMailService, createMoveMailData({mails, targetFolder})) + } + + async reportMail(mail: Mail, reportType: MailReportType): Promise { + const mailSessionKey: Aes128Key = assertNotNull(await resolveSessionKey(MailTypeModel, mail)) + const postData = createReportMailPostData({ + mailId: mail._id, + mailSessionKey: bitArrayToUint8Array(mailSessionKey), + reportType, + }) + await this.serviceExecutor.post(ReportMailService, postData) + } + + async deleteMails(mails: IdTuple[], folder: IdTuple): Promise { + const deleteMailData = createDeleteMailData({ + mails, + folder, + }) + await this.serviceExecutor.delete(MailService, deleteMailData) + } + /** * Returns all ids of the files that have been removed, i.e. that are contained in the existingFileIds but not in the provided files */ @@ -409,7 +453,7 @@ export class MailFacade { } }), ]) - return serviceRequestVoid(TutanotaService.SendDraftService, HttpMethod.POST, sendDraftData) + await this.serviceExecutor.post(SendDraftService, sendDraftData) } checkMailForPhishing( @@ -478,6 +522,25 @@ export class MailFacade { return Promise.resolve(7 < score) } + async deleteFolder(id: IdTuple): Promise { + const deleteMailFolderData = createDeleteMailFolderData({ + folders: [id] + }) + // TODO make DeleteMailFolderData unencrypted in next model version + await this.serviceExecutor.delete(MailFolderService, deleteMailFolderData, {sessionKey: "dummy" as any}) + } + + async fixupCounterForMailList(groupId: Id, listId: Id, unreadMails: number): Promise { + const data = createWriteCounterData({ + counterType: CounterType_UnreadMails, + row: groupId, + column: listId, + value: String(unreadMails), + }) + // TODO + await this.serviceExecutor.post(CounterService, data) + } + _checkFieldForPhishing(type: ReportedMailFieldType, value: string): boolean { const hash = phishingMarkerValue(type, value) return this._phishingMarkers.has(hash) @@ -597,7 +660,7 @@ export class MailFacade { userGroupData.externalPwEncUserGroupKey = encryptKey(externalUserPwKey, externalUserGroupKey) userGroupData.internalUserEncUserGroupKey = encryptKey(this._login.getUserGroupKey(), externalUserGroupKey) d.userGroupData = userGroupData - return serviceRequestVoid(TutanotaService.ExternalUserService, HttpMethod.POST, d).then(() => { + return this.serviceExecutor.post(ExternalUserService, d).then(() => { return { externalUserGroupKey: externalUserGroupKey, externalMailGroupKey: externalMailGroupKey, @@ -637,14 +700,11 @@ export class MailFacade { } getRecipientKeyData(mailAddress: string): Promise { - return serviceRequest( - SysService.PublicKeyService, - HttpMethod.GET, - createPublicKeyData({ - mailAddress, - }), - PublicKeyReturnTypeRef, - ).catch(ofClass(NotFoundError, () => null)) + return this.serviceExecutor + .get(PublicKeyService, createPublicKeyData({ + mailAddress, + })) + .catch(ofClass(NotFoundError, () => null)) } _getMailGroupIdForMailAddress(user: User, mailAddress: string): Promise { @@ -671,6 +731,22 @@ export class MailFacade { } }) } + + async clearFolder(folderId: IdTuple) { + const deleteMailData = createDeleteMailData({ + folder: folderId + }) + await this.serviceExecutor.delete(MailService, deleteMailData) + } + + async unsubscribe(mailId: IdTuple, recipient: string, headers: string[]) { + const postData = createListUnsubscribeData({ + mail: mailId, + recipient, + headers: headers.join("\n"), + }) + await this.serviceExecutor.post(ListUnsubscribeService, postData) + } } export function phishingMarkerValue(type: ReportedMailFieldType, value: string): string { diff --git a/src/api/worker/facades/ShareFacade.ts b/src/api/worker/facades/ShareFacade.ts index 5602e955f1..45d196d2d4 100644 --- a/src/api/worker/facades/ShareFacade.ts +++ b/src/api/worker/facades/ShareFacade.ts @@ -1,11 +1,9 @@ -import {serviceRequest, serviceRequestVoid} from "../ServiceRequestWorker" -import {TutanotaService} from "../../entities/tutanota/Services" +import type {CryptoFacade} from "../crypto/CryptoFacade" import {encryptBytes, encryptString, resolveSessionKey} from "../crypto/CryptoFacade" import type {GroupInfo} from "../../entities/sys/GroupInfo" import {_TypeModel as GroupInfoTypeModel} from "../../entities/sys/GroupInfo" import type {ShareCapability} from "../../common/TutanotaConstants" import {createSharedGroupData} from "../../entities/tutanota/SharedGroupData" -import {HttpMethod} from "../../common/EntityFunctions" import {neverNull} from "@tutao/tutanota-utils" import {RecipientsNotFoundError} from "../../common/error/RecipientsNotFoundError" import {LoginFacadeImpl} from "./LoginFacade" @@ -13,11 +11,11 @@ import {createGroupInvitationPostData} from "../../entities/tutanota/GroupInvita import {createGroupInvitationPutData} from "../../entities/tutanota/GroupInvitationPutData" import {createGroupInvitationDeleteData} from "../../entities/tutanota/GroupInvitationDeleteData" import type {GroupInvitationPostReturn} from "../../entities/tutanota/GroupInvitationPostReturn" -import {GroupInvitationPostReturnTypeRef} from "../../entities/tutanota/GroupInvitationPostReturn" import type {ReceivedGroupInvitation} from "../../entities/sys/ReceivedGroupInvitation" import {assertWorkerOrNode} from "../../common/Env" import {aes128RandomKey, bitArrayToUint8Array, encryptKey, uint8ArrayToBitArray} from "@tutao/tutanota-crypto" -import type {CryptoFacade} from "../crypto/CryptoFacade" +import {IServiceExecutor} from "../../common/ServiceRequest" +import {GroupInvitationService} from "../../entities/tutanota/Services" assertWorkerOrNode() @@ -25,7 +23,11 @@ export class ShareFacade { _loginFacade: LoginFacadeImpl _crypto: CryptoFacade - constructor(loginFacade: LoginFacadeImpl, crypto: CryptoFacade) { + constructor( + loginFacade: LoginFacadeImpl, + crypto: CryptoFacade, + private readonly serviceExecutor: IServiceExecutor + ) { this._loginFacade = loginFacade this._crypto = crypto } @@ -69,25 +71,24 @@ export class ShareFacade { if (notFoundRecipients.length > 0) { throw new RecipientsNotFoundError(notFoundRecipients.join("\n")) } - - return serviceRequest(TutanotaService.GroupInvitationService, HttpMethod.POST, invitationData, GroupInvitationPostReturnTypeRef) + return this.serviceExecutor.post(GroupInvitationService, invitationData) } - acceptGroupInvitation(invitation: ReceivedGroupInvitation): Promise { - return resolveSessionKey(GroupInfoTypeModel, this._loginFacade.getUserGroupInfo()).then(userGroupInfoSessionKey => { - const sharedGroupKey = uint8ArrayToBitArray(invitation.sharedGroupKey) - const serviceData = createGroupInvitationPutData() - serviceData.receivedInvitation = invitation._id - serviceData.userGroupEncGroupKey = encryptKey(this._loginFacade.getUserGroupKey(), sharedGroupKey) - serviceData.sharedGroupEncInviteeGroupInfoKey = encryptKey(sharedGroupKey, neverNull(userGroupInfoSessionKey)) - return serviceRequestVoid(TutanotaService.GroupInvitationService, HttpMethod.PUT, serviceData) + async acceptGroupInvitation(invitation: ReceivedGroupInvitation): Promise { + const userGroupInfoSessionKey = await resolveSessionKey(GroupInfoTypeModel, this._loginFacade.getUserGroupInfo()) + const sharedGroupKey = uint8ArrayToBitArray(invitation.sharedGroupKey) + const serviceData = createGroupInvitationPutData({ + receivedInvitation: invitation._id, + userGroupEncGroupKey: encryptKey(this._loginFacade.getUserGroupKey(), sharedGroupKey), + sharedGroupEncInviteeGroupInfoKey: encryptKey(sharedGroupKey, neverNull(userGroupInfoSessionKey)) }) + await this.serviceExecutor.put(GroupInvitationService, serviceData) } - rejectGroupInvitation(receivedGroupInvitaitonId: IdTuple): Promise { + async rejectGroupInvitation(receivedGroupInvitaitonId: IdTuple): Promise { const serviceData = createGroupInvitationDeleteData({ receivedInvitation: receivedGroupInvitaitonId, }) - return serviceRequestVoid(TutanotaService.GroupInvitationService, HttpMethod.DELETE, serviceData) + await this.serviceExecutor.delete(GroupInvitationService, serviceData) } } \ No newline at end of file diff --git a/src/api/worker/facades/UserManagementFacade.ts b/src/api/worker/facades/UserManagementFacade.ts index e48f6442c3..36d6981366 100644 --- a/src/api/worker/facades/UserManagementFacade.ts +++ b/src/api/worker/facades/UserManagementFacade.ts @@ -1,16 +1,13 @@ import {AccountType, Const, GroupType} from "../../common/TutanotaConstants" -import {serviceRequest, serviceRequestVoid} from "../ServiceRequestWorker" import {GroupTypeRef} from "../../entities/sys/Group" import {encryptBytes, encryptString} from "../crypto/CryptoFacade" import {neverNull} from "@tutao/tutanota-utils" import {createResetPasswordData} from "../../entities/sys/ResetPasswordData" -import {HttpMethod} from "../../common/EntityFunctions" import {createMembershipAddData} from "../../entities/sys/MembershipAddData" import {createUserDataDelete} from "../../entities/sys/UserDataDelete" import type {UserAccountUserData} from "../../entities/tutanota/UserAccountUserData" import {createUserAccountUserData} from "../../entities/tutanota/UserAccountUserData" import {createUserAccountCreateData} from "../../entities/tutanota/UserAccountCreateData" -import {TutanotaService} from "../../entities/tutanota/Services" import type {GroupManagementFacadeImpl} from "./GroupManagementFacade" import type {ContactFormUserData} from "../../entities/tutanota/ContactFormUserData" import {createContactFormUserData} from "../../entities/tutanota/ContactFormUserData" @@ -18,9 +15,7 @@ import type {LoginFacadeImpl, RecoverData} from "./LoginFacade" import type {WorkerImpl} from "../WorkerImpl" import {CounterFacade} from "./CounterFacade" import {createUpdateAdminshipData} from "../../entities/sys/UpdateAdminshipData" -import {SysService} from "../../entities/sys/Services" import type {User} from "../../entities/sys/User" -import {SystemKeysReturnTypeRef} from "../../entities/sys/SystemKeysReturn" import {assertWorkerOrNode} from "../../common/Env" import { aes128RandomKey, @@ -34,6 +29,9 @@ import { } from "@tutao/tutanota-crypto" import type {RsaImplementation} from "../crypto/RsaImplementation" import {EntityClient} from "../../common/EntityClient" +import {IServiceExecutor} from "../../common/ServiceRequest" +import {MembershipService, ResetPasswordService, SystemKeysService, UpdateAdminshipService, UserService} from "../../entities/sys/Services" +import {UserAccountService} from "../../entities/tutanota/Services" assertWorkerOrNode() @@ -52,6 +50,7 @@ export class UserManagementFacade { counters: CounterFacade, rsa: RsaImplementation, entityClient: EntityClient, + private readonly serviceExecutor: IServiceExecutor, ) { this._worker = worker this._login = login @@ -61,19 +60,19 @@ export class UserManagementFacade { this._entityClient = entityClient } - changeUserPassword(user: User, newPassword: string): Promise { - return this._groupManagement.getGroupKeyAsAdmin(user.userGroup.group).then(userGroupKey => { - let salt = generateRandomSalt() - let passwordKey = generateKeyFromPassphrase(newPassword, salt, KeyLength.b128) - let pwEncUserGroupKey = encryptKey(passwordKey, userGroupKey) - let passwordVerifier = createAuthVerifier(passwordKey) - let data = createResetPasswordData() - data.user = user._id - data.salt = salt - data.verifier = passwordVerifier - data.pwEncUserGroupKey = pwEncUserGroupKey - return serviceRequestVoid(SysService.ResetPasswordService, HttpMethod.POST, data) + async changeUserPassword(user: User, newPassword: string): Promise { + const userGroupKey = await this._groupManagement.getGroupKeyAsAdmin(user.userGroup.group) + const salt = generateRandomSalt() + const passwordKey = generateKeyFromPassphrase(newPassword, salt, KeyLength.b128) + const pwEncUserGroupKey = encryptKey(passwordKey, userGroupKey) + const passwordVerifier = createAuthVerifier(passwordKey) + const data = createResetPasswordData({ + user: user._id, + salt, + verifier: passwordVerifier, + pwEncUserGroupKey, }) + await this.serviceExecutor.post(ResetPasswordService, data) } async changeAdminFlag(user: User, admin: boolean): Promise { @@ -90,11 +89,12 @@ export class UserManagementFacade { if (user.accountType !== AccountType.SYSTEM) { const keyData = await this._getAccountKeyData() // we can not use addUserToGroup here because the admin is not admin of the account group - let addAccountGroup = createMembershipAddData() - addAccountGroup.user = user._id - addAccountGroup.group = keyData.group - addAccountGroup.symEncGKey = encryptKey(userGroupKey, decryptKey(this._login.getUserGroupKey(), keyData.symEncGKey)) - return serviceRequestVoid(SysService.MembershipService, HttpMethod.POST, addAccountGroup) + const addAccountGroup = createMembershipAddData({ + user: user._id, + group: keyData.group, + symEncGKey: encryptKey(userGroupKey, decryptKey(this._login.getUserGroupKey(), keyData.symEncGKey)), + }) + await this.serviceExecutor.post(MembershipService, addAccountGroup) } } else { await this._groupManagement.removeUserFromGroup(user._id, adminGroupId) @@ -112,62 +112,56 @@ export class UserManagementFacade { * * @private */ - _getAccountKeyData(): Promise<{ - group: Id - symEncGKey: Uint8Array - }> { - return serviceRequest(SysService.SystemKeysService, HttpMethod.GET, null, SystemKeysReturnTypeRef).then(keysReturn => { - const user = this._login.getLoggedInUser() + async _getAccountKeyData(): Promise<{group: Id, symEncGKey: Uint8Array}> { + const keysReturn = await this.serviceExecutor.get(SystemKeysService, null) + const user = this._login.getLoggedInUser() - if (user.accountType === AccountType.PREMIUM) { - return { - group: neverNull(keysReturn.premiumGroup), - symEncGKey: keysReturn.premiumGroupKey, - } - } else if (user.accountType === AccountType.STARTER) { - // We don't have starterGroup on SystemKeyReturn so we hardcode it for now. - return { - group: "JDpWrwG----0", - symEncGKey: keysReturn.starterGroupKey, - } - } else { - throw new Error(`Trying to get keyData for user with account type ${user.accountType}`) + if (user.accountType === AccountType.PREMIUM) { + return { + group: neverNull(keysReturn.premiumGroup), + symEncGKey: keysReturn.premiumGroupKey, } - }) + } else if (user.accountType === AccountType.STARTER) { + // We don't have starterGroup on SystemKeyReturn so we hardcode it for now. + return { + group: "JDpWrwG----0", + symEncGKey: keysReturn.starterGroupKey, + } + } else { + throw new Error(`Trying to get keyData for user with account type ${user.accountType}`) + } } - updateAdminship(groupId: Id, newAdminGroupId: Id): Promise { + async updateAdminship(groupId: Id, newAdminGroupId: Id): Promise { let adminGroupId = this._login.getGroupId(GroupType.Admin) + const newAdminGroup = await this._entityClient.load(GroupTypeRef, newAdminGroupId) + const group = await this._entityClient.load(GroupTypeRef, groupId) + const oldAdminGroup = await this._entityClient.load(GroupTypeRef, neverNull(group.admin)) - return this._entityClient.load(GroupTypeRef, newAdminGroupId).then(newAdminGroup => { - return this._entityClient.load(GroupTypeRef, groupId).then(group => { - return this._entityClient.load(GroupTypeRef, neverNull(group.admin)).then(oldAdminGroup => { - let data = createUpdateAdminshipData() - data.group = group._id - data.newAdminGroup = newAdminGroup._id + const adminGroupKey = this._login.getGroupKey(adminGroupId) - let adminGroupKey = this._login.getGroupKey(adminGroupId) + let groupKey + if (oldAdminGroup._id === adminGroupId) { + groupKey = decryptKey(adminGroupKey, neverNull(group.adminGroupEncGKey)) + } else { + let localAdminGroupKey = decryptKey(adminGroupKey, neverNull(oldAdminGroup.adminGroupEncGKey)) + groupKey = decryptKey(localAdminGroupKey, neverNull(group.adminGroupEncGKey)) + } - let groupKey + let newAdminGroupEncGKey + if (newAdminGroup._id === adminGroupId) { + newAdminGroupEncGKey = encryptKey(adminGroupKey, groupKey) + } else { + let localAdminGroupKey = decryptKey(adminGroupKey, neverNull(newAdminGroup.adminGroupEncGKey)) + newAdminGroupEncGKey = encryptKey(localAdminGroupKey, groupKey) + } - if (oldAdminGroup._id === adminGroupId) { - groupKey = decryptKey(adminGroupKey, neverNull(group.adminGroupEncGKey)) - } else { - let localAdminGroupKey = decryptKey(adminGroupKey, neverNull(oldAdminGroup.adminGroupEncGKey)) - groupKey = decryptKey(localAdminGroupKey, neverNull(group.adminGroupEncGKey)) - } - - if (newAdminGroup._id === adminGroupId) { - data.newAdminGroupEncGKey = encryptKey(adminGroupKey, groupKey) - } else { - let localAdminGroupKey = decryptKey(adminGroupKey, neverNull(newAdminGroup.adminGroupEncGKey)) - data.newAdminGroupEncGKey = encryptKey(localAdminGroupKey, groupKey) - } - - return serviceRequestVoid(SysService.UpdateAdminshipService, HttpMethod.POST, data) - }) - }) + const data = createUpdateAdminshipData({ + group: group._id, + newAdminGroup: newAdminGroup._id, + newAdminGroupEncGKey, }) + await this.serviceExecutor.post(UpdateAdminshipService, data) } readUsedUserStorage(user: User): Promise { @@ -180,12 +174,13 @@ export class UserManagementFacade { }) } - deleteUser(user: User, restore: boolean): Promise { - let data = createUserDataDelete() - data.user = user._id - data.restore = restore - data.date = Const.CURRENT_DATE - return serviceRequestVoid(SysService.UserService, HttpMethod.DELETE, data) + async deleteUser(user: User, restore: boolean): Promise { + const data = createUserDataDelete({ + user: user._id, + restore, + date: Const.CURRENT_DATE, + }) + await this.serviceExecutor.delete(UserService, data) } _getGroupId(user: User, groupType: GroupType): Id { @@ -236,7 +231,7 @@ export class UserManagementFacade { name, this._login.generateRecoveryCode(userGroupKey), ) - return serviceRequestVoid(TutanotaService.UserAccountService, HttpMethod.POST, data).then(() => { + return this.serviceExecutor.post(UserAccountService, data).then(() => { return this._worker.sendProgress(((userIndex + 1) / overallNbrOfUsersToCreate) * 100) }) }) diff --git a/src/api/worker/rest/ServiceExecutor.ts b/src/api/worker/rest/ServiceExecutor.ts new file mode 100644 index 0000000000..3399c3ae67 --- /dev/null +++ b/src/api/worker/rest/ServiceExecutor.ts @@ -0,0 +1,152 @@ +import {HttpMethod, MediaType, resolveTypeReference} from "../../common/EntityFunctions" +import { + DeleteService, + ExtraServiceParams, + GetService, + IServiceExecutor, + MethodDefinition, + ParamTypeFromRef, + PostService, + PutService, + ReturnTypeFromRef +} from "../../common/ServiceRequest.js" +import {Entity} from "../../common/EntityTypes" +import {isSameTypeRef, lazy, TypeRef} from "@tutao/tutanota-utils" +import {RestClient} from "./RestClient" +import {InstanceMapper} from "../crypto/InstanceMapper" +import {CryptoFacade} from "../crypto/CryptoFacade" +import {assertWorkerOrNode} from "../../common/Env" +import {ProgrammingError} from "../../common/error/ProgrammingError" + +assertWorkerOrNode() + +type AnyService = GetService | PostService | PutService | DeleteService + +export class ServiceExecutor implements IServiceExecutor { + constructor( + private readonly restClient: RestClient, + private readonly authHeadersProvider: () => Dict, + private readonly instanceMapper: InstanceMapper, + private readonly cryptoFacade: lazy, + ) { + } + + get( + service: S, + data: ParamTypeFromRef, + params?: ExtraServiceParams, + ): Promise> { + return this.executeServiceRequest(service, HttpMethod.GET, data, params) + } + + post( + service: S, + data: ParamTypeFromRef, + params?: ExtraServiceParams, + ): Promise> { + return this.executeServiceRequest(service, HttpMethod.POST, data, params) + } + + put( + service: S, + data: ParamTypeFromRef, + params?: ExtraServiceParams, + ): Promise> { + return this.executeServiceRequest(service, HttpMethod.PUT, data, params) + } + + delete( + service: S, + data: ParamTypeFromRef, + params?: ExtraServiceParams, + ): Promise> { + return this.executeServiceRequest(service, HttpMethod.DELETE, data, params) + } + + private async executeServiceRequest( + service: AnyService, + method: HttpMethod, + requestEntity: Entity | null, + params: ExtraServiceParams | undefined, + ): Promise { + const methodDefinition = this.getMethodDefinition(service, method) + const modelVersion = await this.getModelVersion(methodDefinition) + + const path = `/rest/${service.app.toLowerCase()}/${service.name.toLowerCase()}` + const headers = {...this.authHeadersProvider(), ...params?.extraHeaders, v: modelVersion} + + const encryptedEntity = await this.encryptDataIfNeeded(methodDefinition, requestEntity, service, method, params ?? null) + + const data: string | undefined = await this.restClient + .request( + path, + method, + { + queryParams: params?.queryParams, + headers, + responseType: MediaType.Json, + body: encryptedEntity ?? undefined, + suspensionBehavior: params?.suspensionBehavior, + }, + ) + + if (methodDefinition.return) { + return await this.decryptResponse(methodDefinition.return, data as string, params) + } + } + + private getMethodDefinition(service: AnyService, method: HttpMethod): MethodDefinition { + switch (method) { + case HttpMethod.GET: + return (service as GetService)["get"] + case HttpMethod.POST: + return (service as PostService)["post"] + case HttpMethod.PUT: + return (service as PutService)["put"] + case HttpMethod.DELETE: + return (service as DeleteService)["delete"] + } + } + + private async getModelVersion(methodDefinition: MethodDefinition): Promise { + // This is some kind of a hack because we don't generate data for the whole model anywhere (unfortunately). + const someTypeRef = methodDefinition.data ?? methodDefinition.return + if (someTypeRef == null) { + throw new ProgrammingError("Need either data or return for the service method!") + } + const model = await resolveTypeReference(someTypeRef) + return model.version + } + + private async encryptDataIfNeeded( + methodDefinition: MethodDefinition, + requestEntity: Entity | null, + service: AnyService, + method: HttpMethod, + params: ExtraServiceParams | null, + ): Promise { + if (methodDefinition.data != null) { + if (requestEntity == null || !isSameTypeRef(methodDefinition.data, requestEntity._type)) { + throw new ProgrammingError(`Invalid service data! ${service.name} ${method}`) + } + + const requestTypeModel = await resolveTypeReference(methodDefinition.data) + if (requestTypeModel.encrypted && params?.sessionKey == null) { + throw new ProgrammingError("Must provide a session key for an encrypted data transfer type!: " + service) + } + + const encryptedEntity = await this.instanceMapper.encryptAndMapToLiteral(requestTypeModel, requestEntity, params?.sessionKey ?? null) + return JSON.stringify(encryptedEntity) + } else { + return null + } + } + + private async decryptResponse(typeRef: TypeRef, data: string, params: ExtraServiceParams | undefined): Promise { + const responseTypeModel = await resolveTypeReference(typeRef) + // Filter out __proto__ to avoid prototype pollution. + const instance = JSON.parse(data, (k, v) => (k === "__proto__" ? undefined : v)) + const resolvedSessionKey = await this.cryptoFacade().resolveServiceSessionKey(responseTypeModel, instance) + return this.instanceMapper.decryptAndMapToInstance(responseTypeModel, instance, resolvedSessionKey ?? params?.sessionKey ?? null) + } +} \ No newline at end of file diff --git a/src/api/worker/rest/ServiceRestClient.ts b/src/api/worker/rest/ServiceRestClient.ts deleted file mode 100644 index 1b81313dfd..0000000000 --- a/src/api/worker/rest/ServiceRestClient.ts +++ /dev/null @@ -1,66 +0,0 @@ -import type {HttpMethod} from "../../common/EntityFunctions" -import {MediaType, resolveTypeReference} from "../../common/EntityFunctions" -import {downcast, TypeRef} from "@tutao/tutanota-utils" -import {assertWorkerOrNode} from "../../common/Env" -import type {TutanotaService} from "../../entities/tutanota/Services"; -import type {SysService} from "../../entities/sys/Services"; -import type {AccountingService} from "../../entities/accounting/Services"; -import type {MonitorService} from "../../entities/monitor/Services"; -import type {StorageService} from "../../entities/storage/Services"; -import {locator} from "../WorkerLocator"; -import type {Entity} from "../../common/EntityTypes" -import {SuspensionBehavior} from "./RestClient" - -assertWorkerOrNode() - -export function _service( - service: SysService | TutanotaService | MonitorService | AccountingService | StorageService, - method: HttpMethod, - requestEntity?: any, - responseTypeRef?: TypeRef, - queryParameter?: Dict, - sk?: Aes128Key, - extraHeaders?: Dict, - suspensionBehavior?: SuspensionBehavior, -): Promise { - return resolveTypeReference(requestEntity ? requestEntity._type : downcast(responseTypeRef)).then(modelForAppAndVersion => { - let path = `/rest/${modelForAppAndVersion.app.toLowerCase()}/${service}` - let queryParams = queryParameter != null ? queryParameter : {} - const headers = Object.assign(locator.login.createAuthHeaders(), extraHeaders) - headers["v"] = modelForAppAndVersion.version - let p: Promise | null> | null = null - - if (requestEntity != null) { - p = resolveTypeReference(requestEntity._type).then(requestTypeModel => { - if (requestTypeModel.encrypted && sk == null) { - return Promise.reject(new Error("must provide a session key for an encrypted data transfer type!: " + service)) - } - - return locator.instanceMapper.encryptAndMapToLiteral(requestTypeModel, requestEntity, sk ?? null) - }) - } else { - p = Promise.resolve(null) - } - - return p.then(encryptedEntity => { - return locator.restClient - .request(path, method, { - queryParams, - headers, - body: encryptedEntity ? JSON.stringify(encryptedEntity) : undefined, - responseType: MediaType.Json, - suspensionBehavior, - }) - .then(data => { - if (responseTypeRef) { - return resolveTypeReference(responseTypeRef).then(responseTypeModel => { - let instance = JSON.parse(data) - return locator.crypto.resolveServiceSessionKey(responseTypeModel, instance).then(resolvedSessionKey => { - return locator.instanceMapper.decryptAndMapToInstance(responseTypeModel, instance, resolvedSessionKey ? resolvedSessionKey : sk ?? null) - }) - }) - } - }) - }) - }) -} \ No newline at end of file diff --git a/src/api/worker/rest/ServiceRestInterface.ts b/src/api/worker/rest/ServiceRestInterface.ts deleted file mode 100644 index 43734c0a6d..0000000000 --- a/src/api/worker/rest/ServiceRestInterface.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { serviceRequest, serviceRequestVoid } from "../ServiceRequestWorker"; - -export interface ServiceRestInterface { - serviceRequest: typeof serviceRequest, - serviceRequestVoid: typeof serviceRequestVoid -} \ No newline at end of file diff --git a/src/calendar/model/CalendarModel.ts b/src/calendar/model/CalendarModel.ts index 784b7a8f8c..275ff5ca3e 100644 --- a/src/calendar/model/CalendarModel.ts +++ b/src/calendar/model/CalendarModel.ts @@ -1,22 +1,8 @@ import type {DeferredObject} from "@tutao/tutanota-utils" -import { - assertNotNull, - clone, - defer, - downcast, - filterInt, - getFromMap, - isNotNull, - LazyLoaded, - noOp, - ofClass, - promiseMap -} from "@tutao/tutanota-utils" +import {assertNotNull, clone, defer, downcast, filterInt, getFromMap, isNotNull, LazyLoaded, noOp, ofClass, promiseMap} from "@tutao/tutanota-utils" import {CalendarMethod, FeatureType, GroupType, OperationType} from "../../api/common/TutanotaConstants" import type {EntityUpdateData} from "../../api/main/EventController" import {EventController, isUpdateForTypeRef} from "../../api/main/EventController" -import type {WorkerClient} from "../../api/main/WorkerClient" -import {HttpMethod} from "../../api/common/EntityFunctions" import type {UserAlarmInfo} from "../../api/entities/sys/UserAlarmInfo" import {UserAlarmInfoTypeRef} from "../../api/entities/sys/UserAlarmInfo" import type {CalendarEvent} from "../../api/entities/tutanota/CalendarEvent" @@ -35,7 +21,6 @@ import type {ParsedCalendarData} from "../export/CalendarImporter" import type {CalendarEventUpdate} from "../../api/entities/tutanota/CalendarEventUpdate" import {CalendarEventUpdateTypeRef} from "../../api/entities/tutanota/CalendarEventUpdate" import {createMembershipRemoveData} from "../../api/entities/sys/MembershipRemoveData" -import {SysService} from "../../api/entities/sys/Services" import type {Group} from "../../api/entities/sys/Group" import {GroupTypeRef} from "../../api/entities/sys/Group" import type {AlarmInfo} from "../../api/entities/sys/AlarmInfo" @@ -55,6 +40,8 @@ import type {CalendarFacade} from "../../api/worker/facades/CalendarFacade" import type {FileFacade} from "../../api/worker/facades/FileFacade" import {DataFile} from "../../api/common/DataFile"; import {GroupMembership} from "../../api/entities/sys/GroupMembership"; +import {IServiceExecutor} from "../../api/common/ServiceRequest" +import {MembershipService} from "../../api/entities/sys/Services" export type CalendarInfo = { groupRoot: CalendarGroupRoot @@ -97,10 +84,11 @@ export interface CalendarModel { updateEventWithExternal(dbEvent: CalendarEvent, event: CalendarEvent): Promise createCalendar(name: string, color: string | null): Promise + + deleteCalendar(calendar: CalendarInfo): Promise; } export class CalendarModelImpl implements CalendarModel { - _worker: WorkerClient _scheduledNotifications: Map _notifications: Notifications @@ -119,7 +107,7 @@ export class CalendarModelImpl implements CalendarModel { notifications: Notifications, alarmScheduler: () => Promise, eventController: EventController, - worker: WorkerClient, + private readonly serviceExecutor: IServiceExecutor, logins: LoginController, progressTracker: ProgressTracker, entityClient: EntityClient, @@ -130,7 +118,6 @@ export class CalendarModelImpl implements CalendarModel { this._notifications = notifications this._alarmScheduler = alarmScheduler this._logins = logins - this._worker = worker this._scheduledNotifications = new Map() this._pendingAlarmRequests = new Map() this._progressTracker = progressTracker @@ -228,7 +215,7 @@ export class CalendarModelImpl implements CalendarModel { user: user._id, group: notFoundMembership.group, }) - return this._worker.serviceRequest(SysService.MembershipService, HttpMethod.DELETE, data) + return this.serviceExecutor.delete(MembershipService, data) }) return calendarInfos }) @@ -460,6 +447,10 @@ export class CalendarModelImpl implements CalendarModel { return this._entityClient.loadMultiple(UserAlarmInfoTypeRef, listIdPart(ids[0]), ids.map(elementIdPart)) } + async deleteCalendar(calendar: CalendarInfo): Promise { + await this._calendarFacade.deleteCalendar(calendar.groupRoot._id) + } + _entityEventsReceived(updates: ReadonlyArray): Promise { return promiseMap(updates, entityEventData => { if (isUpdateForTypeRef(UserAlarmInfoTypeRef, entityEventData)) { diff --git a/src/calendar/view/CalendarView.ts b/src/calendar/view/CalendarView.ts index aef0c4cb62..2337385675 100644 --- a/src/calendar/view/CalendarView.ts +++ b/src/calendar/view/CalendarView.ts @@ -1,5 +1,4 @@ import m, {Children} from "mithril" -import {serviceRequestVoid} from "../../api/main/ServiceRequest" import type {CurrentView} from "../../gui/base/Header" import {ColumnType, ViewColumn} from "../../gui/base/ViewColumn" import {lang, TranslationKey} from "../../misc/LanguageViewModel" @@ -11,7 +10,6 @@ import {downcast, incrementDate, LazyLoaded, memoized, ofClass} from "@tutao/tut import type {CalendarEvent} from "../../api/entities/tutanota/CalendarEvent" import {CalendarEventTypeRef} from "../../api/entities/tutanota/CalendarEvent" import {logins} from "../../api/main/LoginController" -import {HttpMethod} from "../../api/common/EntityFunctions" import {defaultCalendarColor, GroupType, Keys, ShareCapability, TimeFormat} from "../../api/common/TutanotaConstants" import {locator} from "../../api/main/MainLocator" import {getEventStart, getStartOfTheWeekOffset, getStartOfWeek, getTimeZone, shouldDefaultToAmPmTimeFormat} from "../date/CalendarUtils" @@ -26,8 +24,6 @@ import type {GroupInfo} from "../../api/entities/sys/GroupInfo" import {showEditCalendarDialog} from "./EditCalendarDialog" import type {GroupSettings} from "../../api/entities/tutanota/GroupSettings" import {createGroupSettings} from "../../api/entities/tutanota/GroupSettings" -import {TutanotaService} from "../../api/entities/tutanota/Services" -import {createCalendarDeleteData} from "../../api/entities/tutanota/CalendarDeleteData" import {styles} from "../../gui/styles" import {MultiDayCalendarView} from "./MultiDayCalendarView" import {Dialog} from "../../gui/base/Dialog" @@ -666,13 +662,8 @@ export class CalendarView implements CurrentView { }), ).then(confirmed => { if (confirmed) { - serviceRequestVoid( - TutanotaService.CalendarService, - HttpMethod.DELETE, - createCalendarDeleteData({ - groupRootId: calendarInfo.groupRoot._id, - }), - ).catch(ofClass(NotFoundError, () => console.log("Calendar to be deleted was not found."))) + this._calendarViewModel.deleteCalendar(calendarInfo) + .catch(ofClass(NotFoundError, () => console.log("Calendar to be deleted was not found."))) } }) }) diff --git a/src/calendar/view/CalendarViewModel.ts b/src/calendar/view/CalendarViewModel.ts index 1d2867d423..fb685d58da 100644 --- a/src/calendar/view/CalendarViewModel.ts +++ b/src/calendar/view/CalendarViewModel.ts @@ -332,6 +332,10 @@ export class CalendarViewModel implements EventDragHandlerCallbacks { } } + async deleteCalendar(calendar: CalendarInfo): Promise { + await this._calendarModel.deleteCalendar(calendar) + } + _addTransientEvent(event: CalendarEvent) { this._transientEvents.push(event) } diff --git a/src/login/LoginListener.ts b/src/login/LoginListener.ts index c7822697d1..14925082a1 100644 --- a/src/login/LoginListener.ts +++ b/src/login/LoginListener.ts @@ -6,9 +6,7 @@ import {assertNotNull, neverNull, noOp, ofClass} from "@tutao/tutanota-utils" import {windowFacade} from "../misc/WindowFacade" import {checkApprovalStatus} from "../misc/LoginUtils" import {locator} from "../api/main/MainLocator" -import {serviceRequestVoid} from "../api/main/ServiceRequest" -import {TutanotaService} from "../api/entities/tutanota/Services" -import {HttpMethod} from "../api/common/EntityFunctions" +import {ReceiveInfoService} from "../api/entities/tutanota/Services" import {InfoLink, lang} from "../misc/LanguageViewModel" import {getHourCycle} from "../misc/Formatter" import type {OutOfOfficeNotification} from "../api/entities/tutanota/OutOfOfficeNotification" @@ -121,7 +119,7 @@ class LoginListener implements LoginEventHandler { const receiveInfoData = createReceiveInfoServiceData({ language: lang.code, }) - await serviceRequestVoid(TutanotaService.ReceiveInfoService, HttpMethod.POST, receiveInfoData) + await locator.serviceExecutor.post(ReceiveInfoService, receiveInfoData) } lang.updateFormats({ diff --git a/src/mail/model/InboxRuleHandler.ts b/src/mail/model/InboxRuleHandler.ts index 339094e7a7..901e7455e2 100644 --- a/src/mail/model/InboxRuleHandler.ts +++ b/src/mail/model/InboxRuleHandler.ts @@ -1,6 +1,5 @@ import type {MoveMailData} from "../../api/entities/tutanota/MoveMailData" import {createMoveMailData} from "../../api/entities/tutanota/MoveMailData" -import {TutanotaService} from "../../api/entities/tutanota/Services" import {InboxRuleType, MAX_NBR_MOVE_DELETE_MAIL_SERVICE} from "../../api/common/TutanotaConstants" import {isDomainName, isRegularExpression} from "../../misc/FormatValidator" import {HttpMethod} from "../../api/common/EntityFunctions" @@ -21,19 +20,20 @@ import {getElementId, getListId, isSameId} from "../../api/common/utils/EntityUt import {getInboxFolder} from "./MailUtils" import {ofClass, promiseMap} from "@tutao/tutanota-utils" import {assertMainOrNode} from "../../api/common/Env" +import {MailFacade} from "../../api/worker/facades/MailFacade" assertMainOrNode() const moveMailDataPerFolder: MoveMailData[] = [] const DEBOUNCE_FIRST_MOVE_MAIL_REQUEST_MS = 200 let applyingRules = false // used to avoid concurrent application of rules (-> requests to locked service) -async function sendMoveMailRequest(worker: WorkerClient): Promise { +async function sendMoveMailRequest(mailFacade: MailFacade): Promise { if (moveMailDataPerFolder.length) { const moveToTargetFolder = assertNotNull(moveMailDataPerFolder.shift()) const mailChunks = splitInChunks(MAX_NBR_MOVE_DELETE_MAIL_SERVICE, moveToTargetFolder.mails) await promiseMap(mailChunks, mailChunk => { moveToTargetFolder.mails = mailChunk - return worker.serviceRequest(TutanotaService.MoveMailService, HttpMethod.POST, moveToTargetFolder) + return mailFacade.moveMails(mailChunk, moveToTargetFolder.targetFolder) }) .catch( ofClass(LockedError, e => { @@ -48,18 +48,18 @@ async function sendMoveMailRequest(worker: WorkerClient): Promise { }), ) .finally(() => { - return sendMoveMailRequest(worker) + return sendMoveMailRequest(mailFacade) }) } //We are done and unlock for future requests } // We throttle the moveMail requests to a rate of 50ms // Each target folder requires one request -const applyMatchingRules = debounce(DEBOUNCE_FIRST_MOVE_MAIL_REQUEST_MS, (worker: WorkerClient) => { +const applyMatchingRules = debounce(DEBOUNCE_FIRST_MOVE_MAIL_REQUEST_MS, (mailFacade: MailFacade) => { if (applyingRules) return // We lock to avoid concurrent requests applyingRules = true - sendMoveMailRequest(worker).finally(() => { + sendMoveMailRequest(mailFacade).finally(() => { applyingRules = false }) }) @@ -103,7 +103,7 @@ export function getInboxRuleTypeName(type: string): string { * @returns true if a rule matches otherwise false */ export function findAndApplyMatchingRule( - worker: WorkerClient, + mailFacade: MailFacade, entityClient: EntityClient, mailboxDetail: MailboxDetail, mail: Mail, @@ -132,7 +132,7 @@ export function findAndApplyMatchingRule( moveMailDataPerFolder.push(moveMailData) } - applyMatchingRules(worker) + applyMatchingRules(mailFacade) } return [targetFolder.mails, getElementId(mail)] diff --git a/src/mail/model/MailModel.ts b/src/mail/model/MailModel.ts index 53a9a53ba9..f013c591d0 100644 --- a/src/mail/model/MailModel.ts +++ b/src/mail/model/MailModel.ts @@ -1,12 +1,9 @@ import m from "mithril" import stream from "mithril/stream" +import Stream from "mithril/stream" import {containsEventOfType} from "../../api/common/utils/Utils" -import {neverNull, noOp} from "@tutao/tutanota-utils" -import {createMoveMailData} from "../../api/entities/tutanota/MoveMailData" -import {TutanotaService} from "../../api/entities/tutanota/Services" -import {HttpMethod} from "../../api/common/EntityFunctions" +import {groupBy, neverNull, noOp, ofClass, promiseMap, splitInChunks} from "@tutao/tutanota-utils" import {logins} from "../../api/main/LoginController" -import {createDeleteMailData} from "../../api/entities/tutanota/DeleteMailData" import type {MailBox} from "../../api/entities/tutanota/MailBox" import {MailBoxTypeRef} from "../../api/entities/tutanota/MailBox" import type {MailboxGroupRoot} from "../../api/entities/tutanota/MailboxGroupRoot" @@ -21,7 +18,7 @@ import type {MailReportType} from "../../api/common/TutanotaConstants" import {FeatureType, GroupType, MailFolderType, MAX_NBR_MOVE_DELETE_MAIL_SERVICE, OperationType} from "../../api/common/TutanotaConstants" import {UserTypeRef} from "../../api/entities/sys/User" import type {Mail} from "../../api/entities/tutanota/Mail" -import {_TypeModel as MailTypeModel, MailTypeRef} from "../../api/entities/tutanota/Mail" +import {MailTypeRef} from "../../api/entities/tutanota/Mail" import type {EntityUpdateData} from "../../api/main/EventController" import {EventController, isUpdateForTypeRef} from "../../api/main/EventController" import {lang} from "../../misc/LanguageViewModel" @@ -29,15 +26,10 @@ import {Notifications} from "../../gui/Notifications" import {findAndApplyMatchingRule} from "./InboxRuleHandler" import type {WebsocketCounterData} from "../../api/entities/sys/WebsocketCounterData" import type {WorkerClient} from "../../api/main/WorkerClient" -import {groupBy, splitInChunks} from "@tutao/tutanota-utils" import {EntityClient} from "../../api/common/EntityClient" import {elementIdPart, getListId, isSameId, listIdPart} from "../../api/common/utils/EntityUtils" -import {ofClass, promiseMap} from "@tutao/tutanota-utils" -import {createReportMailPostData} from "../../api/entities/tutanota/ReportMailPostData" -import {base64ToUint8Array} from "@tutao/tutanota-utils" import {NotFoundError} from "../../api/common/error/RestError" import type {MailFacade} from "../../api/worker/facades/MailFacade" -import Stream from "mithril/stream"; export type MailboxDetail = { mailbox: MailBox @@ -182,16 +174,7 @@ export class MailModel { async reportMails(reportType: MailReportType, mails: ReadonlyArray): Promise { for (const mail of mails) { - await this._worker - .resolveSessionKey(MailTypeModel, mail) - .then(mailSessionKeyB64 => { - const postData = createReportMailPostData({ - mailId: mail._id, - mailSessionKey: base64ToUint8Array(neverNull(mailSessionKeyB64)), - reportType, - }) - return this._worker.serviceRequest(TutanotaService.ReportMailService, HttpMethod.POST, postData) - }) + await this._mailFacade.reportMail(mail, reportType) .catch(ofClass(NotFoundError, e => console.log("mail to be reported not found", e))) } } @@ -206,14 +189,10 @@ export class MailModel { const sourceMailFolder = this.getMailFolder(getListId(mails[0])) if (moveMails.length > 0 && sourceMailFolder && !isSameId(targetMailFolder._id, sourceMailFolder._id)) { - let moveMailData = createMoveMailData() - moveMailData.targetFolder = targetMailFolder._id - moveMailData.mails = mails.map(m => m._id) - const mailChunks = splitInChunks(MAX_NBR_MOVE_DELETE_MAIL_SERVICE, moveMailData.mails) + const mailChunks = splitInChunks(MAX_NBR_MOVE_DELETE_MAIL_SERVICE, mails.map(m => m._id)) for (const mailChunk of mailChunks) { - moveMailData.mails = mailChunk - await this._worker.serviceRequest(TutanotaService.MoveMailService, HttpMethod.POST, moveMailData) + await this._mailFacade.moveMails(mailChunk, targetMailFolder._id) } } } @@ -268,15 +247,12 @@ export class MailModel { */ async _finallyDeleteMails(mails: Mail[]): Promise { if (!mails.length) return Promise.resolve() - let deleteMailData = createDeleteMailData() const mailFolder = neverNull(this.getMailFolder(getListId(mails[0]))) - deleteMailData.folder = mailFolder._id const mailIds = mails.map(m => m._id) const mailChunks = splitInChunks(MAX_NBR_MOVE_DELETE_MAIL_SERVICE, mailIds) for (const mailChunk of mailChunks) { - deleteMailData.mails = mailChunk - await this._worker.serviceRequest(TutanotaService.MailService, HttpMethod.DELETE, deleteMailData) + await this._mailFacade.deleteMails(mailChunk, mailFolder._id) } } @@ -312,7 +288,7 @@ export class MailModel { await this.getMailboxDetailsForMailListId(update.instanceListId) .then(mailboxDetail => { // We only apply rules on server if we are the leader in case of incoming messages - return findAndApplyMatchingRule(this._worker, this._entityClient, mailboxDetail, mail, this._worker.isLeader()) + return findAndApplyMatchingRule(this._mailFacade, this._entityClient, mailboxDetail, mail, this._worker.isLeader()) }) .then(newId => this._showNotification(newId || mailId)) .catch(noOp) @@ -371,4 +347,21 @@ export class MailModel { isFinalDelete(folder: MailFolder | null): boolean { return folder != null && (folder.folderType === MailFolderType.TRASH || folder.folderType === MailFolderType.SPAM) } + + async deleteFolder(folder: MailFolder): Promise { + await this._mailFacade.deleteFolder(folder._id) + } + + async fixupCounterForMailList(listId: Id, unreadMails: number) { + const mailboxDetails = await this.getMailboxDetailsForMailListId(listId) + await this._mailFacade.fixupCounterForMailList(mailboxDetails.mailGroup._id, listId, unreadMails) + } + + async clearFolder(folder: MailFolder): Promise { + await this._mailFacade.clearFolder(folder._id) + } + + async unsubscribe(mail: Mail, recipient: string, headers: string[]) { + await this._mailFacade.unsubscribe(mail._id, recipient, headers) + } } \ No newline at end of file diff --git a/src/mail/view/MailListView.ts b/src/mail/view/MailListView.ts index 545ef51d79..0022b25998 100644 --- a/src/mail/view/MailListView.ts +++ b/src/mail/view/MailListView.ts @@ -2,9 +2,7 @@ import m, {Children, Component, Vnode} from "mithril" import {lang} from "../../misc/LanguageViewModel" import type {VirtualRow} from "../../gui/base/List" import {List} from "../../gui/base/List" -import {HttpMethod} from "../../api/common/EntityFunctions" -import {serviceRequestVoid} from "../../api/main/ServiceRequest" -import {CounterType_UnreadMails, MailFolderType} from "../../api/common/TutanotaConstants" +import {MailFolderType} from "../../api/common/TutanotaConstants" import type {MailView} from "./MailView" import type {Mail} from "../../api/entities/tutanota/Mail" import {MailTypeRef} from "../../api/entities/tutanota/Mail" @@ -19,8 +17,6 @@ import {logins} from "../../api/main/LoginController" import type {ButtonAttrs} from "../../gui/base/ButtonN" import {ButtonColor, ButtonN, ButtonType} from "../../gui/base/ButtonN" import {Dialog} from "../../gui/base/Dialog" -import {MonitorService} from "../../api/entities/monitor/Services" -import {createWriteCounterData} from "../../api/entities/monitor/WriteCounterData" import {assertNotNull, AsyncResult, debounce, downcast, neverNull, ofClass, promiseFilter, promiseMap} from "@tutao/tutanota-utils" import {locator} from "../../api/main/MainLocator" import {getLetId, haveSameId, sortCompareByReverseId} from "../../api/common/utils/EntityUtils" @@ -276,7 +272,7 @@ export class MailListView implements Component { } // Do not start many fixes in parallel, do check after some time when counters are more likely to settle - _fixCounterIfNeeded: (listId: Id, listLength: number) => void = debounce(2000, (listId: Id, listLength: number) => { + _fixCounterIfNeeded: (listId: Id, listLength: number) => void = debounce(2000, async (listId: Id, listLength: number) => { // If folders are changed, list won't have the data we need. // Do not rely on counters if we are not connected if (this.listId !== listId || locator.worker.wsConnection()() !== WsConnectionState.connected) { @@ -295,19 +291,10 @@ export class MailListView implements Component { return acc }, 0) - locator.mailModel.getCounterValue(this.listId).then(counterValue => { - if (counterValue != null && counterValue !== unreadMails) { - locator.mailModel.getMailboxDetailsForMailListId(this.listId).then(mailboxDetails => { - const data = createWriteCounterData({ - counterType: CounterType_UnreadMails, - row: mailboxDetails.mailGroup._id, - column: this.listId, - value: String(unreadMails), - }) - serviceRequestVoid(MonitorService.CounterService, HttpMethod.POST, data) - }) - } - }) + const counterValue = await locator.mailModel.getCounterValue(this.listId) + if (counterValue != null && counterValue !== unreadMails) { + await locator.mailModel.fixupCounterForMailList(this.listId, unreadMails) + } }) view(vnode: Vnode): Children { @@ -329,7 +316,7 @@ export class MailListView implements Component { }), ).then(confirmed => { if (confirmed) { - this.mailView._finallyDeleteAllMailsInSelectedFolder(folder) + this.mailView.finallyDeleteAllMailsInSelectedFolder(folder) } }) }, @@ -402,7 +389,7 @@ export class MailListView implements Component { if (isInboxList(mailboxDetail, this.listId)) { // filter emails return promiseFilter(mails, mail => { - return findAndApplyMatchingRule(locator.worker, locator.entityClient, mailboxDetail, mail, true).then(matchingMailId => !matchingMailId) + return findAndApplyMatchingRule(locator.mailFacade, locator.entityClient, mailboxDetail, mail, true).then(matchingMailId => !matchingMailId) }).then(inboxMails => { if (mails.length === count && inboxMails.length < mails.length) { //console.log("load more because of matching inbox rules") diff --git a/src/mail/view/MailView.ts b/src/mail/view/MailView.ts index ad3189a183..786fe661ee 100644 --- a/src/mail/view/MailView.ts +++ b/src/mail/view/MailView.ts @@ -7,15 +7,10 @@ import type {ButtonAttrs} from "../../gui/base/ButtonN" import {ButtonColor, ButtonN, ButtonType} from "../../gui/base/ButtonN" import type {NavButtonAttrs} from "../../gui/base/NavButtonN" import {isNavButtonSelected, isSelectedPrefix, NavButtonColor} from "../../gui/base/NavButtonN" -import {TutanotaService} from "../../api/entities/tutanota/Services" -import {serviceRequestVoid} from "../../api/main/ServiceRequest" import {createMailViewer, MailViewer} from "./MailViewer" import {Dialog} from "../../gui/base/Dialog" import {FeatureType, Keys, MailFolderType, OperationType} from "../../api/common/TutanotaConstants" import {CurrentView} from "../../gui/base/Header" -import {HttpMethod} from "../../api/common/EntityFunctions" -import {createDeleteMailFolderData} from "../../api/entities/tutanota/DeleteMailFolderData" -import {createDeleteMailData} from "../../api/entities/tutanota/DeleteMailData" import type {Mail} from "../../api/entities/tutanota/Mail" import {MailTypeRef} from "../../api/entities/tutanota/Mail" import type {lazy} from "@tutao/tutanota-utils" @@ -742,14 +737,12 @@ export class MailView implements CurrentView { throw new Error("Cannot delete non-custom folder: " + String(folder._id)) } - //TODO make DeleteMailFolderData unencrypted in next model version + // remove any selection to avoid that the next mail is loaded and selected for each deleted mail event this.mailList.list.selectNone() - let deleteMailFolderData = createDeleteMailFolderData() - deleteMailFolderData.folders.push(folder._id) - return serviceRequestVoid(TutanotaService.MailFolderService, HttpMethod.DELETE, deleteMailFolderData, undefined, "dummy" as any) - .catch(ofClass(NotFoundError, e => console.log("mail folder already deleted"))) - .catch(ofClass(PreconditionFailedError, e => Dialog.message("operationStillActive_msg"))) + return locator.mailModel.deleteFolder(folder) + .catch(ofClass(NotFoundError, e => console.log("mail folder already deleted"))) + .catch(ofClass(PreconditionFailedError, e => Dialog.message("operationStillActive_msg"))) } logout() { @@ -822,19 +815,17 @@ export class MailView implements CurrentView { return promptAndDeleteMails(locator.mailModel, mails, noOp) } - _finallyDeleteAllMailsInSelectedFolder(folder: MailFolder): Promise { + finallyDeleteAllMailsInSelectedFolder(folder: MailFolder): Promise { if (folder.folderType !== MailFolderType.TRASH && folder.folderType !== MailFolderType.SPAM) { throw new Error(`Cannot delete mails in folder ${String(folder._id)} with type ${folder.folderType}`) } // remove any selection to avoid that the next mail is loaded and selected for each deleted mail event this.mailList.list.selectNone() - let deleteMailData = createDeleteMailData() - deleteMailData.folder = folder._id + // The request will be handled async by server - return showProgressDialog("progressDeleting_msg", serviceRequestVoid(TutanotaService.MailService, HttpMethod.DELETE, deleteMailData)).catch( - ofClass(PreconditionFailedError, e => Dialog.message("operationStillActive_msg")), - ) + return showProgressDialog("progressDeleting_msg", locator.mailModel.clearFolder(folder)) + .catch(ofClass(PreconditionFailedError, e => Dialog.message("operationStillActive_msg"))) } entityEventReceived(update: EntityUpdateData): Promise { diff --git a/src/mail/view/MailViewer.ts b/src/mail/view/MailViewer.ts index 2e917aae8e..14365eb7b6 100644 --- a/src/mail/view/MailViewer.ts +++ b/src/mail/view/MailViewer.ts @@ -3,7 +3,6 @@ import m, {Children, Component, Vnode} from "mithril" import stream from "mithril/stream" import Stream from "mithril/stream" import {ExpanderButtonN, ExpanderPanelN} from "../../gui/base/Expander" -import {serviceRequestVoid} from "../../api/main/ServiceRequest" import {Button} from "../../gui/base/Button" import {formatDateTime, formatDateWithWeekday, formatStorageSize, formatTime, urlEncodeHtmlTags} from "../../misc/Formatter" import {windowFacade} from "../../misc/WindowFacade" @@ -74,9 +73,6 @@ import {CustomerTypeRef} from "../../api/entities/sys/Customer" import {LockedError, NotAuthorizedError, NotFoundError} from "../../api/common/error/RestError" import {BootIcons} from "../../gui/base/icons/BootIcons" import {theme} from "../../gui/theme" -import {TutanotaService} from "../../api/entities/tutanota/Services" -import {HttpMethod} from "../../api/common/EntityFunctions" -import {createListUnsubscribeData} from "../../api/entities/tutanota/ListUnsubscribeData" import {MailHeadersTypeRef} from "../../api/entities/tutanota/MailHeaders" import {client} from "../../misc/ClientDetector" import type {PosRect} from "../../gui/base/Dropdown" @@ -117,7 +113,7 @@ import {IndexingNotSupportedError} from "../../api/common/error/IndexingNotSuppo import {CancelledError} from "../../api/common/error/CancelledError" import type {ConfigurationDatabase} from "../../api/worker/facades/ConfigurationDatabase" import type {NativeInterface} from "../../native/common/NativeInterface" -import {copyToClipboard} from "../../misc/ClipboardUtils"; +import {copyToClipboard} from "../../misc/ClipboardUtils" assertMainOrNode() // map of inline image cid to InlineImageReference @@ -659,20 +655,15 @@ export class MailViewer implements Component { if (this.mail.headers) { return showProgressDialog( "pleaseWait_msg", - this._entityClient.load(MailHeadersTypeRef, this.mail.headers).then(mailHeaders => { - let headers = getMailHeaders(mailHeaders) + this._entityClient.load(MailHeadersTypeRef, this.mail.headers).then(async (mailHeaders) => { + const headers = getMailHeaders(mailHeaders) .split("\n") .filter(headerLine => headerLine.toLowerCase().startsWith("list-unsubscribe")) if (headers.length > 0) { - return this._getSenderOfResponseMail().then(recipient => { - const postData = createListUnsubscribeData({ - mail: this.mail._id, - recipient, - headers: headers.join("\n"), - }) - return serviceRequestVoid(TutanotaService.ListUnsubscribeService, HttpMethod.POST, postData).then(() => true) - }) + const recipient = await this._getSenderOfResponseMail() + await locator.mailModel.unsubscribe(this.mail, recipient, headers) + return true } else { return false } diff --git a/src/misc/UsageTestModel.ts b/src/misc/UsageTestModel.ts index 7309e0320c..88b21a7fd6 100644 --- a/src/misc/UsageTestModel.ts +++ b/src/misc/UsageTestModel.ts @@ -1,9 +1,5 @@ -import {createUsageTestAssignmentIn} from "../api/entities/sys/UsageTestAssignmentIn.js" -import {SysService} from "../api/entities/sys/Services.js" -import {HttpMethod} from "../api/common/EntityFunctions.js" -import {UsageTestAssignmentOutTypeRef} from "../api/entities/sys/UsageTestAssignmentOut.js" +import {UsageTestAssignmentOut} from "../api/entities/sys/UsageTestAssignmentOut.js" import {PingAdapter, Stage, UsageTest} from "@tutao/tutanota-usagetests" -import {serviceRequest} from "../api/main/ServiceRequest" import {createUsageTestParticipationIn} from "../api/entities/sys/UsageTestParticipationIn" import {UsageTestState} from "../api/common/TutanotaConstants" import {filterInt, ofClass} from "@tutao/tutanota-utils" @@ -14,6 +10,9 @@ import {SuspensionError} from "../api/common/error/SuspensionError" import {SuspensionBehavior} from "../api/worker/rest/RestClient" import {DateProvider} from "../api/common/DateProvider.js" import {isTest} from "../api/common/Env" +import {IServiceExecutor} from "../api/common/ServiceRequest" +import {createUsageTestAssignmentIn} from "../api/entities/sys/UsageTestAssignmentIn" +import {UsageTestAssignmentService, UsageTestParticipationService} from "../api/entities/sys/Services" export interface PersistedAssignmentData { updatedAt: number @@ -38,10 +37,6 @@ export const enum TtlBehavior { UpToDateOnly, } -export interface ServiceExecutor { - serviceRequest: typeof serviceRequest -} - const USAGE_TESTS_ENABLED = isTest() export class UsageTestModel implements PingAdapter { @@ -49,7 +44,7 @@ export class UsageTestModel implements PingAdapter { constructor( private readonly testStorage: UsageTestStorage, private readonly dateProvider: DateProvider, - private readonly serviceExecutor: ServiceExecutor, + private readonly serviceExecutor: IServiceExecutor, ) { } @@ -76,16 +71,13 @@ export class UsageTestModel implements PingAdapter { }) try { - const response = await this.serviceExecutor.serviceRequest( - SysService.UsageTestAssignmentService, - testDeviceId ? HttpMethod.PUT : HttpMethod.POST, - data, - UsageTestAssignmentOutTypeRef, - undefined, - undefined, - undefined, - SuspensionBehavior.Throw, - ) + const response: UsageTestAssignmentOut = (testDeviceId) + ? await this.serviceExecutor.put(UsageTestAssignmentService, data, { + suspensionBehavior: SuspensionBehavior.Throw, + }) + : await this.serviceExecutor.post(UsageTestAssignmentService, data, { + suspensionBehavior: SuspensionBehavior.Throw, + }) await this.testStorage.storeTestDeviceId(response.testDeviceId) await this.testStorage.storeAssignments({ assignments: response.assignments, @@ -141,7 +133,7 @@ export class UsageTestModel implements PingAdapter { testDeviceId: testDeviceId, }) - await this.serviceExecutor.serviceRequest(SysService.UsageTestParticipationService, HttpMethod.POST, data) + await this.serviceExecutor.post(UsageTestParticipationService, data) .catch(ofClass(PreconditionFailedError, (e) => { test.active = false console.log("Tried to send ping for paused test", e) diff --git a/src/settings/DomainDnsStatus.ts b/src/settings/DomainDnsStatus.ts index e9e04c6a09..a31ef9850b 100644 --- a/src/settings/DomainDnsStatus.ts +++ b/src/settings/DomainDnsStatus.ts @@ -1,13 +1,11 @@ import {createCustomDomainCheckData} from "../api/entities/sys/CustomDomainCheckData" -import {serviceRequest} from "../api/main/ServiceRequest" -import {SysService} from "../api/entities/sys/Services" -import {HttpMethod} from "../api/common/EntityFunctions" import type {CustomDomainCheckReturn} from "../api/entities/sys/CustomDomainCheckReturn" -import {CustomDomainCheckReturnTypeRef} from "../api/entities/sys/CustomDomainCheckReturn" import {CustomDomainCheckResult, DnsRecordType, DnsRecordValidation} from "../api/common/TutanotaConstants" import {LazyLoaded, noOp} from "@tutao/tutanota-utils" import {lang} from "../misc/LanguageViewModel" import {assertMainOrNode} from "../api/common/Env" +import {locator} from "../api/main/MainLocator" +import {CustomDomainCheckService} from "../api/entities/sys/Services" assertMainOrNode() @@ -20,7 +18,7 @@ export class DomainDnsStatus { this.status = new LazyLoaded(() => { let data = createCustomDomainCheckData() data.domain = cleanDomainName - return serviceRequest(SysService.CustomDomainCheckService, HttpMethod.GET, data, CustomDomainCheckReturnTypeRef) + return locator.serviceExecutor.get(CustomDomainCheckService, data) }) } diff --git a/src/settings/SettingsView.ts b/src/settings/SettingsView.ts index a9d23e9726..3e7aed73be 100644 --- a/src/settings/SettingsView.ts +++ b/src/settings/SettingsView.ts @@ -54,14 +54,12 @@ import {SettingsFolderRow} from "./SettingsFolderRow" import {isCustomizationEnabledForCustomer} from "../api/common/utils/Utils" import type {ReceivedGroupInvitation} from "../api/entities/sys/ReceivedGroupInvitation" import {showProgressDialog} from "../gui/dialogs/ProgressDialog" -import {serviceRequestVoid} from "../api/main/ServiceRequest" -import {TutanotaService} from "../api/entities/tutanota/Services" import {HttpMethod} from "../api/common/EntityFunctions" import {TextFieldN} from "../gui/base/TextFieldN" import {createGroupSettings} from "../api/entities/tutanota/GroupSettings" import {createUserAreaGroupDeleteData} from "../api/entities/tutanota/UserAreaGroupDeleteData" import {GroupInvitationFolderRow} from "../sharing/view/GroupInvitationFolderRow" -import type {NativeInterfaceMain} from "../native/main/NativeInterfaceMain" +import {TemplateGroupService} from "../api/entities/tutanota/Services" assertMainOrNode() @@ -425,13 +423,9 @@ export class SettingsView implements CurrentView { return getConfirmation("confirmDeleteTemplateGroup_msg").confirmed(() => showProgressDialog( "pleaseWait_msg", - serviceRequestVoid( - TutanotaService.TemplateGroupService, - HttpMethod.DELETE, - createUserAreaGroupDeleteData({ - group: templateInfo.groupInfo.group, - }), - ), + locator.serviceExecutor.delete(TemplateGroupService, createUserAreaGroupDeleteData({ + group: templateInfo.groupInfo.group, + })) ), ) } diff --git a/src/settings/whitelabel/WhitelabelSettingsViewer.ts b/src/settings/whitelabel/WhitelabelSettingsViewer.ts index 46dcb6a0a6..36fe52e76c 100644 --- a/src/settings/whitelabel/WhitelabelSettingsViewer.ts +++ b/src/settings/whitelabel/WhitelabelSettingsViewer.ts @@ -3,7 +3,6 @@ import {assertMainOrNode} from "../../api/common/Env" import {downcast, LazyLoaded, neverNull, noOp, promiseMap} from "@tutao/tutanota-utils" import type {Customer} from "../../api/entities/sys/Customer" import {CustomerTypeRef} from "../../api/entities/sys/Customer" -import {serviceRequest} from "../../api/main/ServiceRequest" import {getCustomMailDomains, getWhitelabelDomain} from "../../api/common/utils/Utils" import type {CustomerInfo} from "../../api/entities/sys/CustomerInfo" import {CustomerInfoTypeRef} from "../../api/entities/sys/CustomerInfo" @@ -24,7 +23,6 @@ import {CustomerPropertiesTypeRef} from "../../api/entities/sys/CustomerProperti import * as EditNotificationEmailDialog from "../EditNotificationEmailDialog" import {showBuyOrSetNotificationEmailDialog} from "../EditNotificationEmailDialog" import {isWhitelabelActive} from "../../subscription/SubscriptionUtils" -import {SysService} from "../../api/entities/sys/Services" import {BrandingDomainGetReturnTypeRef} from "../../api/entities/sys/BrandingDomainGetReturn" import type {DomainInfo} from "../../api/entities/sys/DomainInfo" import type {NotificationMailTemplate} from "../../api/entities/sys/NotificationMailTemplate" @@ -47,6 +45,7 @@ import {getThemeCustomizations} from "../../misc/WhitelabelCustomizations" import {EntityClient} from "../../api/common/EntityClient" import {locator} from "../../api/main/MainLocator" import {SelectorItem, SelectorItemList} from "../../gui/base/DropDownSelectorN"; +import {BrandingDomainService} from "../../api/entities/sys/Services" assertMainOrNode() @@ -300,7 +299,7 @@ export class WhitelabelSettingsViewer implements UpdatableSettingsViewer { if (domainInfo && domainInfo.whitelabelConfig) { return Promise.all([ locator.entityClient.load(WhitelabelConfigTypeRef, domainInfo.whitelabelConfig), - serviceRequest(SysService.BrandingDomainService, HttpMethod.GET, null, BrandingDomainGetReturnTypeRef).then(response => + locator.serviceExecutor.get(BrandingDomainService, null).then(response => neverNull(response.certificateInfo), ), ]).then(([whitelabelConfig, certificateInfo]) => ({ diff --git a/src/subscription/InvoiceDataInput.ts b/src/subscription/InvoiceDataInput.ts index 69a74e77bb..1d66322f90 100644 --- a/src/subscription/InvoiceDataInput.ts +++ b/src/subscription/InvoiceDataInput.ts @@ -5,15 +5,15 @@ import stream from "mithril/stream" import type {Country} from "../api/common/CountryList" import {Countries, CountryType} from "../api/common/CountryList" import {HtmlEditor, HtmlEditorMode} from "../gui/editor/HtmlEditor" -import {serviceRequest} from "../api/main/ServiceRequest" import {HttpMethod} from "../api/common/EntityFunctions" -import {SysService} from "../api/entities/sys/Services" import type {LocationServiceGetReturn} from "../api/entities/sys/LocationServiceGetReturn" import {LocationServiceGetReturnTypeRef} from "../api/entities/sys/LocationServiceGetReturn" import {createCountryDropdown} from "../gui/base/GuiUtils" import {TextFieldAttrs, TextFieldN} from "../gui/base/TextFieldN" import type {InvoiceData} from "../api/common/TutanotaConstants" import Stream from "mithril/stream"; +import {LocationService} from "../api/entities/sys/Services" +import {locator} from "../api/main/MainLocator" export class InvoiceDataInput { view: (...args: Array) => any @@ -53,7 +53,7 @@ export class InvoiceDataInput { ] this.oncreate = () => { - serviceRequest(SysService.LocationService, HttpMethod.GET, null, LocationServiceGetReturnTypeRef).then((location: LocationServiceGetReturn) => { + locator.serviceExecutor.get(LocationService, null).then((location: LocationServiceGetReturn) => { if (!this.selectedCountry()) { let country = Countries.find(c => c.a === location.country) diff --git a/src/subscription/PaymentDataDialog.ts b/src/subscription/PaymentDataDialog.ts index cf071c8fc1..43b4120657 100644 --- a/src/subscription/PaymentDataDialog.ts +++ b/src/subscription/PaymentDataDialog.ts @@ -11,15 +11,15 @@ import {formatNameAndAddress} from "../misc/Formatter" import {showProgressDialog} from "../gui/dialogs/ProgressDialog" import {getClientType, PaymentMethodType} from "../api/common/TutanotaConstants" import {LazyLoaded} from "@tutao/tutanota-utils" -import {serviceRequest} from "../api/main/ServiceRequest" import {PaymentDataServiceGetReturnTypeRef} from "../api/entities/sys/PaymentDataServiceGetReturn" -import {SysService} from "../api/entities/sys/Services" import {HttpMethod} from "../api/common/EntityFunctions" import {neverNull} from "@tutao/tutanota-utils" import type {AccountingInfo} from "../api/entities/sys/AccountingInfo" import {createPaymentDataServiceGetData} from "../api/entities/sys/PaymentDataServiceGetData" import type {Customer} from "../api/entities/sys/Customer" import {downcast} from "@tutao/tutanota-utils"; +import {locator} from "../api/main/MainLocator" +import {PaymentDataService} from "../api/entities/sys/Services" /** * @returns {boolean} true if the payment data update was successful @@ -117,14 +117,9 @@ export function show(customer: Customer, accountingInfo: AccountingInfo, price: export function getLazyLoadedPayPalUrl(): LazyLoaded { return new LazyLoaded(() => { const clientType = getClientType() - return serviceRequest( - SysService.PaymentDataService, - HttpMethod.GET, - createPaymentDataServiceGetData({ - clientType, - }), - PaymentDataServiceGetReturnTypeRef, - ).then(result => { + return locator.serviceExecutor.get(PaymentDataService, createPaymentDataServiceGetData({ + clientType, + })).then(result => { return result.loginUrl }) }) diff --git a/src/subscription/PaymentViewer.ts b/src/subscription/PaymentViewer.ts index a9ae8abc35..b6cae53517 100644 --- a/src/subscription/PaymentViewer.ts +++ b/src/subscription/PaymentViewer.ts @@ -1,7 +1,6 @@ import m, {Children} from "mithril" import {assertMainOrNode, isIOSApp} from "../api/common/Env" import {assertNotNull, neverNull, noOp, ofClass, promiseMap} from "@tutao/tutanota-utils" -import {serviceRequest, serviceRequestVoid} from "../api/main/ServiceRequest" import {lang} from "../misc/LanguageViewModel" import type {AccountingInfo} from "../api/entities/sys/AccountingInfo" import {AccountingInfoTypeRef} from "../api/entities/sys/AccountingInfo" @@ -9,7 +8,6 @@ import {HtmlEditor, HtmlEditorMode} from "../gui/editor/HtmlEditor" import {formatPrice, getPaymentMethodInfoText, getPaymentMethodName} from "./PriceUtils" import * as InvoiceDataDialog from "./InvoiceDataDialog" import {Icons} from "../gui/base/icons/Icons" -import {HttpMethod} from "../api/common/EntityFunctions" import {ColumnWidth, TableLineAttrs, TableN} from "../gui/base/TableN" import {ButtonN, ButtonType} from "../gui/base/ButtonN" import {formatDate, formatNameAndAddress} from "../misc/Formatter" @@ -17,19 +15,17 @@ import {getPaymentMethodType, PaymentMethodType, PostingType} from "../api/commo import {BadGatewayError, LockedError, PreconditionFailedError, TooManyRequestsError} from "../api/common/error/RestError" import {Dialog, DialogType} from "../gui/base/Dialog" import {createDebitServicePutData} from "../api/entities/sys/DebitServicePutData" -import {SysService} from "../api/entities/sys/Services" import {getByAbbreviation} from "../api/common/CountryList" import * as PaymentDataDialog from "./PaymentDataDialog" import {showProgressDialog} from "../gui/dialogs/ProgressDialog" import type {EntityUpdateData} from "../api/main/EventController" import {isUpdateForTypeRef} from "../api/main/EventController" import stream from "mithril/stream" +import Stream from "mithril/stream" import {getPreconditionFailedPaymentMsg} from "./SubscriptionUtils" import type {DialogHeaderBarAttrs} from "../gui/base/DialogHeaderBar" import {DialogHeaderBar} from "../gui/base/DialogHeaderBar" import {TextFieldN} from "../gui/base/TextFieldN" -import {AccountingService} from "../api/entities/accounting/Services" -import {CustomerAccountReturnTypeRef} from "../api/entities/accounting/CustomerAccountReturn" import type {Customer} from "../api/entities/sys/Customer" import {CustomerTypeRef} from "../api/entities/sys/Customer" import {logins} from "../api/main/LoginController" @@ -44,8 +40,9 @@ import type {Booking} from "../api/entities/sys/Booking" import {BookingTypeRef} from "../api/entities/sys/Booking" import {createNotAvailableForFreeClickHandler} from "../misc/SubscriptionDialogs" import type {UpdatableSettingsViewer} from "../settings/SettingsView" -import Stream from "mithril/stream"; import {TranslationKeyType} from "../misc/TranslationKey"; +import {CustomerAccountService} from "../api/entities/accounting/Services" +import {DebitService} from "../api/entities/sys/Services" assertMainOrNode() @@ -325,7 +322,7 @@ export class PaymentViewer implements UpdatableSettingsViewer { } _loadPostings(): Promise { - return serviceRequest(AccountingService.CustomerAccountService, HttpMethod.GET, null, CustomerAccountReturnTypeRef).then(result => { + return locator.serviceExecutor.get(CustomerAccountService, null).then(result => { this._postings = result.postings this._outstandingBookingsPrice = Number(result.outstandingBookingsPrice) m.redraw() @@ -370,32 +367,31 @@ export class PaymentViewer implements UpdatableSettingsViewer { return _showPayConfirmDialog(openBalance) .then(confirmed => { if (confirmed) { - let service = createDebitServicePutData() return showProgressDialog( "pleaseWait_msg", - serviceRequestVoid(SysService.DebitService, HttpMethod.PUT, service) - .then(() => { - // accounting is updated async but we know that the balance will be 0 when the payment was successful. - let mostCurrentPosting = this._postings[0] - let newPosting = createCustomerAccountPosting({ - valueDate: new Date(), - amount: String(-Number.parseFloat(mostCurrentPosting.balance)), - balance: "0", - type: PostingType.Payment, - }) + locator.serviceExecutor.put(DebitService, createDebitServicePutData()) + .then(() => { + // accounting is updated async but we know that the balance will be 0 when the payment was successful. + let mostCurrentPosting = this._postings[0] + let newPosting = createCustomerAccountPosting({ + valueDate: new Date(), + amount: String(-Number.parseFloat(mostCurrentPosting.balance)), + balance: "0", + type: PostingType.Payment, + }) - this._postings.unshift(newPosting) + this._postings.unshift(newPosting) - m.redraw() - }) - .catch(ofClass(LockedError, () => "operationStillActive_msg")) - .catch( - ofClass(PreconditionFailedError, error => { - return getPreconditionFailedPaymentMsg(error.data) - }), - ) - .catch(ofClass(BadGatewayError, () => "paymentProviderNotAvailableError_msg")) - .catch(ofClass(TooManyRequestsError, () => "tooManyAttempts_msg")), + m.redraw() + }) + .catch(ofClass(LockedError, () => "operationStillActive_msg")) + .catch( + ofClass(PreconditionFailedError, error => { + return getPreconditionFailedPaymentMsg(error.data) + }), + ) + .catch(ofClass(BadGatewayError, () => "paymentProviderNotAvailableError_msg")) + .catch(ofClass(TooManyRequestsError, () => "tooManyAttempts_msg")), ) } }) diff --git a/src/subscription/SignOrderProcessingAgreementDialog.ts b/src/subscription/SignOrderProcessingAgreementDialog.ts index 6576f3c2a8..80d2fcbffb 100644 --- a/src/subscription/SignOrderProcessingAgreementDialog.ts +++ b/src/subscription/SignOrderProcessingAgreementDialog.ts @@ -4,16 +4,16 @@ import {lang} from "../misc/LanguageViewModel" import {assertMainOrNode, isApp} from "../api/common/Env" import {formatDate, formatNameAndAddress} from "../misc/Formatter" import {HtmlEditor, HtmlEditorMode} from "../gui/editor/HtmlEditor" -import {serviceRequestVoid} from "../api/main/ServiceRequest" import {HttpMethod} from "../api/common/EntityFunctions" import {createSignOrderProcessingAgreementData} from "../api/entities/sys/SignOrderProcessingAgreementData" -import {SysService} from "../api/entities/sys/Services" import {getDisplayText} from "../mail/model/MailUtils" import {neverNull} from "@tutao/tutanota-utils" import type {OrderProcessingAgreement} from "../api/entities/sys/OrderProcessingAgreement" import type {GroupInfo} from "../api/entities/sys/GroupInfo" import type {Customer} from "../api/entities/sys/Customer" import type {AccountingInfo} from "../api/entities/sys/AccountingInfo" +import {locator} from "../api/main/MainLocator" +import {SignOrderProcessingAgreementService} from "../api/entities/sys/Services" assertMainOrNode() const PRINT_DIV_ID = "print-div" @@ -47,7 +47,7 @@ export function showForSigning(customer: Customer, accountingInfo: AccountingInf if (addressEditor.getValue().trim().split("\n").length < 3) { Dialog.message("contractorInfo_msg") } else { - serviceRequestVoid(SysService.SignOrderProcessingAgreementService, HttpMethod.POST, data).then(() => dialog.close()) + locator.serviceExecutor.post(SignOrderProcessingAgreementService, data).then(() => dialog.close()) } } diff --git a/src/subscription/SignupForm.ts b/src/subscription/SignupForm.ts index c379228473..ed2da0308f 100644 --- a/src/subscription/SignupForm.ts +++ b/src/subscription/SignupForm.ts @@ -22,14 +22,13 @@ import {showWorkerProgressDialog} from "../gui/dialogs/ProgressDialog" import {AccessDeactivatedError, AccessExpiredError, InvalidDataError} from "../api/common/error/RestError" import {createRegistrationCaptchaServiceGetData} from "../api/entities/sys/RegistrationCaptchaServiceGetData" import {deviceConfig} from "../misc/DeviceConfig" -import {serviceRequest, serviceRequestVoid} from "../api/main/ServiceRequest" -import {SysService} from "../api/entities/sys/Services" import {HttpMethod} from "../api/common/EntityFunctions" import {RegistrationCaptchaServiceReturnTypeRef} from "../api/entities/sys/RegistrationCaptchaServiceReturn" import {createRegistrationCaptchaServiceData} from "../api/entities/sys/RegistrationCaptchaServiceData" import {locator} from "../api/main/MainLocator" import {deleteCampaign} from "../misc/LoginUtils" import {CURRENT_PRIVACY_VERSION, CURRENT_TERMS_VERSION, renderTermsAndConditionsButton, TermsSection} from "./TermsAndConditions" +import {RegistrationCaptchaService} from "../api/entities/sys/Services" export type SignupFormAttrs = { /** Handle a new account signup. if readonly then the argument will always be null */ @@ -224,13 +223,16 @@ function runCaptcha( campaignToken: string | null, ): Promise { let captchaInput = "" - let data = createRegistrationCaptchaServiceGetData() - data.token = campaignToken - data.mailAddress = mailAddress - data.signupToken = deviceConfig.getSignupToken() - data.businessUseSelected = isBusinessUse - data.paidSubscriptionSelected = isPaidSubscription - return serviceRequest(SysService.RegistrationCaptchaService, HttpMethod.GET, data, RegistrationCaptchaServiceReturnTypeRef) + + return locator + .serviceExecutor + .get(RegistrationCaptchaService, createRegistrationCaptchaServiceGetData({ + token: campaignToken, + mailAddress, + signupToken: deviceConfig.getSignupToken(), + businessUseSelected: isBusinessUse, + paidSubscriptionSelected: isPaidSubscription, + })) .then(captchaReturn => { let regDataId = captchaReturn.token @@ -247,11 +249,11 @@ function runCaptcha( let parsedInput = parseCaptchaInput(captchaInput) if (parsedInput) { - let data = createRegistrationCaptchaServiceData() - data.token = captchaReturn.token - data.response = parsedInput dialog.close() - serviceRequestVoid(SysService.RegistrationCaptchaService, HttpMethod.POST, data) + + locator + .serviceExecutor + .post(RegistrationCaptchaService, createRegistrationCaptchaServiceData({token: captchaReturn.token, response: parsedInput})) .then(() => { resolve(captchaReturn.token) }) diff --git a/src/subscription/SubscriptionUtils.ts b/src/subscription/SubscriptionUtils.ts index 89191da0c2..afa35751e7 100644 --- a/src/subscription/SubscriptionUtils.ts +++ b/src/subscription/SubscriptionUtils.ts @@ -8,13 +8,13 @@ import type {Customer} from "../api/entities/sys/Customer" import type {CustomerInfo} from "../api/entities/sys/CustomerInfo" import type {Booking} from "../api/entities/sys/Booking" import {createBookingServiceData} from "../api/entities/sys/BookingServiceData" -import {serviceRequestVoid} from "../api/main/ServiceRequest" -import {SysService} from "../api/entities/sys/Services" import {HttpMethod} from "../api/common/EntityFunctions" import {Dialog} from "../gui/base/Dialog" import {ProgrammingError} from "../api/common/error/ProgrammingError" import {ofClass} from "@tutao/tutanota-utils" import Stream from "mithril/stream"; +import {locator} from "../api/main/MainLocator" +import {BookingService} from "../api/entities/sys/Services" export type SubscriptionOptions = { businessUse: Stream @@ -416,7 +416,7 @@ export function bookItem(featureType: BookingItemFeatureType, amount: number): P featureType, date: Const.CURRENT_DATE, }) - return serviceRequestVoid(SysService.BookingService, HttpMethod.POST, bookingData) + return locator.serviceExecutor.post(BookingService, bookingData) .then(() => false) .catch( ofClass(PreconditionFailedError, error => { diff --git a/src/subscription/SubscriptionViewer.ts b/src/subscription/SubscriptionViewer.ts index f8f06e0669..2689ff057f 100644 --- a/src/subscription/SubscriptionViewer.ts +++ b/src/subscription/SubscriptionViewer.ts @@ -6,7 +6,6 @@ import {CustomerTypeRef} from "../api/entities/sys/Customer" import {assertNotNull, downcast, incrementDate, neverNull, noOp, ofClass, promiseMap} from "@tutao/tutanota-utils" import type {CustomerInfo} from "../api/entities/sys/CustomerInfo" import {CustomerInfoTypeRef} from "../api/entities/sys/CustomerInfo" -import {serviceRequest} from "../api/main/ServiceRequest" import {logins} from "../api/main/LoginController" import {lang, TranslationKey} from "../misc/LanguageViewModel" import {Button} from "../gui/base/Button" @@ -19,7 +18,6 @@ import {formatDate, formatNameAndAddress, formatStorageSize} from "../misc/Forma import {getByAbbreviation} from "../api/common/CountryList" import type {Booking} from "../api/entities/sys/Booking" import {BookingTypeRef} from "../api/entities/sys/Booking" -import {SysService} from "../api/entities/sys/Services" import {MailAddressAliasServiceReturnTypeRef} from "../api/entities/sys/MailAddressAliasServiceReturn" import * as AddUserDialog from "../settings/AddUserDialog" import * as EmailAliasOptionsDialog from "./EmailAliasOptionsDialog" @@ -75,6 +73,7 @@ import { renderTermsAndConditionsButton, TermsSection } from "./TermsAndConditions" +import {MailAddressAliasService} from "../api/entities/sys/Services" assertMainOrNode() const DAY = 1000 * 60 * 60 * 24 @@ -637,7 +636,7 @@ export class SubscriptionViewer implements UpdatableSettingsViewer { return Promise.resolve() } else { - return serviceRequest(SysService.MailAddressAliasService, HttpMethod.GET, null, MailAddressAliasServiceReturnTypeRef) + return locator.serviceExecutor.get(MailAddressAliasService, null) .then(aliasServiceReturn => { this._emailAliasFieldValue( lang.get("amountUsedAndActivatedOf_label", { diff --git a/src/subscription/SwitchSubscriptionDialog.ts b/src/subscription/SwitchSubscriptionDialog.ts index 013b6c5a7c..7f53831fff 100644 --- a/src/subscription/SwitchSubscriptionDialog.ts +++ b/src/subscription/SwitchSubscriptionDialog.ts @@ -2,8 +2,6 @@ import m, {Component} from "mithril" import {Dialog} from "../gui/base/Dialog" import {lang} from "../misc/LanguageViewModel" import {ButtonN, ButtonType} from "../gui/base/ButtonN" -import {serviceRequestVoid} from "../api/main/ServiceRequest" -import {SysService} from "../api/entities/sys/Services" import {HttpMethod} from "../api/common/EntityFunctions" import {createSwitchAccountTypeData} from "../api/entities/sys/SwitchAccountTypeData" import { @@ -50,6 +48,7 @@ import type {AccountingInfo} from "../api/entities/sys/AccountingInfo" import type {Booking} from "../api/entities/sys/Booking" import {ofClass} from "@tutao/tutanota-utils" import {locator} from "../api/main/MainLocator" +import {SwitchAccountTypeService} from "../api/entities/sys/Services" /** * Only shown if the user is already a Premium user. Allows cancelling the subscription (only private use) and switching the subscription to a different paid subscription. @@ -157,7 +156,9 @@ function cancelSubscription(dialog: Dialog, currentSubscriptionInfo: CurrentSubs return } - return serviceRequestVoid(SysService.SwitchAccountTypeService, HttpMethod.POST, d) + return locator + .serviceExecutor + .post(SwitchAccountTypeService, d) .then(() => locator.customerFacade.switchPremiumToFreeGroup()) .catch( ofClass(PreconditionFailedError, e => { diff --git a/src/subscription/UpgradeConfirmPage.ts b/src/subscription/UpgradeConfirmPage.ts index dcbc499dbe..21b1e70102 100644 --- a/src/subscription/UpgradeConfirmPage.ts +++ b/src/subscription/UpgradeConfirmPage.ts @@ -6,8 +6,6 @@ import {formatPriceWithInfo, getPaymentMethodName, isYearlyPayment} from "./Pric import {HabReminderImage} from "../gui/base/icons/Icons" import {createSwitchAccountTypeData} from "../api/entities/sys/SwitchAccountTypeData" import {AccountType, Const, PaidSubscriptionType} from "../api/common/TutanotaConstants" -import {SysService} from "../api/entities/sys/Services" -import {serviceRequestVoid} from "../api/main/ServiceRequest" import {showProgressDialog} from "../gui/dialogs/ProgressDialog" import {HttpMethod} from "../api/common/EntityFunctions" import type {UpgradeSubscriptionData} from "./UpgradeSubscriptionWizard" @@ -23,6 +21,7 @@ import {TextFieldN} from "../gui/base/TextFieldN" import {ofClass} from "@tutao/tutanota-utils" import {locator} from "../api/main/MainLocator" import {deleteCampaign} from "../misc/LoginUtils" +import {SwitchAccountTypeService} from "../api/entities/sys/Services" export class UpgradeConfirmPage implements WizardPageN { private dom!: HTMLElement @@ -51,14 +50,15 @@ export class UpgradeConfirmPage implements WizardPageN } private upgrade(data: UpgradeSubscriptionData) { - const serviceData = createSwitchAccountTypeData() - serviceData.accountType = AccountType.PREMIUM - serviceData.subscriptionType = this.subscriptionTypeToPaidSubscriptionType(data.type) - serviceData.date = Const.CURRENT_DATE - serviceData.campaign = data.campaign + const serviceData = createSwitchAccountTypeData({ + accountType: AccountType.PREMIUM, + subscriptionType: this.subscriptionTypeToPaidSubscriptionType(data.type), + date: Const.CURRENT_DATE, + campaign: data.campaign, + }) showProgressDialog( "pleaseWait_msg", - serviceRequestVoid(SysService.SwitchAccountTypeService, HttpMethod.POST, serviceData).then(() => { + locator.serviceExecutor.post(SwitchAccountTypeService, serviceData).then(() => { return locator.customerFacade.switchFreeToPremiumGroup() }), ) diff --git a/src/subscription/UpgradeSubscriptionWizard.ts b/src/subscription/UpgradeSubscriptionWizard.ts index 0abb747cc8..b7ecea29de 100644 --- a/src/subscription/UpgradeSubscriptionWizard.ts +++ b/src/subscription/UpgradeSubscriptionWizard.ts @@ -5,7 +5,6 @@ import type {CustomerInfo} from "../api/entities/sys/CustomerInfo" import {CustomerInfoTypeRef} from "../api/entities/sys/CustomerInfo" import type {AccountingInfo} from "../api/entities/sys/AccountingInfo" import {AccountingInfoTypeRef} from "../api/entities/sys/AccountingInfo" -import {serviceRequest} from "../api/main/ServiceRequest" import {logins} from "../api/main/LoginController" import type {InvoiceData, PaymentData} from "../api/common/TutanotaConstants" import {Const, getPaymentMethodType, PaymentMethodType as PaymentMethod} from "../api/common/TutanotaConstants" @@ -18,7 +17,6 @@ import {SubscriptionType, UpgradeType} from "./SubscriptionUtils" import stream from "mithril/stream" import {HttpMethod} from "../api/common/EntityFunctions" import {createUpgradePriceServiceData} from "../api/entities/sys/UpgradePriceServiceData" -import {SysService} from "../api/entities/sys/Services" import type {UpgradePriceServiceReturn} from "../api/entities/sys/UpgradePriceServiceReturn" import {UpgradePriceServiceReturnTypeRef} from "../api/entities/sys/UpgradePriceServiceReturn" import type {TranslationKey} from "../misc/LanguageViewModel" @@ -33,6 +31,7 @@ import type {Hex} from "@tutao/tutanota-utils" import {getCampaignFromLocalStorage} from "../misc/LoginUtils" import {locator} from "../api/main/MainLocator" import {TtlBehavior} from "../misc/UsageTestModel" +import {UpgradePriceService} from "../api/entities/sys/Services" assertMainOrNode() export type SubscriptionParameters = { @@ -74,10 +73,11 @@ export type UpgradeSubscriptionData = { } export function loadUpgradePrices(campaign: string | null): Promise { - let data = createUpgradePriceServiceData() - data.date = Const.CURRENT_DATE - data.campaign = campaign - return serviceRequest(SysService.UpgradePriceService, HttpMethod.GET, data, UpgradePriceServiceReturnTypeRef) + const data = createUpgradePriceServiceData({ + date: Const.CURRENT_DATE, + campaign, + }) + return locator.serviceExecutor.get(UpgradePriceService, data) } function loadCustomerAndInfo(): Promise<{ diff --git a/src/subscription/giftcards/GiftCardUtils.ts b/src/subscription/giftcards/GiftCardUtils.ts index 49985e40af..8bceb40776 100644 --- a/src/subscription/giftcards/GiftCardUtils.ts +++ b/src/subscription/giftcards/GiftCardUtils.ts @@ -13,8 +13,6 @@ import {UserError} from "../../api/main/UserError" import {Dialog} from "../../gui/base/Dialog" import {ButtonN, ButtonType} from "../../gui/base/ButtonN" import {htmlSanitizer} from "../../misc/HtmlSanitizer" -import {serviceRequest} from "../../api/main/ServiceRequest" -import {SysService} from "../../api/entities/sys/Services" import {px} from "../../gui/size" import type {Base64, lazy} from "@tutao/tutanota-utils" import {assertNotNull, base64ExtToBase64, base64ToBase64Ext, base64ToBase64Url, base64UrlToBase64, neverNull, ofClass} from "@tutao/tutanota-utils" @@ -36,6 +34,7 @@ import {HttpMethod} from "../../api/common/EntityFunctions" import {formatPrice} from "../PriceUtils" import Stream from "mithril/stream"; import {CURRENT_GIFT_CARD_TERMS_VERSION, renderTermsAndConditionsButton, TermsSection} from "../TermsAndConditions" +import {LocationService} from "../../api/entities/sys/Services" const ID_LENGTH = GENERATED_MAX_ID.length const KEY_LENGTH = 24 @@ -64,7 +63,7 @@ export function redeemGiftCard( getConfirmation: (arg0: TranslationKey | lazy) => Promise, ): Promise { // Check that the country matches - return serviceRequest(SysService.LocationService, HttpMethod.GET, null, LocationServiceGetReturnTypeRef) + return locator.serviceExecutor.get(LocationService, null) .then(userLocation => { const validCountry = getByAbbreviation(validCountryCode) diff --git a/src/subscription/giftcards/PurchaseGiftCardDialog.ts b/src/subscription/giftcards/PurchaseGiftCardDialog.ts index a49e6fafd3..590edf3a12 100644 --- a/src/subscription/giftcards/PurchaseGiftCardDialog.ts +++ b/src/subscription/giftcards/PurchaseGiftCardDialog.ts @@ -1,7 +1,6 @@ import m, {Children, Component, Vnode} from "mithril" import stream from "mithril/stream" import {Dialog} from "../../gui/base/Dialog" -import {serviceRequest} from "../../api/main/ServiceRequest" import {logins} from "../../api/main/LoginController" import type {AccountingInfo} from "../../api/entities/sys/AccountingInfo" import {showProgressDialog} from "../../gui/dialogs/ProgressDialog" @@ -9,7 +8,6 @@ import {GiftCardTypeRef} from "../../api/entities/sys/GiftCard" import {locator} from "../../api/main/MainLocator" import type {Country} from "../../api/common/CountryList" import {getByAbbreviation} from "../../api/common/CountryList" -import {SysService} from "../../api/entities/sys/Services" import {HttpMethod} from "../../api/common/EntityFunctions" import {GiftCardGetReturnTypeRef} from "../../api/entities/sys/GiftCardGetReturn" import type {GiftCardOption} from "../../api/entities/sys/GiftCardOption" @@ -37,6 +35,7 @@ import {formatPrice, getSubscriptionPrice} from "../PriceUtils" import {ofClass} from "@tutao/tutanota-utils" import type {lazy} from "@tutao/tutanota-utils" import Stream from "mithril/stream"; +import {GiftCardService} from "../../api/entities/sys/Services" export type GiftCardPurchaseViewAttrs = { purchaseLimit: number @@ -217,7 +216,7 @@ export function showPurchaseGiftCardDialog(): Promise { }) .then(() => Promise.all([ - serviceRequest(SysService.GiftCardService, HttpMethod.GET, null, GiftCardGetReturnTypeRef), + locator.serviceExecutor.get(GiftCardService, null), logins.getUserController().loadCustomerInfo(), loadUpgradePrices(null), // do not pass in any campaign here because the gift card prices should be based on default prices. ]), diff --git a/src/types.d.ts b/src/types.d.ts index b075f3c824..56dfb4ce4f 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -14,7 +14,6 @@ declare type WorkerRequestType = | 'testEcho' | 'testError' | 'restRequest' - | 'serviceRequest' | 'entropy' | 'tryReconnectEventBus' | 'closeEventBus' diff --git a/test/api/Suite.ts b/test/api/Suite.ts index 7c9c3461ec..f19c1e4cee 100644 --- a/test/api/Suite.ts +++ b/test/api/Suite.ts @@ -33,6 +33,7 @@ import "../api/common/PlainTextSearchTest" import "../api/common/EntityUtilsTest" import "./rest/CborDateEncoderTest.js" import "./worker/utils/SleepDetectorTest.js" +import "./worker/rest/ServiceExecutorTest.js" import {preTest, reportTest} from "./TestUtils" import {random} from "@tutao/tutanota-crypto" diff --git a/test/api/crypto/CryptoFacadeTest.ts b/test/api/crypto/CryptoFacadeTest.ts index 6df424aaa5..71a3eb2e2f 100644 --- a/test/api/crypto/CryptoFacadeTest.ts +++ b/test/api/crypto/CryptoFacadeTest.ts @@ -4,7 +4,6 @@ import { downcast, hexToUint8Array, isSameTypeRef, - lazy, neverNull, stringToUtf8Uint8Array, uint8ArrayToBase64, @@ -20,16 +19,16 @@ import * as Contact from "../../../src/api/entities/tutanota/Contact" import {createContact} from "../../../src/api/entities/tutanota/Contact" import * as UserIdReturn from "../../../src/api/entities/sys/UserIdReturn" import {createUserIdReturn} from "../../../src/api/entities/sys/UserIdReturn" -import {createPermission} from "../../../src/api/entities/sys/Permission" +import {createPermission, PermissionTypeRef} from "../../../src/api/entities/sys/Permission" import {createBucket} from "../../../src/api/entities/sys/Bucket" -import {createGroup} from "../../../src/api/entities/sys/Group" +import {createGroup, GroupTypeRef} from "../../../src/api/entities/sys/Group" import {createKeyPair} from "../../../src/api/entities/sys/KeyPair" import {BucketPermissionTypeRef, createBucketPermission} from "../../../src/api/entities/sys/BucketPermission" import {createUser} from "../../../src/api/entities/sys/User" import {createGroupMembership} from "../../../src/api/entities/sys/GroupMembership" import {createContactAddress} from "../../../src/api/entities/tutanota/ContactAddress" import {MailAddressTypeRef} from "../../../src/api/entities/tutanota/MailAddress" -import {assertThrows, mockAttribute, unmockAttribute} from "@tutao/tutanota-test-utils" +import {assertThrows} from "@tutao/tutanota-test-utils" import {LoginFacadeImpl} from "../../../src/api/worker/facades/LoginFacade" import {createBirthday} from "../../../src/api/entities/tutanota/Birthday" import {RestClient} from "../../../src/api/worker/rest/RestClient" @@ -53,8 +52,11 @@ import {RsaWeb} from "../../../src/api/worker/crypto/RsaImplementation" import {decryptValue, encryptValue, InstanceMapper} from "../../../src/api/worker/crypto/InstanceMapper" import {locator} from "../../../src/api/worker/WorkerLocator" import type {ModelValue} from "../../../src/api/common/EntityTypes" -import {HttpMethod} from "../../../src/api/common/EntityFunctions"; -import {serviceRequest, serviceRequestVoid} from "../../../src/api/worker/ServiceRequestWorker" +import {IServiceExecutor} from "../../../src/api/common/ServiceRequest" +import {matchers, object, verify, when} from "testdouble" +import {UpdatePermissionKeyService} from "../../../src/api/entities/sys/Services" +import {UpdatePermissionKeyData} from "../../../src/api/entities/sys/UpdatePermissionKeyData" +import {getListId, isSameId} from "../../../src/api/common/utils/EntityUtils" const rsa = new RsaWeb() const rsaEncrypt = rsa.encrypt @@ -66,27 +68,41 @@ o.spec("crypto facade", function () { let login let restClient let instanceMapper = new InstanceMapper() - - function createCrypto(entityClient) { - const crypto = new CryptoFacadeImpl( - login, - entityClient ?? new EntityClient(new EntityRestClientMock()), - restClient, - rsa, - ) - locator.crypto = crypto - return crypto - } + let serviceExecutor: IServiceExecutor + let entityClient: EntityClient + let crypto: CryptoFacade o.before(function () { const suspensionHandler = downcast({}) restClient = new RestClient(suspensionHandler) - login = new LoginFacadeImpl(null as any, {serviceRequest, serviceRequestVoid}, restClient, downcast({}), downcast({}), instanceMapper, {} as lazy, async () => {}) + login = new LoginFacadeImpl( + object(), + restClient, + object(), + downcast({}), + instanceMapper, + () => object(), + async () => {}, + serviceExecutor, + ) locator.login = login locator.restClient = restClient locator.rsa = rsa locator.instanceMapper = instanceMapper }) + + o.beforeEach(function () { + serviceExecutor = object() + entityClient = object() + crypto = new CryptoFacadeImpl( + login, + entityClient, + restClient, + rsa, + serviceExecutor, + ) + }) + o.afterEach(function () { login.resetSession() }) @@ -669,16 +685,12 @@ o.spec("crypto facade", function () { }) }) - o("resolve session key: unencrypted instance", function () { - let userIdLiteral = { + o("resolve session key: unencrypted instance", async function () { + const userIdLiteral = { _format: "0", userId: "KOBqO7a----0", } - return createCrypto(null) - .resolveSessionKey(UserIdReturn._TypeModel, userIdLiteral) - .then(sessionKey => { - o(sessionKey).equals(null) - }) + o(await crypto.resolveSessionKey(UserIdReturn._TypeModel, userIdLiteral)).equals(null) }) o("resolve session key: _ownerEncSessionKey instance", async function () { @@ -692,11 +704,14 @@ o.spec("crypto facade", function () { ownerGroupId: gk, } login._user = createUser() - login._user.userGroup = { + login._user.userGroup = createGroupMembership({ group: "ownerGroupId", - } as any - let mail = createMailLiteral(gk, sk, subject, confidential, senderName, recipientName) - const sessionKey: Aes128Key = neverNull(await createCrypto(null).resolveSessionKey(MailTypeModel, mail)) + }) + const mail = createMailLiteral(gk, sk, subject, confidential, senderName, recipientName) + + + const sessionKey: Aes128Key = neverNull(await crypto.resolveSessionKey(MailTypeModel, mail)) + o(sessionKey).deepEquals(sk) }) @@ -712,62 +727,58 @@ o.spec("crypto facade", function () { let bk = aes128RandomKey() let privateKey = hexToPrivateKey(rsaPrivateHexKey) let publicKey = hexToPublicKey(rsaPublicHexKey) - let keyPair = createKeyPair() - keyPair._id = "keyPairId" - keyPair.symEncPrivKey = encryptRsaKey(gk, privateKey) - keyPair.pubKey = hexToUint8Array(rsaPublicHexKey) - let userGroup = createGroup() - userGroup._id = "userGroupId" - userGroup.keys = [keyPair] - let mail = createMailLiteral(gk, sk, subject, confidential, senderName, recipientName) + const keyPair = createKeyPair({ + _id: "keyPairId", + symEncPrivKey: encryptRsaKey(gk, privateKey), + pubKey: hexToUint8Array(rsaPublicHexKey) + }) + const userGroup = createGroup({ + _id: "userGroupId", + keys: [keyPair] + }) + const mail = createMailLiteral(gk, sk, subject, confidential, senderName, recipientName) // @ts-ignore mail._ownerEncSessionKey = null - let bucket = createBucket() - bucket.bucketPermissions = "bucketPermissionListId" - let permission = createPermission() - permission.bucketEncSessionKey = encryptKey(bk, sk) - permission._id = ["permissionListId", "permissionId"] - permission.bucket = bucket - permission.type = PermissionType.Public - permission._ownerGroup = userGroup._id + const bucket = createBucket({ + bucketPermissions: "bucketPermissionListId" + }) + const permission = createPermission({ + _id: ["permissionListId", "permissionId"], + _ownerGroup: userGroup._id, + bucketEncSessionKey: encryptKey(bk, sk), + bucket, + type: PermissionType.Public, + }) const pubEncBucketKey = await rsaEncrypt(publicKey, bitArrayToUint8Array(bk)) - let bucketPermission = createBucketPermission() - bucketPermission.pubEncBucketKey = pubEncBucketKey - bucketPermission.type = BucketPermissionType.Public - bucketPermission._id = ["bucketPermissionListId", "bucketPermissionId"] - bucketPermission._ownerGroup = userGroup._id - bucketPermission.group = userGroup._id - let mem = createGroupMembership() - mem.group = userGroup._id + const bucketPermission = createBucketPermission({ + _id: ["bucketPermissionListId", "bucketPermissionId"], + _ownerGroup: userGroup._id, + type: BucketPermissionType.Public, + group: userGroup._id, + pubEncBucketKey, + }) + const mem = createGroupMembership({ + group: userGroup._id, + }) + login._user = createUser() login._user.userGroup = mem login.groupKeys["userGroupId"] = gk login._leaderStatus = createWebsocketLeaderStatus({ leaderStatus: true, }) - const entityClient = downcast({ - loadAll: o.spy(async (typeRef, ...rest) => - isSameTypeRef(BucketPermissionTypeRef, typeRef) ? [bucketPermission] : [permission], - ), - load: o.spy(async () => userGroup), - }) - // mock the invocation of UpdatePermissionKeyService - const updateMock = mockAttribute(restClient, restClient.request, () => Promise.resolve()) + when(entityClient.loadAll(BucketPermissionTypeRef, getListId(bucketPermission))).thenResolve([bucketPermission]) + when(entityClient.loadAll(PermissionTypeRef, getListId(permission))).thenResolve([permission]) + when(entityClient.load(GroupTypeRef, userGroup._id)).thenResolve(userGroup) + when(serviceExecutor.post(UpdatePermissionKeyService, matchers.argThat((p: UpdatePermissionKeyData) => { + console.log("KEY DATA", p) + return isSameId(p.permission, permission._id) && + isSameId(p.bucketPermission, bucketPermission._id) + }))).thenResolve(undefined) - try { - const sessionKey = neverNull(await createCrypto(entityClient).resolveSessionKey(MailTypeModel, mail)) - o(sessionKey).deepEquals(sk) - o((restClient.request as any).callCount).equals(1) - o(entityClient.loadAll.callCount).equals(2) - o(entityClient.loadAll.calls.map(call => call.args[1])).deepEquals([ - permission._id[0], - bucketPermission._id[0], - ]) - o(entityClient.load.callCount).equals(1) - o(entityClient.load.args[1]).equals(userGroup._id) - } finally { - unmockAttribute(updateMock) - } + const sessionKey = neverNull(await crypto.resolveSessionKey(MailTypeModel, mail)) + + o(sessionKey).deepEquals(sk) }) o("decryption errors should be written to _errors field", async function () { @@ -785,129 +796,117 @@ o.spec("crypto facade", function () { }) o.spec("instance migrations", function () { - var mock - let entityClient o.beforeEach(function () { - const updateMock = ( - typeRef, - method: HttpMethod, - listId: Id | null | undefined, - id: Id | null | undefined, - entity, - ) => { - return Promise.resolve() - } + when(entityClient.update(matchers.anything())).thenResolve(undefined) + }) + o("contact migration without birthday", async function () { + const contact = createContact() + + const migratedContact = await crypto.applyMigrationsForInstance(contact) + + o(migratedContact.birthdayIso).equals(null) + verify(entityClient.update(matchers.anything()), {times: 0}) - entityClient = new EntityClient(new EntityRestClientMock()) - mock = mockAttribute(entityClient, entityClient.update, updateMock) - }) - o.afterEach(function () { - unmockAttribute(mock) - }) - o("contact migration without birthday", function () { - const contact = createContact() - return createCrypto(entityClient) - .applyMigrationsForInstance(contact) - .then(migratedContact => { - o(migratedContact.birthdayIso).equals(null) - o(entityClient.update.callCount).equals(0) - }) - }) - o("contact migration without existing birthday", function () { - const contact = createContact() - contact.birthdayIso = "2019-05-01" - return createCrypto(entityClient) - .applyMigrationsForInstance(contact) - .then(migratedContact => { - o(migratedContact.birthdayIso).equals("2019-05-01") - o(entityClient.update.callCount).equals(0) - }) - }) - o("contact migration without existing birthday and oldBirthdayDate", function () { - const contact = createContact() - contact._id = ["listid", "id"] - contact.birthdayIso = "2019-05-01" - contact.oldBirthdayDate = new Date(2000, 4, 1) - return createCrypto(entityClient) - .applyMigrationsForInstance(contact) - .then(migratedContact => { - o(migratedContact.birthdayIso).equals("2019-05-01") - o(migratedContact.oldBirthdayAggregate).equals(null) - o(migratedContact.oldBirthdayDate).equals(null) - o(entityClient.update.callCount).equals(1) - }) }) - o("contact migration with existing birthday and oldBirthdayAggregate", function () { - const contact = createContact() - contact._id = ["listid", "id"] - contact.birthdayIso = "2019-05-01" - contact.oldBirthdayAggregate = createBirthday() - contact.oldBirthdayAggregate.day = "01" - contact.oldBirthdayAggregate.month = "05" - contact.oldBirthdayAggregate.year = "2000" - return createCrypto(entityClient) - .applyMigrationsForInstance(contact) - .then(migratedContact => { - o(migratedContact.birthdayIso).equals("2019-05-01") - o(migratedContact.oldBirthdayAggregate).equals(null) - o(migratedContact.oldBirthdayDate).equals(null) - o(entityClient.update.callCount).equals(1) - }) + o("contact migration without existing birthday", async function () { + const contact = createContact({ + birthdayIso: "2019-05-01", + }) + + const migratedContact = await crypto.applyMigrationsForInstance(contact) + + o(migratedContact.birthdayIso).equals("2019-05-01") + verify(entityClient.update(matchers.anything()), {times: 0}) }) - o("contact migration from oldBirthdayAggregate", function () { - const contact = createContact() - contact._id = ["listid", "id"] - contact.birthdayIso = null - contact.oldBirthdayAggregate = createBirthday() - contact.oldBirthdayAggregate.day = "01" - contact.oldBirthdayAggregate.month = "05" - contact.oldBirthdayAggregate.year = "2000" - contact.oldBirthdayDate = new Date(1800, 4, 1) - return createCrypto(entityClient) - .applyMigrationsForInstance(contact) - .then(migratedContact => { - o(migratedContact.birthdayIso).equals("2000-05-01") - o(migratedContact.oldBirthdayAggregate).equals(null) - o(migratedContact.oldBirthdayDate).equals(null) - o(entityClient.update.callCount).equals(1) - }) + o("contact migration without existing birthday and oldBirthdayDate", async function () { + const contact = createContact({ + _id: ["listid", "id"], + birthdayIso: "2019-05-01", + oldBirthdayDate: new Date(2000, 4, 1) + }) + + const migratedContact = await crypto.applyMigrationsForInstance(contact) + o(migratedContact.birthdayIso).equals("2019-05-01") + o(migratedContact.oldBirthdayAggregate).equals(null) + o(migratedContact.oldBirthdayDate).equals(null) + verify(entityClient.update(matchers.anything()), {times: 1}) }) - o("contact migration from oldBirthdayDate", function () { - const contact = createContact() - contact._id = ["listid", "id"] - contact.birthdayIso = null - contact.oldBirthdayAggregate = null - contact.oldBirthdayDate = new Date(1800, 4, 1) - return createCrypto(entityClient) - .applyMigrationsForInstance(contact) - .then(migratedContact => { - o(migratedContact.birthdayIso).equals("1800-05-01") - o(migratedContact.oldBirthdayAggregate).equals(null) - o(migratedContact.oldBirthdayDate).equals(null) - o(entityClient.update.callCount).equals(1) + o("contact migration with existing birthday and oldBirthdayAggregate", async function () { + const contact = createContact({ + _id: ["listid", "id"], + birthdayIso: "2019-05-01", + oldBirthdayAggregate: createBirthday({ + day: "01", + month: "05", + year: "2000", }) + }) + + const migratedContact = await crypto.applyMigrationsForInstance(contact) + + o(migratedContact.birthdayIso).equals("2019-05-01") + o(migratedContact.oldBirthdayAggregate).equals(null) + o(migratedContact.oldBirthdayDate).equals(null) + verify(entityClient.update(matchers.anything()), {times: 1}) }) - o("contact migration from oldBirthdayAggregate without year", function () { - const contact = createContact() - contact._id = ["listid", "id"] - contact.birthdayIso = null - contact.oldBirthdayAggregate = createBirthday() - contact.oldBirthdayAggregate.day = "01" - contact.oldBirthdayAggregate.month = "05" - contact.oldBirthdayAggregate.year = null - contact.oldBirthdayDate = null - return createCrypto(entityClient) - .applyMigrationsForInstance(contact) - .then(migratedContact => { - o(migratedContact.birthdayIso).equals("--05-01") - o(migratedContact.oldBirthdayAggregate).equals(null) - o(migratedContact.oldBirthdayDate).equals(null) - o(entityClient.update.callCount).equals(1) + o("contact migration from oldBirthdayAggregate", async function () { + const contact = createContact({ + _id: ["listid", "id"], + oldBirthdayDate: new Date(1800, 4, 1), + oldBirthdayAggregate: createBirthday({ + day: "01", + month: "05", + year: "2000", }) + }) + + const migratedContact = await crypto.applyMigrationsForInstance(contact) + + o(migratedContact.birthdayIso).equals("2000-05-01") + o(migratedContact.oldBirthdayAggregate).equals(null) + o(migratedContact.oldBirthdayDate).equals(null) + verify(entityClient.update(matchers.anything()), {times: 1}) + }) + + o("contact migration from oldBirthdayDate", async function () { + const contact = createContact({ + _id: ["listid", "id"], + birthdayIso: null, + oldBirthdayDate: new Date(1800, 4, 1), + oldBirthdayAggregate: null, + }) + + const migratedContact = await crypto.applyMigrationsForInstance(contact) + + o(migratedContact.birthdayIso).equals("1800-05-01") + o(migratedContact.oldBirthdayAggregate).equals(null) + o(migratedContact.oldBirthdayDate).equals(null) + verify(entityClient.update(matchers.anything()), {times: 1}) + }) + + o("contact migration from oldBirthdayAggregate without year", async function () { + const contact = createContact({ + _id: ["listid", "id"], + birthdayIso: null, + oldBirthdayDate: null, + oldBirthdayAggregate: createBirthday({ + day: "01", + month: "05", + year: null + }), + }) + + const migratedContact = await crypto.applyMigrationsForInstance(contact) + + o(migratedContact.birthdayIso).equals("--05-01") + o(migratedContact.oldBirthdayAggregate).equals(null) + o(migratedContact.oldBirthdayDate).equals(null) + verify(entityClient.update(matchers.anything()), {times: 1}) + }) }) }) \ No newline at end of file diff --git a/test/api/rest/EntityRestCacheTest.ts b/test/api/rest/EntityRestCacheTest.ts index 128ba51f0d..924c5ceda5 100644 --- a/test/api/rest/EntityRestCacheTest.ts +++ b/test/api/rest/EntityRestCacheTest.ts @@ -18,12 +18,12 @@ import {assertThrows, mockAttribute, unmockAttribute} from "@tutao/tutanota-test import {createPermission, PermissionTypeRef} from "../../../src/api/entities/sys/Permission" import {EphemeralCacheStorage} from "../../../src/api/worker/rest/EphemeralCacheStorage" import {QueuedBatch} from "../../../src/api/worker/search/EventQueue" -import {offlineDatabaseTestKey} from "../../client/desktop/db/OfflineDbTest" import {matchers, object, when} from "testdouble" import {OfflineStorage} from "../../../src/api/worker/rest/OfflineStorage" const {anything} = matchers +const offlineDatabaseTestKey = [3957386659, 354339016, 3786337319, 3366334248] async function getOfflineStorage(userId: Id): Promise { const {OfflineDbFacade} = await import("../../../src/desktop/db/OfflineDbFacade.js") diff --git a/test/api/worker/facades/CalendarFacadeTest.ts b/test/api/worker/facades/CalendarFacadeTest.ts index 54e8a68d64..e9a0a6a991 100644 --- a/test/api/worker/facades/CalendarFacadeTest.ts +++ b/test/api/worker/facades/CalendarFacadeTest.ts @@ -24,6 +24,8 @@ import {PushIdentifierTypeRef} from "../../../../src/api/entities/sys/PushIdenti import {SetupMultipleError} from "../../../../src/api/common/error/SetupMultipleError" import {InstanceMapper} from "../../../../src/api/worker/crypto/InstanceMapper" import {GroupManagementFacadeImpl} from "../../../../src/api/worker/facades/GroupManagementFacade"; +import {object} from "testdouble" +import {IServiceExecutor} from "../../../../src/api/common/ServiceRequest" o.spec("CalendarFacadeTest", async function () { @@ -45,6 +47,7 @@ o.spec("CalendarFacadeTest", async function () { let workerMock let nativeMock let instanceMapper + let serviceExecutor: IServiceExecutor function sortEventsWithAlarmInfos(eventsWithAlarmInfos: Array) { @@ -112,7 +115,8 @@ o.spec("CalendarFacadeTest", async function () { invokeNative: o.spy(() => Promise.resolve()) }) instanceMapper = new InstanceMapper() - calendarFacade = new CalendarFacade(loginFacade, groupManagementFacade, entityRestCache, nativeMock, workerMock, instanceMapper) + serviceExecutor = object() + calendarFacade = new CalendarFacade(loginFacade, groupManagementFacade, entityRestCache, nativeMock, workerMock, instanceMapper, serviceExecutor) }) diff --git a/test/api/worker/facades/LoginFacadeTest.ts b/test/api/worker/facades/LoginFacadeTest.ts index 33f80d817b..a0c8c22a6a 100644 --- a/test/api/worker/facades/LoginFacadeTest.ts +++ b/test/api/worker/facades/LoginFacadeTest.ts @@ -8,9 +8,7 @@ import {CryptoFacade, encryptString} from "../../../../src/api/worker/crypto/Cry import {LateInitializedCacheStorage} from "../../../../src/api/worker/rest/CacheStorageProxy" import {func, instance, matchers, object, verify, when} from "testdouble" import {SessionType} from "../../../../src/api/common/SessionType" -import {ServiceRestInterface} from "../../../../src/api/worker/rest/ServiceRestInterface" import {HttpMethod} from "../../../../src/api/common/EntityFunctions" -import {SysService} from "../../../../src/api/entities/sys/Services" import {createCreateSessionReturn} from "../../../../src/api/entities/sys/CreateSessionReturn" import type {SecondFactorAuthHandler} from "../../../../src/misc/2fa/SecondFactorHandler.js" import {createSaltReturn} from "../../../../src/api/entities/sys/SaltReturn" @@ -22,6 +20,8 @@ import {Indexer} from "../../../../src/api/worker/search/Indexer" import {EventBusClient} from "../../../../src/api/worker/EventBusClient" import {Credentials} from "../../../../src/misc/credentials/Credentials" import {uint8ArrayToBase64} from "@tutao/tutanota-utils" +import {IServiceExecutor} from "../../../../src/api/common/ServiceRequest" +import {SaltService, SessionService} from "../../../../src/api/entities/sys/Services" const {anything} = matchers @@ -45,23 +45,23 @@ function makeUser({id, passphrase, salt}) { o.spec("LoginFacadeTest", function () { - let facade: LoginFacadeImpl, - workerMock: WorkerImpl, - serviceMock: ServiceRestInterface, - restClientMock: RestClient, - entityClientMock: EntityClient, - secondFactorAuthHandlerMock: SecondFactorAuthHandler, - instanceMapperMock: InstanceMapper, - cryptoFacadeMock: CryptoFacade, - initializeCacheStorageMock: LateInitializedCacheStorage["initialize"], - indexerMock: Indexer, - eventBusClientMock: EventBusClient + let facade: LoginFacadeImpl + let workerMock: WorkerImpl + let serviceExecutor: IServiceExecutor + let restClientMock: RestClient + let entityClientMock: EntityClient + let secondFactorAuthHandlerMock: SecondFactorAuthHandler + let instanceMapperMock: InstanceMapper + let cryptoFacadeMock: CryptoFacade + let initializeCacheStorageMock: LateInitializedCacheStorage["initialize"] + let indexerMock: Indexer + let eventBusClientMock: EventBusClient o.beforeEach(function () { workerMock = instance(WorkerImpl) - serviceMock = object() - when(serviceMock.serviceRequest(SysService.SaltService, HttpMethod.GET, anything(), anything())) + serviceExecutor = object() + when(serviceExecutor.get(SaltService, anything()), {ignoreExtraArgs: true}) .thenResolve(createSaltReturn({salt: SALT})) restClientMock = instance(RestClient) @@ -75,13 +75,13 @@ o.spec("LoginFacadeTest", function () { facade = new LoginFacadeImpl( workerMock, - serviceMock, restClientMock, entityClientMock, secondFactorAuthHandlerMock, instanceMapperMock, () => cryptoFacadeMock, - initializeCacheStorageMock + initializeCacheStorageMock, + serviceExecutor, ) indexerMock = instance(Indexer) @@ -97,7 +97,7 @@ o.spec("LoginFacadeTest", function () { const userId = "userId" o.beforeEach(function () { - when(serviceMock.serviceRequest(SysService.SessionService, HttpMethod.POST, anything(), anything())) + when(serviceExecutor.post(SessionService, anything()), {ignoreExtraArgs: true}) .thenResolve(createCreateSessionReturn({user: userId, accessToken: "accessToken", challenges: []})) when(entityClientMock.load(UserTypeRef, userId)).thenResolve(makeUser({ id: userId, diff --git a/test/api/worker/facades/MailFacadeTest.ts b/test/api/worker/facades/MailFacadeTest.ts index b5bca8afb5..6aec87aac0 100644 --- a/test/api/worker/facades/MailFacadeTest.ts +++ b/test/api/worker/facades/MailFacadeTest.ts @@ -5,12 +5,28 @@ import {createMail} from "../../../../src/api/entities/tutanota/Mail" import {createMailAddress} from "../../../../src/api/entities/tutanota/MailAddress" import {MailAuthenticationStatus, ReportedMailFieldType} from "../../../../src/api/common/TutanotaConstants" import {createPhishingMarker} from "../../../../src/api/entities/tutanota/PhishingMarker" +import {object} from "testdouble" +import {CryptoFacade} from "../../../../src/api/worker/crypto/CryptoFacade" +import {IServiceExecutor} from "../../../../src/api/common/ServiceRequest" +import {LoginFacade, LoginFacadeImpl} from "../../../../src/api/worker/facades/LoginFacade" +import {FileFacade} from "../../../../src/api/worker/facades/FileFacade" +import {EntityClient} from "../../../../src/api/common/EntityClient" o.spec("MailFacade test", function () { let facade: MailFacade - const cryptoFacade = downcast({}) + let loginFacade: LoginFacadeImpl + let cryptoFacade: CryptoFacade + let serviceExecutor: IServiceExecutor + let fileFacade: FileFacade + let entity: EntityClient + o.beforeEach(function () { - facade = new MailFacade(downcast({}), downcast({}), downcast({}), cryptoFacade) + loginFacade = object() + fileFacade = object() + entity = object() + cryptoFacade = object() + serviceExecutor = object() + facade = new MailFacade(loginFacade, fileFacade, entity, cryptoFacade, serviceExecutor) }) o.spec("checkMailForPhishing", function () { diff --git a/test/api/worker/rest/ServiceExecutorTest.ts b/test/api/worker/rest/ServiceExecutorTest.ts new file mode 100644 index 0000000000..935e42cf29 --- /dev/null +++ b/test/api/worker/rest/ServiceExecutorTest.ts @@ -0,0 +1,443 @@ +import o from "ospec" +import {ServiceExecutor} from "../../../../src/api/worker/rest/ServiceExecutor.js" +import {RestClient, RestClientOptions} from "../../../../src/api/worker/rest/RestClient" +import {InstanceMapper} from "../../../../src/api/worker/crypto/InstanceMapper" +import {CryptoFacade} from "../../../../src/api/worker/crypto/CryptoFacade" +import {matchers, object, when} from "testdouble" +import {DeleteService, GetService, PostService, PutService} from "../../../../src/api/common/ServiceRequest" +import {createSaltData, SaltDataTypeRef} from "../../../../src/api/entities/sys/SaltData" +import {HttpMethod, MediaType, resolveTypeReference} from "../../../../src/api/common/EntityFunctions" +import {deepEqual} from "@tutao/tutanota-utils" +import {assertThrows, verify} from "@tutao/tutanota-test-utils" +import {createGiftCardCreateData, GiftCardCreateDataTypeRef} from "../../../../src/api/entities/sys/GiftCardCreateData" +import {ProgrammingError} from "../../../../src/api/common/error/ProgrammingError" + +const {anything} = matchers + +o.spec("ServiceExecutor", function () { + const service = { + app: "testapp", + name: "testservice", + } + let restClient: RestClient + let authHeaders: Record + let instanceMapper: InstanceMapper + let cryptoFacade: CryptoFacade + let executor: ServiceExecutor + + o.beforeEach(function () { + restClient = object() + authHeaders = {} + instanceMapper = object() + cryptoFacade = object() + executor = new ServiceExecutor( + restClient, + () => authHeaders, + instanceMapper, + () => cryptoFacade, + ) + }) + + function respondWith(response) { + when(restClient.request(anything(), anything()), {ignoreExtraArgs: true}) + .thenResolve(response) + } + + o.spec("GET", function () { + o("encrypts data", async function () { + const getService: GetService = { + ...service, + get: { + data: SaltDataTypeRef, + return: null, + } + } + const data = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.encryptAndMapToLiteral(saltTypeModel, data, null)) + .thenResolve(literal) + + respondWith(undefined) + + const response = await executor.get(getService, data) + + o(response).equals(undefined) + verify( + restClient.request( + "/rest/testapp/testservice", + HttpMethod.GET, + matchers.argThat((params: RestClientOptions) => params.body === `{"literal":true}`), + ), + ) + }) + + o("decrypts response data", async function () { + const getService: GetService = { + ...service, + get: { + data: null, + return: SaltDataTypeRef, + }, + } + const returnData = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.decryptAndMapToInstance(saltTypeModel, literal, null)) + .thenResolve(returnData) + + respondWith(`{"literal":true}`) + + const response = await executor.get(getService, null) + + o(response).equals(returnData) + verify( + restClient.request("/rest/testapp/testservice", HttpMethod.GET, matchers.argThat((p) => p.responseType === MediaType.Json)) + ) + }) + }) + + o.spec("POST", function () { + o("encrypts data", async function () { + const postService: PostService = { + ...service, + post: { + data: SaltDataTypeRef, + return: null, + } + } + const data = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.encryptAndMapToLiteral(saltTypeModel, data, null)) + .thenResolve(literal) + + respondWith(undefined) + + const response = await executor.post(postService, data) + + o(response).equals(undefined) + verify( + restClient.request( + "/rest/testapp/testservice", + HttpMethod.POST, + matchers.argThat((params: RestClientOptions) => params.body === `{"literal":true}`), + ), + ) + }) + + o("decrypts response data", async function () { + const postService: PostService = { + ...service, + post: { + data: null, + return: SaltDataTypeRef, + }, + } + const returnData = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.decryptAndMapToInstance(saltTypeModel, literal, null)) + .thenResolve(returnData) + + respondWith(`{"literal":true}`) + + const response = await executor.post(postService, null) + + o(response).equals(returnData) + verify( + restClient.request("/rest/testapp/testservice", HttpMethod.POST, matchers.argThat((p) => p.responseType === MediaType.Json)) + ) + }) + }) + + o.spec("PUT", function () { + o("encrypts data", async function () { + const putService: PutService = { + ...service, + put: { + data: SaltDataTypeRef, + return: null, + } + } + const data = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.encryptAndMapToLiteral(saltTypeModel, data, null)) + .thenResolve(literal) + + respondWith(undefined) + + const response = await executor.put(putService, data) + + o(response).equals(undefined) + verify( + restClient.request( + "/rest/testapp/testservice", + HttpMethod.PUT, + matchers.argThat((params: RestClientOptions) => params.body === `{"literal":true}`), + ), + ) + }) + + o("decrypts response data", async function () { + const putService: PutService = { + ...service, + put: { + data: null, + return: SaltDataTypeRef, + }, + } + const returnData = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.decryptAndMapToInstance(saltTypeModel, literal, null)) + .thenResolve(returnData) + + respondWith(`{"literal":true}`) + + const response = await executor.put(putService, null) + + o(response).equals(returnData) + verify( + restClient.request("/rest/testapp/testservice", HttpMethod.PUT, matchers.argThat((p) => p.responseType === MediaType.Json)) + ) + }) + }) + + o.spec("DELETE", function () { + o("encrypts data", async function () { + const deleteService: DeleteService = { + ...service, + delete: { + data: SaltDataTypeRef, + return: null, + } + } + const data = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.encryptAndMapToLiteral(saltTypeModel, data, null)) + .thenResolve(literal) + + respondWith(undefined) + + const response = await executor.delete(deleteService, data) + + o(response).equals(undefined) + verify( + restClient.request( + "/rest/testapp/testservice", + HttpMethod.DELETE, + matchers.argThat((params: RestClientOptions) => params.body === `{"literal":true}`), + ), + ) + }) + + o("decrypts response data", async function () { + const deleteService: DeleteService = { + ...service, + delete: { + data: null, + return: SaltDataTypeRef, + }, + } + const returnData = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.decryptAndMapToInstance(saltTypeModel, literal, null)) + .thenResolve(returnData) + + respondWith(`{"literal":true}`) + + const response = await executor.delete(deleteService, null) + + o(response).equals(returnData) + verify( + restClient.request("/rest/testapp/testservice", HttpMethod.DELETE, matchers.argThat((p) => p.responseType === MediaType.Json)) + ) + }) + }) + + + o.spec("params", async function () { + o("adds query params", async function () { + const getService: GetService = { + ...service, + get: { + data: SaltDataTypeRef, + return: null, + } + } + const data = createSaltData({mailAddress: "test"}) + const query = Object.freeze({myQueryParam: "2"}) + when(instanceMapper.encryptAndMapToLiteral(anything(), anything(), anything())) + .thenResolve({}) + respondWith(undefined) + + const response = await executor.get(getService, data, {queryParams: query}) + + o(response).equals(undefined) + verify( + restClient.request( + "/rest/testapp/testservice", + HttpMethod.GET, + matchers.argThat((opts: RestClientOptions) => deepEqual(opts.queryParams, query)) + ) + ) + }) + + o("adds extra headers", async function () { + const getService: GetService = { + ...service, + get: { + data: SaltDataTypeRef, + return: null, + } + } + const data = createSaltData({mailAddress: "test"}) + const headers = Object.freeze({myHeader: "2"}) + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.encryptAndMapToLiteral(anything(), anything(), anything())) + .thenResolve({}) + respondWith(undefined) + + const response = await executor.get(getService, data, {extraHeaders: headers}) + + o(response).equals(undefined) + + verify( + restClient.request( + "/rest/testapp/testservice", + HttpMethod.GET, + matchers.argThat((opts: RestClientOptions) => deepEqual(opts.headers, {v: saltTypeModel.version, myHeader: "2"})) + ) + ) + }) + + o("adds auth headers", async function () { + const getService: GetService = { + ...service, + get: { + data: SaltDataTypeRef, + return: null, + } + } + const data = createSaltData({mailAddress: "test"}) + const accessToken = "myAccessToken" + authHeaders = {accessToken} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + when(instanceMapper.encryptAndMapToLiteral(anything(), anything(), anything())) + .thenResolve({}) + respondWith(undefined) + + const response = await executor.get(getService, data) + + o(response).equals(undefined) + verify( + restClient.request( + "/rest/testapp/testservice", + HttpMethod.GET, + matchers.argThat((opts: RestClientOptions) => deepEqual(opts.headers, {v: saltTypeModel.version, accessToken})) + ) + ) + }) + }) + + o.spec("keys", function () { + o("uses resolved key to decrypt response", async function () { + const getService: GetService = { + ...service, + get: { + data: null, + return: SaltDataTypeRef, + }, + } + const returnData = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + const sessionKey = [1, 2, 3] + when(cryptoFacade.resolveServiceSessionKey(saltTypeModel, literal)).thenResolve(sessionKey) + when(instanceMapper.decryptAndMapToInstance(saltTypeModel, literal, sessionKey)) + .thenResolve(returnData) + + respondWith(`{"literal":true}`) + + const response = await executor.get(getService, null) + + o(response).equals(returnData) + verify( + restClient.request("/rest/testapp/testservice", HttpMethod.GET, matchers.argThat((p) => p.responseType === MediaType.Json)) + ) + }) + + o("uses passed key to decrypt response", async function () { + const getService: GetService = { + ...service, + get: { + data: null, + return: SaltDataTypeRef, + }, + } + const returnData = createSaltData({mailAddress: "test"}) + const literal = {literal: true} + const saltTypeModel = await resolveTypeReference(SaltDataTypeRef) + const sessionKey = [1, 2, 3] + when(cryptoFacade.resolveServiceSessionKey(saltTypeModel, literal)).thenResolve(null) + when(instanceMapper.decryptAndMapToInstance(saltTypeModel, literal, sessionKey)) + .thenResolve(returnData) + + respondWith(`{"literal":true}`) + + const response = await executor.get(getService, null, {sessionKey}) + + o(response).equals(returnData) + verify( + restClient.request("/rest/testapp/testservice", HttpMethod.GET, matchers.argThat((p) => p.responseType === MediaType.Json)) + ) + }) + + o("uses passed key to encrypt request data", async function () { + const getService: GetService = { + ...service, + get: { + data: GiftCardCreateDataTypeRef, + return: null, + }, + } + const giftCardCreateData = createGiftCardCreateData({message: "test"}) + const dataTypeModel = await resolveTypeReference(GiftCardCreateDataTypeRef) + const sessionKey = [1, 2, 3] + const encrypted = {encrypted: true} + when(instanceMapper.encryptAndMapToLiteral(dataTypeModel, giftCardCreateData, sessionKey)) + .thenResolve(encrypted) + + respondWith(undefined) + + const response = await executor.get(getService, giftCardCreateData, {sessionKey}) + + o(response).equals(undefined) + verify( + restClient.request("/rest/testapp/testservice", HttpMethod.GET, matchers.argThat((p) => p.body === `{"encrypted":true}`)) + ) + }) + + o("when data is encrypted and the key is not passed it throws", async function () { + const getService: GetService = { + ...service, + get: { + data: GiftCardCreateDataTypeRef, + return: null, + }, + } + const giftCardCreateData = createGiftCardCreateData({message: "test"}) + + assertThrows(ProgrammingError, () => executor.get(getService, giftCardCreateData)) + + verify( + restClient.request(anything(), anything()), + {ignoreExtraArgs: true, times: 0}, + ) + }) + }) +}) \ No newline at end of file diff --git a/test/client/desktop/db/OfflineDbTest.ts b/test/client/desktop/db/OfflineDbTest.ts index cbd7361ee5..17f25c221a 100644 --- a/test/client/desktop/db/OfflineDbTest.ts +++ b/test/client/desktop/db/OfflineDbTest.ts @@ -17,7 +17,7 @@ export const offlineDatabaseTestKey = [3957386659, 354339016, 3786337319, 336633 // Added by sqliteNativeBannerPlugin const nativePath = globalThis.buildOptions.sqliteNativePath -o.spec("Offline DB ", function () { +o.spec("OfflineDb ", function () { let db: OfflineDb const listId = "listId" // they are diff --git a/test/client/misc/UsageTestModelTest.ts b/test/client/misc/UsageTestModelTest.ts index e4734ae40b..f4c6a21ff4 100644 --- a/test/client/misc/UsageTestModelTest.ts +++ b/test/client/misc/UsageTestModelTest.ts @@ -1,23 +1,16 @@ import o from "ospec" -import { - ASSIGNMENT_UPDATE_INTERVAL_MS, - PersistedAssignmentData, - ServiceExecutor, - TtlBehavior, - UsageTestModel, - UsageTestStorage -} from "../../../src/misc/UsageTestModel" +import {ASSIGNMENT_UPDATE_INTERVAL_MS, PersistedAssignmentData, TtlBehavior, UsageTestModel, UsageTestStorage} from "../../../src/misc/UsageTestModel" import {createUsageTestAssignment} from "../../../src/api/entities/sys/UsageTestAssignment" import {matchers, object, verify, when} from "testdouble" -import {SysService} from "../../../src/api/entities/sys/Services" -import {HttpMethod} from "../../../src/api/common/EntityFunctions" import {createUsageTestAssignmentIn} from "../../../src/api/entities/sys/UsageTestAssignmentIn" -import {createUsageTestAssignmentOut, UsageTestAssignmentOutTypeRef} from "../../../src/api/entities/sys/UsageTestAssignmentOut" +import {createUsageTestAssignmentOut} from "../../../src/api/entities/sys/UsageTestAssignmentOut" import {clone} from "@tutao/tutanota-utils" import {Stage, UsageTest} from "@tutao/tutanota-usagetests" import {createUsageTestParticipationIn} from "../../../src/api/entities/sys/UsageTestParticipationIn" import {createUsageTestMetricData} from "../../../src/api/entities/sys/UsageTestMetricData" import {SuspensionBehavior} from "../../../src/api/worker/rest/RestClient" +import {UsageTestAssignmentService, UsageTestParticipationService} from "../../../src/api/entities/sys/Services" +import {IServiceExecutor} from "../../../src/api/common/ServiceRequest" const {anything} = matchers @@ -50,7 +43,7 @@ class MockStorage implements UsageTestStorage { o.spec("UsageTestModel", function () { let usageTestModel: UsageTestModel - let serviceExecutor: ServiceExecutor + let serviceExecutor: IServiceExecutor let mockStorage: MockStorage const testDeviceId = "123testDeviceId321" @@ -101,21 +94,15 @@ o.spec("UsageTestModel", function () { o.spec("usage test model loading assignments", function () { o("when there's no deviceId it does POST", async function () { - when(serviceExecutor.serviceRequest( - SysService.UsageTestAssignmentService, - HttpMethod.POST, - createUsageTestAssignmentIn({}), - UsageTestAssignmentOutTypeRef, - undefined, - undefined, - undefined, - SuspensionBehavior.Throw, - )).thenResolve( + when(serviceExecutor.post(UsageTestAssignmentService, createUsageTestAssignmentIn({}), { + suspensionBehavior: SuspensionBehavior.Throw, + })).thenResolve( createUsageTestAssignmentOut({ assignments: [newAssignment], testDeviceId: testDeviceId, }) ) + const result = await usageTestModel.loadActiveUsageTests(TtlBehavior.PossiblyOutdated) await assertStored(result, newAssignment) }) @@ -128,16 +115,10 @@ o.spec("UsageTestModel", function () { sysModelVersion: 1, // definitely outdated! updatedAt: dateProvider.now() - 1, }) - when(serviceExecutor.serviceRequest( - SysService.UsageTestAssignmentService, - HttpMethod.PUT, - createUsageTestAssignmentIn({testDeviceId}), - UsageTestAssignmentOutTypeRef, - undefined, - undefined, - undefined, - SuspensionBehavior.Throw, - )).thenResolve( + + when(serviceExecutor.put(UsageTestAssignmentService, createUsageTestAssignmentIn({testDeviceId}), { + suspensionBehavior: SuspensionBehavior.Throw, + })).thenResolve( createUsageTestAssignmentOut({ assignments: [newAssignment], testDeviceId: testDeviceId, @@ -149,21 +130,15 @@ o.spec("UsageTestModel", function () { }) o("possibly outdated, loads from server and stores if nothing is stored", async function () { - when(serviceExecutor.serviceRequest( - SysService.UsageTestAssignmentService, - HttpMethod.PUT, - createUsageTestAssignmentIn({testDeviceId}), - UsageTestAssignmentOutTypeRef, - undefined, - undefined, - undefined, - SuspensionBehavior.Throw, - )).thenResolve( + when(serviceExecutor.put(UsageTestAssignmentService, createUsageTestAssignmentIn({testDeviceId}), { + suspensionBehavior: SuspensionBehavior.Throw, + })).thenResolve( createUsageTestAssignmentOut({ assignments: [newAssignment], testDeviceId: testDeviceId, }) ) + await mockStorage.storeTestDeviceId(testDeviceId) const result = await usageTestModel.loadActiveUsageTests(TtlBehavior.PossiblyOutdated) @@ -183,16 +158,10 @@ o.spec("UsageTestModel", function () { o("up to date only, data outdated, loads from the server and stores", async function () { await mockStorage.storeTestDeviceId(testDeviceId) await mockStorage.storeAssignments(assignmentData) - when(serviceExecutor.serviceRequest( - SysService.UsageTestAssignmentService, - HttpMethod.PUT, - createUsageTestAssignmentIn({testDeviceId}), - UsageTestAssignmentOutTypeRef, - undefined, - undefined, - undefined, - SuspensionBehavior.Throw, - )).thenResolve( + + when(serviceExecutor.put(UsageTestAssignmentService, createUsageTestAssignmentIn({testDeviceId}), { + suspensionBehavior: SuspensionBehavior.Throw, + })).thenResolve( createUsageTestAssignmentOut({ assignments: [newAssignment], testDeviceId: testDeviceId, @@ -227,20 +196,20 @@ o.spec("UsageTestModel", function () { } stage.setMetric(metric) - when(serviceExecutor.serviceRequest( - SysService.UsageTestParticipationService, - HttpMethod.POST, - createUsageTestParticipationIn({ - testId: usageTest.testId, - metrics: [createUsageTestMetricData(metric)], - stage: stage.number.toString(), - testDeviceId: testDeviceId, - }), - )).thenResolve(undefined) + when(serviceExecutor.post( + UsageTestParticipationService, + createUsageTestParticipationIn({ + testId: usageTest.testId, + metrics: [createUsageTestMetricData(metric)], + stage: stage.number.toString(), + testDeviceId: testDeviceId, + }) + ) + ).thenResolve(undefined) await usageTestModel.sendPing(usageTest, stage) - verify(serviceExecutor.serviceRequest(SysService.UsageTestParticipationService, anything(), anything()), {times: 1}) + verify(serviceExecutor.post(UsageTestParticipationService, anything()), {times: 1}) }) }) })