@yigemo/choosefire 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,164 @@
1
1
  {
2
2
  "components": {
3
3
  "schemas": {
4
+ "AccountActivityTimelineItemV2": {
5
+ "oneOf": [
6
+ {
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "cashFlow": {
10
+ "$ref": "#/components/schemas/ExternalCashFlowV2"
11
+ },
12
+ "eventAt": {
13
+ "format": "date-time",
14
+ "type": "string"
15
+ },
16
+ "kind": {
17
+ "const": "external_cash_flow"
18
+ }
19
+ },
20
+ "required": [
21
+ "kind",
22
+ "eventAt",
23
+ "cashFlow"
24
+ ],
25
+ "type": "object"
26
+ },
27
+ {
28
+ "additionalProperties": false,
29
+ "properties": {
30
+ "eventAt": {
31
+ "format": "date-time",
32
+ "type": "string"
33
+ },
34
+ "kind": {
35
+ "const": "investment_transaction"
36
+ },
37
+ "transaction": {
38
+ "$ref": "#/components/schemas/InvestmentTransactionV2"
39
+ }
40
+ },
41
+ "required": [
42
+ "kind",
43
+ "eventAt",
44
+ "transaction"
45
+ ],
46
+ "type": "object"
47
+ }
48
+ ]
49
+ },
50
+ "AccountActivityTimelineQueryV2": {
51
+ "additionalProperties": false,
52
+ "properties": {
53
+ "accountId": {
54
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
55
+ "type": "string"
56
+ },
57
+ "holdingId": {
58
+ "anyOf": [
59
+ {
60
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
61
+ "type": "string"
62
+ },
63
+ {
64
+ "type": "null"
65
+ }
66
+ ]
67
+ }
68
+ },
69
+ "required": [
70
+ "accountId",
71
+ "holdingId"
72
+ ],
73
+ "type": "object"
74
+ },
75
+ "AccountActivityTimelineSuccessV2": {
76
+ "additionalProperties": false,
77
+ "properties": {
78
+ "code": {
79
+ "const": 0
80
+ },
81
+ "data": {
82
+ "$ref": "#/components/schemas/AccountActivityTimelineV2"
83
+ },
84
+ "kind": {
85
+ "const": "family_wealth_success.v2"
86
+ },
87
+ "status": {
88
+ "const": "success"
89
+ },
90
+ "success": {
91
+ "const": true
92
+ }
93
+ },
94
+ "required": [
95
+ "kind",
96
+ "success",
97
+ "status",
98
+ "code",
99
+ "data"
100
+ ],
101
+ "type": "object"
102
+ },
103
+ "AccountActivityTimelineV2": {
104
+ "additionalProperties": false,
105
+ "properties": {
106
+ "accountId": {
107
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
108
+ "type": "string"
109
+ },
110
+ "asOf": {
111
+ "format": "date-time",
112
+ "type": "string"
113
+ },
114
+ "authority": {
115
+ "$ref": "#/components/schemas/WorkspaceAuthorityV2"
116
+ },
117
+ "contractVersion": {
118
+ "const": 2
119
+ },
120
+ "holdingId": {
121
+ "anyOf": [
122
+ {
123
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
124
+ "type": "string"
125
+ },
126
+ {
127
+ "type": "null"
128
+ }
129
+ ]
130
+ },
131
+ "items": {
132
+ "items": {
133
+ "$ref": "#/components/schemas/AccountActivityTimelineItemV2"
134
+ },
135
+ "maxItems": 1000,
136
+ "type": "array"
137
+ },
138
+ "kind": {
139
+ "const": "account.activity_timeline.v2"
140
+ },
141
+ "projectionVersion": {
142
+ "const": 1
143
+ },
144
+ "workspaceVersion": {
145
+ "minimum": 1,
146
+ "type": "integer"
147
+ }
148
+ },
149
+ "required": [
150
+ "kind",
151
+ "contractVersion",
152
+ "projectionVersion",
153
+ "workspaceVersion",
154
+ "asOf",
155
+ "authority",
156
+ "accountId",
157
+ "holdingId",
158
+ "items"
159
+ ],
160
+ "type": "object"
161
+ },
4
162
  "AccountTimelineQueryV2": {
5
163
  "additionalProperties": false,
6
164
  "properties": {
@@ -114,7 +272,8 @@
114
272
  "valuation_snapshot",
115
273
  "classification",
116
274
  "holding",
117
- "external_cash_flow"
275
+ "external_cash_flow",
276
+ "investment_transaction"
118
277
  ]
119
278
  }
120
279
  },
@@ -151,7 +310,10 @@
151
310
  "holding.create.v2",
152
311
  "holding.update.v2",
153
312
  "holding.archive.v2",
154
- "external_cash_flow.record.v2"
313
+ "external_cash_flow.record.v2",
314
+ "investment_transaction.create.v2",
315
+ "investment_transaction.update.v2",
316
+ "investment_transaction.archive.v2"
155
317
  ]
