@yigemo/choosefire 0.1.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.
Files changed (62) hide show
  1. package/README.md +83 -0
  2. package/contracts/choosefire-family-wealth/v2/capability-matrix.v1.json +464 -0
  3. package/contracts/choosefire-family-wealth/v2/golden/performance.v1.json +79 -0
  4. package/contracts/choosefire-family-wealth/v2/golden/r2-contract.v1.json +1070 -0
  5. package/contracts/choosefire-family-wealth/v2/golden/scenarios.v1.json +241 -0
  6. package/contracts/choosefire-family-wealth/v2/golden/transport.v1.json +207 -0
  7. package/contracts/choosefire-family-wealth/v2/manifest.json +58 -0
  8. package/contracts/choosefire-family-wealth/v2/openapi.generated.json +2605 -0
  9. package/contracts/choosefire-family-wealth/v2/runtime-schemas/family-wealth.v2.schema.json +2127 -0
  10. package/contracts/choosefire-family-wealth/v2/taxonomies/account-types.v1.json +41 -0
  11. package/contracts/choosefire-family-wealth/v2/taxonomies/asset-classes.v1.json +45 -0
  12. package/contracts/choosefire-family-wealth/v2/taxonomies/transaction-types.v1.json +57 -0
  13. package/contracts/choosefire-financial-workspace/v1/field-registry.generated.json +137 -0
  14. package/contracts/choosefire-financial-workspace/v1/field-registry.manifest.json +11 -0
  15. package/contracts/choosefire-financial-workspace/v1/golden/commands.invalid.json +583 -0
  16. package/contracts/choosefire-financial-workspace/v1/golden/commands.valid.json +201 -0
  17. package/contracts/choosefire-financial-workspace/v1/golden/cursors.invalid.json +82 -0
  18. package/contracts/choosefire-financial-workspace/v1/golden/errors.invalid.json +191 -0
  19. package/contracts/choosefire-financial-workspace/v1/golden/errors.valid.json +298 -0
  20. package/contracts/choosefire-financial-workspace/v1/golden/fingerprints.json +105 -0
  21. package/contracts/choosefire-financial-workspace/v1/golden/projections.invalid.json +3543 -0
  22. package/contracts/choosefire-financial-workspace/v1/golden/projections.valid.json +2953 -0
  23. package/contracts/choosefire-financial-workspace/v1/manifest.json +69 -0
  24. package/contracts/choosefire-financial-workspace/v1/openapi.generated.json +1987 -0
  25. package/contracts/choosefire-financial-workspace/v1/runtime-schemas/financial-workspace.v1.schema.json +1496 -0
  26. package/dist/args.d.ts +5 -0
  27. package/dist/args.js +60 -0
  28. package/dist/args.js.map +1 -0
  29. package/dist/auth.d.ts +55 -0
  30. package/dist/auth.js +480 -0
  31. package/dist/auth.js.map +1 -0
  32. package/dist/commands.d.ts +4 -0
  33. package/dist/commands.js +637 -0
  34. package/dist/commands.js.map +1 -0
  35. package/dist/config.d.ts +10 -0
  36. package/dist/config.js +74 -0
  37. package/dist/config.js.map +1 -0
  38. package/dist/family-wealth-v2-contracts.d.ts +276 -0
  39. package/dist/family-wealth-v2-contracts.js +77 -0
  40. package/dist/family-wealth-v2-contracts.js.map +1 -0
  41. package/dist/family-wealth-v2-http.d.ts +65 -0
  42. package/dist/family-wealth-v2-http.js +340 -0
  43. package/dist/family-wealth-v2-http.js.map +1 -0
  44. package/dist/financial-workspace-contracts.d.ts +191 -0
  45. package/dist/financial-workspace-contracts.js +282 -0
  46. package/dist/financial-workspace-contracts.js.map +1 -0
  47. package/dist/http.d.ts +76 -0
  48. package/dist/http.js +446 -0
  49. package/dist/http.js.map +1 -0
  50. package/dist/index.d.ts +2 -0
  51. package/dist/index.js +50 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/output.d.ts +18 -0
  54. package/dist/output.js +111 -0
  55. package/dist/output.js.map +1 -0
  56. package/dist/token-store.d.ts +27 -0
  57. package/dist/token-store.js +408 -0
  58. package/dist/token-store.js.map +1 -0
  59. package/dist/types.d.ts +65 -0
  60. package/dist/types.js +5 -0
  61. package/dist/types.js.map +1 -0
  62. package/package.json +43 -0
