@remit/electrodb-entities 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (6) hide show
  1. package/index.cjs +1098 -876
  2. package/index.d.cts +405 -239
  3. package/index.d.mts +405 -239
  4. package/index.d.ts +405 -239
  5. package/index.mjs +1097 -875
  6. package/package.json +1 -1
package/index.mjs CHANGED
@@ -1381,6 +1381,319 @@ export const OrganizeJobRequest = {
1381
1381
  version: "1"
1382
1382
  }
1383
1383
  };
1384
+ export const CalendarCollection = {
1385
+ attributes: {
1386
+ calendarId: {
1387
+ type: "string",
1388
+ required: true,
1389
+ validate: value => {
1390
+ if (typeof value === "string" && value.length < 25)
1391
+ throw new Error("'calendarId' must be at least 25 characters");
1392
+ if (typeof value === "string" && value.length > 25)
1393
+ throw new Error("'calendarId' must be at most 25 characters");
1394
+ return true;
1395
+ }
1396
+ },
1397
+ accountConfigId: {
1398
+ type: "string",
1399
+ required: true,
1400
+ validate: value => {
1401
+ if (typeof value === "string" && value.length < 25)
1402
+ throw new Error("'accountConfigId' must be at least 25 characters");
1403
+ if (typeof value === "string" && value.length > 25)
1404
+ throw new Error("'accountConfigId' must be at most 25 characters");
1405
+ return true;
1406
+ }
1407
+ },
1408
+ urlSegment: {
1409
+ type: "string",
1410
+ required: true,
1411
+ validate: value => {
1412
+ if (typeof value === "string" && value.length > 64)
1413
+ throw new Error("'urlSegment' must be at most 64 characters");
1414
+ return true;
1415
+ }
1416
+ },
1417
+ displayName: {
1418
+ type: "string",
1419
+ required: true,
1420
+ validate: value => {
1421
+ if (typeof value === "string" && value.length > 140)
1422
+ throw new Error("'displayName' must be at most 140 characters");
1423
+ return true;
1424
+ }
1425
+ },
1426
+ color: {
1427
+ type: ["Cal1", "Cal2", "Cal3", "Cal4", "Cal5", "Cal6"],
1428
+ required: true,
1429
+ default: "Cal1"
1430
+ },
1431
+ componentSet: {
1432
+ type: ["VeventOnly"],
1433
+ required: true,
1434
+ default: "VeventOnly"
1435
+ },
1436
+ source: {
1437
+ type: ["Default", "UserCreated", "MailDerived"],
1438
+ required: true,
1439
+ default: "UserCreated"
1440
+ },
1441
+ timezone: {
1442
+ type: "string",
1443
+ required: true,
1444
+ default: "",
1445
+ validate: value => {
1446
+ if (typeof value === "string" && value.length > 64)
1447
+ throw new Error("'timezone' must be at most 64 characters");
1448
+ return true;
1449
+ }
1450
+ },
1451
+ syncSequence: {
1452
+ type: "number",
1453
+ required: true,
1454
+ default: 0,
1455
+ validate: value => {
1456
+ if (typeof value === "number" && !Number.isInteger(value))
1457
+ throw new Error("'syncSequence' must be an integer");
1458
+ return true;
1459
+ }
1460
+ },
1461
+ createdAt: {
1462
+ type: "number",
1463
+ readOnly: true,
1464
+ required: true,
1465
+ default: () => Date.now(),
1466
+ set: () => Date.now()
1467
+ },
1468
+ updatedAt: {
1469
+ type: "number",
1470
+ watch: "*",
1471
+ required: true,
1472
+ default: () => Date.now(),
1473
+ set: () => Date.now()
1474
+ }
1475
+ },
1476
+ indexes: {
1477
+ byUrlSegment: {
1478
+ pk: {
1479
+ field: "gsi0pk",
1480
+ composite: ["accountConfigId"]
1481
+ },
1482
+ sk: {
1483
+ field: "gsi0sk",
1484
+ composite: ["urlSegment"]
1485
+ },
1486
+ index: "gsi0"
1487
+ },
1488
+ Calendar: {
1489
+ pk: {
1490
+ field: "pk",
1491
+ composite: ["accountConfigId"]
1492
+ },
1493
+ sk: {
1494
+ field: "sk",
1495
+ composite: ["calendarId"]
1496
+ }
1497
+ }
1498
+ },
1499
+ model: {
1500
+ entity: "calendar",
1501
+ service: "remit",
1502
+ version: "1"
1503
+ }
1504
+ };
1505
+ export const CalendarObject = {
1506
+ attributes: {
1507
+ calendarObjectId: {
1508
+ type: "string",
1509
+ required: true,
1510
+ validate: value => {
1511
+ if (typeof value === "string" && value.length < 25)
1512
+ throw new Error("'calendarObjectId' must be at least 25 characters");
1513
+ if (typeof value === "string" && value.length > 25)
1514
+ throw new Error("'calendarObjectId' must be at most 25 characters");
1515
+ return true;
1516
+ }
1517
+ },
1518
+ calendarId: {
1519
+ type: "string",
1520
+ required: true,
1521
+ validate: value => {
1522
+ if (typeof value === "string" && value.length < 25)
1523
+ throw new Error("'calendarId' must be at least 25 characters");
1524
+ if (typeof value === "string" && value.length > 25)
1525
+ throw new Error("'calendarId' must be at most 25 characters");
1526
+ return true;
1527
+ }
1528
+ },
1529
+ resourceName: {
1530
+ type: "string",
1531
+ required: true,
1532
+ validate: value => {
1533
+ if (typeof value === "string" && value.length > 256)
1534
+ throw new Error("'resourceName' must be at most 256 characters");
1535
+ return true;
1536
+ }
1537
+ },
1538
+ icalUid: {
1539
+ type: "string",
1540
+ required: true,
1541
+ validate: value => {
1542
+ if (typeof value === "string" && value.length > 512)
1543
+ throw new Error("'icalUid' must be at most 512 characters");
1544
+ return true;
1545
+ }
1546
+ },
1547
+ icalData: {
1548
+ type: "string",
1549
+ required: true
1550
+ },
1551
+ etag: {
1552
+ type: "string",
1553
+ required: true,
1554
+ validate: value => {
1555
+ if (typeof value === "string" && value.length > 64)
1556
+ throw new Error("'etag' must be at most 64 characters");
1557
+ return true;
1558
+ }
1559
+ },
1560
+ sequence: {
1561
+ type: "number",
1562
+ required: true,
1563
+ default: 0,
1564
+ validate: value => {
1565
+ if (typeof value === "number" && !Number.isInteger(value))
1566
+ throw new Error("'sequence' must be an integer");
1567
+ return true;
1568
+ }
1569
+ },
1570
+ syncSequence: {
1571
+ type: "number",
1572
+ required: true,
1573
+ default: 0,
1574
+ validate: value => {
1575
+ if (typeof value === "number" && !Number.isInteger(value))
1576
+ throw new Error("'syncSequence' must be an integer");
1577
+ return true;
1578
+ }
1579
+ },
1580
+ summary: {
1581
+ type: "string",
1582
+ required: true,
1583
+ validate: value => {
1584
+ if (typeof value === "string" && value.length > 512)
1585
+ throw new Error("'summary' must be at most 512 characters");
1586
+ return true;
1587
+ }
1588
+ },
1589
+ dtStart: {
1590
+ type: "string",
1591
+ required: true,
1592
+ validate: value => {
1593
+ if (typeof value === "string" && value.length > 64)
1594
+ throw new Error("'dtStart' must be at most 64 characters");
1595
+ return true;
1596
+ }
1597
+ },
1598
+ dtEnd: {
1599
+ type: "string",
1600
+ required: true,
1601
+ validate: value => {
1602
+ if (typeof value === "string" && value.length > 64)
1603
+ throw new Error("'dtEnd' must be at most 64 characters");
1604
+ return true;
1605
+ }
1606
+ },
1607
+ allDay: {
1608
+ type: "boolean",
1609
+ required: true,
1610
+ default: false
1611
+ },
1612
+ zoneCertainty: {
1613
+ type: ["Local", "Explicit", "Ambiguous"],
1614
+ required: true,
1615
+ default: "Explicit"
1616
+ },
1617
+ status: {
1618
+ type: ["Confirmed", "Tentative", "Cancelled"],
1619
+ required: true,
1620
+ default: "Confirmed"
1621
+ },
1622
+ transparency: {
1623
+ type: ["Opaque", "Transparent"],
1624
+ required: true,
1625
+ default: "Opaque"
1626
+ },
1627
+ hasRecurrence: {
1628
+ type: "boolean",
1629
+ required: true,
1630
+ default: false
1631
+ },
1632
+ expandedThrough: {
1633
+ type: "string",
1634
+ required: true,
1635
+ default: "",
1636
+ validate: value => {
1637
+ if (typeof value === "string" && value.length > 64)
1638
+ throw new Error("'expandedThrough' must be at most 64 characters");
1639
+ return true;
1640
+ }
1641
+ },
1642
+ createdAt: {
1643
+ type: "number",
1644
+ readOnly: true,
1645
+ required: true,
1646
+ default: () => Date.now(),
1647
+ set: () => Date.now()
1648
+ },
1649
+ updatedAt: {
1650
+ type: "number",
1651
+ watch: "*",
1652
+ required: true,
1653
+ default: () => Date.now(),
1654
+ set: () => Date.now()
1655
+ }
1656
+ },
1657
+ indexes: {
1658
+ bySyncSequence: {
1659
+ pk: {
1660
+ field: "gsi1pk",
1661
+ composite: ["calendarId"]
1662
+ },
1663
+ sk: {
1664
+ field: "gsi1sk",
1665
+ composite: ["syncSequence"]
1666
+ },
1667
+ index: "gsi1"
1668
+ },
1669
+ byUid: {
1670
+ pk: {
1671
+ field: "gsi0pk",
1672
+ composite: ["calendarId"]
1673
+ },
1674
+ sk: {
1675
+ field: "gsi0sk",
1676
+ composite: ["icalUid"]
1677
+ },
1678
+ index: "gsi0"
1679
+ },
1680
+ CalendarObject: {
1681
+ pk: {
1682
+ field: "pk",
1683
+ composite: ["calendarId"]
1684
+ },
1685
+ sk: {
1686
+ field: "sk",
1687
+ composite: ["calendarObjectId"]
1688
+ }
1689
+ }
1690
+ },
1691
+ model: {
1692
+ entity: "calendarObject",
1693
+ service: "remit",
1694
+ version: "1"
1695
+ }
1696
+ };
1384
1697
  export const ThreadMessage = {
1385
1698
  attributes: {
1386
1699
  threadMessageId: {
@@ -2939,125 +3252,22 @@ export const MessageReference = {
2939
3252
  return true;
2940
3253
  }
2941
3254
  },
2942
- messageIdValue: {
2943
- type: "string",
2944
- required: true
2945
- },
2946
- referenceType: {
2947
- type: ["in_reply_to", "references"],
2948
- required: true
2949
- },
2950
- referenceOrder: {
2951
- type: "number",
2952
- required: true,
2953
- validate: value => {
2954
- if (typeof value === "number" && value < 0)
2955
- throw new Error("'referenceOrder' must be at least 0");
2956
- if (typeof value === "number" && !Number.isInteger(value))
2957
- throw new Error("'referenceOrder' must be an integer");
2958
- return true;
2959
- }
2960
- },
2961
- createdAt: {
2962
- type: "number",
2963
- readOnly: true,
2964
- required: true,
2965
- default: () => Date.now(),
2966
- set: () => Date.now()
2967
- },
2968
- updatedAt: {
2969
- type: "number",
2970
- watch: "*",
2971
- required: true,
2972
- default: () => Date.now(),
2973
- set: () => Date.now()
2974
- }
2975
- },
2976
- indexes: {
2977
- byMessageId: {
2978
- pk: {
2979
- field: "gsi2pk",
2980
- composite: ["messageId"]
2981
- },
2982
- sk: {
2983
- field: "gsi2sk",
2984
- composite: ["messageReferenceId"]
2985
- },
2986
- index: "gsi2",
2987
- collection: "messageData"
2988
- },
2989
- MessageReference: {
2990
- pk: {
2991
- field: "pk",
2992
- composite: ["messageReferenceId"]
2993
- },
2994
- sk: {
2995
- field: "sk",
2996
- composite: []
2997
- }
2998
- }
2999
- },
3000
- model: {
3001
- entity: "messageReference",
3002
- service: "remit",
3003
- version: "1"
3004
- }
3005
- };
3006
- export const EnvelopeAddress = {
3007
- attributes: {
3008
- envelopeAddressId: {
3009
- type: "string",
3010
- required: true,
3011
- validate: value => {
3012
- if (typeof value === "string" && value.length < 25)
3013
- throw new Error("'envelopeAddressId' must be at least 25 characters");
3014
- if (typeof value === "string" && value.length > 25)
3015
- throw new Error("'envelopeAddressId' must be at most 25 characters");
3016
- return true;
3017
- }
3018
- },
3019
- messageId: {
3020
- type: "string",
3021
- required: true,
3022
- validate: value => {
3023
- if (typeof value === "string" && value.length < 25)
3024
- throw new Error("'messageId' must be at least 25 characters");
3025
- if (typeof value === "string" && value.length > 25)
3026
- throw new Error("'messageId' must be at most 25 characters");
3027
- return true;
3028
- }
3029
- },
3030
- addressId: {
3031
- type: "string",
3032
- required: true,
3033
- validate: value => {
3034
- if (typeof value === "string" && value.length < 25)
3035
- throw new Error("'addressId' must be at least 25 characters");
3036
- if (typeof value === "string" && value.length > 25)
3037
- throw new Error("'addressId' must be at most 25 characters");
3038
- return true;
3039
- }
3040
- },
3041
- displayName: {
3042
- type: "string",
3043
- required: false
3044
- },
3045
- normalizedEmail: {
3255
+ messageIdValue: {
3046
3256
  type: "string",
3047
3257
  required: true
3048
3258
  },
3049
- addressRole: {
3050
- type: ["from", "sender", "reply_to", "to", "cc", "bcc"],
3259
+ referenceType: {
3260
+ type: ["in_reply_to", "references"],
3051
3261
  required: true
3052
3262
  },
3053
- addressOrder: {
3263
+ referenceOrder: {
3054
3264
  type: "number",
3055
3265
  required: true,
3056
3266
  validate: value => {
3057
3267
  if (typeof value === "number" && value < 0)
3058
- throw new Error("'addressOrder' must be at least 0");
3268
+ throw new Error("'referenceOrder' must be at least 0");
3059
3269
  if (typeof value === "number" && !Number.isInteger(value))
3060
- throw new Error("'addressOrder' must be an integer");
3270
+ throw new Error("'referenceOrder' must be an integer");
3061
3271
  return true;
3062
3272
  }
3063
3273
  },
@@ -3084,15 +3294,15 @@ export const EnvelopeAddress = {
3084
3294
  },
3085
3295
  sk: {
3086
3296
  field: "gsi2sk",
3087
- composite: ["envelopeAddressId"]
3297
+ composite: ["messageReferenceId"]
3088
3298
  },
3089
3299
  index: "gsi2",
3090
3300
  collection: "messageData"
3091
3301
  },
3092
- EnvelopeAddress: {
3302
+ MessageReference: {
3093
3303
  pk: {
3094
3304
  field: "pk",
3095
- composite: ["envelopeAddressId"]
3305
+ composite: ["messageReferenceId"]
3096
3306
  },
3097
3307
  sk: {
3098
3308
  field: "sk",
@@ -3101,21 +3311,21 @@ export const EnvelopeAddress = {
3101
3311
  }
3102
3312
  },
3103
3313
  model: {
3104
- entity: "envelopeAddress",
3314
+ entity: "messageReference",
3105
3315
  service: "remit",
3106
3316
  version: "1"
3107
3317
  }
3108
3318
  };
3109
- export const ConfigImport = {
3319
+ export const CalendarSuggestion = {
3110
3320
  attributes: {
3111
- importId: {
3321
+ suggestionId: {
3112
3322
  type: "string",
3113
3323
  required: true,
3114
3324
  validate: value => {
3115
3325
  if (typeof value === "string" && value.length < 25)
3116
- throw new Error("'importId' must be at least 25 characters");
3326
+ throw new Error("'suggestionId' must be at least 25 characters");
3117
3327
  if (typeof value === "string" && value.length > 25)
3118
- throw new Error("'importId' must be at most 25 characters");
3328
+ throw new Error("'suggestionId' must be at most 25 characters");
3119
3329
  return true;
3120
3330
  }
3121
3331
  },
@@ -3130,134 +3340,128 @@ export const ConfigImport = {
3130
3340
  return true;
3131
3341
  }
3132
3342
  },
3133
- schemaVersion: {
3343
+ messageId: {
3344
+ type: "string",
3345
+ required: true,
3346
+ validate: value => {
3347
+ if (typeof value === "string" && value.length < 25)
3348
+ throw new Error("'messageId' must be at least 25 characters");
3349
+ if (typeof value === "string" && value.length > 25)
3350
+ throw new Error("'messageId' must be at most 25 characters");
3351
+ return true;
3352
+ }
3353
+ },
3354
+ bodyPartId: {
3355
+ type: "string",
3356
+ required: true,
3357
+ validate: value => {
3358
+ if (typeof value === "string" && value.length < 25)
3359
+ throw new Error("'bodyPartId' must be at least 25 characters");
3360
+ if (typeof value === "string" && value.length > 25)
3361
+ throw new Error("'bodyPartId' must be at most 25 characters");
3362
+ return true;
3363
+ }
3364
+ },
3365
+ icalUid: {
3366
+ type: "string",
3367
+ required: true,
3368
+ validate: value => {
3369
+ if (typeof value === "string" && value.length > 512)
3370
+ throw new Error("'icalUid' must be at most 512 characters");
3371
+ return true;
3372
+ }
3373
+ },
3374
+ sequence: {
3134
3375
  type: "number",
3135
3376
  required: true,
3377
+ default: 0,
3136
3378
  validate: value => {
3137
3379
  if (typeof value === "number" && !Number.isInteger(value))
3138
- throw new Error("'schemaVersion' must be an integer");
3380
+ throw new Error("'sequence' must be an integer");
3139
3381
  return true;
3140
3382
  }
3141
3383
  },
3384
+ method: {
3385
+ type: ["Request", "Reply", "Cancel", "Counter", "Publish", "None"],
3386
+ required: true,
3387
+ default: "None"
3388
+ },
3389
+ source: {
3390
+ type: ["IcalendarPart", "IcalendarAttachment", "TextHeuristic"],
3391
+ required: true,
3392
+ default: "IcalendarPart"
3393
+ },
3142
3394
  state: {
3143
- type: ["Pending", "Complete"],
3395
+ type: ["Pending", "Accepted", "Declined", "Tentative", "Dismissed", "Superseded"],
3144
3396
  required: true,
3145
3397
  default: "Pending"
3146
3398
  },
3147
- document: {
3148
- type: CustomAttributeType("any"),
3149
- required: true
3150
- },
3151
- unresolvedRefs: {
3152
- type: "list",
3153
- items: {
3154
- type: "map",
3155
- properties: {
3156
- kind: {
3157
- type: ["FolderRole", "MailboxOverride", "FilterAction"],
3158
- required: true
3159
- },
3160
- accountId: {
3161
- type: "string",
3162
- required: true
3163
- },
3164
- folderPath: {
3165
- type: "string",
3166
- required: true
3167
- },
3168
- target: {
3169
- type: "string",
3170
- required: true
3171
- }
3172
- }
3173
- },
3174
- required: true
3399
+ summary: {
3400
+ type: "string",
3401
+ required: true,
3402
+ validate: value => {
3403
+ if (typeof value === "string" && value.length > 512)
3404
+ throw new Error("'summary' must be at most 512 characters");
3405
+ return true;
3406
+ }
3175
3407
  },
3176
- createdAt: {
3177
- type: "number",
3178
- readOnly: true,
3408
+ dtStart: {
3409
+ type: "string",
3179
3410
  required: true,
3180
- default: () => Date.now(),
3181
- set: () => Date.now()
3411
+ validate: value => {
3412
+ if (typeof value === "string" && value.length > 64)
3413
+ throw new Error("'dtStart' must be at most 64 characters");
3414
+ return true;
3415
+ }
3182
3416
  },
3183
- completedAt: {
3184
- type: "number",
3417
+ dtEnd: {
3418
+ type: "string",
3185
3419
  required: true,
3186
- default: 0,
3187
3420
  validate: value => {
3188
- if (typeof value === "number" && !Number.isInteger(value))
3189
- throw new Error("'completedAt' must be an integer");
3421
+ if (typeof value === "string" && value.length > 64)
3422
+ throw new Error("'dtEnd' must be at most 64 characters");
3190
3423
  return true;
3191
3424
  }
3192
3425
  },
3193
- updatedAt: {
3194
- type: "number",
3195
- watch: "*",
3426
+ allDay: {
3427
+ type: "boolean",
3196
3428
  required: true,
3197
- default: () => Date.now(),
3198
- set: () => Date.now()
3199
- }
3200
- },
3201
- indexes: {
3202
- byAccountConfigId: {
3203
- pk: {
3204
- field: "gsi0pk",
3205
- composite: ["accountConfigId"]
3206
- },
3207
- sk: {
3208
- field: "gsi0sk",
3209
- composite: ["createdAt"]
3210
- },
3211
- index: "gsi0"
3429
+ default: false
3212
3430
  },
3213
- ConfigImport: {
3214
- pk: {
3215
- field: "pk",
3216
- composite: ["importId"]
3217
- },
3218
- sk: {
3219
- field: "sk",
3220
- composite: []
3221
- }
3222
- }
3223
- },
3224
- model: {
3225
- entity: "configImport",
3226
- service: "remit",
3227
- version: "1"
3228
- }
3229
- };
3230
- export const AccountSetting = {
3231
- attributes: {
3232
- accountSettingId: {
3431
+ location: {
3233
3432
  type: "string",
3234
3433
  required: true,
3434
+ default: "",
3235
3435
  validate: value => {
3236
- if (typeof value === "string" && value.length < 25)
3237
- throw new Error("'accountSettingId' must be at least 25 characters");
3238
- if (typeof value === "string" && value.length > 25)
3239
- throw new Error("'accountSettingId' must be at most 25 characters");
3436
+ if (typeof value === "string" && value.length > 512)
3437
+ throw new Error("'location' must be at most 512 characters");
3240
3438
  return true;
3241
3439
  }
3242
3440
  },
3243
- accountConfigId: {
3441
+ organizer: {
3244
3442
  type: "string",
3245
3443
  required: true,
3444
+ default: "",
3246
3445
  validate: value => {
3247
- if (typeof value === "string" && value.length < 25)
3248
- throw new Error("'accountConfigId' must be at least 25 characters");
3249
- if (typeof value === "string" && value.length > 25)
3250
- throw new Error("'accountConfigId' must be at most 25 characters");
3446
+ if (typeof value === "string" && value.length > 256)
3447
+ throw new Error("'organizer' must be at most 256 characters");
3251
3448
  return true;
3252
3449
  }
3253
3450
  },
3254
- name: {
3451
+ zoneCertainty: {
3452
+ type: ["Local", "Explicit", "Ambiguous"],
3453
+ required: true,
3454
+ default: "Explicit"
3455
+ },
3456
+ icalData: {
3255
3457
  type: "string",
3256
- required: true
3458
+ required: true,
3459
+ default: ""
3257
3460
  },
3258
- value: {
3259
- type: CustomAttributeType("any"),
3260
- required: true
3461
+ acceptedCalendarObjectId: {
3462
+ type: "string",
3463
+ required: true,
3464
+ default: ""
3261
3465
  },
3262
3466
  createdAt: {
3263
3467
  type: "number",
@@ -3275,202 +3479,135 @@ export const AccountSetting = {
3275
3479
  }
3276
3480
  },
3277
3481
  indexes: {
3278
- byAccountConfigId: {
3279
- pk: {
3280
- field: "gsi0pk",
3281
- composite: ["accountConfigId"]
3282
- },
3283
- sk: {
3284
- field: "gsi0sk",
3285
- composite: ["name"]
3286
- },
3287
- index: "gsi0"
3288
- },
3289
- AccountSetting: {
3290
- pk: {
3291
- field: "pk",
3292
- composite: ["accountSettingId"]
3293
- },
3294
- sk: {
3295
- field: "sk",
3296
- composite: []
3297
- }
3298
- }
3299
- },
3300
- model: {
3301
- entity: "accountSetting",
3302
- service: "remit",
3303
- version: "1"
3304
- }
3305
- };
3306
- export const MailboxAttributeEntry = {
3307
- attributes: {
3308
- mailboxAttributeId: {
3309
- type: "string",
3310
- required: true,
3311
- validate: value => {
3312
- if (typeof value === "string" && value.length < 25)
3313
- throw new Error("'mailboxAttributeId' must be at least 25 characters");
3314
- if (typeof value === "string" && value.length > 25)
3315
- throw new Error("'mailboxAttributeId' must be at most 25 characters");
3316
- return true;
3317
- }
3318
- },
3319
- mailboxId: {
3320
- type: "string",
3321
- required: true,
3322
- validate: value => {
3323
- if (typeof value === "string" && value.length < 25)
3324
- throw new Error("'mailboxId' must be at least 25 characters");
3325
- if (typeof value === "string" && value.length > 25)
3326
- throw new Error("'mailboxId' must be at most 25 characters");
3327
- return true;
3328
- }
3329
- },
3330
- attributeName: {
3331
- type: ["\NonExistent", "\Noinferiors", "\Noselect", "\HasChildren", "\HasNoChildren", "\Marked", "\Unmarked", "\Subscribed", "\Remote"],
3332
- required: true
3333
- }
3334
- },
3335
- indexes: {
3336
- byMailboxId: {
3482
+ byState: {
3337
3483
  pk: {
3338
3484
  field: "gsi1pk",
3339
- composite: ["mailboxId"]
3485
+ composite: ["accountConfigId"]
3340
3486
  },
3341
3487
  sk: {
3342
3488
  field: "gsi1sk",
3343
- composite: ["mailboxAttributeId"]
3489
+ composite: ["state", "createdAt", "suggestionId"]
3344
3490
  },
3345
- index: "gsi1",
3346
- collection: "mailbox"
3491
+ index: "gsi1"
3347
3492
  },
3348
- MailboxAttributeEntry: {
3493
+ byMessage: {
3494
+ pk: {
3495
+ field: "gsi0pk",
3496
+ composite: ["accountConfigId"]
3497
+ },
3498
+ sk: {
3499
+ field: "gsi0sk",
3500
+ composite: ["messageId", "suggestionId"]
3501
+ },
3502
+ index: "gsi0"
3503
+ },
3504
+ CalendarSuggestion: {
3349
3505
  pk: {
3350
3506
  field: "pk",
3351
- composite: ["mailboxAttributeId"]
3507
+ composite: ["accountConfigId"]
3352
3508
  },
3353
3509
  sk: {
3354
3510
  field: "sk",
3355
- composite: []
3511
+ composite: ["suggestionId"]
3356
3512
  }
3357
3513
  }
3358
3514
  },
3359
3515
  model: {
3360
- entity: "mailboxAttributeEntry",
3516
+ entity: "calendarSuggestion",
3361
3517
  service: "remit",
3362
3518
  version: "1"
3363
3519
  }
3364
3520
  };
3365
- export const MailboxSpecialUseEntry = {
3521
+ export const EnvelopeAddress = {
3366
3522
  attributes: {
3367
- mailboxSpecialUseId: {
3523
+ envelopeAddressId: {
3368
3524
  type: "string",
3369
3525
  required: true,
3370
3526
  validate: value => {
3371
3527
  if (typeof value === "string" && value.length < 25)
3372
- throw new Error("'mailboxSpecialUseId' must be at least 25 characters");
3528
+ throw new Error("'envelopeAddressId' must be at least 25 characters");
3373
3529
  if (typeof value === "string" && value.length > 25)
3374
- throw new Error("'mailboxSpecialUseId' must be at most 25 characters");
3530
+ throw new Error("'envelopeAddressId' must be at most 25 characters");
3375
3531
  return true;
3376
3532
  }
3377
3533
  },
3378
- mailboxId: {
3534
+ messageId: {
3379
3535
  type: "string",
3380
3536
  required: true,
3381
3537
  validate: value => {
3382
3538
  if (typeof value === "string" && value.length < 25)
3383
- throw new Error("'mailboxId' must be at least 25 characters");
3539
+ throw new Error("'messageId' must be at least 25 characters");
3384
3540
  if (typeof value === "string" && value.length > 25)
3385
- throw new Error("'mailboxId' must be at most 25 characters");
3541
+ throw new Error("'messageId' must be at most 25 characters");
3386
3542
  return true;
3387
3543
  }
3388
3544
  },
3389
- specialUse: {
3390
- type: ["All", "Archive", "Drafts", "Flagged", "Junk", "Sent", "Trash", "Important"],
3391
- required: true
3392
- }
3393
- },
3394
- indexes: {
3395
- byMailboxId: {
3396
- pk: {
3397
- field: "gsi1pk",
3398
- composite: ["mailboxId"]
3399
- },
3400
- sk: {
3401
- field: "gsi1sk",
3402
- composite: ["mailboxSpecialUseId"]
3403
- },
3404
- index: "gsi1",
3405
- collection: "mailbox"
3406
- },
3407
- MailboxSpecialUseEntry: {
3408
- pk: {
3409
- field: "pk",
3410
- composite: ["mailboxSpecialUseId"]
3411
- },
3412
- sk: {
3413
- field: "sk",
3414
- composite: []
3415
- }
3416
- }
3417
- },
3418
- model: {
3419
- entity: "mailboxSpecialUseEntry",
3420
- service: "remit",
3421
- version: "1"
3422
- }
3423
- };
3424
- export const MailboxFlag = {
3425
- attributes: {
3426
- mailboxFlagId: {
3545
+ addressId: {
3427
3546
  type: "string",
3428
3547
  required: true,
3429
3548
  validate: value => {
3430
3549
  if (typeof value === "string" && value.length < 25)
3431
- throw new Error("'mailboxFlagId' must be at least 25 characters");
3550
+ throw new Error("'addressId' must be at least 25 characters");
3432
3551
  if (typeof value === "string" && value.length > 25)
3433
- throw new Error("'mailboxFlagId' must be at most 25 characters");
3552
+ throw new Error("'addressId' must be at most 25 characters");
3434
3553
  return true;
3435
3554
  }
3436
3555
  },
3437
- mailboxId: {
3556
+ displayName: {
3557
+ type: "string",
3558
+ required: false
3559
+ },
3560
+ normalizedEmail: {
3438
3561
  type: "string",
3562
+ required: true
3563
+ },
3564
+ addressRole: {
3565
+ type: ["from", "sender", "reply_to", "to", "cc", "bcc"],
3566
+ required: true
3567
+ },
3568
+ addressOrder: {
3569
+ type: "number",
3439
3570
  required: true,
3440
3571
  validate: value => {
3441
- if (typeof value === "string" && value.length < 25)
3442
- throw new Error("'mailboxId' must be at least 25 characters");
3443
- if (typeof value === "string" && value.length > 25)
3444
- throw new Error("'mailboxId' must be at most 25 characters");
3572
+ if (typeof value === "number" && value < 0)
3573
+ throw new Error("'addressOrder' must be at least 0");
3574
+ if (typeof value === "number" && !Number.isInteger(value))
3575
+ throw new Error("'addressOrder' must be an integer");
3445
3576
  return true;
3446
3577
  }
3447
3578
  },
3448
- flagName: {
3449
- type: CustomAttributeType("any"),
3450
- required: true
3579
+ createdAt: {
3580
+ type: "number",
3581
+ readOnly: true,
3582
+ required: true,
3583
+ default: () => Date.now(),
3584
+ set: () => Date.now()
3451
3585
  },
3452
- isPermanent: {
3453
- type: "boolean",
3454
- required: true
3586
+ updatedAt: {
3587
+ type: "number",
3588
+ watch: "*",
3589
+ required: true,
3590
+ default: () => Date.now(),
3591
+ set: () => Date.now()
3455
3592
  }
3456
3593
  },
3457
3594
  indexes: {
3458
- byMailboxId: {
3595
+ byMessageId: {
3459
3596
  pk: {
3460
- field: "gsi1pk",
3461
- composite: ["mailboxId"]
3597
+ field: "gsi2pk",
3598
+ composite: ["messageId"]
3462
3599
  },
3463
3600
  sk: {
3464
- field: "gsi1sk",
3465
- composite: ["mailboxFlagId"]
3601
+ field: "gsi2sk",
3602
+ composite: ["envelopeAddressId"]
3466
3603
  },
3467
- index: "gsi1",
3468
- collection: "mailbox"
3604
+ index: "gsi2",
3605
+ collection: "messageData"
3469
3606
  },
3470
- MailboxFlag: {
3607
+ EnvelopeAddress: {
3471
3608
  pk: {
3472
3609
  field: "pk",
3473
- composite: ["mailboxFlagId"]
3610
+ composite: ["envelopeAddressId"]
3474
3611
  },
3475
3612
  sk: {
3476
3613
  field: "sk",
@@ -3479,150 +3616,163 @@ export const MailboxFlag = {
3479
3616
  }
3480
3617
  },
3481
3618
  model: {
3482
- entity: "mailboxFlag",
3619
+ entity: "envelopeAddress",
3483
3620
  service: "remit",
3484
3621
  version: "1"
3485
3622
  }
3486
3623
  };
3487
- export const MailboxLock = {
3624
+ export const ConfigImport = {
3488
3625
  attributes: {
3489
- mailboxId: {
3490
- type: "string",
3491
- required: true,
3492
- validate: value => {
3493
- if (typeof value === "string" && value.length < 25)
3494
- throw new Error("'mailboxId' must be at least 25 characters");
3495
- if (typeof value === "string" && value.length > 25)
3496
- throw new Error("'mailboxId' must be at most 25 characters");
3497
- return true;
3498
- }
3499
- },
3500
- eventName: {
3501
- type: "string",
3502
- required: true
3503
- },
3504
- accountId: {
3626
+ importId: {
3505
3627
  type: "string",
3506
3628
  required: true,
3507
3629
  validate: value => {
3508
3630
  if (typeof value === "string" && value.length < 25)
3509
- throw new Error("'accountId' must be at least 25 characters");
3631
+ throw new Error("'importId' must be at least 25 characters");
3510
3632
  if (typeof value === "string" && value.length > 25)
3511
- throw new Error("'accountId' must be at most 25 characters");
3633
+ throw new Error("'importId' must be at most 25 characters");
3512
3634
  return true;
3513
3635
  }
3514
3636
  },
3515
- lockId: {
3637
+ accountConfigId: {
3516
3638
  type: "string",
3517
3639
  required: true,
3518
3640
  validate: value => {
3519
3641
  if (typeof value === "string" && value.length < 25)
3520
- throw new Error("'lockId' must be at least 25 characters");
3642
+ throw new Error("'accountConfigId' must be at least 25 characters");
3521
3643
  if (typeof value === "string" && value.length > 25)
3522
- throw new Error("'lockId' must be at most 25 characters");
3644
+ throw new Error("'accountConfigId' must be at most 25 characters");
3523
3645
  return true;
3524
3646
  }
3525
3647
  },
3526
- acquiredAt: {
3648
+ schemaVersion: {
3527
3649
  type: "number",
3528
3650
  required: true,
3529
3651
  validate: value => {
3530
3652
  if (typeof value === "number" && !Number.isInteger(value))
3531
- throw new Error("'acquiredAt' must be an integer");
3653
+ throw new Error("'schemaVersion' must be an integer");
3532
3654
  return true;
3533
3655
  }
3534
3656
  },
3535
- lockedBy: {
3536
- type: "string",
3657
+ state: {
3658
+ type: ["Pending", "Complete"],
3659
+ required: true,
3660
+ default: "Pending"
3661
+ },
3662
+ document: {
3663
+ type: CustomAttributeType("any"),
3537
3664
  required: true
3538
3665
  },
3539
- ttl: {
3666
+ unresolvedRefs: {
3667
+ type: "list",
3668
+ items: {
3669
+ type: "map",
3670
+ properties: {
3671
+ kind: {
3672
+ type: ["FolderRole", "MailboxOverride", "FilterAction"],
3673
+ required: true
3674
+ },
3675
+ accountId: {
3676
+ type: "string",
3677
+ required: true
3678
+ },
3679
+ folderPath: {
3680
+ type: "string",
3681
+ required: true
3682
+ },
3683
+ target: {
3684
+ type: "string",
3685
+ required: true
3686
+ }
3687
+ }
3688
+ },
3689
+ required: true
3690
+ },
3691
+ createdAt: {
3692
+ type: "number",
3693
+ readOnly: true,
3694
+ required: true,
3695
+ default: () => Date.now(),
3696
+ set: () => Date.now()
3697
+ },
3698
+ completedAt: {
3540
3699
  type: "number",
3541
3700
  required: true,
3701
+ default: 0,
3542
3702
  validate: value => {
3543
3703
  if (typeof value === "number" && !Number.isInteger(value))
3544
- throw new Error("'ttl' must be an integer");
3704
+ throw new Error("'completedAt' must be an integer");
3545
3705
  return true;
3546
3706
  }
3707
+ },
3708
+ updatedAt: {
3709
+ type: "number",
3710
+ watch: "*",
3711
+ required: true,
3712
+ default: () => Date.now(),
3713
+ set: () => Date.now()
3547
3714
  }
3548
3715
  },
3549
3716
  indexes: {
3550
- allLocks: {
3551
- pk: {
3552
- field: "gsi2pk",
3553
- composite: []
3554
- },
3555
- sk: {
3556
- field: "gsi2sk",
3557
- composite: ["acquiredAt"]
3558
- },
3559
- index: "gsi2",
3560
- collection: "locks"
3561
- },
3562
- byAccountId: {
3717
+ byAccountConfigId: {
3563
3718
  pk: {
3564
- field: "gsi1pk",
3565
- composite: ["accountId"]
3719
+ field: "gsi0pk",
3720
+ composite: ["accountConfigId"]
3566
3721
  },
3567
3722
  sk: {
3568
- field: "gsi1sk",
3569
- composite: ["mailboxId", "eventName"]
3723
+ field: "gsi0sk",
3724
+ composite: ["createdAt"]
3570
3725
  },
3571
- index: "gsi1"
3726
+ index: "gsi0"
3572
3727
  },
3573
- MailboxLock: {
3728
+ ConfigImport: {
3574
3729
  pk: {
3575
3730
  field: "pk",
3576
- composite: ["mailboxId"]
3731
+ composite: ["importId"]
3577
3732
  },
3578
3733
  sk: {
3579
3734
  field: "sk",
3580
- composite: ["eventName"]
3735
+ composite: []
3581
3736
  }
3582
3737
  }
3583
3738
  },
3584
3739
  model: {
3585
- entity: "mailboxLock",
3740
+ entity: "configImport",
3586
3741
  service: "remit",
3587
3742
  version: "1"
3588
3743
  }
3589
3744
  };
3590
- export const MessageFlag = {
3745
+ export const AccountSetting = {
3591
3746
  attributes: {
3592
- messageFlagId: {
3747
+ accountSettingId: {
3593
3748
  type: "string",
3594
3749
  required: true,
3595
3750
  validate: value => {
3596
3751
  if (typeof value === "string" && value.length < 25)
3597
- throw new Error("'messageFlagId' must be at least 25 characters");
3752
+ throw new Error("'accountSettingId' must be at least 25 characters");
3598
3753
  if (typeof value === "string" && value.length > 25)
3599
- throw new Error("'messageFlagId' must be at most 25 characters");
3754
+ throw new Error("'accountSettingId' must be at most 25 characters");
3600
3755
  return true;
3601
3756
  }
3602
3757
  },
3603
- messageId: {
3758
+ accountConfigId: {
3604
3759
  type: "string",
3605
3760
  required: true,
3606
3761
  validate: value => {
3607
3762
  if (typeof value === "string" && value.length < 25)
3608
- throw new Error("'messageId' must be at least 25 characters");
3763
+ throw new Error("'accountConfigId' must be at least 25 characters");
3609
3764
  if (typeof value === "string" && value.length > 25)
3610
- throw new Error("'messageId' must be at most 25 characters");
3765
+ throw new Error("'accountConfigId' must be at most 25 characters");
3611
3766
  return true;
3612
3767
  }
3613
3768
  },
3614
- flagName: {
3615
- type: CustomAttributeType("any"),
3769
+ name: {
3770
+ type: "string",
3616
3771
  required: true
3617
3772
  },
3618
- setAt: {
3619
- type: "number",
3620
- required: true,
3621
- validate: value => {
3622
- if (typeof value === "number" && !Number.isInteger(value))
3623
- throw new Error("'setAt' must be an integer");
3624
- return true;
3625
- }
3773
+ value: {
3774
+ type: CustomAttributeType("any"),
3775
+ required: true
3626
3776
  },
3627
3777
  createdAt: {
3628
3778
  type: "number",
@@ -3640,22 +3790,21 @@ export const MessageFlag = {
3640
3790
  }
3641
3791
  },
3642
3792
  indexes: {
3643
- byMessageId: {
3793
+ byAccountConfigId: {
3644
3794
  pk: {
3645
- field: "gsi2pk",
3646
- composite: ["messageId"]
3795
+ field: "gsi0pk",
3796
+ composite: ["accountConfigId"]
3647
3797
  },
3648
3798
  sk: {
3649
- field: "gsi2sk",
3650
- composite: ["messageFlagId"]
3799
+ field: "gsi0sk",
3800
+ composite: ["name"]
3651
3801
  },
3652
- index: "gsi2",
3653
- collection: "messageData"
3802
+ index: "gsi0"
3654
3803
  },
3655
- MessageFlag: {
3804
+ AccountSetting: {
3656
3805
  pk: {
3657
3806
  field: "pk",
3658
- composite: ["messageFlagId"]
3807
+ composite: ["accountSettingId"]
3659
3808
  },
3660
3809
  sk: {
3661
3810
  field: "sk",
@@ -3664,104 +3813,179 @@ export const MessageFlag = {
3664
3813
  }
3665
3814
  },
3666
3815
  model: {
3667
- entity: "messageFlag",
3816
+ entity: "accountSetting",
3668
3817
  service: "remit",
3669
3818
  version: "1"
3670
3819
  }
3671
3820
  };
3672
- export const MessagePlacementMove = {
3821
+ export const MailboxAttributeEntry = {
3673
3822
  attributes: {
3674
- messageId: {
3823
+ mailboxAttributeId: {
3675
3824
  type: "string",
3676
3825
  required: true,
3677
3826
  validate: value => {
3678
3827
  if (typeof value === "string" && value.length < 25)
3679
- throw new Error("'messageId' must be at least 25 characters");
3828
+ throw new Error("'mailboxAttributeId' must be at least 25 characters");
3680
3829
  if (typeof value === "string" && value.length > 25)
3681
- throw new Error("'messageId' must be at most 25 characters");
3830
+ throw new Error("'mailboxAttributeId' must be at most 25 characters");
3682
3831
  return true;
3683
3832
  }
3684
3833
  },
3685
- accountId: {
3834
+ mailboxId: {
3686
3835
  type: "string",
3687
3836
  required: true,
3688
3837
  validate: value => {
3689
3838
  if (typeof value === "string" && value.length < 25)
3690
- throw new Error("'accountId' must be at least 25 characters");
3839
+ throw new Error("'mailboxId' must be at least 25 characters");
3691
3840
  if (typeof value === "string" && value.length > 25)
3692
- throw new Error("'accountId' must be at most 25 characters");
3841
+ throw new Error("'mailboxId' must be at most 25 characters");
3693
3842
  return true;
3694
3843
  }
3695
3844
  },
3696
- accountConfigId: {
3845
+ attributeName: {
3846
+ type: ["\NonExistent", "\Noinferiors", "\Noselect", "\HasChildren", "\HasNoChildren", "\Marked", "\Unmarked", "\Subscribed", "\Remote"],
3847
+ required: true
3848
+ }
3849
+ },
3850
+ indexes: {
3851
+ byMailboxId: {
3852
+ pk: {
3853
+ field: "gsi1pk",
3854
+ composite: ["mailboxId"]
3855
+ },
3856
+ sk: {
3857
+ field: "gsi1sk",
3858
+ composite: ["mailboxAttributeId"]
3859
+ },
3860
+ index: "gsi1",
3861
+ collection: "mailbox"
3862
+ },
3863
+ MailboxAttributeEntry: {
3864
+ pk: {
3865
+ field: "pk",
3866
+ composite: ["mailboxAttributeId"]
3867
+ },
3868
+ sk: {
3869
+ field: "sk",
3870
+ composite: []
3871
+ }
3872
+ }
3873
+ },
3874
+ model: {
3875
+ entity: "mailboxAttributeEntry",
3876
+ service: "remit",
3877
+ version: "1"
3878
+ }
3879
+ };
3880
+ export const MailboxSpecialUseEntry = {
3881
+ attributes: {
3882
+ mailboxSpecialUseId: {
3697
3883
  type: "string",
3698
3884
  required: true,
3699
3885
  validate: value => {
3700
3886
  if (typeof value === "string" && value.length < 25)
3701
- throw new Error("'accountConfigId' must be at least 25 characters");
3887
+ throw new Error("'mailboxSpecialUseId' must be at least 25 characters");
3702
3888
  if (typeof value === "string" && value.length > 25)
3703
- throw new Error("'accountConfigId' must be at most 25 characters");
3889
+ throw new Error("'mailboxSpecialUseId' must be at most 25 characters");
3704
3890
  return true;
3705
3891
  }
3706
3892
  },
3707
- sourceMailboxId: {
3893
+ mailboxId: {
3708
3894
  type: "string",
3709
3895
  required: true,
3710
3896
  validate: value => {
3711
3897
  if (typeof value === "string" && value.length < 25)
3712
- throw new Error("'sourceMailboxId' must be at least 25 characters");
3898
+ throw new Error("'mailboxId' must be at least 25 characters");
3713
3899
  if (typeof value === "string" && value.length > 25)
3714
- throw new Error("'sourceMailboxId' must be at most 25 characters");
3900
+ throw new Error("'mailboxId' must be at most 25 characters");
3715
3901
  return true;
3716
3902
  }
3717
3903
  },
3718
- destinationMailboxId: {
3904
+ specialUse: {
3905
+ type: ["All", "Archive", "Drafts", "Flagged", "Junk", "Sent", "Trash", "Important"],
3906
+ required: true
3907
+ }
3908
+ },
3909
+ indexes: {
3910
+ byMailboxId: {
3911
+ pk: {
3912
+ field: "gsi1pk",
3913
+ composite: ["mailboxId"]
3914
+ },
3915
+ sk: {
3916
+ field: "gsi1sk",
3917
+ composite: ["mailboxSpecialUseId"]
3918
+ },
3919
+ index: "gsi1",
3920
+ collection: "mailbox"
3921
+ },
3922
+ MailboxSpecialUseEntry: {
3923
+ pk: {
3924
+ field: "pk",
3925
+ composite: ["mailboxSpecialUseId"]
3926
+ },
3927
+ sk: {
3928
+ field: "sk",
3929
+ composite: []
3930
+ }
3931
+ }
3932
+ },
3933
+ model: {
3934
+ entity: "mailboxSpecialUseEntry",
3935
+ service: "remit",
3936
+ version: "1"
3937
+ }
3938
+ };
3939
+ export const MailboxFlag = {
3940
+ attributes: {
3941
+ mailboxFlagId: {
3719
3942
  type: "string",
3720
3943
  required: true,
3721
3944
  validate: value => {
3722
3945
  if (typeof value === "string" && value.length < 25)
3723
- throw new Error("'destinationMailboxId' must be at least 25 characters");
3946
+ throw new Error("'mailboxFlagId' must be at least 25 characters");
3724
3947
  if (typeof value === "string" && value.length > 25)
3725
- throw new Error("'destinationMailboxId' must be at most 25 characters");
3948
+ throw new Error("'mailboxFlagId' must be at most 25 characters");
3726
3949
  return true;
3727
3950
  }
3728
3951
  },
3729
- state: {
3730
- type: ["pending", "queued", "processing", "processed"],
3952
+ mailboxId: {
3953
+ type: "string",
3731
3954
  required: true,
3732
- default: "pending"
3955
+ validate: value => {
3956
+ if (typeof value === "string" && value.length < 25)
3957
+ throw new Error("'mailboxId' must be at least 25 characters");
3958
+ if (typeof value === "string" && value.length > 25)
3959
+ throw new Error("'mailboxId' must be at most 25 characters");
3960
+ return true;
3961
+ }
3733
3962
  },
3734
- createdAt: {
3735
- type: "number",
3736
- readOnly: true,
3737
- required: true,
3738
- default: () => Date.now(),
3739
- set: () => Date.now()
3963
+ flagName: {
3964
+ type: CustomAttributeType("any"),
3965
+ required: true
3740
3966
  },
3741
- updatedAt: {
3742
- type: "number",
3743
- watch: "*",
3744
- required: true,
3745
- default: () => Date.now(),
3746
- set: () => Date.now()
3967
+ isPermanent: {
3968
+ type: "boolean",
3969
+ required: true
3747
3970
  }
3748
3971
  },
3749
3972
  indexes: {
3750
- byAccountId: {
3973
+ byMailboxId: {
3751
3974
  pk: {
3752
- field: "gsi0pk",
3753
- composite: ["accountId"]
3975
+ field: "gsi1pk",
3976
+ composite: ["mailboxId"]
3754
3977
  },
3755
3978
  sk: {
3756
- field: "gsi0sk",
3757
- composite: ["messageId"]
3979
+ field: "gsi1sk",
3980
+ composite: ["mailboxFlagId"]
3758
3981
  },
3759
- index: "gsi0"
3982
+ index: "gsi1",
3983
+ collection: "mailbox"
3760
3984
  },
3761
- MessagePlacementMove: {
3985
+ MailboxFlag: {
3762
3986
  pk: {
3763
3987
  field: "pk",
3764
- composite: ["messageId"]
3988
+ composite: ["mailboxFlagId"]
3765
3989
  },
3766
3990
  sk: {
3767
3991
  field: "sk",
@@ -3770,25 +3994,25 @@ export const MessagePlacementMove = {
3770
3994
  }
3771
3995
  },
3772
3996
  model: {
3773
- entity: "messagePlacementMove",
3997
+ entity: "mailboxFlag",
3774
3998
  service: "remit",
3775
3999
  version: "1"
3776
4000
  }
3777
4001
  };
3778
- export const MessageFlagPush = {
4002
+ export const MailboxLock = {
3779
4003
  attributes: {
3780
- messageId: {
4004
+ mailboxId: {
3781
4005
  type: "string",
3782
4006
  required: true,
3783
4007
  validate: value => {
3784
4008
  if (typeof value === "string" && value.length < 25)
3785
- throw new Error("'messageId' must be at least 25 characters");
4009
+ throw new Error("'mailboxId' must be at least 25 characters");
3786
4010
  if (typeof value === "string" && value.length > 25)
3787
- throw new Error("'messageId' must be at most 25 characters");
4011
+ throw new Error("'mailboxId' must be at most 25 characters");
3788
4012
  return true;
3789
4013
  }
3790
4014
  },
3791
- flagName: {
4015
+ eventName: {
3792
4016
  type: "string",
3793
4017
  required: true
3794
4018
  },
@@ -3803,102 +4027,91 @@ export const MessageFlagPush = {
3803
4027
  return true;
3804
4028
  }
3805
4029
  },
3806
- accountConfigId: {
4030
+ lockId: {
3807
4031
  type: "string",
3808
4032
  required: true,
3809
4033
  validate: value => {
3810
4034
  if (typeof value === "string" && value.length < 25)
3811
- throw new Error("'accountConfigId' must be at least 25 characters");
4035
+ throw new Error("'lockId' must be at least 25 characters");
3812
4036
  if (typeof value === "string" && value.length > 25)
3813
- throw new Error("'accountConfigId' must be at most 25 characters");
4037
+ throw new Error("'lockId' must be at most 25 characters");
3814
4038
  return true;
3815
4039
  }
3816
4040
  },
3817
- mailboxId: {
3818
- type: "string",
4041
+ acquiredAt: {
4042
+ type: "number",
3819
4043
  required: true,
3820
4044
  validate: value => {
3821
- if (typeof value === "string" && value.length < 25)
3822
- throw new Error("'mailboxId' must be at least 25 characters");
3823
- if (typeof value === "string" && value.length > 25)
3824
- throw new Error("'mailboxId' must be at most 25 characters");
4045
+ if (typeof value === "number" && !Number.isInteger(value))
4046
+ throw new Error("'acquiredAt' must be an integer");
3825
4047
  return true;
3826
4048
  }
3827
4049
  },
3828
- operation: {
3829
- type: ["add", "remove"],
4050
+ lockedBy: {
4051
+ type: "string",
3830
4052
  required: true
3831
4053
  },
3832
- state: {
3833
- type: ["pending", "queued", "processing", "processed"],
3834
- required: true,
3835
- default: "pending"
3836
- },
3837
- createdAt: {
3838
- type: "number",
3839
- readOnly: true,
3840
- required: true,
3841
- default: () => Date.now(),
3842
- set: () => Date.now()
3843
- },
3844
- updatedAt: {
4054
+ ttl: {
3845
4055
  type: "number",
3846
- watch: "*",
3847
4056
  required: true,
3848
- default: () => Date.now(),
3849
- set: () => Date.now()
4057
+ validate: value => {
4058
+ if (typeof value === "number" && !Number.isInteger(value))
4059
+ throw new Error("'ttl' must be an integer");
4060
+ return true;
4061
+ }
3850
4062
  }
3851
4063
  },
3852
4064
  indexes: {
3853
- byMailboxId: {
4065
+ allLocks: {
3854
4066
  pk: {
3855
- field: "gsi1pk",
3856
- composite: ["mailboxId"]
4067
+ field: "gsi2pk",
4068
+ composite: []
3857
4069
  },
3858
4070
  sk: {
3859
- field: "gsi1sk",
3860
- composite: ["messageId", "flagName"]
4071
+ field: "gsi2sk",
4072
+ composite: ["acquiredAt"]
3861
4073
  },
3862
- index: "gsi1"
4074
+ index: "gsi2",
4075
+ collection: "locks"
3863
4076
  },
3864
4077
  byAccountId: {
3865
4078
  pk: {
3866
- field: "gsi0pk",
4079
+ field: "gsi1pk",
3867
4080
  composite: ["accountId"]
3868
4081
  },
3869
4082
  sk: {
3870
- field: "gsi0sk",
3871
- composite: ["messageId", "flagName"]
4083
+ field: "gsi1sk",
4084
+ composite: ["mailboxId", "eventName"]
3872
4085
  },
3873
- index: "gsi0"
4086
+ index: "gsi1"
3874
4087
  },
3875
- MessageFlagPush: {
4088
+ MailboxLock: {
3876
4089
  pk: {
3877
4090
  field: "pk",
3878
- composite: ["messageId"]
4091
+ composite: ["mailboxId"]
3879
4092
  },
3880
4093
  sk: {
3881
4094
  field: "sk",
3882
- composite: ["flagName"]
4095
+ composite: ["eventName"]
3883
4096
  }
3884
4097
  }
3885
4098
  },
3886
4099
  model: {
3887
- entity: "messageFlagPush",
4100
+ entity: "mailboxLock",
3888
4101
  service: "remit",
3889
4102
  version: "1"
3890
4103
  }
3891
4104
  };
3892
- export const Envelope = {
4105
+ export const MessageFlag = {
3893
4106
  attributes: {
3894
- envelopeId: {
4107
+ messageFlagId: {
3895
4108
  type: "string",
3896
4109
  required: true,
3897
4110
  validate: value => {
3898
4111
  if (typeof value === "string" && value.length < 25)
3899
- throw new Error("'envelopeId' must be at least 25 characters");
4112
+ throw new Error("'messageFlagId' must be at least 25 characters");
3900
4113
  if (typeof value === "string" && value.length > 25)
3901
- throw new Error("'envelopeId' must be at most 25 characters");
4114
+ throw new Error("'messageFlagId' must be at most 25 characters");
3902
4115
  return true;
3903
4116
  }
3904
4117
  },
@@ -3913,27 +4126,19 @@ export const Envelope = {
3913
4126
  return true;
3914
4127
  }
3915
4128
  },
3916
- dateValue: {
4129
+ flagName: {
4130
+ type: CustomAttributeType("any"),
4131
+ required: true
4132
+ },
4133
+ setAt: {
3917
4134
  type: "number",
3918
4135
  required: true,
3919
4136
  validate: value => {
3920
4137
  if (typeof value === "number" && !Number.isInteger(value))
3921
- throw new Error("'dateValue' must be an integer");
4138
+ throw new Error("'setAt' must be an integer");
3922
4139
  return true;
3923
4140
  }
3924
4141
  },
3925
- dateRaw: {
3926
- type: "string",
3927
- required: true
3928
- },
3929
- subject: {
3930
- type: "string",
3931
- required: false
3932
- },
3933
- messageIdValue: {
3934
- type: "string",
3935
- required: false
3936
- },
3937
4142
  createdAt: {
3938
4143
  type: "number",
3939
4144
  readOnly: true,
@@ -3957,15 +4162,15 @@ export const Envelope = {
3957
4162
  },
3958
4163
  sk: {
3959
4164
  field: "gsi2sk",
3960
- composite: ["envelopeId"]
4165
+ composite: ["messageFlagId"]
3961
4166
  },
3962
4167
  index: "gsi2",
3963
4168
  collection: "messageData"
3964
4169
  },
3965
- Envelope: {
4170
+ MessageFlag: {
3966
4171
  pk: {
3967
4172
  field: "pk",
3968
- composite: ["envelopeId"]
4173
+ composite: ["messageFlagId"]
3969
4174
  },
3970
4175
  sk: {
3971
4176
  field: "sk",
@@ -3974,79 +4179,72 @@ export const Envelope = {
3974
4179
  }
3975
4180
  },
3976
4181
  model: {
3977
- entity: "envelope",
4182
+ entity: "messageFlag",
3978
4183
  service: "remit",
3979
4184
  version: "1"
3980
4185
  }
3981
4186
  };
3982
- export const SenderSignerStanding = {
4187
+ export const MessagePlacementMove = {
3983
4188
  attributes: {
3984
- accountConfigId: {
4189
+ messageId: {
3985
4190
  type: "string",
3986
4191
  required: true,
3987
4192
  validate: value => {
3988
4193
  if (typeof value === "string" && value.length < 25)
3989
- throw new Error("'accountConfigId' must be at least 25 characters");
4194
+ throw new Error("'messageId' must be at least 25 characters");
3990
4195
  if (typeof value === "string" && value.length > 25)
3991
- throw new Error("'accountConfigId' must be at most 25 characters");
4196
+ throw new Error("'messageId' must be at most 25 characters");
3992
4197
  return true;
3993
4198
  }
3994
4199
  },
3995
- senderKey: {
4200
+ accountId: {
3996
4201
  type: "string",
3997
4202
  required: true,
3998
4203
  validate: value => {
3999
- if (typeof value === "string" && value.length > 256)
4000
- throw new Error("'senderKey' must be at most 256 characters");
4204
+ if (typeof value === "string" && value.length < 25)
4205
+ throw new Error("'accountId' must be at least 25 characters");
4206
+ if (typeof value === "string" && value.length > 25)
4207
+ throw new Error("'accountId' must be at most 25 characters");
4001
4208
  return true;
4002
4209
  }
4003
4210
  },
4004
- signerDomain: {
4211
+ accountConfigId: {
4005
4212
  type: "string",
4006
4213
  required: true,
4007
4214
  validate: value => {
4008
- if (typeof value === "string" && value.length > 256)
4009
- throw new Error("'signerDomain' must be at most 256 characters");
4010
- return true;
4011
- }
4012
- },
4013
- messageCount: {
4014
- type: "number",
4015
- required: true,
4016
- default: 0,
4017
- validate: value => {
4018
- if (typeof value === "number" && !Number.isInteger(value))
4019
- throw new Error("'messageCount' must be an integer");
4215
+ if (typeof value === "string" && value.length < 25)
4216
+ throw new Error("'accountConfigId' must be at least 25 characters");
4217
+ if (typeof value === "string" && value.length > 25)
4218
+ throw new Error("'accountConfigId' must be at most 25 characters");
4020
4219
  return true;
4021
4220
  }
4022
4221
  },
4023
- firstSeenAt: {
4024
- type: "number",
4222
+ sourceMailboxId: {
4223
+ type: "string",
4025
4224
  required: true,
4026
4225
  validate: value => {
4027
- if (typeof value === "number" && !Number.isInteger(value))
4028
- throw new Error("'firstSeenAt' must be an integer");
4226
+ if (typeof value === "string" && value.length < 25)
4227
+ throw new Error("'sourceMailboxId' must be at least 25 characters");
4228
+ if (typeof value === "string" && value.length > 25)
4229
+ throw new Error("'sourceMailboxId' must be at most 25 characters");
4029
4230
  return true;
4030
4231
  }
4031
4232
  },
4032
- lastSeenAt: {
4033
- type: "number",
4233
+ destinationMailboxId: {
4234
+ type: "string",
4034
4235
  required: true,
4035
4236
  validate: value => {
4036
- if (typeof value === "number" && !Number.isInteger(value))
4037
- throw new Error("'lastSeenAt' must be an integer");
4237
+ if (typeof value === "string" && value.length < 25)
4238
+ throw new Error("'destinationMailboxId' must be at least 25 characters");
4239
+ if (typeof value === "string" && value.length > 25)
4240
+ throw new Error("'destinationMailboxId' must be at most 25 characters");
4038
4241
  return true;
4039
4242
  }
4040
4243
  },
4041
- userAffirmedAt: {
4042
- type: "number",
4244
+ state: {
4245
+ type: ["pending", "queued", "processing", "processed"],
4043
4246
  required: true,
4044
- default: 0,
4045
- validate: value => {
4046
- if (typeof value === "number" && !Number.isInteger(value))
4047
- throw new Error("'userAffirmedAt' must be an integer");
4048
- return true;
4049
- }
4247
+ default: "pending"
4050
4248
  },
4051
4249
  createdAt: {
4052
4250
  type: "number",
@@ -4064,71 +4262,93 @@ export const SenderSignerStanding = {
4064
4262
  }
4065
4263
  },
4066
4264
  indexes: {
4067
- SenderSignerStanding: {
4265
+ byAccountId: {
4266
+ pk: {
4267
+ field: "gsi0pk",
4268
+ composite: ["accountId"]
4269
+ },
4270
+ sk: {
4271
+ field: "gsi0sk",
4272
+ composite: ["messageId"]
4273
+ },
4274
+ index: "gsi0"
4275
+ },
4276
+ MessagePlacementMove: {
4068
4277
  pk: {
4069
4278
  field: "pk",
4070
- composite: ["accountConfigId"]
4279
+ composite: ["messageId"]
4071
4280
  },
4072
4281
  sk: {
4073
4282
  field: "sk",
4074
- composite: ["senderKey", "signerDomain"]
4283
+ composite: []
4075
4284
  }
4076
4285
  }
4077
4286
  },
4078
4287
  model: {
4079
- entity: "senderSignerStanding",
4288
+ entity: "messagePlacementMove",
4080
4289
  service: "remit",
4081
4290
  version: "1"
4082
4291
  }
4083
4292
  };
4084
- export const BodyPartParameter = {
4293
+ export const MessageFlagPush = {
4085
4294
  attributes: {
4086
- bodyPartParameterId: {
4295
+ messageId: {
4087
4296
  type: "string",
4088
4297
  required: true,
4089
4298
  validate: value => {
4090
4299
  if (typeof value === "string" && value.length < 25)
4091
- throw new Error("'bodyPartParameterId' must be at least 25 characters");
4300
+ throw new Error("'messageId' must be at least 25 characters");
4092
4301
  if (typeof value === "string" && value.length > 25)
4093
- throw new Error("'bodyPartParameterId' must be at most 25 characters");
4302
+ throw new Error("'messageId' must be at most 25 characters");
4094
4303
  return true;
4095
4304
  }
4096
4305
  },
4097
- messageId: {
4306
+ flagName: {
4307
+ type: "string",
4308
+ required: true
4309
+ },
4310
+ accountId: {
4098
4311
  type: "string",
4099
4312
  required: true,
4100
4313
  validate: value => {
4101
4314
  if (typeof value === "string" && value.length < 25)
4102
- throw new Error("'messageId' must be at least 25 characters");
4315
+ throw new Error("'accountId' must be at least 25 characters");
4103
4316
  if (typeof value === "string" && value.length > 25)
4104
- throw new Error("'messageId' must be at most 25 characters");
4317
+ throw new Error("'accountId' must be at most 25 characters");
4105
4318
  return true;
4106
4319
  }
4107
4320
  },
4108
- bodyPartId: {
4321
+ accountConfigId: {
4109
4322
  type: "string",
4110
4323
  required: true,
4111
4324
  validate: value => {
4112
4325
  if (typeof value === "string" && value.length < 25)
4113
- throw new Error("'bodyPartId' must be at least 25 characters");
4326
+ throw new Error("'accountConfigId' must be at least 25 characters");
4114
4327
  if (typeof value === "string" && value.length > 25)
4115
- throw new Error("'bodyPartId' must be at most 25 characters");
4328
+ throw new Error("'accountConfigId' must be at most 25 characters");
4116
4329
  return true;
4117
4330
  }
4118
4331
  },
4119
- parameterName: {
4332
+ mailboxId: {
4120
4333
  type: "string",
4121
4334
  required: true,
4122
4335
  validate: value => {
4123
- if (typeof value === "string" && value.length < 1)
4124
- throw new Error("'parameterName' must be at least 1 characters");
4336
+ if (typeof value === "string" && value.length < 25)
4337
+ throw new Error("'mailboxId' must be at least 25 characters");
4338
+ if (typeof value === "string" && value.length > 25)
4339
+ throw new Error("'mailboxId' must be at most 25 characters");
4125
4340
  return true;
4126
4341
  }
4127
4342
  },
4128
- parameterValue: {
4129
- type: "string",
4343
+ operation: {
4344
+ type: ["add", "remove"],
4130
4345
  required: true
4131
4346
  },
4347
+ state: {
4348
+ type: ["pending", "queued", "processing", "processed"],
4349
+ required: true,
4350
+ default: "pending"
4351
+ },
4132
4352
  createdAt: {
4133
4353
  type: "number",
4134
4354
  readOnly: true,
@@ -4145,114 +4365,89 @@ export const BodyPartParameter = {
4145
4365
  }
4146
4366
  },
4147
4367
  indexes: {
4148
- byMessageId: {
4368
+ byMailboxId: {
4149
4369
  pk: {
4150
- field: "gsi2pk",
4151
- composite: ["messageId"]
4370
+ field: "gsi1pk",
4371
+ composite: ["mailboxId"]
4152
4372
  },
4153
4373
  sk: {
4154
- field: "gsi2sk",
4155
- composite: ["bodyPartParameterId"]
4374
+ field: "gsi1sk",
4375
+ composite: ["messageId", "flagName"]
4156
4376
  },
4157
- index: "gsi2",
4158
- collection: "messageData"
4377
+ index: "gsi1"
4159
4378
  },
4160
- BodyPartParameter: {
4379
+ byAccountId: {
4380
+ pk: {
4381
+ field: "gsi0pk",
4382
+ composite: ["accountId"]
4383
+ },
4384
+ sk: {
4385
+ field: "gsi0sk",
4386
+ composite: ["messageId", "flagName"]
4387
+ },
4388
+ index: "gsi0"
4389
+ },
4390
+ MessageFlagPush: {
4161
4391
  pk: {
4162
4392
  field: "pk",
4163
- composite: ["bodyPartParameterId"]
4393
+ composite: ["messageId"]
4164
4394
  },
4165
4395
  sk: {
4166
4396
  field: "sk",
4167
- composite: []
4397
+ composite: ["flagName"]
4168
4398
  }
4169
4399
  }
4170
4400
  },
4171
4401
  model: {
4172
- entity: "bodyPartParameter",
4402
+ entity: "messageFlagPush",
4173
4403
  service: "remit",
4174
4404
  version: "1"
4175
4405
  }
4176
4406
  };
4177
- export const RawMessageStorage = {
4407
+ export const Envelope = {
4178
4408
  attributes: {
4179
- rawStorageId: {
4180
- type: "string",
4181
- required: true,
4182
- validate: value => {
4183
- if (typeof value === "string" && value.length < 25)
4184
- throw new Error("'rawStorageId' must be at least 25 characters");
4185
- if (typeof value === "string" && value.length > 25)
4186
- throw new Error("'rawStorageId' must be at most 25 characters");
4187
- return true;
4188
- }
4189
- },
4190
- messageId: {
4191
- type: "string",
4192
- required: true,
4193
- validate: value => {
4194
- if (typeof value === "string" && value.length < 25)
4195
- throw new Error("'messageId' must be at least 25 characters");
4196
- if (typeof value === "string" && value.length > 25)
4197
- throw new Error("'messageId' must be at most 25 characters");
4198
- return true;
4199
- }
4200
- },
4201
- storageType: {
4202
- type: ["s3", "filesystem", "inline", "database"],
4203
- required: true
4204
- },
4205
- storageLocation: {
4206
- type: "string",
4207
- required: true
4208
- },
4209
- storageKey: {
4409
+ envelopeId: {
4210
4410
  type: "string",
4211
- required: true
4212
- },
4213
- sizeBytes: {
4214
- type: "number",
4215
4411
  required: true,
4216
4412
  validate: value => {
4217
- if (typeof value === "number" && value < 0)
4218
- throw new Error("'sizeBytes' must be at least 0");
4219
- if (typeof value === "number" && !Number.isInteger(value))
4220
- throw new Error("'sizeBytes' must be an integer");
4413
+ if (typeof value === "string" && value.length < 25)
4414
+ throw new Error("'envelopeId' must be at least 25 characters");
4415
+ if (typeof value === "string" && value.length > 25)
4416
+ throw new Error("'envelopeId' must be at most 25 characters");
4221
4417
  return true;
4222
4418
  }
4223
4419
  },
4224
- checksumSha256: {
4420
+ messageId: {
4225
4421
  type: "string",
4226
4422
  required: true,
4227
4423
  validate: value => {
4228
- if (typeof value === "string" && value.length < 64)
4229
- throw new Error("'checksumSha256' must be at least 64 characters");
4230
- if (typeof value === "string" && value.length > 64)
4231
- throw new Error("'checksumSha256' must be at most 64 characters");
4424
+ if (typeof value === "string" && value.length < 25)
4425
+ throw new Error("'messageId' must be at least 25 characters");
4426
+ if (typeof value === "string" && value.length > 25)
4427
+ throw new Error("'messageId' must be at most 25 characters");
4232
4428
  return true;
4233
4429
  }
4234
4430
  },
4235
- contentEncoding: {
4236
- type: ["none", "gzip", "zstd"],
4237
- required: true
4238
- },
4239
- storedAt: {
4431
+ dateValue: {
4240
4432
  type: "number",
4241
4433
  required: true,
4242
4434
  validate: value => {
4243
4435
  if (typeof value === "number" && !Number.isInteger(value))
4244
- throw new Error("'storedAt' must be an integer");
4436
+ throw new Error("'dateValue' must be an integer");
4245
4437
  return true;
4246
4438
  }
4247
4439
  },
4248
- expiresAt: {
4249
- type: "number",
4250
- required: false,
4251
- validate: value => {
4252
- if (typeof value === "number" && !Number.isInteger(value))
4253
- throw new Error("'expiresAt' must be an integer");
4254
- return true;
4255
- }
4440
+ dateRaw: {
4441
+ type: "string",
4442
+ required: true
4443
+ },
4444
+ subject: {
4445
+ type: "string",
4446
+ required: false
4447
+ },
4448
+ messageIdValue: {
4449
+ type: "string",
4450
+ required: false
4256
4451
  },
4257
4452
  createdAt: {
4258
4453
  type: "number",
@@ -4277,15 +4472,15 @@ export const RawMessageStorage = {
4277
4472
  },
4278
4473
  sk: {
4279
4474
  field: "gsi2sk",
4280
- composite: ["rawStorageId"]
4475
+ composite: ["envelopeId"]
4281
4476
  },
4282
4477
  index: "gsi2",
4283
4478
  collection: "messageData"
4284
4479
  },
4285
- RawMessageStorage: {
4480
+ Envelope: {
4286
4481
  pk: {
4287
4482
  field: "pk",
4288
- composite: ["rawStorageId"]
4483
+ composite: ["envelopeId"]
4289
4484
  },
4290
4485
  sk: {
4291
4486
  field: "sk",
@@ -4294,98 +4489,77 @@ export const RawMessageStorage = {
4294
4489
  }
4295
4490
  },
4296
4491
  model: {
4297
- entity: "rawMessageStorage",
4492
+ entity: "envelope",
4298
4493
  service: "remit",
4299
4494
  version: "1"
4300
4495
  }
4301
4496
  };
4302
- export const BodyPartStorage = {
4497
+ export const SenderSignerStanding = {
4303
4498
  attributes: {
4304
- bodyPartStorageId: {
4499
+ accountConfigId: {
4305
4500
  type: "string",
4306
4501
  required: true,
4307
4502
  validate: value => {
4308
4503
  if (typeof value === "string" && value.length < 25)
4309
- throw new Error("'bodyPartStorageId' must be at least 25 characters");
4504
+ throw new Error("'accountConfigId' must be at least 25 characters");
4310
4505
  if (typeof value === "string" && value.length > 25)
4311
- throw new Error("'bodyPartStorageId' must be at most 25 characters");
4506
+ throw new Error("'accountConfigId' must be at most 25 characters");
4312
4507
  return true;
4313
4508
  }
4314
4509
  },
4315
- messageId: {
4510
+ senderKey: {
4316
4511
  type: "string",
4317
4512
  required: true,
4318
4513
  validate: value => {
4319
- if (typeof value === "string" && value.length < 25)
4320
- throw new Error("'messageId' must be at least 25 characters");
4321
- if (typeof value === "string" && value.length > 25)
4322
- throw new Error("'messageId' must be at most 25 characters");
4514
+ if (typeof value === "string" && value.length > 256)
4515
+ throw new Error("'senderKey' must be at most 256 characters");
4323
4516
  return true;
4324
4517
  }
4325
4518
  },
4326
- bodyPartId: {
4519
+ signerDomain: {
4327
4520
  type: "string",
4328
4521
  required: true,
4329
4522
  validate: value => {
4330
- if (typeof value === "string" && value.length < 25)
4331
- throw new Error("'bodyPartId' must be at least 25 characters");
4332
- if (typeof value === "string" && value.length > 25)
4333
- throw new Error("'bodyPartId' must be at most 25 characters");
4523
+ if (typeof value === "string" && value.length > 256)
4524
+ throw new Error("'signerDomain' must be at most 256 characters");
4334
4525
  return true;
4335
4526
  }
4336
4527
  },
4337
- storageType: {
4338
- type: ["s3", "filesystem", "inline", "database"],
4339
- required: true
4340
- },
4341
- storageLocation: {
4342
- type: "string",
4343
- required: true
4344
- },
4345
- storageKey: {
4346
- type: "string",
4347
- required: true
4348
- },
4349
- decodedSizeBytes: {
4528
+ messageCount: {
4350
4529
  type: "number",
4351
4530
  required: true,
4531
+ default: 0,
4352
4532
  validate: value => {
4353
- if (typeof value === "number" && value < 0)
4354
- throw new Error("'decodedSizeBytes' must be at least 0");
4355
4533
  if (typeof value === "number" && !Number.isInteger(value))
4356
- throw new Error("'decodedSizeBytes' must be an integer");
4534
+ throw new Error("'messageCount' must be an integer");
4357
4535
  return true;
4358
4536
  }
4359
4537
  },
4360
- checksumSha256: {
4361
- type: "string",
4538
+ firstSeenAt: {
4539
+ type: "number",
4362
4540
  required: true,
4363
4541
  validate: value => {
4364
- if (typeof value === "string" && value.length < 64)
4365
- throw new Error("'checksumSha256' must be at least 64 characters");
4366
- if (typeof value === "string" && value.length > 64)
4367
- throw new Error("'checksumSha256' must be at most 64 characters");
4542
+ if (typeof value === "number" && !Number.isInteger(value))
4543
+ throw new Error("'firstSeenAt' must be an integer");
4368
4544
  return true;
4369
4545
  }
4370
4546
  },
4371
- contentEncoding: {
4372
- type: ["none", "gzip", "zstd"],
4373
- required: true
4374
- },
4375
- isDeduped: {
4376
- type: "boolean",
4377
- required: true
4378
- },
4379
- dedupHash: {
4380
- type: "string",
4381
- required: false
4547
+ lastSeenAt: {
4548
+ type: "number",
4549
+ required: true,
4550
+ validate: value => {
4551
+ if (typeof value === "number" && !Number.isInteger(value))
4552
+ throw new Error("'lastSeenAt' must be an integer");
4553
+ return true;
4554
+ }
4382
4555
  },
4383
- storedAt: {
4556
+ userAffirmedAt: {
4384
4557
  type: "number",
4385
4558
  required: true,
4559
+ default: 0,
4386
4560
  validate: value => {
4387
4561
  if (typeof value === "number" && !Number.isInteger(value))
4388
- throw new Error("'storedAt' must be an integer");
4562
+ throw new Error("'userAffirmedAt' must be an integer");
4389
4563
  return true;
4390
4564
  }
4391
4565
  },
@@ -4405,45 +4579,33 @@ export const BodyPartStorage = {
4405
4579
  }
4406
4580
  },
4407
4581
  indexes: {
4408
- byMessageId: {
4409
- pk: {
4410
- field: "gsi2pk",
4411
- composite: ["messageId"]
4412
- },
4413
- sk: {
4414
- field: "gsi2sk",
4415
- composite: ["bodyPartStorageId"]
4416
- },
4417
- index: "gsi2",
4418
- collection: "messageData"
4419
- },
4420
- BodyPartStorage: {
4582
+ SenderSignerStanding: {
4421
4583
  pk: {
4422
4584
  field: "pk",
4423
- composite: ["bodyPartStorageId"]
4585
+ composite: ["accountConfigId"]
4424
4586
  },
4425
4587
  sk: {
4426
4588
  field: "sk",
4427
- composite: []
4589
+ composite: ["senderKey", "signerDomain"]
4428
4590
  }
4429
4591
  }
4430
4592
  },
4431
4593
  model: {
4432
- entity: "bodyPartStorage",
4594
+ entity: "senderSignerStanding",
4433
4595
  service: "remit",
4434
4596
  version: "1"
4435
4597
  }
4436
4598
  };
4437
- export const BodyPartContent = {
4599
+ export const BodyPartParameter = {
4438
4600
  attributes: {
4439
- bodyPartContentId: {
4601
+ bodyPartParameterId: {
4440
4602
  type: "string",
4441
4603
  required: true,
4442
4604
  validate: value => {
4443
4605
  if (typeof value === "string" && value.length < 25)
4444
- throw new Error("'bodyPartContentId' must be at least 25 characters");
4606
+ throw new Error("'bodyPartParameterId' must be at least 25 characters");
4445
4607
  if (typeof value === "string" && value.length > 25)
4446
- throw new Error("'bodyPartContentId' must be at most 25 characters");
4608
+ throw new Error("'bodyPartParameterId' must be at most 25 characters");
4447
4609
  return true;
4448
4610
  }
4449
4611
  },
@@ -4469,21 +4631,19 @@ export const BodyPartContent = {
4469
4631
  return true;
4470
4632
  }
4471
4633
  },
4472
- content: {
4634
+ parameterName: {
4473
4635
  type: "string",
4474
- required: true
4475
- },
4476
- contentLength: {
4477
- type: "number",
4478
4636
  required: true,
4479
4637
  validate: value => {
4480
- if (typeof value === "number" && value < 0)
4481
- throw new Error("'contentLength' must be at least 0");
4482
- if (typeof value === "number" && !Number.isInteger(value))
4483
- throw new Error("'contentLength' must be an integer");
4638
+ if (typeof value === "string" && value.length < 1)
4639
+ throw new Error("'parameterName' must be at least 1 characters");
4484
4640
  return true;
4485
4641
  }
4486
4642
  },
4643
+ parameterValue: {
4644
+ type: "string",
4645
+ required: true
4646
+ },
4487
4647
  createdAt: {
4488
4648
  type: "number",
4489
4649
  readOnly: true,
@@ -4507,15 +4667,15 @@ export const BodyPartContent = {
4507
4667
  },
4508
4668
  sk: {
4509
4669
  field: "gsi2sk",
4510
- composite: ["bodyPartContentId"]
4670
+ composite: ["bodyPartParameterId"]
4511
4671
  },
4512
4672
  index: "gsi2",
4513
4673
  collection: "messageData"
4514
4674
  },
4515
- BodyPartContent: {
4675
+ BodyPartParameter: {
4516
4676
  pk: {
4517
4677
  field: "pk",
4518
- composite: ["bodyPartContentId"]
4678
+ composite: ["bodyPartParameterId"]
4519
4679
  },
4520
4680
  sk: {
4521
4681
  field: "sk",
@@ -4524,85 +4684,88 @@ export const BodyPartContent = {
4524
4684
  }
4525
4685
  },
4526
4686
  model: {
4527
- entity: "bodyPartContent",
4687
+ entity: "bodyPartParameter",
4528
4688
  service: "remit",
4529
4689
  version: "1"
4530
4690
  }
4531
4691
  };
4532
- export const CalendarCollection = {
4692
+ export const RawMessageStorage = {
4533
4693
  attributes: {
4534
- calendarId: {
4694
+ rawStorageId: {
4535
4695
  type: "string",
4536
4696
  required: true,
4537
4697
  validate: value => {
4538
4698
  if (typeof value === "string" && value.length < 25)
4539
- throw new Error("'calendarId' must be at least 25 characters");
4699
+ throw new Error("'rawStorageId' must be at least 25 characters");
4540
4700
  if (typeof value === "string" && value.length > 25)
4541
- throw new Error("'calendarId' must be at most 25 characters");
4701
+ throw new Error("'rawStorageId' must be at most 25 characters");
4542
4702
  return true;
4543
4703
  }
4544
4704
  },
4545
- accountConfigId: {
4705
+ messageId: {
4546
4706
  type: "string",
4547
4707
  required: true,
4548
4708
  validate: value => {
4549
4709
  if (typeof value === "string" && value.length < 25)
4550
- throw new Error("'accountConfigId' must be at least 25 characters");
4710
+ throw new Error("'messageId' must be at least 25 characters");
4551
4711
  if (typeof value === "string" && value.length > 25)
4552
- throw new Error("'accountConfigId' must be at most 25 characters");
4712
+ throw new Error("'messageId' must be at most 25 characters");
4553
4713
  return true;
4554
4714
  }
4555
4715
  },
4556
- urlSegment: {
4716
+ storageType: {
4717
+ type: ["s3", "filesystem", "inline", "database"],
4718
+ required: true
4719
+ },
4720
+ storageLocation: {
4721
+ type: "string",
4722
+ required: true
4723
+ },
4724
+ storageKey: {
4557
4725
  type: "string",
4726
+ required: true
4727
+ },
4728
+ sizeBytes: {
4729
+ type: "number",
4558
4730
  required: true,
4559
4731
  validate: value => {
4560
- if (typeof value === "string" && value.length > 64)
4561
- throw new Error("'urlSegment' must be at most 64 characters");
4732
+ if (typeof value === "number" && value < 0)
4733
+ throw new Error("'sizeBytes' must be at least 0");
4734
+ if (typeof value === "number" && !Number.isInteger(value))
4735
+ throw new Error("'sizeBytes' must be an integer");
4562
4736
  return true;
4563
4737
  }
4564
4738
  },
4565
- displayName: {
4739
+ checksumSha256: {
4566
4740
  type: "string",
4567
4741
  required: true,
4568
4742
  validate: value => {
4569
- if (typeof value === "string" && value.length > 140)
4570
- throw new Error("'displayName' must be at most 140 characters");
4743
+ if (typeof value === "string" && value.length < 64)
4744
+ throw new Error("'checksumSha256' must be at least 64 characters");
4745
+ if (typeof value === "string" && value.length > 64)
4746
+ throw new Error("'checksumSha256' must be at most 64 characters");
4571
4747
  return true;
4572
4748
  }
4573
4749
  },
4574
- color: {
4575
- type: ["Cal1", "Cal2", "Cal3", "Cal4", "Cal5", "Cal6"],
4576
- required: true,
4577
- default: "Cal1"
4578
- },
4579
- componentSet: {
4580
- type: ["VeventOnly"],
4581
- required: true,
4582
- default: "VeventOnly"
4583
- },
4584
- source: {
4585
- type: ["Default", "UserCreated", "MailDerived"],
4586
- required: true,
4587
- default: "UserCreated"
4750
+ contentEncoding: {
4751
+ type: ["none", "gzip", "zstd"],
4752
+ required: true
4588
4753
  },
4589
- timezone: {
4590
- type: "string",
4754
+ storedAt: {
4755
+ type: "number",
4591
4756
  required: true,
4592
- default: "",
4593
4757
  validate: value => {
4594
- if (typeof value === "string" && value.length > 64)
4595
- throw new Error("'timezone' must be at most 64 characters");
4758
+ if (typeof value === "number" && !Number.isInteger(value))
4759
+ throw new Error("'storedAt' must be an integer");
4596
4760
  return true;
4597
4761
  }
4598
4762
  },
4599
- syncSequence: {
4763
+ expiresAt: {
4600
4764
  type: "number",
4601
- required: true,
4602
- default: 0,
4765
+ required: false,
4603
4766
  validate: value => {
4604
4767
  if (typeof value === "number" && !Number.isInteger(value))
4605
- throw new Error("'syncSequence' must be an integer");
4768
+ throw new Error("'expiresAt' must be an integer");
4606
4769
  return true;
4607
4770
  }
4608
4771
  },
@@ -4622,168 +4785,217 @@ export const CalendarCollection = {
4622
4785
  }
4623
4786
  },
4624
4787
  indexes: {
4625
- byUrlSegment: {
4788
+ byMessageId: {
4626
4789
  pk: {
4627
- field: "gsi0pk",
4628
- composite: ["accountConfigId"]
4790
+ field: "gsi2pk",
4791
+ composite: ["messageId"]
4629
4792
  },
4630
4793
  sk: {
4631
- field: "gsi0sk",
4632
- composite: ["urlSegment"]
4794
+ field: "gsi2sk",
4795
+ composite: ["rawStorageId"]
4633
4796
  },
4634
- index: "gsi0"
4797
+ index: "gsi2",
4798
+ collection: "messageData"
4635
4799
  },
4636
- Calendar: {
4800
+ RawMessageStorage: {
4637
4801
  pk: {
4638
4802
  field: "pk",
4639
- composite: ["accountConfigId"]
4803
+ composite: ["rawStorageId"]
4640
4804
  },
4641
4805
  sk: {
4642
4806
  field: "sk",
4643
- composite: ["calendarId"]
4807
+ composite: []
4644
4808
  }
4645
4809
  }
4646
4810
  },
4647
4811
  model: {
4648
- entity: "calendar",
4812
+ entity: "rawMessageStorage",
4649
4813
  service: "remit",
4650
4814
  version: "1"
4651
4815
  }
4652
4816
  };
4653
- export const CalendarObject = {
4817
+ export const BodyPartStorage = {
4654
4818
  attributes: {
4655
- calendarObjectId: {
4819
+ bodyPartStorageId: {
4656
4820
  type: "string",
4657
4821
  required: true,
4658
4822
  validate: value => {
4659
4823
  if (typeof value === "string" && value.length < 25)
4660
- throw new Error("'calendarObjectId' must be at least 25 characters");
4824
+ throw new Error("'bodyPartStorageId' must be at least 25 characters");
4661
4825
  if (typeof value === "string" && value.length > 25)
4662
- throw new Error("'calendarObjectId' must be at most 25 characters");
4826
+ throw new Error("'bodyPartStorageId' must be at most 25 characters");
4663
4827
  return true;
4664
4828
  }
4665
4829
  },
4666
- calendarId: {
4830
+ messageId: {
4667
4831
  type: "string",
4668
4832
  required: true,
4669
4833
  validate: value => {
4670
4834
  if (typeof value === "string" && value.length < 25)
4671
- throw new Error("'calendarId' must be at least 25 characters");
4835
+ throw new Error("'messageId' must be at least 25 characters");
4672
4836
  if (typeof value === "string" && value.length > 25)
4673
- throw new Error("'calendarId' must be at most 25 characters");
4837
+ throw new Error("'messageId' must be at most 25 characters");
4674
4838
  return true;
4675
4839
  }
4676
4840
  },
4677
- resourceName: {
4841
+ bodyPartId: {
4678
4842
  type: "string",
4679
4843
  required: true,
4680
4844
  validate: value => {
4681
- if (typeof value === "string" && value.length > 256)
4682
- throw new Error("'resourceName' must be at most 256 characters");
4845
+ if (typeof value === "string" && value.length < 25)
4846
+ throw new Error("'bodyPartId' must be at least 25 characters");
4847
+ if (typeof value === "string" && value.length > 25)
4848
+ throw new Error("'bodyPartId' must be at most 25 characters");
4683
4849
  return true;
4684
4850
  }
4685
4851
  },
4686
- icalUid: {
4852
+ storageType: {
4853
+ type: ["s3", "filesystem", "inline", "database"],
4854
+ required: true
4855
+ },
4856
+ storageLocation: {
4857
+ type: "string",
4858
+ required: true
4859
+ },
4860
+ storageKey: {
4687
4861
  type: "string",
4862
+ required: true
4863
+ },
4864
+ decodedSizeBytes: {
4865
+ type: "number",
4688
4866
  required: true,
4689
4867
  validate: value => {
4690
- if (typeof value === "string" && value.length > 512)
4691
- throw new Error("'icalUid' must be at most 512 characters");
4868
+ if (typeof value === "number" && value < 0)
4869
+ throw new Error("'decodedSizeBytes' must be at least 0");
4870
+ if (typeof value === "number" && !Number.isInteger(value))
4871
+ throw new Error("'decodedSizeBytes' must be an integer");
4692
4872
  return true;
4693
4873
  }
4694
4874
  },
4695
- icalData: {
4696
- type: "string",
4697
- required: true
4698
- },
4699
- etag: {
4875
+ checksumSha256: {
4700
4876
  type: "string",
4701
4877
  required: true,
4702
4878
  validate: value => {
4879
+ if (typeof value === "string" && value.length < 64)
4880
+ throw new Error("'checksumSha256' must be at least 64 characters");
4703
4881
  if (typeof value === "string" && value.length > 64)
4704
- throw new Error("'etag' must be at most 64 characters");
4882
+ throw new Error("'checksumSha256' must be at most 64 characters");
4705
4883
  return true;
4706
4884
  }
4707
4885
  },
4708
- sequence: {
4886
+ contentEncoding: {
4887
+ type: ["none", "gzip", "zstd"],
4888
+ required: true
4889
+ },
4890
+ isDeduped: {
4891
+ type: "boolean",
4892
+ required: true
4893
+ },
4894
+ dedupHash: {
4895
+ type: "string",
4896
+ required: false
4897
+ },
4898
+ storedAt: {
4709
4899
  type: "number",
4710
4900
  required: true,
4711
- default: 0,
4712
4901
  validate: value => {
4713
4902
  if (typeof value === "number" && !Number.isInteger(value))
4714
- throw new Error("'sequence' must be an integer");
4903
+ throw new Error("'storedAt' must be an integer");
4715
4904
  return true;
4716
4905
  }
4717
4906
  },
4718
- syncSequence: {
4907
+ createdAt: {
4719
4908
  type: "number",
4909
+ readOnly: true,
4720
4910
  required: true,
4721
- default: 0,
4722
- validate: value => {
4723
- if (typeof value === "number" && !Number.isInteger(value))
4724
- throw new Error("'syncSequence' must be an integer");
4725
- return true;
4726
- }
4911
+ default: () => Date.now(),
4912
+ set: () => Date.now()
4727
4913
  },
4728
- summary: {
4914
+ updatedAt: {
4915
+ type: "number",
4916
+ watch: "*",
4917
+ required: true,
4918
+ default: () => Date.now(),
4919
+ set: () => Date.now()
4920
+ }
4921
+ },
4922
+ indexes: {
4923
+ byMessageId: {
4924
+ pk: {
4925
+ field: "gsi2pk",
4926
+ composite: ["messageId"]
4927
+ },
4928
+ sk: {
4929
+ field: "gsi2sk",
4930
+ composite: ["bodyPartStorageId"]
4931
+ },
4932
+ index: "gsi2",
4933
+ collection: "messageData"
4934
+ },
4935
+ BodyPartStorage: {
4936
+ pk: {
4937
+ field: "pk",
4938
+ composite: ["bodyPartStorageId"]
4939
+ },
4940
+ sk: {
4941
+ field: "sk",
4942
+ composite: []
4943
+ }
4944
+ }
4945
+ },
4946
+ model: {
4947
+ entity: "bodyPartStorage",
4948
+ service: "remit",
4949
+ version: "1"
4950
+ }
4951
+ };
4952
+ export const BodyPartContent = {
4953
+ attributes: {
4954
+ bodyPartContentId: {
4729
4955
  type: "string",
4730
4956
  required: true,
4731
4957
  validate: value => {
4732
- if (typeof value === "string" && value.length > 512)
4733
- throw new Error("'summary' must be at most 512 characters");
4958
+ if (typeof value === "string" && value.length < 25)
4959
+ throw new Error("'bodyPartContentId' must be at least 25 characters");
4960
+ if (typeof value === "string" && value.length > 25)
4961
+ throw new Error("'bodyPartContentId' must be at most 25 characters");
4734
4962
  return true;
4735
4963
  }
4736
4964
  },
4737
- dtStart: {
4965
+ messageId: {
4738
4966
  type: "string",
4739
4967
  required: true,
4740
4968
  validate: value => {
4741
- if (typeof value === "string" && value.length > 64)
4742
- throw new Error("'dtStart' must be at most 64 characters");
4969
+ if (typeof value === "string" && value.length < 25)
4970
+ throw new Error("'messageId' must be at least 25 characters");
4971
+ if (typeof value === "string" && value.length > 25)
4972
+ throw new Error("'messageId' must be at most 25 characters");
4743
4973
  return true;
4744
4974
  }
4745
4975
  },
4746
- dtEnd: {
4976
+ bodyPartId: {
4747
4977
  type: "string",
4748
4978
  required: true,
4749
4979
  validate: value => {
4750
- if (typeof value === "string" && value.length > 64)
4751
- throw new Error("'dtEnd' must be at most 64 characters");
4980
+ if (typeof value === "string" && value.length < 25)
4981
+ throw new Error("'bodyPartId' must be at least 25 characters");
4982
+ if (typeof value === "string" && value.length > 25)
4983
+ throw new Error("'bodyPartId' must be at most 25 characters");
4752
4984
  return true;
4753
4985
  }
4754
4986
  },
4755
- allDay: {
4756
- type: "boolean",
4757
- required: true,
4758
- default: false
4759
- },
4760
- zoneCertainty: {
4761
- type: ["Local", "Explicit", "Ambiguous"],
4762
- required: true,
4763
- default: "Explicit"
4764
- },
4765
- status: {
4766
- type: ["Confirmed", "Tentative", "Cancelled"],
4767
- required: true,
4768
- default: "Confirmed"
4769
- },
4770
- transparency: {
4771
- type: ["Opaque", "Transparent"],
4772
- required: true,
4773
- default: "Opaque"
4774
- },
4775
- hasRecurrence: {
4776
- type: "boolean",
4777
- required: true,
4778
- default: false
4779
- },
4780
- expandedThrough: {
4987
+ content: {
4781
4988
  type: "string",
4989
+ required: true
4990
+ },
4991
+ contentLength: {
4992
+ type: "number",
4782
4993
  required: true,
4783
- default: "",
4784
4994
  validate: value => {
4785
- if (typeof value === "string" && value.length > 64)
4786
- throw new Error("'expandedThrough' must be at most 64 characters");
4995
+ if (typeof value === "number" && value < 0)
4996
+ throw new Error("'contentLength' must be at least 0");
4997
+ if (typeof value === "number" && !Number.isInteger(value))
4998
+ throw new Error("'contentLength' must be an integer");
4787
4999
  return true;
4788
5000
  }
4789
5001
  },
@@ -4803,41 +5015,31 @@ export const CalendarObject = {
4803
5015
  }
4804
5016
  },
4805
5017
  indexes: {
4806
- bySyncSequence: {
4807
- pk: {
4808
- field: "gsi1pk",
4809
- composite: ["calendarId"]
4810
- },
4811
- sk: {
4812
- field: "gsi1sk",
4813
- composite: ["syncSequence"]
4814
- },
4815
- index: "gsi1"
4816
- },
4817
- byUid: {
5018
+ byMessageId: {
4818
5019
  pk: {
4819
- field: "gsi0pk",
4820
- composite: ["calendarId"]
5020
+ field: "gsi2pk",
5021
+ composite: ["messageId"]
4821
5022
  },
4822
5023
  sk: {
4823
- field: "gsi0sk",
4824
- composite: ["icalUid"]
5024
+ field: "gsi2sk",
5025
+ composite: ["bodyPartContentId"]
4825
5026
  },
4826
- index: "gsi0"
5027
+ index: "gsi2",
5028
+ collection: "messageData"
4827
5029
  },
4828
- CalendarObject: {
5030
+ BodyPartContent: {
4829
5031
  pk: {
4830
5032
  field: "pk",
4831
- composite: ["calendarId"]
5033
+ composite: ["bodyPartContentId"]
4832
5034
  },
4833
5035
  sk: {
4834
5036
  field: "sk",
4835
- composite: ["calendarObjectId"]
5037
+ composite: []
4836
5038
  }
4837
5039
  }
4838
5040
  },
4839
5041
  model: {
4840
- entity: "calendarObject",
5042
+ entity: "bodyPartContent",
4841
5043
  service: "remit",
4842
5044
  version: "1"
4843
5045
  }
@@ -4898,6 +5100,26 @@ export const CalendarEventIndex = {
4898
5100
  required: true,
4899
5101
  default: false
4900
5102
  },
5103
+ summary: {
5104
+ type: "string",
5105
+ required: true,
5106
+ default: "",
5107
+ validate: value => {
5108
+ if (typeof value === "string" && value.length > 512)
5109
+ throw new Error("'summary' must be at most 512 characters");
5110
+ return true;
5111
+ }
5112
+ },
5113
+ status: {
5114
+ type: ["Confirmed", "Tentative", "Cancelled"],
5115
+ required: true,
5116
+ default: "Confirmed"
5117
+ },
5118
+ transparency: {
5119
+ type: ["Opaque", "Transparent"],
5120
+ required: true,
5121
+ default: "Opaque"
5122
+ },
4901
5123
  createdAt: {
4902
5124
  type: "number",
4903
5125
  readOnly: true,