156
318
  },
157
319
  "operationId": {
@@ -1387,7 +1549,362 @@
1387
1549
  }
1388
1550
  ]
1389
1551
  },
1390
- "quantityAsOf": {
1552
+ "quantityAsOf": {
1553
+ "anyOf": [
1554
+ {
1555
+ "format": "date-time",
1556
+ "type": "string"
1557
+ },
1558
+ {
1559
+ "type": "null"
1560
+ }
1561
+ ]
1562
+ },
1563
+ "revision": {
1564
+ "minimum": 1,
1565
+ "type": "integer"
1566
+ },
1567
+ "source": {
1568
+ "$ref": "#/components/schemas/SourceV2"
1569
+ },
1570
+ "valuation": {
1571
+ "$ref": "#/components/schemas/OverviewValuationV2"
1572
+ }
1573
+ },
1574
+ "required": [
1575
+ "holdingId",
1576
+ "accountId",
1577
+ "name",
1578
+ "instrumentRef",
1579
+ "quantity",
1580
+ "quantityAsOf",
1581
+ "currency",
1582
+ "quality",
1583
+ "source",
1584
+ "revision",
1585
+ "classificationRevision",
1586
+ "classificationSource",
1587
+ "assetClasses",
1588
+ "purposeBuckets",
1589
+ "valuation"
1590
+ ],
1591
+ "type": "object"
1592
+ },
1593
+ "InvestmentTransactionArchiveCommandV2": {
1594
+ "additionalProperties": false,
1595
+ "properties": {
1596
+ "commandId": {
1597
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1598
+ "type": "string"
1599
+ },
1600
+ "expectedObjectRevision": {
1601
+ "minimum": 1,
1602
+ "type": "integer"
1603
+ },
1604
+ "expectedWorkspaceVersion": {
1605
+ "minimum": 1,
1606
+ "type": "integer"
1607
+ },
1608
+ "idempotencyKey": {
1609
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
1610
+ "type": "string"
1611
+ },
1612
+ "kind": {
1613
+ "const": "investment_transaction.archive.v2"
1614
+ },
1615
+ "payload": {
1616
+ "$ref": "#/components/schemas/InvestmentTransactionArchivePayloadV2"
1617
+ },
1618
+ "source": {
1619
+ "$ref": "#/components/schemas/SourceV2"
1620
+ }
1621
+ },
1622
+ "required": [
1623
+ "kind",
1624
+ "commandId",
1625
+ "idempotencyKey",
1626
+ "expectedWorkspaceVersion",
1627
+ "expectedObjectRevision",
1628
+ "source",
1629
+ "payload"
1630
+ ],
1631
+ "type": "object"
1632
+ },
1633
+ "InvestmentTransactionArchivePayloadV2": {
1634
+ "additionalProperties": false,
1635
+ "properties": {
1636
+ "reason": {
1637
+ "maxLength": 240,
1638
+ "minLength": 1,
1639
+ "type": "string"
1640
+ },
1641
+ "transactionId": {
1642
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1643
+ "type": "string"
1644
+ }
1645
+ },
1646
+ "required": [
1647
+ "transactionId",
1648
+ "reason"
1649
+ ],
1650
+ "type": "object"
1651
+ },
1652
+ "InvestmentTransactionCreateCommandV2": {
1653
+ "additionalProperties": false,
1654
+ "properties": {
1655
+ "commandId": {
1656
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1657
+ "type": "string"
1658
+ },
1659
+ "expectedObjectRevision": {
1660
+ "type": "null"
1661
+ },
1662
+ "expectedWorkspaceVersion": {
1663
+ "minimum": 1,
1664
+ "type": "integer"
1665
+ },
1666
+ "idempotencyKey": {
1667
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
1668
+ "type": "string"
1669
+ },
1670
+ "kind": {
1671
+ "const": "investment_transaction.create.v2"
1672
+ },
1673
+ "payload": {
1674
+ "$ref": "#/components/schemas/InvestmentTransactionCreatePayloadV2"
1675
+ },
1676
+ "source": {
1677
+ "$ref": "#/components/schemas/SourceV2"
1678
+ }
1679
+ },
1680
+ "required": [
1681
+ "kind",
1682
+ "commandId",
1683
+ "idempotencyKey",
1684
+ "expectedWorkspaceVersion",
1685
+ "expectedObjectRevision",
1686
+ "source",
1687
+ "payload"
1688
+ ],
1689
+ "type": "object"
1690
+ },
1691
+ "InvestmentTransactionCreatePayloadV2": {
1692
+ "additionalProperties": false,
1693
+ "properties": {
1694
+ "transaction": {
1695
+ "$ref": "#/components/schemas/InvestmentTransactionDraftV2"
1696
+ },
1697
+ "transactionId": {
1698
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1699
+ "type": "string"
1700
+ }
1701
+ },
1702
+ "required": [
1703
+ "transactionId",
1704
+ "transaction"
1705
+ ],
1706
+ "type": "object"
1707
+ },
1708
+ "InvestmentTransactionDraftV2": {
1709
+ "additionalProperties": false,
1710
+ "properties": {
1711
+ "accountId": {
1712
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1713
+ "type": "string"
1714
+ },
1715
+ "amount": {
1716
+ "$ref": "#/components/schemas/MoneyV2"
1717
+ },
1718
+ "holdingId": {
1719
+ "anyOf": [
1720
+ {
1721
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1722
+ "type": "string"
1723
+ },
1724
+ {
1725
+ "type": "null"
1726
+ }
1727
+ ]
1728
+ },
1729
+ "price": {
1730
+ "anyOf": [
1731
+ {
1732
+ "$ref": "#/components/schemas/MoneyV2"
1733
+ },
1734
+ {
1735
+ "type": "null"
1736
+ }
1737
+ ]
1738
+ },
1739
+ "quality": {
1740
+ "$ref": "#/components/schemas/QualityV2"
1741
+ },
1742
+ "quantity": {
1743
+ "anyOf": [
1744
+ {
1745
+ "$ref": "#/components/schemas/DecimalQuantityV2"
1746
+ },
1747
+ {
1748
+ "type": "null"
1749
+ }
1750
+ ]
1751
+ },
1752
+ "settledAt": {
1753
+ "anyOf": [
1754
+ {
1755
+ "format": "date-time",
1756
+ "type": "string"
1757
+ },
1758
+ {
1759
+ "type": "null"
1760
+ }
1761
+ ]
1762
+ },
1763
+ "source": {
1764
+ "$ref": "#/components/schemas/SourceV2"
1765
+ },
1766
+ "tradeAt": {
1767
+ "format": "date-time",
1768
+ "type": "string"
1769
+ },
1770
+ "type": {
1771
+ "enum": [
1772
+ "buy",
1773
+ "sell",
1774
+ "subscribe",
1775
+ "redeem",
1776
+ "dividend",
1777
+ "interest",
1778
+ "fee",
1779
+ "tax",
1780
+ "deposit",
1781
+ "withdrawal",
1782
+ "transfer_in",
1783
+ "transfer_out",
1784
+ "adjustment"
1785
+ ]
1786
+ }
1787
+ },
1788
+ "required": [
1789
+ "accountId",
1790
+ "holdingId",
1791
+ "type",
1792
+ "amount",
1793
+ "quantity",
1794
+ "price",
1795
+ "tradeAt",
1796
+ "settledAt",
1797
+ "quality",
1798
+ "source"
1799
+ ],
1800
+ "type": "object"
1801
+ },
1802
+ "InvestmentTransactionUpdateCommandV2": {
1803
+ "additionalProperties": false,
1804
+ "properties": {
1805
+ "commandId": {
1806
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1807
+ "type": "string"
1808
+ },
1809
+ "expectedObjectRevision": {
1810
+ "minimum": 1,
1811
+ "type": "integer"
1812
+ },
1813
+ "expectedWorkspaceVersion": {
1814
+ "minimum": 1,
1815
+ "type": "integer"
1816
+ },
1817
+ "idempotencyKey": {
1818
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
1819
+ "type": "string"
1820
+ },
1821
+ "kind": {
1822
+ "const": "investment_transaction.update.v2"
1823
+ },
1824
+ "payload": {
1825
+ "$ref": "#/components/schemas/InvestmentTransactionUpdatePayloadV2"
1826
+ },
1827
+ "source": {
1828
+ "$ref": "#/components/schemas/SourceV2"
1829
+ }
1830
+ },
1831
+ "required": [
1832
+ "kind",
1833
+ "commandId",
1834
+ "idempotencyKey",
1835
+ "expectedWorkspaceVersion",
1836
+ "expectedObjectRevision",
1837
+ "source",
1838
+ "payload"
1839
+ ],
1840
+ "type": "object"
1841
+ },
1842
+ "InvestmentTransactionUpdatePayloadV2": {
1843
+ "additionalProperties": false,
1844
+ "properties": {
1845
+ "transaction": {
1846
+ "$ref": "#/components/schemas/InvestmentTransactionDraftV2"
1847
+ },
1848
+ "transactionId": {
1849
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1850
+ "type": "string"
1851
+ }
1852
+ },
1853
+ "required": [
1854
+ "transactionId",
1855
+ "transaction"
1856
+ ],
1857
+ "type": "object"
1858
+ },
1859
+ "InvestmentTransactionV2": {
1860
+ "additionalProperties": false,
1861
+ "properties": {
1862
+ "accountId": {
1863
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1864
+ "type": "string"
1865
+ },
1866
+ "amount": {
1867
+ "$ref": "#/components/schemas/MoneyV2"
1868
+ },
1869
+ "holdingId": {
1870
+ "anyOf": [
1871
+ {
1872
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1873
+ "type": "string"
1874
+ },
1875
+ {
1876
+ "type": "null"
1877
+ }
1878
+ ]
1879
+ },
1880
+ "price": {
1881
+ "anyOf": [
1882
+ {
1883
+ "$ref": "#/components/schemas/MoneyV2"
1884
+ },
1885
+ {
1886
+ "type": "null"
1887
+ }
1888
+ ]
1889
+ },
1890
+ "quality": {
1891
+ "$ref": "#/components/schemas/QualityV2"
1892
+ },
1893
+ "quantity": {
1894
+ "anyOf": [
1895
+ {
1896
+ "$ref": "#/components/schemas/DecimalQuantityV2"
1897
+ },
1898
+ {
1899
+ "type": "null"
1900
+ }
1901
+ ]
1902
+ },
1903
+ "revision": {
1904
+ "minimum": 1,
1905
+ "type": "integer"
1906
+ },
1907
+ "settledAt": {
1391
1908
  "anyOf": [
1392
1909
  {
1393
1910
  "format": "date-time",
@@ -1398,33 +1915,52 @@
1398
1915
  }
1399
1916
  ]
1400
1917
  },
1401
- "revision": {
1402
- "minimum": 1,
1403
- "type": "integer"
1404
- },
1405
1918
  "source": {
1406
1919
  "$ref": "#/components/schemas/SourceV2"
1407
1920
  },
1408
- "valuation": {
1409
- "$ref": "#/components/schemas/OverviewValuationV2"
1921
+ "status": {
1922
+ "const": "active"
1923
+ },
1924
+ "tradeAt": {
1925
+ "format": "date-time",
1926
+ "type": "string"
1927
+ },
1928
+ "transactionId": {
1929
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1930
+ "type": "string"
1931
+ },
1932
+ "type": {
1933
+ "enum": [
1934
+ "buy",
1935
+ "sell",
1936
+ "subscribe",
1937
+ "redeem",
1938
+ "dividend",
1939
+ "interest",
1940
+ "fee",
1941
+ "tax",
1942
+ "deposit",
1943
+ "withdrawal",
1944
+ "transfer_in",
1945
+ "transfer_out",
1946
+ "adjustment"
1947
+ ]
1410
1948
  }
1411
1949
  },
1412
1950
  "required": [
1413
- "holdingId",
1951
+ "transactionId",
1414
1952
  "accountId",
1415
- "name",
1416
- "instrumentRef",
1953
+ "holdingId",
1954
+ "type",
1955
+ "amount",
1417
1956
  "quantity",
1418
- "quantityAsOf",
1419
- "currency",
1957
+ "price",
1958
+ "tradeAt",
1959
+ "settledAt",
1420
1960
  "quality",
1421
1961
  "source",
1422
- "revision",
1423
- "classificationRevision",
1424
- "classificationSource",
1425
- "assetClasses",
1426
- "purposeBuckets",
1427
- "valuation"
1962
+ "status",
1963
+ "revision"
1428
1964
  ],
1429
1965
  "type": "object"
1430
1966
  },
@@ -2140,7 +2676,8 @@
2140
2676
  "activity.page.v2",
2141
2677
  "workspace.overview.v2",
2142
2678
  "asset_account.detail.v2",
2143
- "account.timeline.v2"
2679
+ "account.timeline.v2",
2680
+ "account.activity_timeline.v2"
2144
2681
  ]
