@remit/electrodb-entities 0.0.19 → 0.0.20

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 +1255 -1235
  2. package/index.d.cts +245 -229
  3. package/index.d.mts +245 -229
  4. package/index.d.ts +245 -229
  5. package/index.mjs +1254 -1234
  6. package/package.json +1 -1
package/index.mjs CHANGED
@@ -1381,167 +1381,264 @@ export const OrganizeJobRequest = {
1381
1381
  version: "1"
1382
1382
  }
1383
1383
  };
1384
- export const ThreadMessage = {
1384
+ export const CalendarCollection = {
1385
1385
  attributes: {
1386
- threadMessageId: {
1386
+ calendarId: {
1387
1387
  type: "string",
1388
1388
  required: true,
1389
1389
  validate: value => {
1390
1390
  if (typeof value === "string" && value.length < 25)
1391
- throw new Error("'threadMessageId' must be at least 25 characters");
1391
+ throw new Error("'calendarId' must be at least 25 characters");
1392
1392
  if (typeof value === "string" && value.length > 25)
1393
- throw new Error("'threadMessageId' must be at most 25 characters");
1393
+ throw new Error("'calendarId' must be at most 25 characters");
1394
1394
  return true;
1395
1395
  }
1396
1396
  },
1397
- threadId: {
1397
+ accountConfigId: {
1398
1398
  type: "string",
1399
1399
  required: true,
1400
1400
  validate: value => {
1401
1401
  if (typeof value === "string" && value.length < 25)
1402
- throw new Error("'threadId' must be at least 25 characters");
1402
+ throw new Error("'accountConfigId' must be at least 25 characters");
1403
1403
  if (typeof value === "string" && value.length > 25)
1404
- throw new Error("'threadId' must be at most 25 characters");
1404
+ throw new Error("'accountConfigId' must be at most 25 characters");
1405
1405
  return true;
1406
1406
  }
1407
1407
  },
1408
- messageId: {
1408
+ urlSegment: {
1409
1409
  type: "string",
1410
1410
  required: true,
1411
1411
  validate: value => {
1412
- if (typeof value === "string" && value.length < 25)
1413
- throw new Error("'messageId' must be at least 25 characters");
1414
- if (typeof value === "string" && value.length > 25)
1415
- throw new Error("'messageId' must be at most 25 characters");
1412
+ if (typeof value === "string" && value.length > 64)
1413
+ throw new Error("'urlSegment' must be at most 64 characters");
1416
1414
  return true;
1417
1415
  }
1418
1416
  },
1419
- accountConfigId: {
1417
+ displayName: {
1420
1418
  type: "string",
1421
1419
  required: true,
1422
1420
  validate: value => {
1423
- if (typeof value === "string" && value.length < 25)
1424
- throw new Error("'accountConfigId' must be at least 25 characters");
1425
- if (typeof value === "string" && value.length > 25)
1426
- throw new Error("'accountConfigId' must be at most 25 characters");
1421
+ if (typeof value === "string" && value.length > 140)
1422
+ throw new Error("'displayName' must be at most 140 characters");
1427
1423
  return true;
1428
1424
  }
1429
1425
  },
1430
- mailboxId: {
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: {
1431
1442
  type: "string",
1432
1443
  required: true,
1444
+ default: "",
1433
1445
  validate: value => {
1434
- if (typeof value === "string" && value.length < 25)
1435
- throw new Error("'mailboxId' must be at least 25 characters");
1436
- if (typeof value === "string" && value.length > 25)
1437
- throw new Error("'mailboxId' must be at most 25 characters");
1446
+ if (typeof value === "string" && value.length > 64)
1447
+ throw new Error("'timezone' must be at most 64 characters");
1438
1448
  return true;
1439
1449
  }
1440
1450
  },
1441
- uid: {
1451
+ syncSequence: {
1442
1452
  type: "number",
1443
1453
  required: true,
1454
+ default: 0,
1444
1455
  validate: value => {
1445
- if (typeof value === "number" && value < 1)
1446
- throw new Error("'uid' must be at least 1");
1447
1456
  if (typeof value === "number" && !Number.isInteger(value))
1448
- throw new Error("'uid' must be an integer");
1457
+ throw new Error("'syncSequence' must be an integer");
1449
1458
  return true;
1450
1459
  }
1451
1460
  },
1452
- messageIdHeader: {
1453
- type: "string",
1454
- required: false
1461
+ createdAt: {
1462
+ type: "number",
1463
+ readOnly: true,
1464
+ required: true,
1465
+ default: () => Date.now(),
1466
+ set: () => Date.now()
1455
1467
  },
1456
- inReplyTo: {
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: {
1457
1508
  type: "string",
1458
- required: false
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
+ }
1459
1517
  },
1460
- referenceOrder: {
1461
- type: "number",
1518
+ calendarId: {
1519
+ type: "string",
1462
1520
  required: true,
1463
1521
  validate: value => {
1464
- if (typeof value === "number" && value < 0)
1465
- throw new Error("'referenceOrder' must be at least 0");
1466
- if (typeof value === "number" && !Number.isInteger(value))
1467
- throw new Error("'referenceOrder' must be an integer");
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");
1468
1526
  return true;
1469
1527
  }
1470
1528
  },
1471
- fromEmail: {
1529
+ resourceName: {
1472
1530
  type: "string",
1473
- required: false
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
+ }
1474
1537
  },
1475
- fromName: {
1538
+ icalUid: {
1476
1539
  type: "string",
1477
- required: false
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
+ }
1478
1546
  },
1479
- subject: {
1547
+ icalData: {
1480
1548
  type: "string",
1481
- required: false
1549
+ required: true
1482
1550
  },
1483
- listId: {
1551
+ etag: {
1484
1552
  type: "string",
1485
- required: false,
1553
+ required: true,
1486
1554
  validate: value => {
1487
- if (typeof value === "string" && value.length > 256)
1488
- throw new Error("'listId' must be at most 256 characters");
1555
+ if (typeof value === "string" && value.length > 64)
1556
+ throw new Error("'etag' must be at most 64 characters");
1489
1557
  return true;
1490
1558
  }
1491
1559
  },
1492
- internalDate: {
1560
+ sequence: {
1493
1561
  type: "number",
1494
1562
  required: true,
1563
+ default: 0,
1495
1564
  validate: value => {
1496
1565
  if (typeof value === "number" && !Number.isInteger(value))
1497
- throw new Error("'internalDate' must be an integer");
1566
+ throw new Error("'sequence' must be an integer");
1498
1567
  return true;
1499
1568
  }
1500
1569
  },
1501
- sentDate: {
1570
+ syncSequence: {
1502
1571
  type: "number",
1503
1572
  required: true,
1573
+ default: 0,
1504
1574
  validate: value => {
1505
1575
  if (typeof value === "number" && !Number.isInteger(value))
1506
- throw new Error("'sentDate' must be an integer");
1576
+ throw new Error("'syncSequence' must be an integer");
1507
1577
  return true;
1508
1578
  }
1509
1579
  },
1510
- isRead: {
1511
- type: "boolean",
1512
- required: true
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
+ }
1513
1588
  },
1514
- hasAttachment: {
1515
- type: "boolean",
1516
- required: true
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
+ }
1517
1597
  },
1518
- star: {
1519
- type: ["none", "yellow", "orange", "red", "purple", "blue", "teal", "green", "yellow_bang", "red_bang", "purple_question", "blue_info", "orange_guillemet", "green_check", "yellow_check", "blue_star"],
1598
+ dtEnd: {
1599
+ type: "string",
1520
1600
  required: true,
1521
- default: "none"
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
+ }
1522
1606
  },
1523
- hasStars: {
1607
+ allDay: {
1524
1608
  type: "boolean",
1525
- required: true
1609
+ required: true,
1610
+ default: false
1526
1611
  },
1527
- isDeleted: {
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: {
1528
1628
  type: "boolean",
1529
- required: true
1629
+ required: true,
1630
+ default: false
1530
1631
  },
1531
- snippet: {
1632
+ expandedThrough: {
1532
1633
  type: "string",
1533
- required: false,
1634
+ required: true,
1635
+ default: "",
1534
1636
  validate: value => {
1535
- if (typeof value === "string" && value.length > 256)
1536
- throw new Error("'snippet' must be at most 256 characters");
1637
+ if (typeof value === "string" && value.length > 64)
1638
+ throw new Error("'expandedThrough' must be at most 64 characters");
1537
1639
  return true;
1538
1640
  }
1539
1641
  },
1540
- category: {
1541
- type: ["uncategorized", "personal", "newsletter", "marketing", "automated", "transactional", "social"],
1542
- required: true,
1543
- default: "uncategorized"
1544
- },
1545
1642
  createdAt: {
1546
1643
  type: "number",
1547
1644
  readOnly: true,
@@ -1558,18 +1655,234 @@ export const ThreadMessage = {
1558
1655
  }
1559
1656
  },
1560
1657
  indexes: {
1561
- byMailboxAndReadStatus: {
1658
+ bySyncSequence: {
1562
1659
  pk: {
1563
- field: "pk",
1564
- composite: ["accountConfigId"]
1660
+ field: "gsi1pk",
1661
+ composite: ["calendarId"]
1565
1662
  },
1566
1663
  sk: {
1567
- field: "lsi5sk",
1568
- composite: ["mailboxId", "isRead", "sentDate"]
1664
+ field: "gsi1sk",
1665
+ composite: ["syncSequence"]
1569
1666
  },
1570
- index: "lsi5"
1667
+ index: "gsi1"
1571
1668
  },
1572
- byStarred: {
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
+ };
1697
+ export const ThreadMessage = {
1698
+ attributes: {
1699
+ threadMessageId: {
1700
+ type: "string",
1701
+ required: true,
1702
+ validate: value => {
1703
+ if (typeof value === "string" && value.length < 25)
1704
+ throw new Error("'threadMessageId' must be at least 25 characters");
1705
+ if (typeof value === "string" && value.length > 25)
1706
+ throw new Error("'threadMessageId' must be at most 25 characters");
1707
+ return true;
1708
+ }
1709
+ },
1710
+ threadId: {
1711
+ type: "string",
1712
+ required: true,
1713
+ validate: value => {
1714
+ if (typeof value === "string" && value.length < 25)
1715
+ throw new Error("'threadId' must be at least 25 characters");
1716
+ if (typeof value === "string" && value.length > 25)
1717
+ throw new Error("'threadId' must be at most 25 characters");
1718
+ return true;
1719
+ }
1720
+ },
1721
+ messageId: {
1722
+ type: "string",
1723
+ required: true,
1724
+ validate: value => {
1725
+ if (typeof value === "string" && value.length < 25)
1726
+ throw new Error("'messageId' must be at least 25 characters");
1727
+ if (typeof value === "string" && value.length > 25)
1728
+ throw new Error("'messageId' must be at most 25 characters");
1729
+ return true;
1730
+ }
1731
+ },
1732
+ accountConfigId: {
1733
+ type: "string",
1734
+ required: true,
1735
+ validate: value => {
1736
+ if (typeof value === "string" && value.length < 25)
1737
+ throw new Error("'accountConfigId' must be at least 25 characters");
1738
+ if (typeof value === "string" && value.length > 25)
1739
+ throw new Error("'accountConfigId' must be at most 25 characters");
1740
+ return true;
1741
+ }
1742
+ },
1743
+ mailboxId: {
1744
+ type: "string",
1745
+ required: true,
1746
+ validate: value => {
1747
+ if (typeof value === "string" && value.length < 25)
1748
+ throw new Error("'mailboxId' must be at least 25 characters");
1749
+ if (typeof value === "string" && value.length > 25)
1750
+ throw new Error("'mailboxId' must be at most 25 characters");
1751
+ return true;
1752
+ }
1753
+ },
1754
+ uid: {
1755
+ type: "number",
1756
+ required: true,
1757
+ validate: value => {
1758
+ if (typeof value === "number" && value < 1)
1759
+ throw new Error("'uid' must be at least 1");
1760
+ if (typeof value === "number" && !Number.isInteger(value))
1761
+ throw new Error("'uid' must be an integer");
1762
+ return true;
1763
+ }
1764
+ },
1765
+ messageIdHeader: {
1766
+ type: "string",
1767
+ required: false
1768
+ },
1769
+ inReplyTo: {
1770
+ type: "string",
1771
+ required: false
1772
+ },
1773
+ referenceOrder: {
1774
+ type: "number",
1775
+ required: true,
1776
+ validate: value => {
1777
+ if (typeof value === "number" && value < 0)
1778
+ throw new Error("'referenceOrder' must be at least 0");
1779
+ if (typeof value === "number" && !Number.isInteger(value))
1780
+ throw new Error("'referenceOrder' must be an integer");
1781
+ return true;
1782
+ }
1783
+ },
1784
+ fromEmail: {
1785
+ type: "string",
1786
+ required: false
1787
+ },
1788
+ fromName: {
1789
+ type: "string",
1790
+ required: false
1791
+ },
1792
+ subject: {
1793
+ type: "string",
1794
+ required: false
1795
+ },
1796
+ listId: {
1797
+ type: "string",
1798
+ required: false,
1799
+ validate: value => {
1800
+ if (typeof value === "string" && value.length > 256)
1801
+ throw new Error("'listId' must be at most 256 characters");
1802
+ return true;
1803
+ }
1804
+ },
1805
+ internalDate: {
1806
+ type: "number",
1807
+ required: true,
1808
+ validate: value => {
1809
+ if (typeof value === "number" && !Number.isInteger(value))
1810
+ throw new Error("'internalDate' must be an integer");
1811
+ return true;
1812
+ }
1813
+ },
1814
+ sentDate: {
1815
+ type: "number",
1816
+ required: true,
1817
+ validate: value => {
1818
+ if (typeof value === "number" && !Number.isInteger(value))
1819
+ throw new Error("'sentDate' must be an integer");
1820
+ return true;
1821
+ }
1822
+ },
1823
+ isRead: {
1824
+ type: "boolean",
1825
+ required: true
1826
+ },
1827
+ hasAttachment: {
1828
+ type: "boolean",
1829
+ required: true
1830
+ },
1831
+ star: {
1832
+ type: ["none", "yellow", "orange", "red", "purple", "blue", "teal", "green", "yellow_bang", "red_bang", "purple_question", "blue_info", "orange_guillemet", "green_check", "yellow_check", "blue_star"],
1833
+ required: true,
1834
+ default: "none"
1835
+ },
1836
+ hasStars: {
1837
+ type: "boolean",
1838
+ required: true
1839
+ },
1840
+ isDeleted: {
1841
+ type: "boolean",
1842
+ required: true
1843
+ },
1844
+ snippet: {
1845
+ type: "string",
1846
+ required: false,
1847
+ validate: value => {
1848
+ if (typeof value === "string" && value.length > 256)
1849
+ throw new Error("'snippet' must be at most 256 characters");
1850
+ return true;
1851
+ }
1852
+ },
1853
+ category: {
1854
+ type: ["uncategorized", "personal", "newsletter", "marketing", "automated", "transactional", "social"],
1855
+ required: true,
1856
+ default: "uncategorized"
1857
+ },
1858
+ createdAt: {
1859
+ type: "number",
1860
+ readOnly: true,
1861
+ required: true,
1862
+ default: () => Date.now(),
1863
+ set: () => Date.now()
1864
+ },
1865
+ updatedAt: {
1866
+ type: "number",
1867
+ watch: "*",
1868
+ required: true,
1869
+ default: () => Date.now(),
1870
+ set: () => Date.now()
1871
+ }
1872
+ },
1873
+ indexes: {
1874
+ byMailboxAndReadStatus: {
1875
+ pk: {
1876
+ field: "pk",
1877
+ composite: ["accountConfigId"]
1878
+ },
1879
+ sk: {
1880
+ field: "lsi5sk",
1881
+ composite: ["mailboxId", "isRead", "sentDate"]
1882
+ },
1883
+ index: "lsi5"
1884
+ },
1885
+ byStarred: {
1573
1886
  pk: {
1574
1887
  field: "pk",
1575
1888
  composite: ["accountConfigId"]
@@ -2668,510 +2981,22 @@ export const Message = {
2668
2981
  },
2669
2982
  placementDecidedAt: {
2670
2983
  type: "number",
2671
- required: false,
2672
- validate: value => {
2673
- if (typeof value === "number" && !Number.isInteger(value))
2674
- throw new Error("'placementDecidedAt' must be an integer");
2675
- return true;
2676
- }
2677
- },
2678
- spamReport: {
2679
- type: "map",
2680
- properties: {
2681
- reportedAt: {
2682
- type: "number",
2683
- required: true
2684
- }
2685
- },
2686
- required: false
2687
- },
2688
- createdAt: {
2689
- type: "number",
2690
- readOnly: true,
2691
- required: true,
2692
- default: () => Date.now(),
2693
- set: () => Date.now()
2694
- },
2695
- updatedAt: {
2696
- type: "number",
2697
- watch: "*",
2698
- required: true,
2699
- default: () => Date.now(),
2700
- set: () => Date.now()
2701
- }
2702
- },
2703
- indexes: {
2704
- byMessageId: {
2705
- pk: {
2706
- field: "gsi2pk",
2707
- composite: ["messageId"]
2708
- },
2709
- sk: {
2710
- field: "gsi2sk",
2711
- composite: []
2712
- },
2713
- index: "gsi2",
2714
- collection: "messageData"
2715
- },
2716
- byMailboxId: {
2717
- pk: {
2718
- field: "gsi0pk",
2719
- composite: ["mailboxId"]
2720
- },
2721
- sk: {
2722
- field: "gsi0sk",
2723
- composite: ["uid"]
2724
- },
2725
- index: "gsi0",
2726
- collection: "message"
2727
- },
2728
- Message: {
2729
- pk: {
2730
- field: "pk",
2731
- composite: ["messageId"]
2732
- },
2733
- sk: {
2734
- field: "sk",
2735
- composite: []
2736
- }
2737
- }
2738
- },
2739
- model: {
2740
- entity: "message",
2741
- service: "remit",
2742
- version: "1"
2743
- }
2744
- };
2745
- export const BodyPart = {
2746
- attributes: {
2747
- bodyPartId: {
2748
- type: "string",
2749
- required: true,
2750
- validate: value => {
2751
- if (typeof value === "string" && value.length < 25)
2752
- throw new Error("'bodyPartId' must be at least 25 characters");
2753
- if (typeof value === "string" && value.length > 25)
2754
- throw new Error("'bodyPartId' must be at most 25 characters");
2755
- return true;
2756
- }
2757
- },
2758
- messageId: {
2759
- type: "string",
2760
- required: true,
2761
- validate: value => {
2762
- if (typeof value === "string" && value.length < 25)
2763
- throw new Error("'messageId' must be at least 25 characters");
2764
- if (typeof value === "string" && value.length > 25)
2765
- throw new Error("'messageId' must be at most 25 characters");
2766
- return true;
2767
- }
2768
- },
2769
- parentBodyPartId: {
2770
- type: "string",
2771
- required: false,
2772
- validate: value => {
2773
- if (typeof value === "string" && value.length < 25)
2774
- throw new Error("'parentBodyPartId' must be at least 25 characters");
2775
- if (typeof value === "string" && value.length > 25)
2776
- throw new Error("'parentBodyPartId' must be at most 25 characters");
2777
- return true;
2778
- }
2779
- },
2780
- partPath: {
2781
- type: "string",
2782
- required: true,
2783
- validate: value => {
2784
- if (typeof value === "string" && value.length < 1)
2785
- throw new Error("'partPath' must be at least 1 characters");
2786
- return true;
2787
- }
2788
- },
2789
- mediaType: {
2790
- type: ["TEXT", "IMAGE", "AUDIO", "VIDEO", "APPLICATION", "MULTIPART", "MESSAGE"],
2791
- required: true
2792
- },
2793
- mediaSubtype: {
2794
- type: "string",
2795
- required: true,
2796
- validate: value => {
2797
- if (typeof value === "string" && value.length < 1)
2798
- throw new Error("'mediaSubtype' must be at least 1 characters");
2799
- return true;
2800
- }
2801
- },
2802
- contentId: {
2803
- type: "string",
2804
- required: false
2805
- },
2806
- contentDescription: {
2807
- type: "string",
2808
- required: false
2809
- },
2810
- transferEncoding: {
2811
- type: ["7BIT", "8BIT", "BINARY", "BASE64", "QUOTED-PRINTABLE"],
2812
- required: true
2813
- },
2814
- sizeOctets: {
2815
- type: "number",
2816
- required: true,
2817
- validate: value => {
2818
- if (typeof value === "number" && value < 0)
2819
- throw new Error("'sizeOctets' must be at least 0");
2820
- if (typeof value === "number" && !Number.isInteger(value))
2821
- throw new Error("'sizeOctets' must be an integer");
2822
- return true;
2823
- }
2824
- },
2825
- lineCount: {
2826
- type: "number",
2827
- required: false,
2828
- validate: value => {
2829
- if (typeof value === "number" && !Number.isInteger(value))
2830
- throw new Error("'lineCount' must be an integer");
2831
- return true;
2832
- }
2833
- },
2834
- md5Hash: {
2835
- type: "string",
2836
- required: false
2837
- },
2838
- disposition: {
2839
- type: ["inline", "attachment"],
2840
- required: false
2841
- },
2842
- dispositionFilename: {
2843
- type: "string",
2844
- required: false
2845
- },
2846
- language: {
2847
- type: "string",
2848
- required: false
2849
- },
2850
- location: {
2851
- type: "string",
2852
- required: false
2853
- },
2854
- isMultipart: {
2855
- type: "boolean",
2856
- required: true
2857
- },
2858
- multipartSubtype: {
2859
- type: ["mixed", "alternative", "digest", "parallel", "related", "signed", "encrypted", "form-data", "report"],
2860
- required: false
2861
- },
2862
- createdAt: {
2863
- type: "number",
2864
- readOnly: true,
2865
- required: true,
2866
- default: () => Date.now(),
2867
- set: () => Date.now()
2868
- },
2869
- updatedAt: {
2870
- type: "number",
2871
- watch: "*",
2872
- required: true,
2873
- default: () => Date.now(),
2874
- set: () => Date.now()
2875
- }
2876
- },
2877
- indexes: {
2878
- byMessageId: {
2879
- pk: {
2880
- field: "gsi2pk",
2881
- composite: ["messageId"]
2882
- },
2883
- sk: {
2884
- field: "gsi2sk",
2885
- composite: ["bodyPartId"]
2886
- },
2887
- index: "gsi2",
2888
- collection: "messageData"
2889
- },
2890
- BodyPart: {
2891
- pk: {
2892
- field: "pk",
2893
- composite: ["bodyPartId"]
2894
- },
2895
- sk: {
2896
- field: "sk",
2897
- composite: []
2898
- }
2899
- }
2900
- },
2901
- model: {
2902
- entity: "bodyPart",
2903
- service: "remit",
2904
- version: "1"
2905
- }
2906
- };
2907
- export const MessageReference = {
2908
- attributes: {
2909
- messageReferenceId: {
2910
- type: "string",
2911
- required: true,
2912
- validate: value => {
2913
- if (typeof value === "string" && value.length < 25)
2914
- throw new Error("'messageReferenceId' must be at least 25 characters");
2915
- if (typeof value === "string" && value.length > 25)
2916
- throw new Error("'messageReferenceId' must be at most 25 characters");
2917
- return true;
2918
- }
2919
- },
2920
- messageId: {
2921
- type: "string",
2922
- required: true,
2923
- validate: value => {
2924
- if (typeof value === "string" && value.length < 25)
2925
- throw new Error("'messageId' must be at least 25 characters");
2926
- if (typeof value === "string" && value.length > 25)
2927
- throw new Error("'messageId' must be at most 25 characters");
2928
- return true;
2929
- }
2930
- },
2931
- envelopeId: {
2932
- type: "string",
2933
- required: true,
2934
- validate: value => {
2935
- if (typeof value === "string" && value.length < 25)
2936
- throw new Error("'envelopeId' must be at least 25 characters");
2937
- if (typeof value === "string" && value.length > 25)
2938
- throw new Error("'envelopeId' must be at most 25 characters");
2939
- return true;
2940
- }
2941
- },
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: {
3046
- type: "string",
3047
- required: true
3048
- },
3049
- addressRole: {
3050
- type: ["from", "sender", "reply_to", "to", "cc", "bcc"],
3051
- required: true
3052
- },
3053
- addressOrder: {
3054
- type: "number",
3055
- required: true,
3056
- validate: value => {
3057
- if (typeof value === "number" && value < 0)
3058
- throw new Error("'addressOrder' must be at least 0");
3059
- if (typeof value === "number" && !Number.isInteger(value))
3060
- throw new Error("'addressOrder' must be an integer");
3061
- return true;
3062
- }
3063
- },
3064
- createdAt: {
3065
- type: "number",
3066
- readOnly: true,
3067
- required: true,
3068
- default: () => Date.now(),
3069
- set: () => Date.now()
3070
- },
3071
- updatedAt: {
3072
- type: "number",
3073
- watch: "*",
3074
- required: true,
3075
- default: () => Date.now(),
3076
- set: () => Date.now()
3077
- }
3078
- },
3079
- indexes: {
3080
- byMessageId: {
3081
- pk: {
3082
- field: "gsi2pk",
3083
- composite: ["messageId"]
3084
- },
3085
- sk: {
3086
- field: "gsi2sk",
3087
- composite: ["envelopeAddressId"]
3088
- },
3089
- index: "gsi2",
3090
- collection: "messageData"
3091
- },
3092
- EnvelopeAddress: {
3093
- pk: {
3094
- field: "pk",
3095
- composite: ["envelopeAddressId"]
3096
- },
3097
- sk: {
3098
- field: "sk",
3099
- composite: []
3100
- }
3101
- }
3102
- },
3103
- model: {
3104
- entity: "envelopeAddress",
3105
- service: "remit",
3106
- version: "1"
3107
- }
3108
- };
3109
- export const ConfigImport = {
3110
- attributes: {
3111
- importId: {
3112
- type: "string",
3113
- required: true,
3114
- validate: value => {
3115
- if (typeof value === "string" && value.length < 25)
3116
- throw new Error("'importId' must be at least 25 characters");
3117
- if (typeof value === "string" && value.length > 25)
3118
- throw new Error("'importId' must be at most 25 characters");
3119
- return true;
3120
- }
3121
- },
3122
- accountConfigId: {
3123
- type: "string",
3124
- required: true,
3125
- validate: value => {
3126
- if (typeof value === "string" && value.length < 25)
3127
- throw new Error("'accountConfigId' must be at least 25 characters");
3128
- if (typeof value === "string" && value.length > 25)
3129
- throw new Error("'accountConfigId' must be at most 25 characters");
3130
- return true;
3131
- }
3132
- },
3133
- schemaVersion: {
3134
- type: "number",
3135
- required: true,
3136
- validate: value => {
3137
- if (typeof value === "number" && !Number.isInteger(value))
3138
- throw new Error("'schemaVersion' must be an integer");
3139
- return true;
3140
- }
3141
- },
3142
- state: {
3143
- type: ["Pending", "Complete"],
3144
- required: true,
3145
- default: "Pending"
3146
- },
3147
- document: {
3148
- type: CustomAttributeType("any"),
3149
- required: true
2984
+ required: false,
2985
+ validate: value => {
2986
+ if (typeof value === "number" && !Number.isInteger(value))
2987
+ throw new Error("'placementDecidedAt' must be an integer");
2988
+ return true;
2989
+ }
3150
2990
  },
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
- }
2991
+ spamReport: {
2992
+ type: "map",
2993
+ properties: {
2994
+ reportedAt: {
2995
+ type: "number",
2996
+ required: true
3172
2997
  }
3173
2998
  },
3174
- required: true
2999
+ required: false
3175
3000
  },
3176
3001
  createdAt: {
3177
3002
  type: "number",
@@ -3180,16 +3005,6 @@ export const ConfigImport = {
3180
3005
  default: () => Date.now(),
3181
3006
  set: () => Date.now()
3182
3007
  },
3183
- completedAt: {
3184
- type: "number",
3185
- required: true,
3186
- default: 0,
3187
- validate: value => {
3188
- if (typeof value === "number" && !Number.isInteger(value))
3189
- throw new Error("'completedAt' must be an integer");
3190
- return true;
3191
- }
3192
- },
3193
3008
  updatedAt: {
3194
3009
  type: "number",
3195
3010
  watch: "*",
@@ -3199,21 +3014,34 @@ export const ConfigImport = {
3199
3014
  }
3200
3015
  },
3201
3016
  indexes: {
3202
- byAccountConfigId: {
3017
+ byMessageId: {
3018
+ pk: {
3019
+ field: "gsi2pk",
3020
+ composite: ["messageId"]
3021
+ },
3022
+ sk: {
3023
+ field: "gsi2sk",
3024
+ composite: []
3025
+ },
3026
+ index: "gsi2",
3027
+ collection: "messageData"
3028
+ },
3029
+ byMailboxId: {
3203
3030
  pk: {
3204
3031
  field: "gsi0pk",
3205
- composite: ["accountConfigId"]
3032
+ composite: ["mailboxId"]
3206
3033
  },
3207
3034
  sk: {
3208
3035
  field: "gsi0sk",
3209
- composite: ["createdAt"]
3036
+ composite: ["uid"]
3210
3037
  },
3211
- index: "gsi0"
3038
+ index: "gsi0",
3039
+ collection: "message"
3212
3040
  },
3213
- ConfigImport: {
3041
+ Message: {
3214
3042
  pk: {
3215
3043
  field: "pk",
3216
- composite: ["importId"]
3044
+ composite: ["messageId"]
3217
3045
  },
3218
3046
  sk: {
3219
3047
  field: "sk",
@@ -3222,43 +3050,128 @@ export const ConfigImport = {
3222
3050
  }
3223
3051
  },
3224
3052
  model: {
3225
- entity: "configImport",
3053
+ entity: "message",
3226
3054
  service: "remit",
3227
3055
  version: "1"
3228
3056
  }
3229
3057
  };
3230
- export const AccountSetting = {
3058
+ export const BodyPart = {
3231
3059
  attributes: {
3232
- accountSettingId: {
3060
+ bodyPartId: {
3233
3061
  type: "string",
3234
3062
  required: true,
3235
3063
  validate: value => {
3236
3064
  if (typeof value === "string" && value.length < 25)
3237
- throw new Error("'accountSettingId' must be at least 25 characters");
3065
+ throw new Error("'bodyPartId' must be at least 25 characters");
3238
3066
  if (typeof value === "string" && value.length > 25)
3239
- throw new Error("'accountSettingId' must be at most 25 characters");
3067
+ throw new Error("'bodyPartId' must be at most 25 characters");
3240
3068
  return true;
3241
3069
  }
3242
3070
  },
3243
- accountConfigId: {
3071
+ messageId: {
3244
3072
  type: "string",
3245
3073
  required: true,
3246
3074
  validate: value => {
3247
3075
  if (typeof value === "string" && value.length < 25)
3248
- throw new Error("'accountConfigId' must be at least 25 characters");
3076
+ throw new Error("'messageId' must be at least 25 characters");
3249
3077
  if (typeof value === "string" && value.length > 25)
3250
- throw new Error("'accountConfigId' must be at most 25 characters");
3078
+ throw new Error("'messageId' must be at most 25 characters");
3251
3079
  return true;
3252
3080
  }
3253
3081
  },
3254
- name: {
3082
+ parentBodyPartId: {
3083
+ type: "string",
3084
+ required: false,
3085
+ validate: value => {
3086
+ if (typeof value === "string" && value.length < 25)
3087
+ throw new Error("'parentBodyPartId' must be at least 25 characters");
3088
+ if (typeof value === "string" && value.length > 25)
3089
+ throw new Error("'parentBodyPartId' must be at most 25 characters");
3090
+ return true;
3091
+ }
3092
+ },
3093
+ partPath: {
3255
3094
  type: "string",
3095
+ required: true,
3096
+ validate: value => {
3097
+ if (typeof value === "string" && value.length < 1)
3098
+ throw new Error("'partPath' must be at least 1 characters");
3099
+ return true;
3100
+ }
3101
+ },
3102
+ mediaType: {
3103
+ type: ["TEXT", "IMAGE", "AUDIO", "VIDEO", "APPLICATION", "MULTIPART", "MESSAGE"],
3256
3104
  required: true
3257
3105
  },
3258
- value: {
3259
- type: CustomAttributeType("any"),
3106
+ mediaSubtype: {
3107
+ type: "string",
3108
+ required: true,
3109
+ validate: value => {
3110
+ if (typeof value === "string" && value.length < 1)
3111
+ throw new Error("'mediaSubtype' must be at least 1 characters");
3112
+ return true;
3113
+ }
3114
+ },
3115
+ contentId: {
3116
+ type: "string",
3117
+ required: false
3118
+ },
3119
+ contentDescription: {
3120
+ type: "string",
3121
+ required: false
3122
+ },
3123
+ transferEncoding: {
3124
+ type: ["7BIT", "8BIT", "BINARY", "BASE64", "QUOTED-PRINTABLE"],
3125
+ required: true
3126
+ },
3127
+ sizeOctets: {
3128
+ type: "number",
3129
+ required: true,
3130
+ validate: value => {
3131
+ if (typeof value === "number" && value < 0)
3132
+ throw new Error("'sizeOctets' must be at least 0");
3133
+ if (typeof value === "number" && !Number.isInteger(value))
3134
+ throw new Error("'sizeOctets' must be an integer");
3135
+ return true;
3136
+ }
3137
+ },
3138
+ lineCount: {
3139
+ type: "number",
3140
+ required: false,
3141
+ validate: value => {
3142
+ if (typeof value === "number" && !Number.isInteger(value))
3143
+ throw new Error("'lineCount' must be an integer");
3144
+ return true;
3145
+ }
3146
+ },
3147
+ md5Hash: {
3148
+ type: "string",
3149
+ required: false
3150
+ },
3151
+ disposition: {
3152
+ type: ["inline", "attachment"],
3153
+ required: false
3154
+ },
3155
+ dispositionFilename: {
3156
+ type: "string",
3157
+ required: false
3158
+ },
3159
+ language: {
3160
+ type: "string",
3161
+ required: false
3162
+ },
3163
+ location: {
3164
+ type: "string",
3165
+ required: false
3166
+ },
3167
+ isMultipart: {
3168
+ type: "boolean",
3260
3169
  required: true
3261
3170
  },
3171
+ multipartSubtype: {
3172
+ type: ["mixed", "alternative", "digest", "parallel", "related", "signed", "encrypted", "form-data", "report"],
3173
+ required: false
3174
+ },
3262
3175
  createdAt: {
3263
3176
  type: "number",
3264
3177
  readOnly: true,
@@ -3275,21 +3188,22 @@ export const AccountSetting = {
3275
3188
  }
3276
3189
  },
3277
3190
  indexes: {
3278
- byAccountConfigId: {
3191
+ byMessageId: {
3279
3192
  pk: {
3280
- field: "gsi0pk",
3281
- composite: ["accountConfigId"]
3193
+ field: "gsi2pk",
3194
+ composite: ["messageId"]
3282
3195
  },
3283
3196
  sk: {
3284
- field: "gsi0sk",
3285
- composite: ["name"]
3197
+ field: "gsi2sk",
3198
+ composite: ["bodyPartId"]
3286
3199
  },
3287
- index: "gsi0"
3200
+ index: "gsi2",
3201
+ collection: "messageData"
3288
3202
  },
3289
- AccountSetting: {
3203
+ BodyPart: {
3290
3204
  pk: {
3291
3205
  field: "pk",
3292
- composite: ["accountSettingId"]
3206
+ composite: ["bodyPartId"]
3293
3207
  },
3294
3208
  sk: {
3295
3209
  field: "sk",
@@ -3298,57 +3212,97 @@ export const AccountSetting = {
3298
3212
  }
3299
3213
  },
3300
3214
  model: {
3301
- entity: "accountSetting",
3215
+ entity: "bodyPart",
3302
3216
  service: "remit",
3303
3217
  version: "1"
3304
3218
  }
3305
3219
  };
3306
- export const MailboxAttributeEntry = {
3220
+ export const MessageReference = {
3307
3221
  attributes: {
3308
- mailboxAttributeId: {
3222
+ messageReferenceId: {
3309
3223
  type: "string",
3310
3224
  required: true,
3311
3225
  validate: value => {
3312
3226
  if (typeof value === "string" && value.length < 25)
3313
- throw new Error("'mailboxAttributeId' must be at least 25 characters");
3227
+ throw new Error("'messageReferenceId' must be at least 25 characters");
3314
3228
  if (typeof value === "string" && value.length > 25)
3315
- throw new Error("'mailboxAttributeId' must be at most 25 characters");
3229
+ throw new Error("'messageReferenceId' must be at most 25 characters");
3316
3230
  return true;
3317
3231
  }
3318
3232
  },
3319
- mailboxId: {
3233
+ messageId: {
3320
3234
  type: "string",
3321
3235
  required: true,
3322
3236
  validate: value => {
3323
3237
  if (typeof value === "string" && value.length < 25)
3324
- throw new Error("'mailboxId' must be at least 25 characters");
3238
+ throw new Error("'messageId' must be at least 25 characters");
3325
3239
  if (typeof value === "string" && value.length > 25)
3326
- throw new Error("'mailboxId' must be at most 25 characters");
3240
+ throw new Error("'messageId' must be at most 25 characters");
3327
3241
  return true;
3328
3242
  }
3329
3243
  },
3330
- attributeName: {
3331
- type: ["\NonExistent", "\Noinferiors", "\Noselect", "\HasChildren", "\HasNoChildren", "\Marked", "\Unmarked", "\Subscribed", "\Remote"],
3244
+ envelopeId: {
3245
+ type: "string",
3246
+ required: true,
3247
+ validate: value => {
3248
+ if (typeof value === "string" && value.length < 25)
3249
+ throw new Error("'envelopeId' must be at least 25 characters");
3250
+ if (typeof value === "string" && value.length > 25)
3251
+ throw new Error("'envelopeId' must be at most 25 characters");
3252
+ return true;
3253
+ }
3254
+ },
3255
+ messageIdValue: {
3256
+ type: "string",
3257
+ required: true
3258
+ },
3259
+ referenceType: {
3260
+ type: ["in_reply_to", "references"],
3332
3261
  required: true
3262
+ },
3263
+ referenceOrder: {
3264
+ type: "number",
3265
+ required: true,
3266
+ validate: value => {
3267
+ if (typeof value === "number" && value < 0)
3268
+ throw new Error("'referenceOrder' must be at least 0");
3269
+ if (typeof value === "number" && !Number.isInteger(value))
3270
+ throw new Error("'referenceOrder' must be an integer");
3271
+ return true;
3272
+ }
3273
+ },
3274
+ createdAt: {
3275
+ type: "number",
3276
+ readOnly: true,
3277
+ required: true,
3278
+ default: () => Date.now(),
3279
+ set: () => Date.now()
3280
+ },
3281
+ updatedAt: {
3282
+ type: "number",
3283
+ watch: "*",
3284
+ required: true,
3285
+ default: () => Date.now(),
3286
+ set: () => Date.now()
3333
3287
  }
3334
3288
  },
3335
3289
  indexes: {
3336
- byMailboxId: {
3290
+ byMessageId: {
3337
3291
  pk: {
3338
- field: "gsi1pk",
3339
- composite: ["mailboxId"]
3292
+ field: "gsi2pk",
3293
+ composite: ["messageId"]
3340
3294
  },
3341
3295
  sk: {
3342
- field: "gsi1sk",
3343
- composite: ["mailboxAttributeId"]
3296
+ field: "gsi2sk",
3297
+ composite: ["messageReferenceId"]
3344
3298
  },
3345
- index: "gsi1",
3346
- collection: "mailbox"
3299
+ index: "gsi2",
3300
+ collection: "messageData"
3347
3301
  },
3348
- MailboxAttributeEntry: {
3302
+ MessageReference: {
3349
3303
  pk: {
3350
3304
  field: "pk",
3351
- composite: ["mailboxAttributeId"]
3305
+ composite: ["messageReferenceId"]
3352
3306
  },
3353
3307
  sk: {
3354
3308
  field: "sk",
@@ -3357,120 +3311,101 @@ export const MailboxAttributeEntry = {
3357
3311
  }
3358
3312
  },
3359
3313
  model: {
3360
- entity: "mailboxAttributeEntry",
3314
+ entity: "messageReference",
3361
3315
  service: "remit",
3362
3316
  version: "1"
3363
3317
  }
3364
3318
  };
3365
- export const MailboxSpecialUseEntry = {
3319
+ export const EnvelopeAddress = {
3366
3320
  attributes: {
3367
- mailboxSpecialUseId: {
3321
+ envelopeAddressId: {
3368
3322
  type: "string",
3369
3323
  required: true,
3370
3324
  validate: value => {
3371
3325
  if (typeof value === "string" && value.length < 25)
3372
- throw new Error("'mailboxSpecialUseId' must be at least 25 characters");
3326
+ throw new Error("'envelopeAddressId' must be at least 25 characters");
3373
3327
  if (typeof value === "string" && value.length > 25)
3374
- throw new Error("'mailboxSpecialUseId' must be at most 25 characters");
3328
+ throw new Error("'envelopeAddressId' must be at most 25 characters");
3375
3329
  return true;
3376
3330
  }
3377
3331
  },
3378
- mailboxId: {
3332
+ messageId: {
3379
3333
  type: "string",
3380
3334
  required: true,
3381
3335
  validate: value => {
3382
3336
  if (typeof value === "string" && value.length < 25)
3383
- throw new Error("'mailboxId' must be at least 25 characters");
3337
+ throw new Error("'messageId' must be at least 25 characters");
3384
3338
  if (typeof value === "string" && value.length > 25)
3385
- throw new Error("'mailboxId' must be at most 25 characters");
3339
+ throw new Error("'messageId' must be at most 25 characters");
3386
3340
  return true;
3387
3341
  }
3388
3342
  },
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: {
3343
+ addressId: {
3427
3344
  type: "string",
3428
3345
  required: true,
3429
3346
  validate: value => {
3430
3347
  if (typeof value === "string" && value.length < 25)
3431
- throw new Error("'mailboxFlagId' must be at least 25 characters");
3348
+ throw new Error("'addressId' must be at least 25 characters");
3432
3349
  if (typeof value === "string" && value.length > 25)
3433
- throw new Error("'mailboxFlagId' must be at most 25 characters");
3350
+ throw new Error("'addressId' must be at most 25 characters");
3434
3351
  return true;
3435
3352
  }
3436
3353
  },
3437
- mailboxId: {
3354
+ displayName: {
3355
+ type: "string",
3356
+ required: false
3357
+ },
3358
+ normalizedEmail: {
3438
3359
  type: "string",
3360
+ required: true
3361
+ },
3362
+ addressRole: {
3363
+ type: ["from", "sender", "reply_to", "to", "cc", "bcc"],
3364
+ required: true
3365
+ },
3366
+ addressOrder: {
3367
+ type: "number",
3439
3368
  required: true,
3440
3369
  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");
3370
+ if (typeof value === "number" && value < 0)
3371
+ throw new Error("'addressOrder' must be at least 0");
3372
+ if (typeof value === "number" && !Number.isInteger(value))
3373
+ throw new Error("'addressOrder' must be an integer");
3445
3374
  return true;
3446
3375
  }
3447
3376
  },
3448
- flagName: {
3449
- type: CustomAttributeType("any"),
3450
- required: true
3377
+ createdAt: {
3378
+ type: "number",
3379
+ readOnly: true,
3380
+ required: true,
3381
+ default: () => Date.now(),
3382
+ set: () => Date.now()
3451
3383
  },
3452
- isPermanent: {
3453
- type: "boolean",
3454
- required: true
3384
+ updatedAt: {
3385
+ type: "number",
3386
+ watch: "*",
3387
+ required: true,
3388
+ default: () => Date.now(),
3389
+ set: () => Date.now()
3455
3390
  }
3456
3391
  },
3457
3392
  indexes: {
3458
- byMailboxId: {
3393
+ byMessageId: {
3459
3394
  pk: {
3460
- field: "gsi1pk",
3461
- composite: ["mailboxId"]
3395
+ field: "gsi2pk",
3396
+ composite: ["messageId"]
3462
3397
  },
3463
3398
  sk: {
3464
- field: "gsi1sk",
3465
- composite: ["mailboxFlagId"]
3399
+ field: "gsi2sk",
3400
+ composite: ["envelopeAddressId"]
3466
3401
  },
3467
- index: "gsi1",
3468
- collection: "mailbox"
3402
+ index: "gsi2",
3403
+ collection: "messageData"
3469
3404
  },
3470
- MailboxFlag: {
3405
+ EnvelopeAddress: {
3471
3406
  pk: {
3472
3407
  field: "pk",
3473
- composite: ["mailboxFlagId"]
3408
+ composite: ["envelopeAddressId"]
3474
3409
  },
3475
3410
  sk: {
3476
3411
  field: "sk",
@@ -3479,150 +3414,163 @@ export const MailboxFlag = {
3479
3414
  }
3480
3415
  },
3481
3416
  model: {
3482
- entity: "mailboxFlag",
3417
+ entity: "envelopeAddress",
3483
3418
  service: "remit",
3484
3419
  version: "1"
3485
3420
  }
3486
3421
  };
3487
- export const MailboxLock = {
3422
+ export const ConfigImport = {
3488
3423
  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: {
3424
+ importId: {
3505
3425
  type: "string",
3506
3426
  required: true,
3507
3427
  validate: value => {
3508
3428
  if (typeof value === "string" && value.length < 25)
3509
- throw new Error("'accountId' must be at least 25 characters");
3429
+ throw new Error("'importId' must be at least 25 characters");
3510
3430
  if (typeof value === "string" && value.length > 25)
3511
- throw new Error("'accountId' must be at most 25 characters");
3431
+ throw new Error("'importId' must be at most 25 characters");
3512
3432
  return true;
3513
3433
  }
3514
3434
  },
3515
- lockId: {
3435
+ accountConfigId: {
3516
3436
  type: "string",
3517
3437
  required: true,
3518
3438
  validate: value => {
3519
3439
  if (typeof value === "string" && value.length < 25)
3520
- throw new Error("'lockId' must be at least 25 characters");
3440
+ throw new Error("'accountConfigId' must be at least 25 characters");
3521
3441
  if (typeof value === "string" && value.length > 25)
3522
- throw new Error("'lockId' must be at most 25 characters");
3442
+ throw new Error("'accountConfigId' must be at most 25 characters");
3523
3443
  return true;
3524
3444
  }
3525
3445
  },
3526
- acquiredAt: {
3446
+ schemaVersion: {
3527
3447
  type: "number",
3528
3448
  required: true,
3529
3449
  validate: value => {
3530
3450
  if (typeof value === "number" && !Number.isInteger(value))
3531
- throw new Error("'acquiredAt' must be an integer");
3451
+ throw new Error("'schemaVersion' must be an integer");
3532
3452
  return true;
3533
3453
  }
3534
3454
  },
3535
- lockedBy: {
3536
- type: "string",
3455
+ state: {
3456
+ type: ["Pending", "Complete"],
3457
+ required: true,
3458
+ default: "Pending"
3459
+ },
3460
+ document: {
3461
+ type: CustomAttributeType("any"),
3537
3462
  required: true
3538
3463
  },
3539
- ttl: {
3464
+ unresolvedRefs: {
3465
+ type: "list",
3466
+ items: {
3467
+ type: "map",
3468
+ properties: {
3469
+ kind: {
3470
+ type: ["FolderRole", "MailboxOverride", "FilterAction"],
3471
+ required: true
3472
+ },
3473
+ accountId: {
3474
+ type: "string",
3475
+ required: true
3476
+ },
3477
+ folderPath: {
3478
+ type: "string",
3479
+ required: true
3480
+ },
3481
+ target: {
3482
+ type: "string",
3483
+ required: true
3484
+ }
3485
+ }
3486
+ },
3487
+ required: true
3488
+ },
3489
+ createdAt: {
3490
+ type: "number",
3491
+ readOnly: true,
3492
+ required: true,
3493
+ default: () => Date.now(),
3494
+ set: () => Date.now()
3495
+ },
3496
+ completedAt: {
3540
3497
  type: "number",
3541
3498
  required: true,
3499
+ default: 0,
3542
3500
  validate: value => {
3543
3501
  if (typeof value === "number" && !Number.isInteger(value))
3544
- throw new Error("'ttl' must be an integer");
3502
+ throw new Error("'completedAt' must be an integer");
3545
3503
  return true;
3546
3504
  }
3505
+ },
3506
+ updatedAt: {
3507
+ type: "number",
3508
+ watch: "*",
3509
+ required: true,
3510
+ default: () => Date.now(),
3511
+ set: () => Date.now()
3547
3512
  }
3548
3513
  },
3549
3514
  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: {
3515
+ byAccountConfigId: {
3563
3516
  pk: {
3564
- field: "gsi1pk",
3565
- composite: ["accountId"]
3517
+ field: "gsi0pk",
3518
+ composite: ["accountConfigId"]
3566
3519
  },
3567
3520
  sk: {
3568
- field: "gsi1sk",
3569
- composite: ["mailboxId", "eventName"]
3521
+ field: "gsi0sk",
3522
+ composite: ["createdAt"]
3570
3523
  },
3571
- index: "gsi1"
3524
+ index: "gsi0"
3572
3525
  },
3573
- MailboxLock: {
3526
+ ConfigImport: {
3574
3527
  pk: {
3575
3528
  field: "pk",
3576
- composite: ["mailboxId"]
3529
+ composite: ["importId"]
3577
3530
  },
3578
3531
  sk: {
3579
3532
  field: "sk",
3580
- composite: ["eventName"]
3533
+ composite: []
3581
3534
  }
3582
3535
  }
3583
3536
  },
3584
3537
  model: {
3585
- entity: "mailboxLock",
3538
+ entity: "configImport",
3586
3539
  service: "remit",
3587
3540
  version: "1"
3588
3541
  }
3589
3542
  };
3590
- export const MessageFlag = {
3543
+ export const AccountSetting = {
3591
3544
  attributes: {
3592
- messageFlagId: {
3545
+ accountSettingId: {
3593
3546
  type: "string",
3594
3547
  required: true,
3595
3548
  validate: value => {
3596
3549
  if (typeof value === "string" && value.length < 25)
3597
- throw new Error("'messageFlagId' must be at least 25 characters");
3550
+ throw new Error("'accountSettingId' must be at least 25 characters");
3598
3551
  if (typeof value === "string" && value.length > 25)
3599
- throw new Error("'messageFlagId' must be at most 25 characters");
3552
+ throw new Error("'accountSettingId' must be at most 25 characters");
3600
3553
  return true;
3601
3554
  }
3602
3555
  },
3603
- messageId: {
3556
+ accountConfigId: {
3604
3557
  type: "string",
3605
3558
  required: true,
3606
3559
  validate: value => {
3607
3560
  if (typeof value === "string" && value.length < 25)
3608
- throw new Error("'messageId' must be at least 25 characters");
3561
+ throw new Error("'accountConfigId' must be at least 25 characters");
3609
3562
  if (typeof value === "string" && value.length > 25)
3610
- throw new Error("'messageId' must be at most 25 characters");
3563
+ throw new Error("'accountConfigId' must be at most 25 characters");
3611
3564
  return true;
3612
3565
  }
3613
3566
  },
3614
- flagName: {
3615
- type: CustomAttributeType("any"),
3567
+ name: {
3568
+ type: "string",
3616
3569
  required: true
3617
3570
  },
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
- }
3571
+ value: {
3572
+ type: CustomAttributeType("any"),
3573
+ required: true
3626
3574
  },
3627
3575
  createdAt: {
3628
3576
  type: "number",
@@ -3640,22 +3588,21 @@ export const MessageFlag = {
3640
3588
  }
3641
3589
  },
3642
3590
  indexes: {
3643
- byMessageId: {
3591
+ byAccountConfigId: {
3644
3592
  pk: {
3645
- field: "gsi2pk",
3646
- composite: ["messageId"]
3593
+ field: "gsi0pk",
3594
+ composite: ["accountConfigId"]
3647
3595
  },
3648
3596
  sk: {
3649
- field: "gsi2sk",
3650
- composite: ["messageFlagId"]
3597
+ field: "gsi0sk",
3598
+ composite: ["name"]
3651
3599
  },
3652
- index: "gsi2",
3653
- collection: "messageData"
3600
+ index: "gsi0"
3654
3601
  },
3655
- MessageFlag: {
3602
+ AccountSetting: {
3656
3603
  pk: {
3657
3604
  field: "pk",
3658
- composite: ["messageFlagId"]
3605
+ composite: ["accountSettingId"]
3659
3606
  },
3660
3607
  sk: {
3661
3608
  field: "sk",
@@ -3664,104 +3611,179 @@ export const MessageFlag = {
3664
3611
  }
3665
3612
  },
3666
3613
  model: {
3667
- entity: "messageFlag",
3614
+ entity: "accountSetting",
3668
3615
  service: "remit",
3669
3616
  version: "1"
3670
3617
  }
3671
3618
  };
3672
- export const MessagePlacementMove = {
3619
+ export const MailboxAttributeEntry = {
3673
3620
  attributes: {
3674
- messageId: {
3621
+ mailboxAttributeId: {
3675
3622
  type: "string",
3676
3623
  required: true,
3677
3624
  validate: value => {
3678
3625
  if (typeof value === "string" && value.length < 25)
3679
- throw new Error("'messageId' must be at least 25 characters");
3626
+ throw new Error("'mailboxAttributeId' must be at least 25 characters");
3680
3627
  if (typeof value === "string" && value.length > 25)
3681
- throw new Error("'messageId' must be at most 25 characters");
3628
+ throw new Error("'mailboxAttributeId' must be at most 25 characters");
3682
3629
  return true;
3683
3630
  }
3684
3631
  },
3685
- accountId: {
3632
+ mailboxId: {
3686
3633
  type: "string",
3687
3634
  required: true,
3688
3635
  validate: value => {
3689
3636
  if (typeof value === "string" && value.length < 25)
3690
- throw new Error("'accountId' must be at least 25 characters");
3637
+ throw new Error("'mailboxId' must be at least 25 characters");
3691
3638
  if (typeof value === "string" && value.length > 25)
3692
- throw new Error("'accountId' must be at most 25 characters");
3639
+ throw new Error("'mailboxId' must be at most 25 characters");
3693
3640
  return true;
3694
3641
  }
3695
3642
  },
3696
- accountConfigId: {
3643
+ attributeName: {
3644
+ type: ["\NonExistent", "\Noinferiors", "\Noselect", "\HasChildren", "\HasNoChildren", "\Marked", "\Unmarked", "\Subscribed", "\Remote"],
3645
+ required: true
3646
+ }
3647
+ },
3648
+ indexes: {
3649
+ byMailboxId: {
3650
+ pk: {
3651
+ field: "gsi1pk",
3652
+ composite: ["mailboxId"]
3653
+ },
3654
+ sk: {
3655
+ field: "gsi1sk",
3656
+ composite: ["mailboxAttributeId"]
3657
+ },
3658
+ index: "gsi1",
3659
+ collection: "mailbox"
3660
+ },
3661
+ MailboxAttributeEntry: {
3662
+ pk: {
3663
+ field: "pk",
3664
+ composite: ["mailboxAttributeId"]
3665
+ },
3666
+ sk: {
3667
+ field: "sk",
3668
+ composite: []
3669
+ }
3670
+ }
3671
+ },
3672
+ model: {
3673
+ entity: "mailboxAttributeEntry",
3674
+ service: "remit",
3675
+ version: "1"
3676
+ }
3677
+ };
3678
+ export const MailboxSpecialUseEntry = {
3679
+ attributes: {
3680
+ mailboxSpecialUseId: {
3697
3681
  type: "string",
3698
3682
  required: true,
3699
3683
  validate: value => {
3700
3684
  if (typeof value === "string" && value.length < 25)
3701
- throw new Error("'accountConfigId' must be at least 25 characters");
3685
+ throw new Error("'mailboxSpecialUseId' must be at least 25 characters");
3702
3686
  if (typeof value === "string" && value.length > 25)
3703
- throw new Error("'accountConfigId' must be at most 25 characters");
3687
+ throw new Error("'mailboxSpecialUseId' must be at most 25 characters");
3704
3688
  return true;
3705
3689
  }
3706
3690
  },
3707
- sourceMailboxId: {
3691
+ mailboxId: {
3708
3692
  type: "string",
3709
3693
  required: true,
3710
3694
  validate: value => {
3711
3695
  if (typeof value === "string" && value.length < 25)
3712
- throw new Error("'sourceMailboxId' must be at least 25 characters");
3696
+ throw new Error("'mailboxId' must be at least 25 characters");
3713
3697
  if (typeof value === "string" && value.length > 25)
3714
- throw new Error("'sourceMailboxId' must be at most 25 characters");
3698
+ throw new Error("'mailboxId' must be at most 25 characters");
3715
3699
  return true;
3716
3700
  }
3717
3701
  },
3718
- destinationMailboxId: {
3702
+ specialUse: {
3703
+ type: ["All", "Archive", "Drafts", "Flagged", "Junk", "Sent", "Trash", "Important"],
3704
+ required: true
3705
+ }
3706
+ },
3707
+ indexes: {
3708
+ byMailboxId: {
3709
+ pk: {
3710
+ field: "gsi1pk",
3711
+ composite: ["mailboxId"]
3712
+ },
3713
+ sk: {
3714
+ field: "gsi1sk",
3715
+ composite: ["mailboxSpecialUseId"]
3716
+ },
3717
+ index: "gsi1",
3718
+ collection: "mailbox"
3719
+ },
3720
+ MailboxSpecialUseEntry: {
3721
+ pk: {
3722
+ field: "pk",
3723
+ composite: ["mailboxSpecialUseId"]
3724
+ },
3725
+ sk: {
3726
+ field: "sk",
3727
+ composite: []
3728
+ }
3729
+ }
3730
+ },
3731
+ model: {
3732
+ entity: "mailboxSpecialUseEntry",
3733
+ service: "remit",
3734
+ version: "1"
3735
+ }
3736
+ };
3737
+ export const MailboxFlag = {
3738
+ attributes: {
3739
+ mailboxFlagId: {
3719
3740
  type: "string",
3720
3741
  required: true,
3721
3742
  validate: value => {
3722
3743
  if (typeof value === "string" && value.length < 25)
3723
- throw new Error("'destinationMailboxId' must be at least 25 characters");
3744
+ throw new Error("'mailboxFlagId' must be at least 25 characters");
3724
3745
  if (typeof value === "string" && value.length > 25)
3725
- throw new Error("'destinationMailboxId' must be at most 25 characters");
3746
+ throw new Error("'mailboxFlagId' must be at most 25 characters");
3726
3747
  return true;
3727
3748
  }
3728
3749
  },
3729
- state: {
3730
- type: ["pending", "queued", "processing", "processed"],
3750
+ mailboxId: {
3751
+ type: "string",
3731
3752
  required: true,
3732
- default: "pending"
3753
+ validate: value => {
3754
+ if (typeof value === "string" && value.length < 25)
3755
+ throw new Error("'mailboxId' must be at least 25 characters");
3756
+ if (typeof value === "string" && value.length > 25)
3757
+ throw new Error("'mailboxId' must be at most 25 characters");
3758
+ return true;
3759
+ }
3733
3760
  },
3734
- createdAt: {
3735
- type: "number",
3736
- readOnly: true,
3737
- required: true,
3738
- default: () => Date.now(),
3739
- set: () => Date.now()
3761
+ flagName: {
3762
+ type: CustomAttributeType("any"),
3763
+ required: true
3740
3764
  },
3741
- updatedAt: {
3742
- type: "number",
3743
- watch: "*",
3744
- required: true,
3745
- default: () => Date.now(),
3746
- set: () => Date.now()
3765
+ isPermanent: {
3766
+ type: "boolean",
3767
+ required: true
3747
3768
  }
3748
3769
  },
3749
3770
  indexes: {
3750
- byAccountId: {
3771
+ byMailboxId: {
3751
3772
  pk: {
3752
- field: "gsi0pk",
3753
- composite: ["accountId"]
3773
+ field: "gsi1pk",
3774
+ composite: ["mailboxId"]
3754
3775
  },
3755
3776
  sk: {
3756
- field: "gsi0sk",
3757
- composite: ["messageId"]
3777
+ field: "gsi1sk",
3778
+ composite: ["mailboxFlagId"]
3758
3779
  },
3759
- index: "gsi0"
3780
+ index: "gsi1",
3781
+ collection: "mailbox"
3760
3782
  },
3761
- MessagePlacementMove: {
3783
+ MailboxFlag: {
3762
3784
  pk: {
3763
3785
  field: "pk",
3764
- composite: ["messageId"]
3786
+ composite: ["mailboxFlagId"]
3765
3787
  },
3766
3788
  sk: {
3767
3789
  field: "sk",
@@ -3770,25 +3792,25 @@ export const MessagePlacementMove = {
3770
3792
  }
3771
3793
  },
3772
3794
  model: {
3773
- entity: "messagePlacementMove",
3795
+ entity: "mailboxFlag",
3774
3796
  service: "remit",
3775
3797
  version: "1"
3776
3798
  }
3777
3799
  };
3778
- export const MessageFlagPush = {
3800
+ export const MailboxLock = {
3779
3801
  attributes: {
3780
- messageId: {
3802
+ mailboxId: {
3781
3803
  type: "string",
3782
3804
  required: true,
3783
3805
  validate: value => {
3784
3806
  if (typeof value === "string" && value.length < 25)
3785
- throw new Error("'messageId' must be at least 25 characters");
3807
+ throw new Error("'mailboxId' must be at least 25 characters");
3786
3808
  if (typeof value === "string" && value.length > 25)
3787
- throw new Error("'messageId' must be at most 25 characters");
3809
+ throw new Error("'mailboxId' must be at most 25 characters");
3788
3810
  return true;
3789
3811
  }
3790
3812
  },
3791
- flagName: {
3813
+ eventName: {
3792
3814
  type: "string",
3793
3815
  required: true
3794
3816
  },
@@ -3803,102 +3825,91 @@ export const MessageFlagPush = {
3803
3825
  return true;
3804
3826
  }
3805
3827
  },
3806
- accountConfigId: {
3828
+ lockId: {
3807
3829
  type: "string",
3808
3830
  required: true,
3809
3831
  validate: value => {
3810
3832
  if (typeof value === "string" && value.length < 25)
3811
- throw new Error("'accountConfigId' must be at least 25 characters");
3833
+ throw new Error("'lockId' must be at least 25 characters");
3812
3834
  if (typeof value === "string" && value.length > 25)
3813
- throw new Error("'accountConfigId' must be at most 25 characters");
3835
+ throw new Error("'lockId' must be at most 25 characters");
3814
3836
  return true;
3815
3837
  }
3816
3838
  },
3817
- mailboxId: {
3818
- type: "string",
3839
+ acquiredAt: {
3840
+ type: "number",
3819
3841
  required: true,
3820
3842
  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");
3843
+ if (typeof value === "number" && !Number.isInteger(value))
3844
+ throw new Error("'acquiredAt' must be an integer");
3825
3845
  return true;
3826
3846
  }
3827
3847
  },
3828
- operation: {
3829
- type: ["add", "remove"],
3848
+ lockedBy: {
3849
+ type: "string",
3830
3850
  required: true
3831
3851
  },
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: {
3852
+ ttl: {
3845
3853
  type: "number",
3846
- watch: "*",
3847
3854
  required: true,
3848
- default: () => Date.now(),
3849
- set: () => Date.now()
3855
+ validate: value => {
3856
+ if (typeof value === "number" && !Number.isInteger(value))
3857
+ throw new Error("'ttl' must be an integer");
3858
+ return true;
3859
+ }
3850
3860
  }
3851
3861
  },
3852
3862
  indexes: {
3853
- byMailboxId: {
3863
+ allLocks: {
3854
3864
  pk: {
3855
- field: "gsi1pk",
3856
- composite: ["mailboxId"]
3865
+ field: "gsi2pk",
3866
+ composite: []
3857
3867
  },
3858
3868
  sk: {
3859
- field: "gsi1sk",
3860
- composite: ["messageId", "flagName"]
3869
+ field: "gsi2sk",
3870
+ composite: ["acquiredAt"]
3861
3871
  },
3862
- index: "gsi1"
3872
+ index: "gsi2",
3873
+ collection: "locks"
3863
3874
  },
3864
3875
  byAccountId: {
3865
3876
  pk: {
3866
- field: "gsi0pk",
3877
+ field: "gsi1pk",
3867
3878
  composite: ["accountId"]
3868
3879
  },
3869
3880
  sk: {
3870
- field: "gsi0sk",
3871
- composite: ["messageId", "flagName"]
3881
+ field: "gsi1sk",
3882
+ composite: ["mailboxId", "eventName"]
3872
3883
  },
3873
- index: "gsi0"
3884
+ index: "gsi1"
3874
3885
  },
3875
- MessageFlagPush: {
3886
+ MailboxLock: {
3876
3887
  pk: {
3877
3888
  field: "pk",
3878
- composite: ["messageId"]
3889
+ composite: ["mailboxId"]
3879
3890
  },
3880
3891
  sk: {
3881
3892
  field: "sk",
3882
- composite: ["flagName"]
3893
+ composite: ["eventName"]
3883
3894
  }
3884
3895
  }
3885
3896
  },
3886
3897
  model: {
3887
- entity: "messageFlagPush",
3898
+ entity: "mailboxLock",
3888
3899
  service: "remit",
3889
3900
  version: "1"
3890
3901
  }
3891
3902
  };
3892
- export const Envelope = {
3903
+ export const MessageFlag = {
3893
3904
  attributes: {
3894
- envelopeId: {
3905
+ messageFlagId: {
3895
3906
  type: "string",
3896
3907
  required: true,
3897
3908
  validate: value => {
3898
3909
  if (typeof value === "string" && value.length < 25)
3899
- throw new Error("'envelopeId' must be at least 25 characters");
3910
+ throw new Error("'messageFlagId' must be at least 25 characters");
3900
3911
  if (typeof value === "string" && value.length > 25)
3901
- throw new Error("'envelopeId' must be at most 25 characters");
3912
+ throw new Error("'messageFlagId' must be at most 25 characters");
3902
3913
  return true;
3903
3914
  }
3904
3915
  },
@@ -3913,27 +3924,19 @@ export const Envelope = {
3913
3924
  return true;
3914
3925
  }
3915
3926
  },
3916
- dateValue: {
3927
+ flagName: {
3928
+ type: CustomAttributeType("any"),
3929
+ required: true
3930
+ },
3931
+ setAt: {
3917
3932
  type: "number",
3918
3933
  required: true,
3919
3934
  validate: value => {
3920
3935
  if (typeof value === "number" && !Number.isInteger(value))
3921
- throw new Error("'dateValue' must be an integer");
3936
+ throw new Error("'setAt' must be an integer");
3922
3937
  return true;
3923
3938
  }
3924
3939
  },
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
3940
  createdAt: {
3938
3941
  type: "number",
3939
3942
  readOnly: true,
@@ -3957,15 +3960,15 @@ export const Envelope = {
3957
3960
  },
3958
3961
  sk: {
3959
3962
  field: "gsi2sk",
3960
- composite: ["envelopeId"]
3963
+ composite: ["messageFlagId"]
3961
3964
  },
3962
3965
  index: "gsi2",
3963
3966
  collection: "messageData"
3964
3967
  },
3965
- Envelope: {
3968
+ MessageFlag: {
3966
3969
  pk: {
3967
3970
  field: "pk",
3968
- composite: ["envelopeId"]
3971
+ composite: ["messageFlagId"]
3969
3972
  },
3970
3973
  sk: {
3971
3974
  field: "sk",
@@ -3974,79 +3977,72 @@ export const Envelope = {
3974
3977
  }
3975
3978
  },
3976
3979
  model: {
3977
- entity: "envelope",
3980
+ entity: "messageFlag",
3978
3981
  service: "remit",
3979
3982
  version: "1"
3980
3983
  }
3981
3984
  };
3982
- export const SenderSignerStanding = {
3985
+ export const MessagePlacementMove = {
3983
3986
  attributes: {
3984
- accountConfigId: {
3987
+ messageId: {
3985
3988
  type: "string",
3986
3989
  required: true,
3987
3990
  validate: value => {
3988
3991
  if (typeof value === "string" && value.length < 25)
3989
- throw new Error("'accountConfigId' must be at least 25 characters");
3992
+ throw new Error("'messageId' must be at least 25 characters");
3990
3993
  if (typeof value === "string" && value.length > 25)
3991
- throw new Error("'accountConfigId' must be at most 25 characters");
3994
+ throw new Error("'messageId' must be at most 25 characters");
3992
3995
  return true;
3993
3996
  }
3994
3997
  },
3995
- senderKey: {
3998
+ accountId: {
3996
3999
  type: "string",
3997
4000
  required: true,
3998
4001
  validate: value => {
3999
- if (typeof value === "string" && value.length > 256)
4000
- throw new Error("'senderKey' must be at most 256 characters");
4002
+ if (typeof value === "string" && value.length < 25)
4003
+ throw new Error("'accountId' must be at least 25 characters");
4004
+ if (typeof value === "string" && value.length > 25)
4005
+ throw new Error("'accountId' must be at most 25 characters");
4001
4006
  return true;
4002
4007
  }
4003
4008
  },
4004
- signerDomain: {
4009
+ accountConfigId: {
4005
4010
  type: "string",
4006
4011
  required: true,
4007
4012
  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");
4013
+ if (typeof value === "string" && value.length < 25)
4014
+ throw new Error("'accountConfigId' must be at least 25 characters");
4015
+ if (typeof value === "string" && value.length > 25)
4016
+ throw new Error("'accountConfigId' must be at most 25 characters");
4020
4017
  return true;
4021
4018
  }
4022
4019
  },
4023
- firstSeenAt: {
4024
- type: "number",
4020
+ sourceMailboxId: {
4021
+ type: "string",
4025
4022
  required: true,
4026
4023
  validate: value => {
4027
- if (typeof value === "number" && !Number.isInteger(value))
4028
- throw new Error("'firstSeenAt' must be an integer");
4024
+ if (typeof value === "string" && value.length < 25)
4025
+ throw new Error("'sourceMailboxId' must be at least 25 characters");
4026
+ if (typeof value === "string" && value.length > 25)
4027
+ throw new Error("'sourceMailboxId' must be at most 25 characters");
4029
4028
  return true;
4030
4029
  }
4031
4030
  },
4032
- lastSeenAt: {
4033
- type: "number",
4031
+ destinationMailboxId: {
4032
+ type: "string",
4034
4033
  required: true,
4035
4034
  validate: value => {
4036
- if (typeof value === "number" && !Number.isInteger(value))
4037
- throw new Error("'lastSeenAt' must be an integer");
4035
+ if (typeof value === "string" && value.length < 25)
4036
+ throw new Error("'destinationMailboxId' must be at least 25 characters");
4037
+ if (typeof value === "string" && value.length > 25)
4038
+ throw new Error("'destinationMailboxId' must be at most 25 characters");
4038
4039
  return true;
4039
4040
  }
4040
4041
  },
4041
- userAffirmedAt: {
4042
- type: "number",
4042
+ state: {
4043
+ type: ["pending", "queued", "processing", "processed"],
4043
4044
  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
- }
4045
+ default: "pending"
4050
4046
  },
4051
4047
  createdAt: {
4052
4048
  type: "number",
@@ -4064,71 +4060,93 @@ export const SenderSignerStanding = {
4064
4060
  }
4065
4061
  },
4066
4062
  indexes: {
4067
- SenderSignerStanding: {
4063
+ byAccountId: {
4064
+ pk: {
4065
+ field: "gsi0pk",
4066
+ composite: ["accountId"]
4067
+ },
4068
+ sk: {
4069
+ field: "gsi0sk",
4070
+ composite: ["messageId"]
4071
+ },
4072
+ index: "gsi0"
4073
+ },
4074
+ MessagePlacementMove: {
4068
4075
  pk: {
4069
4076
  field: "pk",
4070
- composite: ["accountConfigId"]
4077
+ composite: ["messageId"]
4071
4078
  },
4072
4079
  sk: {
4073
4080
  field: "sk",
4074
- composite: ["senderKey", "signerDomain"]
4081
+ composite: []
4075
4082
  }
4076
4083
  }
4077
4084
  },
4078
4085
  model: {
4079
- entity: "senderSignerStanding",
4086
+ entity: "messagePlacementMove",
4080
4087
  service: "remit",
4081
4088
  version: "1"
4082
4089
  }
4083
4090
  };
4084
- export const BodyPartParameter = {
4091
+ export const MessageFlagPush = {
4085
4092
  attributes: {
4086
- bodyPartParameterId: {
4093
+ messageId: {
4087
4094
  type: "string",
4088
4095
  required: true,
4089
4096
  validate: value => {
4090
4097
  if (typeof value === "string" && value.length < 25)
4091
- throw new Error("'bodyPartParameterId' must be at least 25 characters");
4098
+ throw new Error("'messageId' must be at least 25 characters");
4092
4099
  if (typeof value === "string" && value.length > 25)
4093
- throw new Error("'bodyPartParameterId' must be at most 25 characters");
4100
+ throw new Error("'messageId' must be at most 25 characters");
4094
4101
  return true;
4095
4102
  }
4096
4103
  },
4097
- messageId: {
4104
+ flagName: {
4105
+ type: "string",
4106
+ required: true
4107
+ },
4108
+ accountId: {
4098
4109
  type: "string",
4099
4110
  required: true,
4100
4111
  validate: value => {
4101
4112
  if (typeof value === "string" && value.length < 25)
4102
- throw new Error("'messageId' must be at least 25 characters");
4113
+ throw new Error("'accountId' must be at least 25 characters");
4103
4114
  if (typeof value === "string" && value.length > 25)
4104
- throw new Error("'messageId' must be at most 25 characters");
4115
+ throw new Error("'accountId' must be at most 25 characters");
4105
4116
  return true;
4106
4117
  }
4107
4118
  },
4108
- bodyPartId: {
4119
+ accountConfigId: {
4109
4120
  type: "string",
4110
4121
  required: true,
4111
4122
  validate: value => {
4112
4123
  if (typeof value === "string" && value.length < 25)
4113
- throw new Error("'bodyPartId' must be at least 25 characters");
4124
+ throw new Error("'accountConfigId' must be at least 25 characters");
4114
4125
  if (typeof value === "string" && value.length > 25)
4115
- throw new Error("'bodyPartId' must be at most 25 characters");
4126
+ throw new Error("'accountConfigId' must be at most 25 characters");
4116
4127
  return true;
4117
4128
  }
4118
4129
  },
4119
- parameterName: {
4130
+ mailboxId: {
4120
4131
  type: "string",
4121
4132
  required: true,
4122
4133
  validate: value => {
4123
- if (typeof value === "string" && value.length < 1)
4124
- throw new Error("'parameterName' must be at least 1 characters");
4134
+ if (typeof value === "string" && value.length < 25)
4135
+ throw new Error("'mailboxId' must be at least 25 characters");
4136
+ if (typeof value === "string" && value.length > 25)
4137
+ throw new Error("'mailboxId' must be at most 25 characters");
4125
4138
  return true;
4126
4139
  }
4127
4140
  },
4128
- parameterValue: {
4129
- type: "string",
4141
+ operation: {
4142
+ type: ["add", "remove"],
4130
4143
  required: true
4131
4144
  },
4145
+ state: {
4146
+ type: ["pending", "queued", "processing", "processed"],
4147
+ required: true,
4148
+ default: "pending"
4149
+ },
4132
4150
  createdAt: {
4133
4151
  type: "number",
4134
4152
  readOnly: true,
@@ -4145,114 +4163,89 @@ export const BodyPartParameter = {
4145
4163
  }
4146
4164
  },
4147
4165
  indexes: {
4148
- byMessageId: {
4166
+ byMailboxId: {
4149
4167
  pk: {
4150
- field: "gsi2pk",
4151
- composite: ["messageId"]
4168
+ field: "gsi1pk",
4169
+ composite: ["mailboxId"]
4152
4170
  },
4153
4171
  sk: {
4154
- field: "gsi2sk",
4155
- composite: ["bodyPartParameterId"]
4172
+ field: "gsi1sk",
4173
+ composite: ["messageId", "flagName"]
4156
4174
  },
4157
- index: "gsi2",
4158
- collection: "messageData"
4175
+ index: "gsi1"
4159
4176
  },
4160
- BodyPartParameter: {
4177
+ byAccountId: {
4178
+ pk: {
4179
+ field: "gsi0pk",
4180
+ composite: ["accountId"]
4181
+ },
4182
+ sk: {
4183
+ field: "gsi0sk",
4184
+ composite: ["messageId", "flagName"]
4185
+ },
4186
+ index: "gsi0"
4187
+ },
4188
+ MessageFlagPush: {
4161
4189
  pk: {
4162
4190
  field: "pk",
4163
- composite: ["bodyPartParameterId"]
4191
+ composite: ["messageId"]
4164
4192
  },
4165
4193
  sk: {
4166
4194
  field: "sk",
4167
- composite: []
4195
+ composite: ["flagName"]
4168
4196
  }
4169
4197
  }
4170
4198
  },
4171
4199
  model: {
4172
- entity: "bodyPartParameter",
4200
+ entity: "messageFlagPush",
4173
4201
  service: "remit",
4174
4202
  version: "1"
4175
4203
  }
4176
4204
  };
4177
- export const RawMessageStorage = {
4205
+ export const Envelope = {
4178
4206
  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: {
4207
+ envelopeId: {
4210
4208
  type: "string",
4211
- required: true
4212
- },
4213
- sizeBytes: {
4214
- type: "number",
4215
4209
  required: true,
4216
4210
  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");
4211
+ if (typeof value === "string" && value.length < 25)
4212
+ throw new Error("'envelopeId' must be at least 25 characters");
4213
+ if (typeof value === "string" && value.length > 25)
4214
+ throw new Error("'envelopeId' must be at most 25 characters");
4221
4215
  return true;
4222
4216
  }
4223
4217
  },
4224
- checksumSha256: {
4218
+ messageId: {
4225
4219
  type: "string",
4226
4220
  required: true,
4227
4221
  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");
4222
+ if (typeof value === "string" && value.length < 25)
4223
+ throw new Error("'messageId' must be at least 25 characters");
4224
+ if (typeof value === "string" && value.length > 25)
4225
+ throw new Error("'messageId' must be at most 25 characters");
4232
4226
  return true;
4233
4227
  }
4234
4228
  },
4235
- contentEncoding: {
4236
- type: ["none", "gzip", "zstd"],
4237
- required: true
4238
- },
4239
- storedAt: {
4229
+ dateValue: {
4240
4230
  type: "number",
4241
4231
  required: true,
4242
4232
  validate: value => {
4243
4233
  if (typeof value === "number" && !Number.isInteger(value))
4244
- throw new Error("'storedAt' must be an integer");
4234
+ throw new Error("'dateValue' must be an integer");
4245
4235
  return true;
4246
4236
  }
4247
4237
  },
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
- }
4238
+ dateRaw: {
4239
+ type: "string",
4240
+ required: true
4241
+ },
4242
+ subject: {
4243
+ type: "string",
4244
+ required: false
4245
+ },
4246
+ messageIdValue: {
4247
+ type: "string",
4248
+ required: false
4256
4249
  },
4257
4250
  createdAt: {
4258
4251
  type: "number",
@@ -4277,15 +4270,15 @@ export const RawMessageStorage = {
4277
4270
  },
4278
4271
  sk: {
4279
4272
  field: "gsi2sk",
4280
- composite: ["rawStorageId"]
4273
+ composite: ["envelopeId"]
4281
4274
  },
4282
4275
  index: "gsi2",
4283
4276
  collection: "messageData"
4284
4277
  },
4285
- RawMessageStorage: {
4278
+ Envelope: {
4286
4279
  pk: {
4287
4280
  field: "pk",
4288
- composite: ["rawStorageId"]
4281
+ composite: ["envelopeId"]
4289
4282
  },
4290
4283
  sk: {
4291
4284
  field: "sk",
@@ -4294,98 +4287,77 @@ export const RawMessageStorage = {
4294
4287
  }
4295
4288
  },
4296
4289
  model: {
4297
- entity: "rawMessageStorage",
4290
+ entity: "envelope",
4298
4291
  service: "remit",
4299
4292
  version: "1"
4300
4293
  }
4301
4294
  };
4302
- export const BodyPartStorage = {
4295
+ export const SenderSignerStanding = {
4303
4296
  attributes: {
4304
- bodyPartStorageId: {
4297
+ accountConfigId: {
4305
4298
  type: "string",
4306
4299
  required: true,
4307
4300
  validate: value => {
4308
4301
  if (typeof value === "string" && value.length < 25)
4309
- throw new Error("'bodyPartStorageId' must be at least 25 characters");
4302
+ throw new Error("'accountConfigId' must be at least 25 characters");
4310
4303
  if (typeof value === "string" && value.length > 25)
4311
- throw new Error("'bodyPartStorageId' must be at most 25 characters");
4304
+ throw new Error("'accountConfigId' must be at most 25 characters");
4312
4305
  return true;
4313
4306
  }
4314
4307
  },
4315
- messageId: {
4308
+ senderKey: {
4316
4309
  type: "string",
4317
4310
  required: true,
4318
4311
  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");
4312
+ if (typeof value === "string" && value.length > 256)
4313
+ throw new Error("'senderKey' must be at most 256 characters");
4323
4314
  return true;
4324
4315
  }
4325
4316
  },
4326
- bodyPartId: {
4317
+ signerDomain: {
4327
4318
  type: "string",
4328
4319
  required: true,
4329
4320
  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");
4321
+ if (typeof value === "string" && value.length > 256)
4322
+ throw new Error("'signerDomain' must be at most 256 characters");
4334
4323
  return true;
4335
4324
  }
4336
4325
  },
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: {
4326
+ messageCount: {
4350
4327
  type: "number",
4351
4328
  required: true,
4329
+ default: 0,
4352
4330
  validate: value => {
4353
- if (typeof value === "number" && value < 0)
4354
- throw new Error("'decodedSizeBytes' must be at least 0");
4355
4331
  if (typeof value === "number" && !Number.isInteger(value))
4356
- throw new Error("'decodedSizeBytes' must be an integer");
4332
+ throw new Error("'messageCount' must be an integer");
4357
4333
  return true;
4358
4334
  }
4359
4335
  },
4360
- checksumSha256: {
4361
- type: "string",
4336
+ firstSeenAt: {
4337
+ type: "number",
4362
4338
  required: true,
4363
4339
  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");
4340
+ if (typeof value === "number" && !Number.isInteger(value))
4341
+ throw new Error("'firstSeenAt' must be an integer");
4368
4342
  return true;
4369
4343
  }
4370
4344
  },
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
4345
+ lastSeenAt: {
4346
+ type: "number",
4347
+ required: true,
4348
+ validate: value => {
4349
+ if (typeof value === "number" && !Number.isInteger(value))
4350
+ throw new Error("'lastSeenAt' must be an integer");
4351
+ return true;
4352
+ }
4382
4353
  },
4383
- storedAt: {
4354
+ userAffirmedAt: {
4384
4355
  type: "number",
4385
4356
  required: true,
4357
+ default: 0,
4386
4358
  validate: value => {
4387
4359
  if (typeof value === "number" && !Number.isInteger(value))
4388
- throw new Error("'storedAt' must be an integer");
4360
+ throw new Error("'userAffirmedAt' must be an integer");
4389
4361
  return true;
4390
4362
  }
4391
4363
  },
@@ -4405,45 +4377,33 @@ export const BodyPartStorage = {
4405
4377
  }
4406
4378
  },
4407
4379
  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: {
4380
+ SenderSignerStanding: {
4421
4381
  pk: {
4422
4382
  field: "pk",
4423
- composite: ["bodyPartStorageId"]
4383
+ composite: ["accountConfigId"]
4424
4384
  },
4425
4385
  sk: {
4426
4386
  field: "sk",
4427
- composite: []
4387
+ composite: ["senderKey", "signerDomain"]
4428
4388
  }
4429
4389
  }
4430
4390
  },
4431
4391
  model: {
4432
- entity: "bodyPartStorage",
4392
+ entity: "senderSignerStanding",
4433
4393
  service: "remit",
4434
4394
  version: "1"
4435
4395
  }
4436
4396
  };
4437
- export const BodyPartContent = {
4397
+ export const BodyPartParameter = {
4438
4398
  attributes: {
4439
- bodyPartContentId: {
4399
+ bodyPartParameterId: {
4440
4400
  type: "string",
4441
4401
  required: true,
4442
4402
  validate: value => {
4443
4403
  if (typeof value === "string" && value.length < 25)
4444
- throw new Error("'bodyPartContentId' must be at least 25 characters");
4404
+ throw new Error("'bodyPartParameterId' must be at least 25 characters");
4445
4405
  if (typeof value === "string" && value.length > 25)
4446
- throw new Error("'bodyPartContentId' must be at most 25 characters");
4406
+ throw new Error("'bodyPartParameterId' must be at most 25 characters");
4447
4407
  return true;
4448
4408
  }
4449
4409
  },
@@ -4469,21 +4429,19 @@ export const BodyPartContent = {
4469
4429
  return true;
4470
4430
  }
4471
4431
  },
4472
- content: {
4432
+ parameterName: {
4473
4433
  type: "string",
4474
- required: true
4475
- },
4476
- contentLength: {
4477
- type: "number",
4478
4434
  required: true,
4479
4435
  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");
4436
+ if (typeof value === "string" && value.length < 1)
4437
+ throw new Error("'parameterName' must be at least 1 characters");
4484
4438
  return true;
4485
4439
  }
4486
4440
  },
4441
+ parameterValue: {
4442
+ type: "string",
4443
+ required: true
4444
+ },
4487
4445
  createdAt: {
4488
4446
  type: "number",
4489
4447
  readOnly: true,
@@ -4507,15 +4465,15 @@ export const BodyPartContent = {
4507
4465
  },
4508
4466
  sk: {
4509
4467
  field: "gsi2sk",
4510
- composite: ["bodyPartContentId"]
4468
+ composite: ["bodyPartParameterId"]
4511
4469
  },
4512
4470
  index: "gsi2",
4513
4471
  collection: "messageData"
4514
4472
  },
4515
- BodyPartContent: {
4473
+ BodyPartParameter: {
4516
4474
  pk: {
4517
4475
  field: "pk",
4518
- composite: ["bodyPartContentId"]
4476
+ composite: ["bodyPartParameterId"]
4519
4477
  },
4520
4478
  sk: {
4521
4479
  field: "sk",
@@ -4524,85 +4482,88 @@ export const BodyPartContent = {
4524
4482
  }
4525
4483
  },
4526
4484
  model: {
4527
- entity: "bodyPartContent",
4485
+ entity: "bodyPartParameter",
4528
4486
  service: "remit",
4529
4487
  version: "1"
4530
4488
  }
4531
4489
  };
4532
- export const CalendarCollection = {
4490
+ export const RawMessageStorage = {
4533
4491
  attributes: {
4534
- calendarId: {
4492
+ rawStorageId: {
4535
4493
  type: "string",
4536
4494
  required: true,
4537
4495
  validate: value => {
4538
4496
  if (typeof value === "string" && value.length < 25)
4539
- throw new Error("'calendarId' must be at least 25 characters");
4497
+ throw new Error("'rawStorageId' must be at least 25 characters");
4540
4498
  if (typeof value === "string" && value.length > 25)
4541
- throw new Error("'calendarId' must be at most 25 characters");
4499
+ throw new Error("'rawStorageId' must be at most 25 characters");
4542
4500
  return true;
4543
4501
  }
4544
4502
  },
4545
- accountConfigId: {
4503
+ messageId: {
4546
4504
  type: "string",
4547
4505
  required: true,
4548
4506
  validate: value => {
4549
4507
  if (typeof value === "string" && value.length < 25)
4550
- throw new Error("'accountConfigId' must be at least 25 characters");
4508
+ throw new Error("'messageId' must be at least 25 characters");
4551
4509
  if (typeof value === "string" && value.length > 25)
4552
- throw new Error("'accountConfigId' must be at most 25 characters");
4510
+ throw new Error("'messageId' must be at most 25 characters");
4553
4511
  return true;
4554
4512
  }
4555
4513
  },
4556
- urlSegment: {
4514
+ storageType: {
4515
+ type: ["s3", "filesystem", "inline", "database"],
4516
+ required: true
4517
+ },
4518
+ storageLocation: {
4519
+ type: "string",
4520
+ required: true
4521
+ },
4522
+ storageKey: {
4557
4523
  type: "string",
4524
+ required: true
4525
+ },
4526
+ sizeBytes: {
4527
+ type: "number",
4558
4528
  required: true,
4559
4529
  validate: value => {
4560
- if (typeof value === "string" && value.length > 64)
4561
- throw new Error("'urlSegment' must be at most 64 characters");
4530
+ if (typeof value === "number" && value < 0)
4531
+ throw new Error("'sizeBytes' must be at least 0");
4532
+ if (typeof value === "number" && !Number.isInteger(value))
4533
+ throw new Error("'sizeBytes' must be an integer");
4562
4534
  return true;
4563
4535
  }
4564
4536
  },
4565
- displayName: {
4537
+ checksumSha256: {
4566
4538
  type: "string",
4567
4539
  required: true,
4568
4540
  validate: value => {
4569
- if (typeof value === "string" && value.length > 140)
4570
- throw new Error("'displayName' must be at most 140 characters");
4541
+ if (typeof value === "string" && value.length < 64)
4542
+ throw new Error("'checksumSha256' must be at least 64 characters");
4543
+ if (typeof value === "string" && value.length > 64)
4544
+ throw new Error("'checksumSha256' must be at most 64 characters");
4571
4545
  return true;
4572
4546
  }
4573
4547
  },
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"
4548
+ contentEncoding: {
4549
+ type: ["none", "gzip", "zstd"],
4550
+ required: true
4588
4551
  },
4589
- timezone: {
4590
- type: "string",
4552
+ storedAt: {
4553
+ type: "number",
4591
4554
  required: true,
4592
- default: "",
4593
4555
  validate: value => {
4594
- if (typeof value === "string" && value.length > 64)
4595
- throw new Error("'timezone' must be at most 64 characters");
4556
+ if (typeof value === "number" && !Number.isInteger(value))
4557
+ throw new Error("'storedAt' must be an integer");
4596
4558
  return true;
4597
4559
  }
4598
4560
  },
4599
- syncSequence: {
4561
+ expiresAt: {
4600
4562
  type: "number",
4601
- required: true,
4602
- default: 0,
4563
+ required: false,
4603
4564
  validate: value => {
4604
4565
  if (typeof value === "number" && !Number.isInteger(value))
4605
- throw new Error("'syncSequence' must be an integer");
4566
+ throw new Error("'expiresAt' must be an integer");
4606
4567
  return true;
4607
4568
  }
4608
4569
  },
@@ -4622,168 +4583,217 @@ export const CalendarCollection = {
4622
4583
  }
4623
4584
  },
4624
4585
  indexes: {
4625
- byUrlSegment: {
4586
+ byMessageId: {
4626
4587
  pk: {
4627
- field: "gsi0pk",
4628
- composite: ["accountConfigId"]
4588
+ field: "gsi2pk",
4589
+ composite: ["messageId"]
4629
4590
  },
4630
4591
  sk: {
4631
- field: "gsi0sk",
4632
- composite: ["urlSegment"]
4592
+ field: "gsi2sk",
4593
+ composite: ["rawStorageId"]
4633
4594
  },
4634
- index: "gsi0"
4595
+ index: "gsi2",
4596
+ collection: "messageData"
4635
4597
  },
4636
- Calendar: {
4598
+ RawMessageStorage: {
4637
4599
  pk: {
4638
4600
  field: "pk",
4639
- composite: ["accountConfigId"]
4601
+ composite: ["rawStorageId"]
4640
4602
  },
4641
4603
  sk: {
4642
4604
  field: "sk",
4643
- composite: ["calendarId"]
4605
+ composite: []
4644
4606
  }
4645
4607
  }
4646
4608
  },
4647
4609
  model: {
4648
- entity: "calendar",
4610
+ entity: "rawMessageStorage",
4649
4611
  service: "remit",
4650
4612
  version: "1"
4651
4613
  }
4652
4614
  };
4653
- export const CalendarObject = {
4615
+ export const BodyPartStorage = {
4654
4616
  attributes: {
4655
- calendarObjectId: {
4617
+ bodyPartStorageId: {
4656
4618
  type: "string",
4657
4619
  required: true,
4658
4620
  validate: value => {
4659
4621
  if (typeof value === "string" && value.length < 25)
4660
- throw new Error("'calendarObjectId' must be at least 25 characters");
4622
+ throw new Error("'bodyPartStorageId' must be at least 25 characters");
4661
4623
  if (typeof value === "string" && value.length > 25)
4662
- throw new Error("'calendarObjectId' must be at most 25 characters");
4624
+ throw new Error("'bodyPartStorageId' must be at most 25 characters");
4663
4625
  return true;
4664
4626
  }
4665
4627
  },
4666
- calendarId: {
4628
+ messageId: {
4667
4629
  type: "string",
4668
4630
  required: true,
4669
4631
  validate: value => {
4670
4632
  if (typeof value === "string" && value.length < 25)
4671
- throw new Error("'calendarId' must be at least 25 characters");
4633
+ throw new Error("'messageId' must be at least 25 characters");
4672
4634
  if (typeof value === "string" && value.length > 25)
4673
- throw new Error("'calendarId' must be at most 25 characters");
4635
+ throw new Error("'messageId' must be at most 25 characters");
4674
4636
  return true;
4675
4637
  }
4676
4638
  },
4677
- resourceName: {
4639
+ bodyPartId: {
4678
4640
  type: "string",
4679
4641
  required: true,
4680
4642
  validate: value => {
4681
- if (typeof value === "string" && value.length > 256)
4682
- throw new Error("'resourceName' must be at most 256 characters");
4643
+ if (typeof value === "string" && value.length < 25)
4644
+ throw new Error("'bodyPartId' must be at least 25 characters");
4645
+ if (typeof value === "string" && value.length > 25)
4646
+ throw new Error("'bodyPartId' must be at most 25 characters");
4683
4647
  return true;
4684
4648
  }
4685
4649
  },
4686
- icalUid: {
4650
+ storageType: {
4651
+ type: ["s3", "filesystem", "inline", "database"],
4652
+ required: true
4653
+ },
4654
+ storageLocation: {
4655
+ type: "string",
4656
+ required: true
4657
+ },
4658
+ storageKey: {
4687
4659
  type: "string",
4660
+ required: true
4661
+ },
4662
+ decodedSizeBytes: {
4663
+ type: "number",
4688
4664
  required: true,
4689
4665
  validate: value => {
4690
- if (typeof value === "string" && value.length > 512)
4691
- throw new Error("'icalUid' must be at most 512 characters");
4666
+ if (typeof value === "number" && value < 0)
4667
+ throw new Error("'decodedSizeBytes' must be at least 0");
4668
+ if (typeof value === "number" && !Number.isInteger(value))
4669
+ throw new Error("'decodedSizeBytes' must be an integer");
4692
4670
  return true;
4693
4671
  }
4694
4672
  },
4695
- icalData: {
4696
- type: "string",
4697
- required: true
4698
- },
4699
- etag: {
4673
+ checksumSha256: {
4700
4674
  type: "string",
4701
4675
  required: true,
4702
4676
  validate: value => {
4677
+ if (typeof value === "string" && value.length < 64)
4678
+ throw new Error("'checksumSha256' must be at least 64 characters");
4703
4679
  if (typeof value === "string" && value.length > 64)
4704
- throw new Error("'etag' must be at most 64 characters");
4680
+ throw new Error("'checksumSha256' must be at most 64 characters");
4705
4681
  return true;
4706
4682
  }
4707
4683
  },
4708
- sequence: {
4684
+ contentEncoding: {
4685
+ type: ["none", "gzip", "zstd"],
4686
+ required: true
4687
+ },
4688
+ isDeduped: {
4689
+ type: "boolean",
4690
+ required: true
4691
+ },
4692
+ dedupHash: {
4693
+ type: "string",
4694
+ required: false
4695
+ },
4696
+ storedAt: {
4709
4697
  type: "number",
4710
4698
  required: true,
4711
- default: 0,
4712
4699
  validate: value => {
4713
4700
  if (typeof value === "number" && !Number.isInteger(value))
4714
- throw new Error("'sequence' must be an integer");
4701
+ throw new Error("'storedAt' must be an integer");
4715
4702
  return true;
4716
4703
  }
4717
4704
  },
4718
- syncSequence: {
4705
+ createdAt: {
4719
4706
  type: "number",
4707
+ readOnly: true,
4720
4708
  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
- }
4709
+ default: () => Date.now(),
4710
+ set: () => Date.now()
4727
4711
  },
4728
- summary: {
4712
+ updatedAt: {
4713
+ type: "number",
4714
+ watch: "*",
4715
+ required: true,
4716
+ default: () => Date.now(),
4717
+ set: () => Date.now()
4718
+ }
4719
+ },
4720
+ indexes: {
4721
+ byMessageId: {
4722
+ pk: {
4723
+ field: "gsi2pk",
4724
+ composite: ["messageId"]
4725
+ },
4726
+ sk: {
4727
+ field: "gsi2sk",
4728
+ composite: ["bodyPartStorageId"]
4729
+ },
4730
+ index: "gsi2",
4731
+ collection: "messageData"
4732
+ },
4733
+ BodyPartStorage: {
4734
+ pk: {
4735
+ field: "pk",
4736
+ composite: ["bodyPartStorageId"]
4737
+ },
4738
+ sk: {
4739
+ field: "sk",
4740
+ composite: []
4741
+ }
4742
+ }
4743
+ },
4744
+ model: {
4745
+ entity: "bodyPartStorage",
4746
+ service: "remit",
4747
+ version: "1"
4748
+ }
4749
+ };
4750
+ export const BodyPartContent = {
4751
+ attributes: {
4752
+ bodyPartContentId: {
4729
4753
  type: "string",
4730
4754
  required: true,
4731
4755
  validate: value => {
4732
- if (typeof value === "string" && value.length > 512)
4733
- throw new Error("'summary' must be at most 512 characters");
4756
+ if (typeof value === "string" && value.length < 25)
4757
+ throw new Error("'bodyPartContentId' must be at least 25 characters");
4758
+ if (typeof value === "string" && value.length > 25)
4759
+ throw new Error("'bodyPartContentId' must be at most 25 characters");
4734
4760
  return true;
4735
4761
  }
4736
4762
  },
4737
- dtStart: {
4763
+ messageId: {
4738
4764
  type: "string",
4739
4765
  required: true,
4740
4766
  validate: value => {
4741
- if (typeof value === "string" && value.length > 64)
4742
- throw new Error("'dtStart' must be at most 64 characters");
4767
+ if (typeof value === "string" && value.length < 25)
4768
+ throw new Error("'messageId' must be at least 25 characters");
4769
+ if (typeof value === "string" && value.length > 25)
4770
+ throw new Error("'messageId' must be at most 25 characters");
4743
4771
  return true;
4744
4772
  }
4745
4773
  },
4746
- dtEnd: {
4774
+ bodyPartId: {
4747
4775
  type: "string",
4748
4776
  required: true,
4749
4777
  validate: value => {
4750
- if (typeof value === "string" && value.length > 64)
4751
- throw new Error("'dtEnd' must be at most 64 characters");
4778
+ if (typeof value === "string" && value.length < 25)
4779
+ throw new Error("'bodyPartId' must be at least 25 characters");
4780
+ if (typeof value === "string" && value.length > 25)
4781
+ throw new Error("'bodyPartId' must be at most 25 characters");
4752
4782
  return true;
4753
4783
  }
4754
4784
  },
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: {
4785
+ content: {
4781
4786
  type: "string",
4787
+ required: true
4788
+ },
4789
+ contentLength: {
4790
+ type: "number",
4782
4791
  required: true,
4783
- default: "",
4784
4792
  validate: value => {
4785
- if (typeof value === "string" && value.length > 64)
4786
- throw new Error("'expandedThrough' must be at most 64 characters");
4793
+ if (typeof value === "number" && value < 0)
4794
+ throw new Error("'contentLength' must be at least 0");
4795
+ if (typeof value === "number" && !Number.isInteger(value))
4796
+ throw new Error("'contentLength' must be an integer");
4787
4797
  return true;
4788
4798
  }
4789
4799
  },
@@ -4803,41 +4813,31 @@ export const CalendarObject = {
4803
4813
  }
4804
4814
  },
4805
4815
  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: {
4816
+ byMessageId: {
4818
4817
  pk: {
4819
- field: "gsi0pk",
4820
- composite: ["calendarId"]
4818
+ field: "gsi2pk",
4819
+ composite: ["messageId"]
4821
4820
  },
4822
4821
  sk: {
4823
- field: "gsi0sk",
4824
- composite: ["icalUid"]
4822
+ field: "gsi2sk",
4823
+ composite: ["bodyPartContentId"]
4825
4824
  },
4826
- index: "gsi0"
4825
+ index: "gsi2",
4826
+ collection: "messageData"
4827
4827
  },
4828
- CalendarObject: {
4828
+ BodyPartContent: {
4829
4829
  pk: {
4830
4830
  field: "pk",
4831
- composite: ["calendarId"]
4831
+ composite: ["bodyPartContentId"]
4832
4832
  },
4833
4833
  sk: {
4834
4834
  field: "sk",
4835
- composite: ["calendarObjectId"]
4835
+ composite: []
4836
4836
  }
4837
4837
  }
4838
4838
  },
4839
4839
  model: {
4840
- entity: "calendarObject",
4840
+ entity: "bodyPartContent",
4841
4841
  service: "remit",
4842
4842
  version: "1"
4843
4843
  }
@@ -4898,6 +4898,26 @@ export const CalendarEventIndex = {
4898
4898
  required: true,
4899
4899
  default: false
4900
4900
  },
4901
+ summary: {
4902
+ type: "string",
4903
+ required: true,
4904
+ default: "",
4905
+ validate: value => {
4906
+ if (typeof value === "string" && value.length > 512)
4907
+ throw new Error("'summary' must be at most 512 characters");
4908
+ return true;
4909
+ }
4910
+ },
4911
+ status: {
4912
+ type: ["Confirmed", "Tentative", "Cancelled"],
4913
+ required: true,
4914
+ default: "Confirmed"
4915
+ },
4916
+ transparency: {
4917
+ type: ["Opaque", "Transparent"],
4918
+ required: true,
4919
+ default: "Opaque"
4920
+ },
4901
4921
  createdAt: {
4902
4922
  type: "number",
4903
4923
  readOnly: true,