@@ -0,0 +1,2605 @@
1
+ {
2
+ "components": {
3
+ "schemas": {
4
+ "ActivityItemV2": {
5
+ "additionalProperties": false,
6
+ "properties": {
7
+ "actorRole": {
8
+ "enum": [
9
+ "owner",
10
+ "viewer_suggester"
11
+ ]
12
+ },
13
+ "affectedObjects": {
14
+ "items": {
15
+ "additionalProperties": false,
16
+ "properties": {
17
+ "objectId": {
18
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
19
+ "type": "string"
20
+ },
21
+ "objectType": {
22
+ "enum": [
23
+ "household",
24
+ "workspace",
25
+ "asset_account",
26
+ "valuation_snapshot",
27
+ "classification"
28
+ ]
29
+ }
30
+ },
31
+ "required": [
32
+ "objectType",
33
+ "objectId"
34
+ ],
35
+ "type": "object"
36
+ },
37
+ "maxItems": 20,
38
+ "minItems": 1,
39
+ "type": "array"
40
+ },
41
+ "baseWorkspaceVersion": {
42
+ "minimum": 0,
43
+ "type": "integer"
44
+ },
45
+ "commandId": {
46
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
47
+ "type": "string"
48
+ },
49
+ "committedAt": {
50
+ "format": "date-time",
51
+ "type": "string"
52
+ },
53
+ "operation": {
54
+ "enum": [
55
+ "workspace.initialize.v2",
56
+ "asset_account.create.v2",
57
+ "asset_account.update.v2",
58
+ "asset_account.archive.v2",
59
+ "valuation_snapshot.append.v2",
60
+ "classification.replace.v2"
61
+ ]
62
+ },
63
+ "operationId": {
64
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
65
+ "type": "string"
66
+ },
67
+ "resultWorkspaceVersion": {
68
+ "minimum": 1,
69
+ "type": "integer"
70
+ },
71
+ "source": {
72
+ "$ref": "#/components/schemas/SourceV2"
73
+ }
74
+ },
75
+ "required": [
76
+ "operationId",
77
+ "commandId",
78
+ "operation",
79
+ "source",
80
+ "actorRole",
81
+ "baseWorkspaceVersion",
82
+ "resultWorkspaceVersion",
83
+ "committedAt",
84
+ "affectedObjects"
85
+ ],
86
+ "type": "object"
87
+ },
88
+ "ActivityPageQueryV2": {
89
+ "additionalProperties": false,
90
+ "properties": {
91
+ "cursor": {
92
+ "maxLength": 2048,
93
+ "minLength": 32,
94
+ "type": "string"
95
+ },
96
+ "limit": {
97
+ "maximum": 100,
98
+ "minimum": 1,
99
+ "type": "integer"
100
+ }
101
+ },
102
+ "required": [
103
+ "limit"
104
+ ],
105
+ "type": "object"
106
+ },
107
+ "ActivityPageSuccessV2": {
108
+ "additionalProperties": false,
109
+ "properties": {
110
+ "code": {
111
+ "const": 0
112
+ },
113
+ "data": {
114
+ "$ref": "#/components/schemas/ActivityPageV2"
115
+ },
116
+ "kind": {
117
+ "const": "family_wealth_success.v2"
118
+ },
119
+ "status": {
120
+ "const": "success"
121
+ },
122
+ "success": {
123
+ "const": true
124
+ }
125
+ },
126
+ "required": [
127
+ "kind",
128
+ "success",
129
+ "status",
130
+ "code",
131
+ "data"
132
+ ],
133
+ "type": "object"
134
+ },
135
+ "ActivityPageV2": {
136
+ "additionalProperties": false,
137
+ "properties": {
138
+ "authority": {
139
+ "$ref": "#/components/schemas/WorkspaceAuthorityV2"
140
+ },
141
+ "contractVersion": {
142
+ "const": 2
143
+ },
144
+ "hasMore": {
145
+ "type": "boolean"
146
+ },
147
+ "items": {
148
+ "items": {
149
+ "$ref": "#/components/schemas/ActivityItemV2"
150
+ },
151
+ "maxItems": 100,
152
+ "type": "array"
153
+ },
154
+ "kind": {
155
+ "const": "activity.page.v2"
156
+ },
157
+ "nextCursor": {
158
+ "maxLength": 2048,
159
+ "minLength": 32,
160
+ "type": "string"
161
+ },
162
+ "projectionVersion": {
163
+ "const": 1
164
+ },
165
+ "workspaceVersion": {
166
+ "minimum": 1,
167
+ "type": "integer"
168
+ }
169
+ },
170
+ "required": [
171
+ "kind",
172
+ "contractVersion",
173
+ "projectionVersion",
174
+ "workspaceVersion",
175
+ "authority",
176
+ "items",
177
+ "nextCursor",
178
+ "hasMore"
179
+ ],
180
+ "type": "object"
181
+ },
182
+ "AllocationLineV2": {
183
+ "additionalProperties": false,
184
+ "properties": {
185
+ "basisPoints": {
186
+ "maximum": 10000,
187
+ "minimum": 0,
188
+ "type": "integer"
189
+ },
190
+ "code": {
191
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$",
192
+ "type": "string"
193
+ }
194
+ },
195
+ "required": [
196
+ "code",
197
+ "basisPoints"
198
+ ],
199
+ "type": "object"
200
+ },
201
+ "AssetAccountArchiveCommandV2": {
202
+ "additionalProperties": false,
203
+ "properties": {
204
+ "commandId": {
205
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
206
+ "type": "string"
207
+ },
208
+ "expectedObjectRevision": {
209
+ "minimum": 1,
210
+ "type": "integer"
211
+ },
212
+ "expectedWorkspaceVersion": {
213
+ "minimum": 1,
214
+ "type": "integer"
215
+ },
216
+ "idempotencyKey": {
217
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
218
+ "type": "string"
219
+ },
220
+ "kind": {
221
+ "const": "asset_account.archive.v2"
222
+ },
223
+ "payload": {
224
+ "$ref": "#/components/schemas/AssetAccountArchivePayloadV2"
225
+ },
226
+ "source": {
227
+ "$ref": "#/components/schemas/SourceV2"
228
+ }
229
+ },
230
+ "required": [
231
+ "kind",
232
+ "commandId",
233
+ "idempotencyKey",
234
+ "expectedWorkspaceVersion",
235
+ "expectedObjectRevision",
236
+ "source",
237
+ "payload"
238
+ ],
239
+ "type": "object"
240
+ },
241
+ "AssetAccountArchivePayloadV2": {
242
+ "additionalProperties": false,
243
+ "properties": {
244
+ "accountId": {
245
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
246
+ "type": "string"
247
+ },
248
+ "reason": {
249
+ "maxLength": 240,
250
+ "minLength": 1,
251
+ "type": "string"
252
+ }
253
+ },
254
+ "required": [
255
+ "accountId",
256
+ "reason"
257
+ ],
258
+ "type": "object"
259
+ },
260
+ "AssetAccountCreateCommandV2": {
261
+ "additionalProperties": false,
262
+ "properties": {
263
+ "commandId": {
264
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
265
+ "type": "string"
266
+ },
267
+ "expectedObjectRevision": {
268
+ "type": "null"
269
+ },
270
+ "expectedWorkspaceVersion": {
271
+ "minimum": 1,
272
+ "type": "integer"
273
+ },
274
+ "idempotencyKey": {
275
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
276
+ "type": "string"
277
+ },
278
+ "kind": {
279
+ "const": "asset_account.create.v2"
280
+ },
281
+ "payload": {
282
+ "$ref": "#/components/schemas/AssetAccountCreatePayloadV2"
283
+ },
284
+ "source": {
285
+ "$ref": "#/components/schemas/SourceV2"
286
+ }
287
+ },
288
+ "required": [
289
+ "kind",
290
+ "commandId",
291
+ "idempotencyKey",
292
+ "expectedWorkspaceVersion",
293
+ "expectedObjectRevision",
294
+ "source",
295
+ "payload"
296
+ ],
297
+ "type": "object"
298
+ },
299
+ "AssetAccountCreatePayloadV2": {
300
+ "additionalProperties": false,
301
+ "properties": {
302
+ "account": {
303
+ "$ref": "#/components/schemas/AssetAccountDraftV2"
304
+ },
305
+ "accountId": {
306
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
307
+ "type": "string"
308
+ }
309
+ },
310
+ "required": [
311
+ "accountId",
312
+ "account"
313
+ ],
314
+ "type": "object"
315
+ },
316
+ "AssetAccountDraftV2": {
317
+ "additionalProperties": false,
318
+ "properties": {
319
+ "accountType": {
320
+ "enum": [
321
+ "bank",
322
+ "brokerage",
323
+ "fund",
324
+ "insurance",
325
+ "pension",
326
+ "housing_fund",
327
+ "property",
328
+ "liability",
329
+ "other"
330
+ ]
331
+ },
332
+ "aggregationConsent": {
333
+ "type": "boolean"
334
+ },
335
+ "currency": {
336
+ "$ref": "#/components/schemas/CurrencyCodeV2"
337
+ },
338
+ "maintenanceMode": {
339
+ "enum": [
340
+ "simplified",
341
+ "detailed"
342
+ ]
343
+ },
344
+ "name": {
345
+ "maxLength": 120,
346
+ "minLength": 1,
347
+ "type": "string"
348
+ },
349
+ "ownerSubjectId": {
350
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
351
+ "type": "string"
352
+ },
353
+ "visibility": {
354
+ "$ref": "#/components/schemas/VisibilityV2"
355
+ }
356
+ },
357
+ "required": [
358
+ "name",
359
+ "accountType",
360
+ "ownerSubjectId",
361
+ "visibility",
362
+ "aggregationConsent",
363
+ "currency",
364
+ "maintenanceMode"
365
+ ],
366
+ "type": "object"
367
+ },
368
+ "AssetAccountUpdateCommandV2": {
369
+ "additionalProperties": false,
370
+ "properties": {
371
+ "commandId": {
372
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
373
+ "type": "string"
374
+ },
375
+ "expectedObjectRevision": {
376
+ "minimum": 1,
377
+ "type": "integer"
378
+ },
379
+ "expectedWorkspaceVersion": {
380
+ "minimum": 1,
381
+ "type": "integer"
382
+ },
383
+ "idempotencyKey": {
384
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
385
+ "type": "string"
386
+ },
387
+ "kind": {
388
+ "const": "asset_account.update.v2"
389
+ },
390
+ "payload": {
391
+ "$ref": "#/components/schemas/AssetAccountUpdatePayloadV2"
392
+ },
393
+ "source": {
394
+ "$ref": "#/components/schemas/SourceV2"
395
+ }
396
+ },
397
+ "required": [
398
+ "kind",
399
+ "commandId",
400
+ "idempotencyKey",
401
+ "expectedWorkspaceVersion",
402
+ "expectedObjectRevision",
403
+ "source",
404
+ "payload"
405
+ ],
406
+ "type": "object"
407
+ },
408
+ "AssetAccountUpdatePayloadV2": {
409
+ "additionalProperties": false,
410
+ "properties": {
411
+ "account": {
412
+ "$ref": "#/components/schemas/AssetAccountDraftV2"
413
+ },
414
+ "accountId": {
415
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
416
+ "type": "string"
417
+ }
418
+ },
419
+ "required": [
420
+ "accountId",
421
+ "account"
422
+ ],
423
+ "type": "object"
424
+ },
425
+ "ClassificationDraftV2": {
426
+ "additionalProperties": false,
427
+ "properties": {
428
+ "assetClasses": {
429
+ "items": {
430
+ "$ref": "#/components/schemas/AllocationLineV2"
431
+ },
432
+ "maxItems": 20,
433
+ "minItems": 1,
434
+ "type": "array"
435
+ },
436
+ "effectiveFrom": {
437
+ "format": "date-time",
438
+ "type": "string"
439
+ },
440
+ "purposeBuckets": {
441
+ "items": {
442
+ "$ref": "#/components/schemas/AllocationLineV2"
443
+ },
444
+ "maxItems": 20,
445
+ "minItems": 1,
446
+ "type": "array"
447
+ },
448
+ "scopeId": {
449
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
450
+ "type": "string"
451
+ },
452
+ "scopeType": {
453
+ "enum": [
454
+ "account",
455
+ "holding"
456
+ ]
457
+ }
458
+ },
459
+ "required": [
460
+ "scopeType",
461
+ "scopeId",
462
+ "assetClasses",
463
+ "purposeBuckets",
464
+ "effectiveFrom"
465
+ ],
466
+ "type": "object"
467
+ },
468
+ "ClassificationReplaceCommandV2": {
469
+ "additionalProperties": false,
470
+ "properties": {
471
+ "commandId": {
472
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
473
+ "type": "string"
474
+ },
475
+ "expectedObjectRevision": {
476
+ "minimum": 0,
477
+ "type": "integer"
478
+ },
479
+ "expectedWorkspaceVersion": {
480
+ "minimum": 1,
481
+ "type": "integer"
482
+ },
483
+ "idempotencyKey": {
484
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
485
+ "type": "string"
486
+ },
487
+ "kind": {
488
+ "const": "classification.replace.v2"
489
+ },
490
+ "payload": {
491
+ "$ref": "#/components/schemas/ClassificationReplacePayloadV2"
492
+ },
493
+ "source": {
494
+ "$ref": "#/components/schemas/SourceV2"
495
+ }
496
+ },
497
+ "required": [
498
+ "kind",
499
+ "commandId",
500
+ "idempotencyKey",
501
+ "expectedWorkspaceVersion",
502
+ "expectedObjectRevision",
503
+ "source",
504
+ "payload"
505
+ ],
506
+ "type": "object"
507
+ },
508
+ "ClassificationReplacePayloadV2": {
509
+ "additionalProperties": false,
510
+ "properties": {
511
+ "classification": {
512
+ "$ref": "#/components/schemas/ClassificationDraftV2"
513
+ },
514
+ "classificationRevisionId": {
515
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
516
+ "type": "string"
517
+ }
518
+ },
519
+ "required": [
520
+ "classificationRevisionId",
521
+ "classification"
522
+ ],
523
+ "type": "object"
524
+ },
525
+ "CommandReceiptV2": {
526
+ "additionalProperties": false,
527
+ "properties": {
528
+ "affectedObjects": {
529
+ "items": {
530
+ "additionalProperties": false,
531
+ "properties": {
532
+ "objectId": {
533
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
534
+ "type": "string"
535
+ },
536
+ "objectType": {
537
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$",
538
+ "type": "string"
539
+ }
540
+ },
541
+ "required": [
542
+ "objectType",
543
+ "objectId"
544
+ ],
545
+ "type": "object"
546
+ },
547
+ "maxItems": 100,
548
+ "type": "array"
549
+ },
550
+ "baseWorkspaceVersion": {
551
+ "minimum": 0,
552
+ "type": "integer"
553
+ },
554
+ "commandId": {
555
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
556
+ "type": "string"
557
+ },
558
+ "committedAt": {
559
+ "format": "date-time",
560
+ "type": "string"
561
+ },
562
+ "cursor": {
563
+ "maxLength": 2048,
564
+ "minLength": 32,
565
+ "type": "string"
566
+ },
567
+ "kind": {
568
+ "const": "command_receipt.v2"
569
+ },
570
+ "projectionHints": {
571
+ "items": {
572
+ "maxLength": 100,
573
+ "minLength": 1,
574
+ "type": "string"
575
+ },
576
+ "maxItems": 20,
577
+ "type": "array",
578
+ "uniqueItems": true
579
+ },
580
+ "receiptId": {
581
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
582
+ "type": "string"
583
+ },
584
+ "replayed": {
585
+ "type": "boolean"
586
+ },
587
+ "resultWorkspaceVersion": {
588
+ "minimum": 1,
589
+ "type": "integer"
590
+ },
591
+ "status": {
592
+ "const": "committed"
593
+ }
594
+ },
595
+ "required": [
596
+ "kind",
597
+ "receiptId",
598
+ "commandId",
599
+ "status",
600
+ "baseWorkspaceVersion",
601
+ "resultWorkspaceVersion",
602
+ "replayed",
603
+ "committedAt",
604
+ "cursor",
605
+ "affectedObjects",
606
+ "projectionHints"
607
+ ],
608
+ "type": "object"
609
+ },
610
+ "CommandSuccessV2": {
611
+ "additionalProperties": false,
612
+ "properties": {
613
+ "code": {
614
+ "const": 0
615
+ },
616
+ "data": {
617
+ "$ref": "#/components/schemas/CommandReceiptV2"
618
+ },
619
+ "kind": {
620
+ "const": "family_wealth_success.v2"
621
+ },
622
+ "status": {
623
+ "const": "success"
624
+ },
625
+ "success": {
626
+ "const": true
627
+ }
628
+ },
629
+ "required": [
630
+ "kind",
631
+ "success",
632
+ "status",
633
+ "code",
634
+ "data"
635
+ ],
636
+ "type": "object"
637
+ },
638
+ "CurrencyCodeV2": {
639
+ "pattern": "^[A-Z]{3}$",
640
+ "type": "string"
641
+ },
642
+ "DecimalAmountV2": {
643
+ "maxLength": 48,
644
+ "pattern": "^(?:0|[1-9]\\d*|-[1-9]\\d*)(?:\\.\\d{1,8})?$",
645
+ "type": "string"
646
+ },
647
+ "FamilyWealthErrorV2": {
648
+ "additionalProperties": false,
649
+ "properties": {
650
+ "code": {
651
+ "enum": [
652
+ "VALIDATION_ERROR",
653
+ "AUTH_REQUIRED",
654
+ "ACCOUNT_SCOPE_REQUIRED",
655
+ "WORKSPACE_NOT_INITIALIZED",
656
+ "WORKSPACE_ALREADY_INITIALIZED",
657
+ "PERMISSION_DENIED",
658
+ "OBJECT_NOT_FOUND",
659
+ "WORKSPACE_VERSION_CONFLICT",
660
+ "OBJECT_REVISION_CONFLICT",
661
+ "IDEMPOTENCY_CONFLICT",
662
+ "CURSOR_INVALID",
663
+ "CURSOR_EXPIRED",
664
+ "TRANSACTION_RETRYABLE",
665
+ "REMOTE_UNAVAILABLE"
666
+ ]
667
+ },
668
+ "error": {
669
+ "additionalProperties": false,
670
+ "properties": {
671
+ "data": {
672
+ "additionalProperties": false,
673
+ "properties": {
674
+ "conflictingFields": {
675
+ "items": {
676
+ "maxLength": 120,
677
+ "minLength": 1,
678
+ "type": "string"
679
+ },
680
+ "maxItems": 20,
681
+ "type": "array",
682
+ "uniqueItems": true
683
+ },
684
+ "contractId": {
685
+ "const": "choosefire-family-wealth.v2"
686
+ },
687
+ "currentObjectRevision": {
688
+ "minimum": 0,
689
+ "type": "integer"
690
+ },
691
+ "currentWorkspaceVersion": {
692
+ "minimum": 1,
693
+ "type": "integer"
694
+ },
695
+ "retryable": {
696
+ "type": "boolean"
697
+ },
698
+ "safeRetry": {
699
+ "type": "boolean"
700
+ }
701
+ },
702
+ "required": [
703
+ "contractId",
704
+ "retryable"
705
+ ],
706
+ "type": "object"
707
+ },
708
+ "message": {
709
+ "maxLength": 200,
710
+ "minLength": 1,
711
+ "type": "string"
712
+ },
713
+ "requestId": {
714
+ "maxLength": 200,
715
+ "minLength": 1,
716
+ "type": "string"
717
+ }
718
+ },
719
+ "required": [
720
+ "message",
721
+ "requestId",
722
+ "data"
723
+ ],
724
+ "type": "object"
725
+ },
726
+ "kind": {
727
+ "const": "family_wealth_error.v2"
728
+ },
729
+ "status": {
730
+ "const": "error"
731
+ },
732
+ "success": {
733
+ "const": false
734
+ }
735
+ },
736
+ "required": [
737
+ "kind",
738
+ "success",
739
+ "status",
740
+ "code",
741
+ "error"
742
+ ],
743
+ "type": "object"
744
+ },
745
+ "McpDelegatedTokenCredentialV2": {
746
+ "additionalProperties": false,
747
+ "properties": {
748
+ "accessToken": {
749
+ "pattern": "^[A-Za-z0-9_-]{43}$",
750
+ "type": "string"
751
+ },
752
+ "audience": {
753
+ "const": "choosefire-mcp"
754
+ },
755
+ "clientId": {
756
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{2,190}$",
757
+ "type": "string"
758
+ },
759
+ "expiresAt": {
760
+ "format": "date-time",
761
+ "type": "string"
762
+ },
763
+ "expiresIn": {
764
+ "maximum": 900,
765
+ "minimum": 60,
766
+ "type": "integer"
767
+ },
768
+ "kind": {
769
+ "const": "choosefire_workspace_mcp_delegated_token.v1"
770
+ },
771
+ "scopes": {
772
+ "maxItems": 1,
773
+ "minItems": 1,
774
+ "prefixItems": [
775
+ {
776
+ "const": "workspace:read"
777
+ }
778
+ ],
779
+ "type": "array"
780
+ },
781
+ "tokenType": {
782
+ "const": "Bearer"
783
+ },
784
+ "workspaceId": {
785
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
786
+ "type": "string"
787
+ }
788
+ },
789
+ "required": [
790
+ "kind",
791
+ "accessToken",
792
+ "tokenType",
793
+ "expiresIn",
794
+ "expiresAt",
795
+ "audience",
796
+ "scopes",
797
+ "workspaceId",
798
+ "clientId"
799
+ ],
800
+ "type": "object"
801
+ },
802
+ "McpDelegationIssueRequestV2": {
803
+ "additionalProperties": false,
804
+ "properties": {
805
+ "clientId": {
806
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{2,190}$",
807
+ "type": "string"
808
+ },
809
+ "ttlSeconds": {
810
+ "maximum": 900,
811
+ "minimum": 60,
812
+ "type": "integer"
813
+ }
814
+ },
815
+ "required": [
816
+ "clientId"
817
+ ],
818
+ "type": "object"
819
+ },
820
+ "McpDelegationRevokeRequestV2": {
821
+ "additionalProperties": false,
822
+ "properties": {
823
+ "accessToken": {
824
+ "pattern": "^[A-Za-z0-9_-]{43}$",
825
+ "type": "string"
826
+ }
827
+ },
828
+ "required": [
829
+ "accessToken"
830
+ ],
831
+ "type": "object"
832
+ },
833
+ "McpDelegationRevokeResponseV2": {
834
+ "additionalProperties": false,
835
+ "properties": {
836
+ "success": {
837
+ "type": "boolean"
838
+ }
839
+ },
840
+ "required": [
841
+ "success"
842
+ ],
843
+ "type": "object"
844
+ },
845
+ "MoneyV2": {
846
+ "additionalProperties": false,
847
+ "properties": {
848
+ "amount": {
849
+ "$ref": "#/components/schemas/DecimalAmountV2"
850
+ },
851
+ "currency": {
852
+ "$ref": "#/components/schemas/CurrencyCodeV2"
853
+ }
854
+ },
855
+ "required": [
856
+ "amount",
857
+ "currency"
858
+ ],
859
+ "type": "object"
860
+ },
861
+ "OverviewAccountV2": {
862
+ "additionalProperties": false,
863
+ "properties": {
864
+ "accountId": {
865
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
866
+ "type": "string"
867
+ },
868
+ "accountType": {
869
+ "enum": [
870
+ "bank",
871
+ "brokerage",
872
+ "fund",
873
+ "insurance",
874
+ "pension",
875
+ "housing_fund",
876
+ "property",
877
+ "liability",
878
+ "other"
879
+ ]
880
+ },
881
+ "aggregationConsent": {
882
+ "type": "boolean"
883
+ },
884
+ "assetClasses": {
885
+ "items": {
886
+ "$ref": "#/components/schemas/AllocationLineV2"
887
+ },
888
+ "maxItems": 20,
889
+ "type": "array"
890
+ },
891
+ "classificationRevision": {
892
+ "minimum": 0,
893
+ "type": "integer"
894
+ },
895
+ "currency": {
896
+ "$ref": "#/components/schemas/CurrencyCodeV2"
897
+ },
898
+ "maintenanceMode": {
899
+ "enum": [
900
+ "simplified",
901
+ "detailed"
902
+ ]
903
+ },
904
+ "name": {
905
+ "maxLength": 120,
906
+ "minLength": 1,
907
+ "type": "string"
908
+ },
909
+ "ownerSubjectId": {
910
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
911
+ "type": "string"
912
+ },
913
+ "purposeBuckets": {
914
+ "items": {
915
+ "$ref": "#/components/schemas/AllocationLineV2"
916
+ },
917
+ "maxItems": 20,
918
+ "type": "array"
919
+ },
920
+ "revision": {
921
+ "minimum": 1,
922
+ "type": "integer"
923
+ },
924
+ "valuation": {
925
+ "$ref": "#/components/schemas/OverviewValuationV2"
926
+ },
927
+ "visibility": {
928
+ "$ref": "#/components/schemas/VisibilityV2"
929
+ }
930
+ },
931
+ "required": [
932
+ "accountId",
933
+ "name",
934
+ "accountType",
935
+ "ownerSubjectId",
936
+ "visibility",
937
+ "aggregationConsent",
938
+ "currency",
939
+ "maintenanceMode",
940
+ "revision",
941
+ "classificationRevision",
942
+ "valuation",
943
+ "assetClasses",
944
+ "purposeBuckets"
945
+ ],
946
+ "type": "object"
947
+ },
948
+ "OverviewAllocationLineV2": {
949
+ "additionalProperties": false,
950
+ "properties": {
951
+ "basisPoints": {
952
+ "maximum": 10000,
953
+ "minimum": 0,
954
+ "type": "integer"
955
+ },
956
+ "code": {
957
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$",
958
+ "type": "string"
959
+ },
960
+ "value": {
961
+ "$ref": "#/components/schemas/MoneyV2"
962
+ }
963
+ },
964
+ "required": [
965
+ "code",
966
+ "basisPoints",
967
+ "value"
968
+ ],
969
+ "type": "object"
970
+ },
971
+ "OverviewCoverageV2": {
972
+ "additionalProperties": false,
973
+ "properties": {
974
+ "estimatedAccountCount": {
975
+ "minimum": 0,
976
+ "type": "integer"
977
+ },
978
+ "missingValuationAccountCount": {
979
+ "minimum": 0,
980
+ "type": "integer"
981
+ },
982
+ "staleAccountCount": {
983
+ "minimum": 0,
984
+ "type": "integer"
985
+ },
986
+ "unclassifiedAccountCount": {
987
+ "minimum": 0,
988
+ "type": "integer"
989
+ },
990
+ "unconverted": {
991
+ "items": {
992
+ "$ref": "#/components/schemas/OverviewUnconvertedAmountV2"
993
+ },
994
+ "maxItems": 20,
995
+ "type": "array"
996
+ },
997
+ "visibleAccountCount": {
998
+ "minimum": 0,
999
+ "type": "integer"
1000
+ }
1001
+ },
1002
+ "required": [
1003
+ "visibleAccountCount",
1004
+ "estimatedAccountCount",
1005
+ "staleAccountCount",
1006
+ "unclassifiedAccountCount",
1007
+ "missingValuationAccountCount",
1008
+ "unconverted"
1009
+ ],
1010
+ "type": "object"
1011
+ },
1012
+ "OverviewPrivacyV2": {
1013
+ "additionalProperties": false,
1014
+ "properties": {
1015
+ "containsRestrictedData": {
1016
+ "type": "boolean"
1017
+ },
1018
+ "suppressedFields": {
1019
+ "items": {
1020
+ "enum": [
1021
+ "account_count",
1022
+ "account_details",
1023
+ "allocation_breakdowns",
1024
+ "freshness_breakdown"
1025
+ ]
1026
+ },
1027
+ "type": "array",
1028
+ "uniqueItems": true
1029
+ }
1030
+ },
1031
+ "required": [
1032
+ "containsRestrictedData",
1033
+ "suppressedFields"
1034
+ ],
1035
+ "type": "object"
1036
+ },
1037
+ "OverviewTotalsV2": {
1038
+ "additionalProperties": false,
1039
+ "properties": {
1040
+ "grossAssets": {
1041
+ "$ref": "#/components/schemas/MoneyV2"
1042
+ },
1043
+ "liabilities": {
1044
+ "$ref": "#/components/schemas/MoneyV2"
1045
+ },
1046
+ "netWorth": {
1047
+ "$ref": "#/components/schemas/MoneyV2"
1048
+ }
1049
+ },
1050
+ "required": [
1051
+ "grossAssets",
1052
+ "liabilities",
1053
+ "netWorth"
1054
+ ],
1055
+ "type": "object"
1056
+ },
1057
+ "OverviewUnconvertedAmountV2": {
1058
+ "additionalProperties": false,
1059
+ "properties": {
1060
+ "amount": {
1061
+ "$ref": "#/components/schemas/MoneyV2"
1062
+ },
1063
+ "reason": {
1064
+ "const": "fx_rate_missing"
1065
+ }
1066
+ },
1067
+ "required": [
1068
+ "amount",
1069
+ "reason"
1070
+ ],
1071
+ "type": "object"
1072
+ },
1073
+ "OverviewValuationV2": {
1074
+ "additionalProperties": false,
1075
+ "properties": {
1076
+ "asOf": {
1077
+ "anyOf": [
1078
+ {
1079
+ "format": "date-time",
1080
+ "type": "string"
1081
+ },
1082
+ {
1083
+ "type": "null"
1084
+ }
1085
+ ]
1086
+ },
1087
+ "freshness": {
1088
+ "enum": [
1089
+ "current",
1090
+ "stale",
1091
+ "missing"
1092
+ ]
1093
+ },
1094
+ "quality": {
1095
+ "$ref": "#/components/schemas/QualityV2"
1096
+ },
1097
+ "value": {
1098
+ "anyOf": [
1099
+ {
1100
+ "$ref": "#/components/schemas/MoneyV2"
1101
+ },
1102
+ {
1103
+ "type": "null"
1104
+ }
1105
+ ]
1106
+ }
1107
+ },
1108
+ "required": [
1109
+ "value",
1110
+ "asOf",
1111
+ "quality",
1112
+ "freshness"
1113
+ ],
1114
+ "type": "object"
1115
+ },
1116
+ "PerformanceCoverageV2": {
1117
+ "additionalProperties": false,
1118
+ "properties": {
1119
+ "assumptions": {
1120
+ "items": {
1121
+ "maxLength": 100,
1122
+ "minLength": 1,
1123
+ "type": "string"
1124
+ },
1125
+ "type": "array",
1126
+ "uniqueItems": true
1127
+ },
1128
+ "calculationVersion": {
1129
+ "pattern": "^performance\\.v[1-9]\\d*$",
1130
+ "type": "string"
1131
+ },
1132
+ "eligibleMetrics": {
1133
+ "items": {
1134
+ "maxLength": 64,
1135
+ "minLength": 1,
1136
+ "type": "string"
1137
+ },
1138
+ "type": "array",
1139
+ "uniqueItems": true
1140
+ },
1141
+ "level": {
1142
+ "enum": [
1143
+ "balance_change",
1144
+ "estimated_return",
1145
+ "detailed_performance"
1146
+ ]
1147
+ },
1148
+ "unavailableMetrics": {
1149
+ "items": {
1150
+ "additionalProperties": false,
1151
+ "properties": {
1152
+ "metric": {
1153
+ "maxLength": 64,
1154
+ "minLength": 1,
1155
+ "type": "string"
1156
+ },
1157
+ "reason": {
1158
+ "maxLength": 100,
1159
+ "minLength": 1,
1160
+ "type": "string"
1161
+ }
1162
+ },
1163
+ "required": [
1164
+ "metric",
1165
+ "reason"
1166
+ ],
1167
+ "type": "object"
1168
+ },
1169
+ "type": "array",
1170
+ "uniqueItems": true
1171
+ },
1172
+ "warnings": {
1173
+ "items": {
1174
+ "maxLength": 100,
1175
+ "minLength": 1,
1176
+ "type": "string"
1177
+ },
1178
+ "type": "array",
1179
+ "uniqueItems": true
1180
+ }
1181
+ },
1182
+ "required": [
1183
+ "level",
1184
+ "eligibleMetrics",
1185
+ "unavailableMetrics",
1186
+ "assumptions",
1187
+ "warnings",
1188
+ "calculationVersion"
1189
+ ],
1190
+ "type": "object"
1191
+ },
1192
+ "PerformancePeriodRequestV2": {
1193
+ "additionalProperties": false,
1194
+ "properties": {
1195
+ "baseCurrency": {
1196
+ "$ref": "#/components/schemas/CurrencyCodeV2"
1197
+ },
1198
+ "from": {
1199
+ "format": "date-time",
1200
+ "type": "string"
1201
+ },
1202
+ "scopeId": {
1203
+ "anyOf": [
1204
+ {
1205
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1206
+ "type": "string"
1207
+ },
1208
+ {
1209
+ "type": "null"
1210
+ }
1211
+ ]
1212
+ },
1213
+ "scopeType": {
1214
+ "enum": [
1215
+ "household",
1216
+ "account",
1217
+ "holding"
1218
+ ]
1219
+ },
1220
+ "timezone": {
1221
+ "maxLength": 64,
1222
+ "pattern": "^(?:UTC|[A-Za-z_]+(?:/[A-Za-z0-9_+.-]+)+)$",
1223
+ "type": "string"
1224
+ },
1225
+ "to": {
1226
+ "format": "date-time",
1227
+ "type": "string"
1228
+ }
1229
+ },
1230
+ "required": [
1231
+ "from",
1232
+ "to",
1233
+ "timezone",
1234
+ "baseCurrency",
1235
+ "scopeType",
1236
+ "scopeId"
1237
+ ],
1238
+ "type": "object"
1239
+ },
1240
+ "PortfolioTreeV2": {
1241
+ "additionalProperties": false,
1242
+ "properties": {
1243
+ "accounts": {
1244
+ "items": {
1245
+ "$ref": "#/components/schemas/OverviewAccountV2"
1246
+ },
1247
+ "maxItems": 500,
1248
+ "type": "array"
1249
+ },
1250
+ "asOf": {
1251
+ "format": "date-time",
1252
+ "type": "string"
1253
+ },
1254
+ "authority": {
1255
+ "$ref": "#/components/schemas/WorkspaceAuthorityV2"
1256
+ },
1257
+ "baseCurrency": {
1258
+ "$ref": "#/components/schemas/CurrencyCodeV2"
1259
+ },
1260
+ "contractVersion": {
1261
+ "const": 2
1262
+ },
1263
+ "kind": {
1264
+ "const": "portfolio.tree.v2"
1265
+ },
1266
+ "privacy": {
1267
+ "$ref": "#/components/schemas/OverviewPrivacyV2"
1268
+ },
1269
+ "projectionVersion": {
1270
+ "const": 1
1271
+ },
1272
+ "workspaceVersion": {
1273
+ "minimum": 1,
1274
+ "type": "integer"
1275
+ }
1276
+ },
1277
+ "required": [
1278
+ "kind",
1279
+ "contractVersion",
1280
+ "projectionVersion",
1281
+ "workspaceVersion",
1282
+ "asOf",
1283
+ "authority",
1284
+ "baseCurrency",
1285
+ "accounts",
1286
+ "privacy"
1287
+ ],
1288
+ "type": "object"
1289
+ },
1290
+ "QualityV2": {
1291
+ "enum": [
1292
+ "confirmed",
1293
+ "estimated",
1294
+ "unknown"
1295
+ ]
1296
+ },
1297
+ "RemoteUnavailableErrorV2": {
1298
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
1299
+ },
1300
+ "SourceV2": {
1301
+ "additionalProperties": false,
1302
+ "properties": {
1303
+ "channel": {
1304
+ "enum": [
1305
+ "web",
1306
+ "cli",
1307
+ "mcp",
1308
+ "builtin_ai",
1309
+ "migration"
1310
+ ]
1311
+ },
1312
+ "clientId": {
1313
+ "pattern": "^[a-z][a-z0-9-]{2,63}$",
1314
+ "type": "string"
1315
+ }
1316
+ },
1317
+ "required": [
1318
+ "clientId",
1319
+ "channel"
1320
+ ],
1321
+ "type": "object"
1322
+ },
1323
+ "ValuationSnapshotAppendCommandV2": {
1324
+ "additionalProperties": false,
1325
+ "properties": {
1326
+ "commandId": {
1327
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1328
+ "type": "string"
1329
+ },
1330
+ "expectedObjectRevision": {
1331
+ "type": "null"
1332
+ },
1333
+ "expectedWorkspaceVersion": {
1334
+ "minimum": 1,
1335
+ "type": "integer"
1336
+ },
1337
+ "idempotencyKey": {
1338
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
1339
+ "type": "string"
1340
+ },
1341
+ "kind": {
1342
+ "const": "valuation_snapshot.append.v2"
1343
+ },
1344
+ "payload": {
1345
+ "$ref": "#/components/schemas/ValuationSnapshotAppendPayloadV2"
1346
+ },
1347
+ "source": {
1348
+ "$ref": "#/components/schemas/SourceV2"
1349
+ }
1350
+ },
1351
+ "required": [
1352
+ "kind",
1353
+ "commandId",
1354
+ "idempotencyKey",
1355
+ "expectedWorkspaceVersion",
1356
+ "expectedObjectRevision",
1357
+ "source",
1358
+ "payload"
1359
+ ],
1360
+ "type": "object"
1361
+ },
1362
+ "ValuationSnapshotAppendPayloadV2": {
1363
+ "additionalProperties": false,
1364
+ "properties": {
1365
+ "snapshot": {
1366
+ "$ref": "#/components/schemas/ValuationSnapshotDraftV2"
1367
+ },
1368
+ "snapshotId": {
1369
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1370
+ "type": "string"
1371
+ }
1372
+ },
1373
+ "required": [
1374
+ "snapshotId",
1375
+ "snapshot"
1376
+ ],
1377
+ "type": "object"
1378
+ },
1379
+ "ValuationSnapshotDraftV2": {
1380
+ "additionalProperties": false,
1381
+ "properties": {
1382
+ "asOf": {
1383
+ "format": "date-time",
1384
+ "type": "string"
1385
+ },
1386
+ "quality": {
1387
+ "$ref": "#/components/schemas/QualityV2"
1388
+ },
1389
+ "scopeId": {
1390
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1391
+ "type": "string"
1392
+ },
1393
+ "scopeType": {
1394
+ "enum": [
1395
+ "account",
1396
+ "holding"
1397
+ ]
1398
+ },
1399
+ "source": {
1400
+ "$ref": "#/components/schemas/SourceV2"
1401
+ },
1402
+ "value": {
1403
+ "$ref": "#/components/schemas/MoneyV2"
1404
+ }
1405
+ },
1406
+ "required": [
1407
+ "scopeType",
1408
+ "scopeId",
1409
+ "value",
1410
+ "asOf",
1411
+ "quality",
1412
+ "source"
1413
+ ],
1414
+ "type": "object"
1415
+ },
1416
+ "VisibilityV2": {
1417
+ "enum": [
1418
+ "household",
1419
+ "private"
1420
+ ]
1421
+ },
1422
+ "WorkspaceAuthorityV2": {
1423
+ "additionalProperties": false,
1424
+ "properties": {
1425
+ "householdId": {
1426
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1427
+ "type": "string"
1428
+ },
1429
+ "role": {
1430
+ "enum": [
1431
+ "owner",
1432
+ "viewer_suggester"
1433
+ ]
1434
+ },
1435
+ "workspaceId": {
1436
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1437
+ "type": "string"
1438
+ }
1439
+ },
1440
+ "required": [
1441
+ "householdId",
1442
+ "workspaceId",
1443
+ "role"
1444
+ ],
1445
+ "type": "object"
1446
+ },
1447
+ "WorkspaceCapabilitiesV2": {
1448
+ "additionalProperties": false,
1449
+ "properties": {
1450
+ "readable": {
1451
+ "items": {
1452
+ "enum": [
1453
+ "workspace.summary.v2",
1454
+ "activity.page.v2",
1455
+ "workspace.overview.v2"
1456
+ ]
1457
+ },
1458
+ "type": "array",
1459
+ "uniqueItems": true
1460
+ },
1461
+ "writable": {
1462
+ "items": {
1463
+ "enum": [
1464
+ "asset_account.create.v2",
1465
+ "asset_account.update.v2",
1466
+ "asset_account.archive.v2",
1467
+ "valuation_snapshot.append.v2",
1468
+ "classification.replace.v2"
1469
+ ]
1470
+ },
1471
+ "type": "array",
1472
+ "uniqueItems": true
1473
+ }
1474
+ },
1475
+ "required": [
1476
+ "readable",
1477
+ "writable"
1478
+ ],
1479
+ "type": "object"
1480
+ },
1481
+ "WorkspaceDataQualityV2": {
1482
+ "additionalProperties": false,
1483
+ "properties": {
1484
+ "asOf": {
1485
+ "format": "date-time",
1486
+ "type": "string"
1487
+ },
1488
+ "authority": {
1489
+ "$ref": "#/components/schemas/WorkspaceAuthorityV2"
1490
+ },
1491
+ "contractVersion": {
1492
+ "const": 2
1493
+ },
1494
+ "coverage": {
1495
+ "$ref": "#/components/schemas/OverviewCoverageV2"
1496
+ },
1497
+ "kind": {
1498
+ "const": "workspace.data_quality.v2"
1499
+ },
1500
+ "privacy": {
1501
+ "$ref": "#/components/schemas/OverviewPrivacyV2"
1502
+ },
1503
+ "projectionVersion": {
1504
+ "const": 1
1505
+ },
1506
+ "warnings": {
1507
+ "items": {
1508
+ "enum": [
1509
+ "estimated_values_present",
1510
+ "stale_values_present",
1511
+ "unclassified_values_present",
1512
+ "missing_valuations_present",
1513
+ "unconverted_values_excluded",
1514
+ "restricted_values_aggregated"
1515
+ ]
1516
+ },
1517
+ "type": "array",
1518
+ "uniqueItems": true
1519
+ },
1520
+ "workspaceVersion": {
1521
+ "minimum": 1,
1522
+ "type": "integer"
1523
+ }
1524
+ },
1525
+ "required": [
1526
+ "kind",
1527
+ "contractVersion",
1528
+ "projectionVersion",
1529
+ "workspaceVersion",
1530
+ "asOf",
1531
+ "authority",
1532
+ "coverage",
1533
+ "privacy",
1534
+ "warnings"
1535
+ ],
1536
+ "type": "object"
1537
+ },
1538
+ "WorkspaceInitializeCommandV2": {
1539
+ "additionalProperties": false,
1540
+ "properties": {
1541
+ "commandId": {
1542
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1543
+ "type": "string"
1544
+ },
1545
+ "expectedWorkspaceVersion": {
1546
+ "const": 0
1547
+ },
1548
+ "idempotencyKey": {
1549
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
1550
+ "type": "string"
1551
+ },
1552
+ "kind": {
1553
+ "const": "workspace.initialize.v2"
1554
+ },
1555
+ "payload": {
1556
+ "$ref": "#/components/schemas/WorkspaceInitializePayloadV2"
1557
+ },
1558
+ "source": {
1559
+ "$ref": "#/components/schemas/SourceV2"
1560
+ }
1561
+ },
1562
+ "required": [
1563
+ "kind",
1564
+ "commandId",
1565
+ "idempotencyKey",
1566
+ "expectedWorkspaceVersion",
1567
+ "source",
1568
+ "payload"
1569
+ ],
1570
+ "type": "object"
1571
+ },
1572
+ "WorkspaceInitializePayloadV2": {
1573
+ "additionalProperties": false,
1574
+ "properties": {
1575
+ "baseCurrency": {
1576
+ "$ref": "#/components/schemas/CurrencyCodeV2"
1577
+ },
1578
+ "timezone": {
1579
+ "maxLength": 64,
1580
+ "pattern": "^(?:UTC|[A-Za-z_]+(?:/[A-Za-z0-9_+.-]+)+)$",
1581
+ "type": "string"
1582
+ }
1583
+ },
1584
+ "required": [
1585
+ "baseCurrency",
1586
+ "timezone"
1587
+ ],
1588
+ "type": "object"
1589
+ },
1590
+ "WorkspaceInitializeSuccessV2": {
1591
+ "additionalProperties": false,
1592
+ "properties": {
1593
+ "code": {
1594
+ "const": 0
1595
+ },
1596
+ "data": {
1597
+ "$ref": "#/components/schemas/CommandReceiptV2"
1598
+ },
1599
+ "kind": {
1600
+ "const": "family_wealth_success.v2"
1601
+ },
1602
+ "status": {
1603
+ "const": "success"
1604
+ },
1605
+ "success": {
1606
+ "const": true
1607
+ }
1608
+ },
1609
+ "required": [
1610
+ "kind",
1611
+ "success",
1612
+ "status",
1613
+ "code",
1614
+ "data"
1615
+ ],
1616
+ "type": "object"
1617
+ },
1618
+ "WorkspaceMetadataCoverageAvailableV2": {
1619
+ "additionalProperties": false,
1620
+ "properties": {
1621
+ "omitted": {
1622
+ "items": {
1623
+ "maxLength": 100,
1624
+ "minLength": 1,
1625
+ "type": "string"
1626
+ },
1627
+ "minItems": 1,
1628
+ "type": "array",
1629
+ "uniqueItems": true
1630
+ },
1631
+ "projection": {
1632
+ "const": "workspace.summary.v2"
1633
+ },
1634
+ "status": {
1635
+ "const": "complete"
1636
+ }
1637
+ },
1638
+ "required": [
1639
+ "status",
1640
+ "projection",
1641
+ "omitted"
1642
+ ],
1643
+ "type": "object"
1644
+ },
1645
+ "WorkspaceMetadataCoverageUnavailableV2": {
1646
+ "additionalProperties": false,
1647
+ "properties": {
1648
+ "omitted": {
1649
+ "items": {
1650
+ "maxLength": 100,
1651
+ "minLength": 1,
1652
+ "type": "string"
1653
+ },
1654
+ "minItems": 1,
1655
+ "type": "array",
1656
+ "uniqueItems": true
1657
+ },
1658
+ "projection": {
1659
+ "const": "workspace.summary.v2"
1660
+ },
1661
+ "reason": {
1662
+ "const": "REMOTE_UNAVAILABLE"
1663
+ },
1664
+ "status": {
1665
+ "const": "unavailable"
1666
+ }
1667
+ },
1668
+ "required": [
1669
+ "status",
1670
+ "projection",
1671
+ "omitted",
1672
+ "reason"
1673
+ ],
1674
+ "type": "object"
1675
+ },
1676
+ "WorkspaceMetadataPermissionsV2": {
1677
+ "additionalProperties": false,
1678
+ "properties": {
1679
+ "readable": {
1680
+ "maxItems": 3,
1681
+ "minItems": 3,
1682
+ "prefixItems": [
1683
+ {
1684
+ "const": "workspace.summary.v2"
1685
+ },
1686
+ {
1687
+ "const": "activity.page.v2"
1688
+ },
1689
+ {
1690
+ "const": "workspace.overview.v2"
1691
+ }
1692
+ ],
1693
+ "type": "array"
1694
+ },
1695
+ "role": {
1696
+ "anyOf": [
1697
+ {
1698
+ "enum": [
1699
+ "owner",
1700
+ "viewer_suggester"
1701
+ ]
1702
+ },
1703
+ {
1704
+ "type": "null"
1705
+ }
1706
+ ]
1707
+ },
1708
+ "scopes": {
1709
+ "maxItems": 1,
1710
+ "minItems": 1,
1711
+ "prefixItems": [
1712
+ {
1713
+ "const": "workspace:read"
1714
+ }
1715
+ ],
1716
+ "type": "array"
1717
+ },
1718
+ "writable": {
1719
+ "maxItems": 0,
1720
+ "type": "array"
1721
+ }
1722
+ },
1723
+ "required": [
1724
+ "role",
1725
+ "scopes",
1726
+ "readable",
1727
+ "writable"
1728
+ ],
1729
+ "type": "object"
1730
+ },
1731
+ "WorkspaceMetadataResourceAvailableV2": {
1732
+ "additionalProperties": false,
1733
+ "properties": {
1734
+ "asOf": {
1735
+ "format": "date-time",
1736
+ "type": "string"
1737
+ },
1738
+ "authority": {
1739
+ "$ref": "#/components/schemas/WorkspaceAuthorityV2"
1740
+ },
1741
+ "baseCurrency": {
1742
+ "$ref": "#/components/schemas/CurrencyCodeV2"
1743
+ },
1744
+ "contractVersion": {
1745
+ "const": 2
1746
+ },
1747
+ "counts": {
1748
+ "additionalProperties": false,
1749
+ "properties": {
1750
+ "accounts": {
1751
+ "minimum": 0,
1752
+ "type": "integer"
1753
+ },
1754
+ "holdings": {
1755
+ "minimum": 0,
1756
+ "type": "integer"
1757
+ },
1758
+ "pendingItems": {
1759
+ "minimum": 0,
1760
+ "type": "integer"
1761
+ }
1762
+ },
1763
+ "required": [
1764
+ "accounts",
1765
+ "holdings",
1766
+ "pendingItems"
1767
+ ],
1768
+ "type": "object"
1769
+ },
1770
+ "coverage": {
1771
+ "$ref": "#/components/schemas/WorkspaceMetadataCoverageAvailableV2"
1772
+ },
1773
+ "emptyState": {
1774
+ "enum": [
1775
+ "ready_for_first_asset",
1776
+ "assets_present"
1777
+ ]
1778
+ },
1779
+ "kind": {
1780
+ "const": "workspace.metadata.v2"
1781
+ },
1782
+ "permissions": {
1783
+ "$ref": "#/components/schemas/WorkspaceMetadataPermissionsV2"
1784
+ },
1785
+ "projectionVersion": {
1786
+ "const": 1
1787
+ },
1788
+ "status": {
1789
+ "const": "available"
1790
+ },
1791
+ "timezone": {
1792
+ "maxLength": 64,
1793
+ "pattern": "^(?:UTC|[A-Za-z_]+(?:/[A-Za-z0-9_+.-]+)+)$",
1794
+ "type": "string"
1795
+ },
1796
+ "workspaceVersion": {
1797
+ "minimum": 1,
1798
+ "type": "integer"
1799
+ }
1800
+ },
1801
+ "required": [
1802
+ "kind",
1803
+ "contractVersion",
1804
+ "projectionVersion",
1805
+ "status",
1806
+ "workspaceVersion",
1807
+ "asOf",
1808
+ "authority",
1809
+ "baseCurrency",
1810
+ "timezone",
1811
+ "emptyState",
1812
+ "counts",
1813
+ "coverage",
1814
+ "permissions"
1815
+ ],
1816
+ "type": "object"
1817
+ },
1818
+ "WorkspaceMetadataResourceUnavailableV2": {
1819
+ "additionalProperties": false,
1820
+ "properties": {
1821
+ "asOf": {
1822
+ "type": "null"
1823
+ },
1824
+ "authority": {
1825
+ "type": "null"
1826
+ },
1827
+ "baseCurrency": {
1828
+ "type": "null"
1829
+ },
1830
+ "contractVersion": {
1831
+ "const": 2
1832
+ },
1833
+ "counts": {
1834
+ "type": "null"
1835
+ },
1836
+ "coverage": {
1837
+ "$ref": "#/components/schemas/WorkspaceMetadataCoverageUnavailableV2"
1838
+ },
1839
+ "emptyState": {
1840
+ "type": "null"
1841
+ },
1842
+ "kind": {
1843
+ "const": "workspace.metadata.v2"
1844
+ },
1845
+ "permissions": {
1846
+ "$ref": "#/components/schemas/WorkspaceMetadataPermissionsV2"
1847
+ },
1848
+ "projectionVersion": {
1849
+ "const": 1
1850
+ },
1851
+ "status": {
1852
+ "const": "unavailable"
1853
+ },
1854
+ "timezone": {
1855
+ "type": "null"
1856
+ },
1857
+ "workspaceVersion": {
1858
+ "type": "null"
1859
+ }
1860
+ },
1861
+ "required": [
1862
+ "kind",
1863
+ "contractVersion",
1864
+ "projectionVersion",
1865
+ "status",
1866
+ "workspaceVersion",
1867
+ "asOf",
1868
+ "authority",
1869
+ "baseCurrency",
1870
+ "timezone",
1871
+ "emptyState",
1872
+ "counts",
1873
+ "coverage",
1874
+ "permissions"
1875
+ ],
1876
+ "type": "object"
1877
+ },
1878
+ "WorkspaceMetadataResourceV2": {
1879
+ "oneOf": [
1880
+ {
1881
+ "$ref": "#/components/schemas/WorkspaceMetadataResourceAvailableV2"
1882
+ },
1883
+ {
1884
+ "$ref": "#/components/schemas/WorkspaceMetadataResourceUnavailableV2"
1885
+ }
1886
+ ]
1887
+ },
1888
+ "WorkspaceOverviewSuccessV2": {
1889
+ "additionalProperties": false,
1890
+ "properties": {
1891
+ "code": {
1892
+ "const": 0
1893
+ },
1894
+ "data": {
1895
+ "$ref": "#/components/schemas/WorkspaceOverviewV2"
1896
+ },
1897
+ "kind": {
1898
+ "const": "family_wealth_success.v2"
1899
+ },
1900
+ "status": {
1901
+ "const": "success"
1902
+ },
1903
+ "success": {
1904
+ "const": true
1905
+ }
1906
+ },
1907
+ "required": [
1908
+ "kind",
1909
+ "success",
1910
+ "status",
1911
+ "code",
1912
+ "data"
1913
+ ],
1914
+ "type": "object"
1915
+ },
1916
+ "WorkspaceOverviewV2": {
1917
+ "additionalProperties": false,
1918
+ "properties": {
1919
+ "accounts": {
1920
+ "items": {
1921
+ "$ref": "#/components/schemas/OverviewAccountV2"
1922
+ },
1923
+ "maxItems": 500,
1924
+ "type": "array"
1925
+ },
1926
+ "asOf": {
1927
+ "format": "date-time",
1928
+ "type": "string"
1929
+ },
1930
+ "assetClasses": {
1931
+ "items": {
1932
+ "$ref": "#/components/schemas/OverviewAllocationLineV2"
1933
+ },
1934
+ "maxItems": 20,
1935
+ "type": "array"
1936
+ },
1937
+ "authority": {
1938
+ "$ref": "#/components/schemas/WorkspaceAuthorityV2"
1939
+ },
1940
+ "baseCurrency": {
1941
+ "$ref": "#/components/schemas/CurrencyCodeV2"
1942
+ },
1943
+ "breakdownStatus": {
1944
+ "enum": [
1945
+ "complete",
1946
+ "suppressed_due_to_private_aggregation"
1947
+ ]
1948
+ },
1949
+ "contractVersion": {
1950
+ "const": 2
1951
+ },
1952
+ "coverage": {
1953
+ "$ref": "#/components/schemas/OverviewCoverageV2"
1954
+ },
1955
+ "kind": {
1956
+ "const": "workspace.overview.v2"
1957
+ },
1958
+ "privacy": {
1959
+ "$ref": "#/components/schemas/OverviewPrivacyV2"
1960
+ },
1961
+ "projectionVersion": {
1962
+ "const": 1
1963
+ },
1964
+ "purposeBuckets": {
1965
+ "items": {
1966
+ "$ref": "#/components/schemas/OverviewAllocationLineV2"
1967
+ },
1968
+ "maxItems": 20,
1969
+ "type": "array"
1970
+ },
1971
+ "totals": {
1972
+ "$ref": "#/components/schemas/OverviewTotalsV2"
1973
+ },
1974
+ "warnings": {
1975
+ "items": {
1976
+ "enum": [
1977
+ "estimated_values_present",
1978
+ "stale_values_present",
1979
+ "unclassified_values_present",
1980
+ "missing_valuations_present",
1981
+ "unconverted_values_excluded",
1982
+ "restricted_values_aggregated"
1983
+ ]
1984
+ },
1985
+ "type": "array",
1986
+ "uniqueItems": true
1987
+ },
1988
+ "workspaceVersion": {
1989
+ "minimum": 1,
1990
+ "type": "integer"
1991
+ }
1992
+ },
1993
+ "required": [
1994
+ "kind",
1995
+ "contractVersion",
1996
+ "projectionVersion",
1997
+ "workspaceVersion",
1998
+ "asOf",
1999
+ "authority",
2000
+ "baseCurrency",
2001
+ "totals",
2002
+ "breakdownStatus",
2003
+ "accounts",
2004
+ "assetClasses",
2005
+ "purposeBuckets",
2006
+ "coverage",
2007
+ "privacy",
2008
+ "warnings"
2009
+ ],
2010
+ "type": "object"
2011
+ },
2012
+ "WorkspaceSummarySuccessV2": {
2013
+ "additionalProperties": false,
2014
+ "properties": {
2015
+ "code": {
2016
+ "const": 0
2017
+ },
2018
+ "data": {
2019
+ "$ref": "#/components/schemas/WorkspaceSummaryV2"
2020
+ },
2021
+ "kind": {
2022
+ "const": "family_wealth_success.v2"
2023
+ },
2024
+ "status": {
2025
+ "const": "success"
2026
+ },
2027
+ "success": {
2028
+ "const": true
2029
+ }
2030
+ },
2031
+ "required": [
2032
+ "kind",
2033
+ "success",
2034
+ "status",
2035
+ "code",
2036
+ "data"
2037
+ ],
2038
+ "type": "object"
2039
+ },
2040
+ "WorkspaceSummaryV2": {
2041
+ "additionalProperties": false,
2042
+ "properties": {
2043
+ "asOf": {
2044
+ "format": "date-time",
2045
+ "type": "string"
2046
+ },
2047
+ "authority": {
2048
+ "$ref": "#/components/schemas/WorkspaceAuthorityV2"
2049
+ },
2050
+ "baseCurrency": {
2051
+ "$ref": "#/components/schemas/CurrencyCodeV2"
2052
+ },
2053
+ "capabilities": {
2054
+ "$ref": "#/components/schemas/WorkspaceCapabilitiesV2"
2055
+ },
2056
+ "contractVersion": {
2057
+ "const": 2
2058
+ },
2059
+ "counts": {
2060
+ "additionalProperties": false,
2061
+ "properties": {
2062
+ "accounts": {
2063
+ "minimum": 0,
2064
+ "type": "integer"
2065
+ },
2066
+ "holdings": {
2067
+ "const": 0
2068
+ },
2069
+ "pendingItems": {
2070
+ "minimum": 0,
2071
+ "type": "integer"
2072
+ }
2073
+ },
2074
+ "required": [
2075
+ "accounts",
2076
+ "holdings",
2077
+ "pendingItems"
2078
+ ],
2079
+ "type": "object"
2080
+ },
2081
+ "cursor": {
2082
+ "maxLength": 2048,
2083
+ "minLength": 32,
2084
+ "type": "string"
2085
+ },
2086
+ "emptyState": {
2087
+ "enum": [
2088
+ "ready_for_first_asset",
2089
+ "assets_present"
2090
+ ]
2091
+ },
2092
+ "kind": {
2093
+ "const": "workspace.summary.v2"
2094
+ },
2095
+ "projectionVersion": {
2096
+ "const": 1
2097
+ },
2098
+ "timezone": {
2099
+ "maxLength": 64,
2100
+ "pattern": "^(?:UTC|[A-Za-z_]+(?:/[A-Za-z0-9_+.-]+)+)$",
2101
+ "type": "string"
2102
+ },
2103
+ "workspaceVersion": {
2104
+ "minimum": 1,
2105
+ "type": "integer"
2106
+ }
2107
+ },
2108
+ "required": [
2109
+ "kind",
2110
+ "contractVersion",
2111
+ "projectionVersion",
2112
+ "workspaceVersion",
2113
+ "asOf",
2114
+ "authority",
2115
+ "baseCurrency",
2116
+ "timezone",
2117
+ "emptyState",
2118
+ "counts",
2119
+ "cursor",
2120
+ "capabilities"
2121
+ ],
2122
+ "type": "object"
2123
+ }
2124
+ },
2125
+ "securitySchemes": {
2126
+ "bearer": {
2127
+ "bearerFormat": "JWT",
2128
+ "scheme": "bearer",
2129
+ "type": "http"
2130
+ }
2131
+ }
2132
+ },
2133
+ "info": {
2134
+ "title": "ChooseFIRE Family Wealth v2 R2 Contract",
2135
+ "version": "2.0.0-r2"
2136
+ },
2137
+ "openapi": "3.1.0",
2138
+ "paths": {
2139
+ "/choosefire/v2/workspace": {
2140
+ "post": {
2141
+ "operationId": "initializeFamilyWealthWorkspaceV2",
2142
+ "requestBody": {
2143
+ "content": {
2144
+ "application/json": {
2145
+ "schema": {
2146
+ "$ref": "#/components/schemas/WorkspaceInitializeCommandV2"
2147
+ }
2148
+ }
2149
+ },
2150
+ "required": true
2151
+ },
2152
+ "responses": {
2153
+ "200": {
2154
+ "content": {
2155
+ "application/json": {
2156
+ "schema": {
2157
+ "$ref": "#/components/schemas/WorkspaceInitializeSuccessV2"
2158
+ }
2159
+ }
2160
+ },
2161
+ "description": "Committed initialization receipt"
2162
+ },
2163
+ "503": {
2164
+ "content": {
2165
+ "application/json": {
2166
+ "schema": {
2167
+ "$ref": "#/components/schemas/RemoteUnavailableErrorV2"
2168
+ }
2169
+ }
2170
+ },
2171
+ "description": "Runtime is disabled or caller is outside the synthetic allowlist"
2172
+ }
2173
+ },
2174
+ "security": [
2175
+ {
2176
+ "bearer": []
2177
+ }
2178
+ ],
2179
+ "summary": "Initialize the v2 workspace when the R1 runtime is enabled"
2180
+ }
2181
+ },
2182
+ "/choosefire/v2/workspace/activity": {
2183
+ "get": {
2184
+ "operationId": "listFamilyWealthWorkspaceActivityV2",
2185
+ "parameters": [
2186
+ {
2187
+ "in": "query",
2188
+ "name": "limit",
2189
+ "required": true,
2190
+ "schema": {
2191
+ "maximum": 100,
2192
+ "minimum": 1,
2193
+ "type": "integer"
2194
+ }
2195
+ },
2196
+ {
2197
+ "in": "query",
2198
+ "name": "cursor",
2199
+ "required": false,
2200
+ "schema": {
2201
+ "maxLength": 2048,
2202
+ "type": "string"
2203
+ }
2204
+ }
2205
+ ],
2206
+ "responses": {
2207
+ "200": {
2208
+ "content": {
2209
+ "application/json": {
2210
+ "schema": {
2211
+ "$ref": "#/components/schemas/ActivityPageSuccessV2"
2212
+ }
2213
+ }
2214
+ },
2215
+ "description": "Activity page"
2216
+ }
2217
+ },
2218
+ "security": [
2219
+ {
2220
+ "bearer": []
2221
+ }
2222
+ ],
2223
+ "summary": "Read a role-bound page of v2 workspace activity"
2224
+ }
2225
+ },
2226
+ "/choosefire/v2/workspace/asset-accounts": {
2227
+ "post": {
2228
+ "operationId": "createFamilyWealthAssetAccountV2",
2229
+ "requestBody": {
2230
+ "content": {
2231
+ "application/json": {
2232
+ "schema": {
2233
+ "$ref": "#/components/schemas/AssetAccountCreateCommandV2"
2234
+ }
2235
+ }
2236
+ },
2237
+ "required": true
2238
+ },
2239
+ "responses": {
2240
+ "200": {
2241
+ "content": {
2242
+ "application/json": {
2243
+ "schema": {
2244
+ "$ref": "#/components/schemas/CommandSuccessV2"
2245
+ }
2246
+ }
2247
+ },
2248
+ "description": "Committed asset account receipt"
2249
+ },
2250
+ "403": {
2251
+ "content": {
2252
+ "application/json": {
2253
+ "schema": {
2254
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2255
+ }
2256
+ }
2257
+ },
2258
+ "description": "Only the household owner can change asset accounts"
2259
+ },
2260
+ "409": {
2261
+ "content": {
2262
+ "application/json": {
2263
+ "schema": {
2264
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2265
+ }
2266
+ }
2267
+ },
2268
+ "description": "Workspace version or idempotency conflict"
2269
+ }
2270
+ },
2271
+ "security": [
2272
+ {
2273
+ "bearer": []
2274
+ }
2275
+ ],
2276
+ "summary": "Create one simplified or detailed asset account"
2277
+ },
2278
+ "put": {
2279
+ "operationId": "updateFamilyWealthAssetAccountV2",
2280
+ "requestBody": {
2281
+ "content": {
2282
+ "application/json": {
2283
+ "schema": {
2284
+ "$ref": "#/components/schemas/AssetAccountUpdateCommandV2"
2285
+ }
2286
+ }
2287
+ },
2288
+ "required": true
2289
+ },
2290
+ "responses": {
2291
+ "200": {
2292
+ "content": {
2293
+ "application/json": {
2294
+ "schema": {
2295
+ "$ref": "#/components/schemas/CommandSuccessV2"
2296
+ }
2297
+ }
2298
+ },
2299
+ "description": "Committed asset account update receipt"
2300
+ },
2301
+ "403": {
2302
+ "content": {
2303
+ "application/json": {
2304
+ "schema": {
2305
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2306
+ }
2307
+ }
2308
+ },
2309
+ "description": "Only the household owner can change asset accounts"
2310
+ },
2311
+ "409": {
2312
+ "content": {
2313
+ "application/json": {
2314
+ "schema": {
2315
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2316
+ }
2317
+ }
2318
+ },
2319
+ "description": "Workspace or account revision conflict"
2320
+ }
2321
+ },
2322
+ "security": [
2323
+ {
2324
+ "bearer": []
2325
+ }
2326
+ ],
2327
+ "summary": "Replace editable metadata for one active asset account"
2328
+ }
2329
+ },
2330
+ "/choosefire/v2/workspace/asset-accounts/archive": {
2331
+ "post": {
2332
+ "operationId": "archiveFamilyWealthAssetAccountV2",
2333
+ "requestBody": {
2334
+ "content": {
2335
+ "application/json": {
2336
+ "schema": {
2337
+ "$ref": "#/components/schemas/AssetAccountArchiveCommandV2"
2338
+ }
2339
+ }
2340
+ },
2341
+ "required": true
2342
+ },
2343
+ "responses": {
2344
+ "200": {
2345
+ "content": {
2346
+ "application/json": {
2347
+ "schema": {
2348
+ "$ref": "#/components/schemas/CommandSuccessV2"
2349
+ }
2350
+ }
2351
+ },
2352
+ "description": "Committed asset account archive receipt"
2353
+ },
2354
+ "403": {
2355
+ "content": {
2356
+ "application/json": {
2357
+ "schema": {
2358
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2359
+ }
2360
+ }
2361
+ },
2362
+ "description": "Only the household owner can archive asset accounts"
2363
+ },
2364
+ "409": {
2365
+ "content": {
2366
+ "application/json": {
2367
+ "schema": {
2368
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2369
+ }
2370
+ }
2371
+ },
2372
+ "description": "Workspace or account revision conflict"
2373
+ }
2374
+ },
2375
+ "security": [
2376
+ {
2377
+ "bearer": []
2378
+ }
2379
+ ],
2380
+ "summary": "Archive one active asset account without deleting history"
2381
+ }
2382
+ },
2383
+ "/choosefire/v2/workspace/classifications": {
2384
+ "put": {
2385
+ "operationId": "replaceFamilyWealthClassificationV2",
2386
+ "requestBody": {
2387
+ "content": {
2388
+ "application/json": {
2389
+ "schema": {
2390
+ "$ref": "#/components/schemas/ClassificationReplaceCommandV2"
2391
+ }
2392
+ }
2393
+ },
2394
+ "required": true
2395
+ },
2396
+ "responses": {
2397
+ "200": {
2398
+ "content": {
2399
+ "application/json": {
2400
+ "schema": {
2401
+ "$ref": "#/components/schemas/CommandSuccessV2"
2402
+ }
2403
+ }
2404
+ },
2405
+ "description": "Committed classification receipt"
2406
+ },
2407
+ "403": {
2408
+ "content": {
2409
+ "application/json": {
2410
+ "schema": {
2411
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2412
+ }
2413
+ }
2414
+ },
2415
+ "description": "Only the household owner can replace classifications"
2416
+ },
2417
+ "409": {
2418
+ "content": {
2419
+ "application/json": {
2420
+ "schema": {
2421
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2422
+ }
2423
+ }
2424
+ },
2425
+ "description": "Object revision or workspace version conflict"
2426
+ }
2427
+ },
2428
+ "security": [
2429
+ {
2430
+ "bearer": []
2431
+ }
2432
+ ],
2433
+ "summary": "Replace account or holding asset and purpose allocations"
2434
+ }
2435
+ },
2436
+ "/choosefire/v2/workspace/mcp/delegation": {
2437
+ "post": {
2438
+ "operationId": "issueFamilyWealthWorkspaceMcpDelegationV2",
2439
+ "requestBody": {
2440
+ "content": {
2441
+ "application/json": {
2442
+ "schema": {
2443
+ "$ref": "#/components/schemas/McpDelegationIssueRequestV2"
2444
+ }
2445
+ }
2446
+ },
2447
+ "required": true
2448
+ },
2449
+ "responses": {
2450
+ "200": {
2451
+ "content": {
2452
+ "application/json": {
2453
+ "schema": {
2454
+ "$ref": "#/components/schemas/McpDelegatedTokenCredentialV2"
2455
+ }
2456
+ }
2457
+ },
2458
+ "description": "Short-lived opaque MCP delegation"
2459
+ }
2460
+ },
2461
+ "security": [
2462
+ {
2463
+ "bearer": []
2464
+ }
2465
+ ],
2466
+ "summary": "Issue a short-lived read-only MCP capability for the current workspace"
2467
+ }
2468
+ },
2469
+ "/choosefire/v2/workspace/mcp/delegation/revoke": {
2470
+ "post": {
2471
+ "operationId": "revokeFamilyWealthWorkspaceMcpDelegationV2",
2472
+ "requestBody": {
2473
+ "content": {
2474
+ "application/json": {
2475
+ "schema": {
2476
+ "$ref": "#/components/schemas/McpDelegationRevokeRequestV2"
2477
+ }
2478
+ }
2479
+ },
2480
+ "required": true
2481
+ },
2482
+ "responses": {
2483
+ "200": {
2484
+ "content": {
2485
+ "application/json": {
2486
+ "schema": {
2487
+ "$ref": "#/components/schemas/McpDelegationRevokeResponseV2"
2488
+ }
2489
+ }
2490
+ },
2491
+ "description": "Idempotent delegation revocation result"
2492
+ }
2493
+ },
2494
+ "security": [
2495
+ {
2496
+ "bearer": []
2497
+ }
2498
+ ],
2499
+ "summary": "Revoke one read-only MCP capability for the current workspace"
2500
+ }
2501
+ },
2502
+ "/choosefire/v2/workspace/overview": {
2503
+ "get": {
2504
+ "operationId": "getFamilyWealthWorkspaceOverviewV2",
2505
+ "responses": {
2506
+ "200": {
2507
+ "content": {
2508
+ "application/json": {
2509
+ "schema": {
2510
+ "$ref": "#/components/schemas/WorkspaceOverviewSuccessV2"
2511
+ }
2512
+ }
2513
+ },
2514
+ "description": "Role-bound wealth overview projection"
2515
+ }
2516
+ },
2517
+ "security": [
2518
+ {
2519
+ "bearer": []
2520
+ }
2521
+ ],
2522
+ "summary": "Read totals, account composition, quality and disclosures"
2523
+ }
2524
+ },
2525
+ "/choosefire/v2/workspace/summary": {
2526
+ "get": {
2527
+ "operationId": "getFamilyWealthWorkspaceSummaryV2",
2528
+ "responses": {
2529
+ "200": {
2530
+ "content": {
2531
+ "application/json": {
2532
+ "schema": {
2533
+ "$ref": "#/components/schemas/WorkspaceSummarySuccessV2"
2534
+ }
2535
+ }
2536
+ },
2537
+ "description": "Workspace summary"
2538
+ }
2539
+ },
2540
+ "security": [
2541
+ {
2542
+ "bearer": []
2543
+ }
2544
+ ],
2545
+ "summary": "Read the bounded v2 workspace metadata projection"
2546
+ }
2547
+ },
2548
+ "/choosefire/v2/workspace/valuations": {
2549
+ "post": {
2550
+ "operationId": "appendFamilyWealthValuationSnapshotV2",
2551
+ "requestBody": {
2552
+ "content": {
2553
+ "application/json": {
2554
+ "schema": {
2555
+ "$ref": "#/components/schemas/ValuationSnapshotAppendCommandV2"
2556
+ }
2557
+ }
2558
+ },
2559
+ "required": true
2560
+ },
2561
+ "responses": {
2562
+ "200": {
2563
+ "content": {
2564
+ "application/json": {
2565
+ "schema": {
2566
+ "$ref": "#/components/schemas/CommandSuccessV2"
2567
+ }
2568
+ }
2569
+ },
2570
+ "description": "Committed valuation receipt"
2571
+ },
2572
+ "403": {
2573
+ "content": {
2574
+ "application/json": {
2575
+ "schema": {
2576
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2577
+ }
2578
+ }
2579
+ },
2580
+ "description": "Only the household owner can append valuations"
2581
+ },
2582
+ "409": {
2583
+ "content": {
2584
+ "application/json": {
2585
+ "schema": {
2586
+ "$ref": "#/components/schemas/FamilyWealthErrorV2"
2587
+ }
2588
+ }
2589
+ },
2590
+ "description": "Workspace version or idempotency conflict"
2591
+ }
2592
+ },
2593
+ "security": [
2594
+ {
2595
+ "bearer": []
2596
+ }
2597
+ ],
2598
+ "summary": "Append an account or holding valuation snapshot"
2599
+ }
2600
+ }
2601
+ },
2602
+ "x-choosefire-contract-id": "choosefire-family-wealth.v2",
2603
+ "x-choosefire-contract-version": 2,
2604
+ "x-choosefire-runtime-state": "r1-runtime-r2-contract-only"
2605
+ }