2145
2682
  },
2146
2683
  "type": "array",
@@ -2157,7 +2694,10 @@
2157
2694
  "holding.create.v2",
2158
2695
  "holding.update.v2",
2159
2696
  "holding.archive.v2",
2160
- "external_cash_flow.record.v2"
2697
+ "external_cash_flow.record.v2",
2698
+ "investment_transaction.create.v2",
2699
+ "investment_transaction.update.v2",
2700
+ "investment_transaction.archive.v2"
2161
2701
  ]
2162
2702
  },
2163
2703
  "type": "array",
@@ -2869,8 +3409,8 @@
2869
3409
  }
2870
3410
  },
2871
3411
  "info": {
2872
- "title": "ChooseFIRE Family Wealth v2 R3 Holdings Contract",
2873
- "version": "2.0.0-r3-holdings"
3412
+ "title": "ChooseFIRE Family Wealth v2 R3 Transaction Contract",
3413
+ "version": "2.0.0-r3-transactions"
2874
3414
  },
2875
3415
  "openapi": "3.1.0",
2876
3416
  "paths": {
@@ -3162,6 +3702,83 @@
3162
3702
  "summary": "Read one account and its bounded active holdings"
3163
3703
  }
3164
3704
  },
3705
+ "/choosefire/v2/workspace/asset-accounts/{accountId}/activity-timeline": {
3706
+ "get": {
3707
+ "operationId": "getFamilyWealthAccountActivityTimelineV2",
3708
+ "parameters": [
3709
+ {
3710
+ "in": "path",
3711
+ "name": "accountId",
3712
+ "required": true,
3713
+ "schema": {
3714
+ "format": "uuid",
3715
+ "type": "string"
3716
+ }
3717
+ }
3718
+ ],
3719
+ "responses": {
3720
+ "200": {
3721
+ "content": {
3722
+ "application/json": {
3723
+ "schema": {
3724
+ "$ref": "#/components/schemas/AccountActivityTimelineSuccessV2"
3725
+ }
3726
+ }
3727
+ },
3728
+ "description": "Unified account activity timeline"
3729
+ }
3730
+ },
3731
+ "security": [
3732
+ {
3733
+ "bearer": []
3734
+ }
3735
+ ],
3736
+ "summary": "Read cash flows and investment transactions in one stable timeline"
3737
+ }
3738
+ },
3739
+ "/choosefire/v2/workspace/asset-accounts/{accountId}/holdings/{holdingId}/activity-timeline": {
3740
+ "get": {
3741
+ "operationId": "getFamilyWealthHoldingActivityTimelineV2",
3742
+ "parameters": [
3743
+ {
3744
+ "in": "path",
3745
+ "name": "accountId",
3746
+ "required": true,
3747
+ "schema": {
3748
+ "format": "uuid",
3749
+ "type": "string"
3750
+ }
3751
+ },
3752
+ {
3753
+ "in": "path",
3754
+ "name": "holdingId",
3755
+ "required": true,
3756
+ "schema": {
3757
+ "format": "uuid",
3758
+ "type": "string"
3759
+ }
3760
+ }
3761
+ ],
3762
+ "responses": {
3763
+ "200": {
3764
+ "content": {
3765
+ "application/json": {
3766
+ "schema": {
3767
+ "$ref": "#/components/schemas/AccountActivityTimelineSuccessV2"
3768
+ }
3769
+ }
3770
+ },
3771
+ "description": "Unified holding activity timeline"
3772
+ }
3773
+ },
3774
+ "security": [
3775
+ {
3776
+ "bearer": []
3777
+ }
3778
+ ],
3779
+ "summary": "Read the bounded transaction timeline for one holding"
3780
+ }
3781
+ },
3165
3782
  "/choosefire/v2/workspace/classifications": {
3166
3783
  "put": {
3167
3784
  "operationId": "replaceFamilyWealthClassificationV2",
@@ -3215,6 +3832,49 @@
3215
3832
  "summary": "Replace account or holding asset and purpose allocations"
3216
3833
  }
3217
3834
  },
3835
+ "/choosefire/v2/workspace/external-cash-flows": {
3836
+ "post": {
3837
+ "operationId": "recordFamilyWealthExternalCashFlowV2",
3838
+ "requestBody": {
3839
+ "content": {
3840
+ "application/json": {
3841
+ "schema": {
3842
+ "$ref": "#/components/schemas/ExternalCashFlowRecordCommandV2"
3843
+ }
3844
+ }
3845
+ },
3846
+ "required": true
3847
+ },
3848
+ "responses": {
3849
+ "200": {
3850
+ "content": {
3851
+ "application/json": {
3852
+ "schema": {
3853
+ "$ref": "#/components/schemas/CommandSuccessV2"
3854
+ }
3855
+ }
3856
+ },
3857
+ "description": "Committed cash-flow receipt"
3858
+ },
3859
+ "409": {
3860
+ "content": {
3861
+ "application/json": {
3862
+ "schema": {
3863
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
3864
+ }
3865
+ }
3866
+ },
3867
+ "description": "Workspace or idempotency conflict"
3868
+ }
3869
+ },
3870
+ "security": [
3871
+ {
3872
+ "bearer": []
3873
+ }
3874
+ ],
3875
+ "summary": "Record one account-boundary cash flow"
3876
+ }
3877
+ },
3218
3878
  "/choosefire/v2/workspace/holdings": {
3219
3879
  "post": {
3220
3880
  "operationId": "createFamilyWealthHoldingV2",
@@ -3342,6 +4002,133 @@
3342
4002
  "summary": "Archive one active holding without deleting history"
3343
4003
  }
3344
4004
  },
4005
+ "/choosefire/v2/workspace/investment-transactions": {
4006
+ "post": {
4007
+ "operationId": "createFamilyWealthInvestmentTransactionV2",
4008
+ "requestBody": {
4009
+ "content": {
4010
+ "application/json": {
4011
+ "schema": {
4012
+ "$ref": "#/components/schemas/InvestmentTransactionCreateCommandV2"
4013
+ }
4014
+ }
4015
+ },
4016
+ "required": true
4017
+ },
4018
+ "responses": {
4019
+ "200": {
4020
+ "content": {
4021
+ "application/json": {
4022
+ "schema": {
4023
+ "$ref": "#/components/schemas/CommandSuccessV2"
4024
+ }
4025
+ }
4026
+ },
4027
+ "description": "Committed transaction receipt"
4028
+ },
4029
+ "409": {
4030
+ "content": {
4031
+ "application/json": {
4032
+ "schema": {
4033
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
4034
+ }
4035
+ }
4036
+ },
4037
+ "description": "Workspace or idempotency conflict"
4038
+ }
4039
+ },
4040
+ "security": [
4041
+ {
4042
+ "bearer": []
4043
+ }
4044
+ ],
4045
+ "summary": "Create one investment transaction under a detailed account"
4046
+ },
4047
+ "put": {
4048
+ "operationId": "updateFamilyWealthInvestmentTransactionV2",
4049
+ "requestBody": {
4050
+ "content": {
4051
+ "application/json": {
4052
+ "schema": {
4053
+ "$ref": "#/components/schemas/InvestmentTransactionUpdateCommandV2"
4054
+ }
4055
+ }
4056
+ },
4057
+ "required": true
4058
+ },
4059
+ "responses": {
4060
+ "200": {
4061
+ "content": {
4062
+ "application/json": {
4063
+ "schema": {
4064
+ "$ref": "#/components/schemas/CommandSuccessV2"
4065
+ }
4066
+ }
4067
+ },
4068
+ "description": "Committed transaction update receipt"
4069
+ },
4070
+ "409": {
4071
+ "content": {
4072
+ "application/json": {
4073
+ "schema": {
4074
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
4075
+ }
4076
+ }
4077
+ },
4078
+ "description": "Workspace or transaction revision conflict"
4079
+ }
4080
+ },
4081
+ "security": [
4082
+ {
4083
+ "bearer": []
4084
+ }
4085
+ ],
4086
+ "summary": "Replace one active investment transaction"
4087
+ }
4088
+ },
4089
+ "/choosefire/v2/workspace/investment-transactions/archive": {
4090
+ "post": {
4091
+ "operationId": "archiveFamilyWealthInvestmentTransactionV2",
4092
+ "requestBody": {
4093
+ "content": {
4094
+ "application/json": {
4095
+ "schema": {
4096
+ "$ref": "#/components/schemas/InvestmentTransactionArchiveCommandV2"
4097
+ }
4098
+ }
4099
+ },
4100
+ "required": true
4101
+ },
4102
+ "responses": {
4103
+ "200": {
4104
+ "content": {
4105
+ "application/json": {
4106
+ "schema": {
4107
+ "$ref": "#/components/schemas/CommandSuccessV2"
4108
+ }
4109
+ }
4110
+ },
4111
+ "description": "Committed transaction archive receipt"
4112
+ },
4113
+ "409": {
4114
+ "content": {
4115
+ "application/json": {
4116
+ "schema": {
4117
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
4118
+ }
4119
+ }
4120
+ },
4121
+ "description": "Workspace or transaction revision conflict"
4122
+ }
4123
+ },
4124
+ "security": [
4125
+ {
4126
+ "bearer": []
4127
+ }
4128
+ ],
4129
+ "summary": "Archive one active investment transaction without deleting history"
4130
+ }
4131
+ },
3345
4132
  "/choosefire/v2/workspace/mcp/delegation": {
3346
4133
  "post": {
3347
4134
  "operationId": "issueFamilyWealthWorkspaceMcpDelegationV2",
@@ -3510,5 +4297,5 @@
3510
4297
  },
3511
4298
  "x-choosefire-contract-id": "choosefire-family-wealth.v2",
3512
4299
  "x-choosefire-contract-version": 2,
3513
- "x-choosefire-runtime-state": "r3-holdings-parity"
4300
+ "x-choosefire-runtime-state": "r3-transaction-web-parity"
3514
4301
  }