@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,2127 @@
1
+ {
2
+ "$defs": {
3
+ "ActivityItemV2": {
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "actorRole": {
7
+ "enum": [
8
+ "owner",
9
+ "viewer_suggester"
10
+ ]
11
+ },
12
+ "affectedObjects": {
13
+ "items": {
14
+ "additionalProperties": false,
15
+ "properties": {
16
+ "objectId": {
17
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
18
+ "type": "string"
19
+ },
20
+ "objectType": {
21
+ "enum": [
22
+ "household",
23
+ "workspace",
24
+ "asset_account",
25
+ "valuation_snapshot",
26
+ "classification"
27
+ ]
28
+ }
29
+ },
30
+ "required": [
31
+ "objectType",
32
+ "objectId"
33
+ ],
34
+ "type": "object"
35
+ },
36
+ "maxItems": 20,
37
+ "minItems": 1,
38
+ "type": "array"
39
+ },
40
+ "baseWorkspaceVersion": {
41
+ "minimum": 0,
42
+ "type": "integer"
43
+ },
44
+ "commandId": {
45
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
46
+ "type": "string"
47
+ },
48
+ "committedAt": {
49
+ "format": "date-time",
50
+ "type": "string"
51
+ },
52
+ "operation": {
53
+ "enum": [
54
+ "workspace.initialize.v2",
55
+ "asset_account.create.v2",
56
+ "asset_account.update.v2",
57
+ "asset_account.archive.v2",
58
+ "valuation_snapshot.append.v2",
59
+ "classification.replace.v2"
60
+ ]
61
+ },
62
+ "operationId": {
63
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
64
+ "type": "string"
65
+ },
66
+ "resultWorkspaceVersion": {
67
+ "minimum": 1,
68
+ "type": "integer"
69
+ },
70
+ "source": {
71
+ "$ref": "#/$defs/SourceV2"
72
+ }
73
+ },
74
+ "required": [
75
+ "operationId",
76
+ "commandId",
77
+ "operation",
78
+ "source",
79
+ "actorRole",
80
+ "baseWorkspaceVersion",
81
+ "resultWorkspaceVersion",
82
+ "committedAt",
83
+ "affectedObjects"
84
+ ],
85
+ "type": "object"
86
+ },
87
+ "ActivityPageQueryV2": {
88
+ "additionalProperties": false,
89
+ "properties": {
90
+ "cursor": {
91
+ "maxLength": 2048,
92
+ "minLength": 32,
93
+ "type": "string"
94
+ },
95
+ "limit": {
96
+ "maximum": 100,
97
+ "minimum": 1,
98
+ "type": "integer"
99
+ }
100
+ },
101
+ "required": [
102
+ "limit"
103
+ ],
104
+ "type": "object"
105
+ },
106
+ "ActivityPageSuccessV2": {
107
+ "additionalProperties": false,
108
+ "properties": {
109
+ "code": {
110
+ "const": 0
111
+ },
112
+ "data": {
113
+ "$ref": "#/$defs/ActivityPageV2"
114
+ },
115
+ "kind": {
116
+ "const": "family_wealth_success.v2"
117
+ },
118
+ "status": {
119
+ "const": "success"
120
+ },
121
+ "success": {
122
+ "const": true
123
+ }
124
+ },
125
+ "required": [
126
+ "kind",
127
+ "success",
128
+ "status",
129
+ "code",
130
+ "data"
131
+ ],
132
+ "type": "object"
133
+ },
134
+ "ActivityPageV2": {
135
+ "additionalProperties": false,
136
+ "properties": {
137
+ "authority": {
138
+ "$ref": "#/$defs/WorkspaceAuthorityV2"
139
+ },
140
+ "contractVersion": {
141
+ "const": 2
142
+ },
143
+ "hasMore": {
144
+ "type": "boolean"
145
+ },
146
+ "items": {
147
+ "items": {
148
+ "$ref": "#/$defs/ActivityItemV2"
149
+ },
150
+ "maxItems": 100,
151
+ "type": "array"
152
+ },
153
+ "kind": {
154
+ "const": "activity.page.v2"
155
+ },
156
+ "nextCursor": {
157
+ "maxLength": 2048,
158
+ "minLength": 32,
159
+ "type": "string"
160
+ },
161
+ "projectionVersion": {
162
+ "const": 1
163
+ },
164
+ "workspaceVersion": {
165
+ "minimum": 1,
166
+ "type": "integer"
167
+ }
168
+ },
169
+ "required": [
170
+ "kind",
171
+ "contractVersion",
172
+ "projectionVersion",
173
+ "workspaceVersion",
174
+ "authority",
175
+ "items",
176
+ "nextCursor",
177
+ "hasMore"
178
+ ],
179
+ "type": "object"
180
+ },
181
+ "AllocationLineV2": {
182
+ "additionalProperties": false,
183
+ "properties": {
184
+ "basisPoints": {
185
+ "maximum": 10000,
186
+ "minimum": 0,
187
+ "type": "integer"
188
+ },
189
+ "code": {
190
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$",
191
+ "type": "string"
192
+ }
193
+ },
194
+ "required": [
195
+ "code",
196
+ "basisPoints"
197
+ ],
198
+ "type": "object"
199
+ },
200
+ "AssetAccountArchiveCommandV2": {
201
+ "additionalProperties": false,
202
+ "properties": {
203
+ "commandId": {
204
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
205
+ "type": "string"
206
+ },
207
+ "expectedObjectRevision": {
208
+ "minimum": 1,
209
+ "type": "integer"
210
+ },
211
+ "expectedWorkspaceVersion": {
212
+ "minimum": 1,
213
+ "type": "integer"
214
+ },
215
+ "idempotencyKey": {
216
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
217
+ "type": "string"
218
+ },
219
+ "kind": {
220
+ "const": "asset_account.archive.v2"
221
+ },
222
+ "payload": {
223
+ "$ref": "#/$defs/AssetAccountArchivePayloadV2"
224
+ },
225
+ "source": {
226
+ "$ref": "#/$defs/SourceV2"
227
+ }
228
+ },
229
+ "required": [
230
+ "kind",
231
+ "commandId",
232
+ "idempotencyKey",
233
+ "expectedWorkspaceVersion",
234
+ "expectedObjectRevision",
235
+ "source",
236
+ "payload"
237
+ ],
238
+ "type": "object"
239
+ },
240
+ "AssetAccountArchivePayloadV2": {
241
+ "additionalProperties": false,
242
+ "properties": {
243
+ "accountId": {
244
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
245
+ "type": "string"
246
+ },
247
+ "reason": {
248
+ "maxLength": 240,
249
+ "minLength": 1,
250
+ "type": "string"
251
+ }
252
+ },
253
+ "required": [
254
+ "accountId",
255
+ "reason"
256
+ ],
257
+ "type": "object"
258
+ },
259
+ "AssetAccountCreateCommandV2": {
260
+ "additionalProperties": false,
261
+ "properties": {
262
+ "commandId": {
263
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
264
+ "type": "string"
265
+ },
266
+ "expectedObjectRevision": {
267
+ "type": "null"
268
+ },
269
+ "expectedWorkspaceVersion": {
270
+ "minimum": 1,
271
+ "type": "integer"
272
+ },
273
+ "idempotencyKey": {
274
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
275
+ "type": "string"
276
+ },
277
+ "kind": {
278
+ "const": "asset_account.create.v2"
279
+ },
280
+ "payload": {
281
+ "$ref": "#/$defs/AssetAccountCreatePayloadV2"
282
+ },
283
+ "source": {
284
+ "$ref": "#/$defs/SourceV2"
285
+ }
286
+ },
287
+ "required": [
288
+ "kind",
289
+ "commandId",
290
+ "idempotencyKey",
291
+ "expectedWorkspaceVersion",
292
+ "expectedObjectRevision",
293
+ "source",
294
+ "payload"
295
+ ],
296
+ "type": "object"
297
+ },
298
+ "AssetAccountCreatePayloadV2": {
299
+ "additionalProperties": false,
300
+ "properties": {
301
+ "account": {
302
+ "$ref": "#/$defs/AssetAccountDraftV2"
303
+ },
304
+ "accountId": {
305
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
306
+ "type": "string"
307
+ }
308
+ },
309
+ "required": [
310
+ "accountId",
311
+ "account"
312
+ ],
313
+ "type": "object"
314
+ },
315
+ "AssetAccountDraftV2": {
316
+ "additionalProperties": false,
317
+ "properties": {
318
+ "accountType": {
319
+ "enum": [
320
+ "bank",
321
+ "brokerage",
322
+ "fund",
323
+ "insurance",
324
+ "pension",
325
+ "housing_fund",
326
+ "property",
327
+ "liability",
328
+ "other"
329
+ ]
330
+ },
331
+ "aggregationConsent": {
332
+ "type": "boolean"
333
+ },
334
+ "currency": {
335
+ "$ref": "#/$defs/CurrencyCodeV2"
336
+ },
337
+ "maintenanceMode": {
338
+ "enum": [
339
+ "simplified",
340
+ "detailed"
341
+ ]
342
+ },
343
+ "name": {
344
+ "maxLength": 120,
345
+ "minLength": 1,
346
+ "type": "string"
347
+ },
348
+ "ownerSubjectId": {
349
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
350
+ "type": "string"
351
+ },
352
+ "visibility": {
353
+ "$ref": "#/$defs/VisibilityV2"
354
+ }
355
+ },
356
+ "required": [
357
+ "name",
358
+ "accountType",
359
+ "ownerSubjectId",
360
+ "visibility",
361
+ "aggregationConsent",
362
+ "currency",
363
+ "maintenanceMode"
364
+ ],
365
+ "type": "object"
366
+ },
367
+ "AssetAccountUpdateCommandV2": {
368
+ "additionalProperties": false,
369
+ "properties": {
370
+ "commandId": {
371
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
372
+ "type": "string"
373
+ },
374
+ "expectedObjectRevision": {
375
+ "minimum": 1,
376
+ "type": "integer"
377
+ },
378
+ "expectedWorkspaceVersion": {
379
+ "minimum": 1,
380
+ "type": "integer"
381
+ },
382
+ "idempotencyKey": {
383
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
384
+ "type": "string"
385
+ },
386
+ "kind": {
387
+ "const": "asset_account.update.v2"
388
+ },
389
+ "payload": {
390
+ "$ref": "#/$defs/AssetAccountUpdatePayloadV2"
391
+ },
392
+ "source": {
393
+ "$ref": "#/$defs/SourceV2"
394
+ }
395
+ },
396
+ "required": [
397
+ "kind",
398
+ "commandId",
399
+ "idempotencyKey",
400
+ "expectedWorkspaceVersion",
401
+ "expectedObjectRevision",
402
+ "source",
403
+ "payload"
404
+ ],
405
+ "type": "object"
406
+ },
407
+ "AssetAccountUpdatePayloadV2": {
408
+ "additionalProperties": false,
409
+ "properties": {
410
+ "account": {
411
+ "$ref": "#/$defs/AssetAccountDraftV2"
412
+ },
413
+ "accountId": {
414
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
415
+ "type": "string"
416
+ }
417
+ },
418
+ "required": [
419
+ "accountId",
420
+ "account"
421
+ ],
422
+ "type": "object"
423
+ },
424
+ "ClassificationDraftV2": {
425
+ "additionalProperties": false,
426
+ "properties": {
427
+ "assetClasses": {
428
+ "items": {
429
+ "$ref": "#/$defs/AllocationLineV2"
430
+ },
431
+ "maxItems": 20,
432
+ "minItems": 1,
433
+ "type": "array"
434
+ },
435
+ "effectiveFrom": {
436
+ "format": "date-time",
437
+ "type": "string"
438
+ },
439
+ "purposeBuckets": {
440
+ "items": {
441
+ "$ref": "#/$defs/AllocationLineV2"
442
+ },
443
+ "maxItems": 20,
444
+ "minItems": 1,
445
+ "type": "array"
446
+ },
447
+ "scopeId": {
448
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
449
+ "type": "string"
450
+ },
451
+ "scopeType": {
452
+ "enum": [
453
+ "account",
454
+ "holding"
455
+ ]
456
+ }
457
+ },
458
+ "required": [
459
+ "scopeType",
460
+ "scopeId",
461
+ "assetClasses",
462
+ "purposeBuckets",
463
+ "effectiveFrom"
464
+ ],
465
+ "type": "object"
466
+ },
467
+ "ClassificationReplaceCommandV2": {
468
+ "additionalProperties": false,
469
+ "properties": {
470
+ "commandId": {
471
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
472
+ "type": "string"
473
+ },
474
+ "expectedObjectRevision": {
475
+ "minimum": 0,
476
+ "type": "integer"
477
+ },
478
+ "expectedWorkspaceVersion": {
479
+ "minimum": 1,
480
+ "type": "integer"
481
+ },
482
+ "idempotencyKey": {
483
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
484
+ "type": "string"
485
+ },
486
+ "kind": {
487
+ "const": "classification.replace.v2"
488
+ },
489
+ "payload": {
490
+ "$ref": "#/$defs/ClassificationReplacePayloadV2"
491
+ },
492
+ "source": {
493
+ "$ref": "#/$defs/SourceV2"
494
+ }
495
+ },
496
+ "required": [
497
+ "kind",
498
+ "commandId",
499
+ "idempotencyKey",
500
+ "expectedWorkspaceVersion",
501
+ "expectedObjectRevision",
502
+ "source",
503
+ "payload"
504
+ ],
505
+ "type": "object"
506
+ },
507
+ "ClassificationReplacePayloadV2": {
508
+ "additionalProperties": false,
509
+ "properties": {
510
+ "classification": {
511
+ "$ref": "#/$defs/ClassificationDraftV2"
512
+ },
513
+ "classificationRevisionId": {
514
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
515
+ "type": "string"
516
+ }
517
+ },
518
+ "required": [
519
+ "classificationRevisionId",
520
+ "classification"
521
+ ],
522
+ "type": "object"
523
+ },
524
+ "CommandReceiptV2": {
525
+ "additionalProperties": false,
526
+ "properties": {
527
+ "affectedObjects": {
528
+ "items": {
529
+ "additionalProperties": false,
530
+ "properties": {
531
+ "objectId": {
532
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
533
+ "type": "string"
534
+ },
535
+ "objectType": {
536
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$",
537
+ "type": "string"
538
+ }
539
+ },
540
+ "required": [
541
+ "objectType",
542
+ "objectId"
543
+ ],
544
+ "type": "object"
545
+ },
546
+ "maxItems": 100,
547
+ "type": "array"
548
+ },
549
+ "baseWorkspaceVersion": {
550
+ "minimum": 0,
551
+ "type": "integer"
552
+ },
553
+ "commandId": {
554
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
555
+ "type": "string"
556
+ },
557
+ "committedAt": {
558
+ "format": "date-time",
559
+ "type": "string"
560
+ },
561
+ "cursor": {
562
+ "maxLength": 2048,
563
+ "minLength": 32,
564
+ "type": "string"
565
+ },
566
+ "kind": {
567
+ "const": "command_receipt.v2"
568
+ },
569
+ "projectionHints": {
570
+ "items": {
571
+ "maxLength": 100,
572
+ "minLength": 1,
573
+ "type": "string"
574
+ },
575
+ "maxItems": 20,
576
+ "type": "array",
577
+ "uniqueItems": true
578
+ },
579
+ "receiptId": {
580
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
581
+ "type": "string"
582
+ },
583
+ "replayed": {
584
+ "type": "boolean"
585
+ },
586
+ "resultWorkspaceVersion": {
587
+ "minimum": 1,
588
+ "type": "integer"
589
+ },
590
+ "status": {
591
+ "const": "committed"
592
+ }
593
+ },
594
+ "required": [
595
+ "kind",
596
+ "receiptId",
597
+ "commandId",
598
+ "status",
599
+ "baseWorkspaceVersion",
600
+ "resultWorkspaceVersion",
601
+ "replayed",
602
+ "committedAt",
603
+ "cursor",
604
+ "affectedObjects",
605
+ "projectionHints"
606
+ ],
607
+ "type": "object"
608
+ },
609
+ "CommandSuccessV2": {
610
+ "additionalProperties": false,
611
+ "properties": {
612
+ "code": {
613
+ "const": 0
614
+ },
615
+ "data": {
616
+ "$ref": "#/$defs/CommandReceiptV2"
617
+ },
618
+ "kind": {
619
+ "const": "family_wealth_success.v2"
620
+ },
621
+ "status": {
622
+ "const": "success"
623
+ },
624
+ "success": {
625
+ "const": true
626
+ }
627
+ },
628
+ "required": [
629
+ "kind",
630
+ "success",
631
+ "status",
632
+ "code",
633
+ "data"
634
+ ],
635
+ "type": "object"
636
+ },
637
+ "CurrencyCodeV2": {
638
+ "pattern": "^[A-Z]{3}$",
639
+ "type": "string"
640
+ },
641
+ "DecimalAmountV2": {
642
+ "maxLength": 48,
643
+ "pattern": "^(?:0|[1-9]\\d*|-[1-9]\\d*)(?:\\.\\d{1,8})?$",
644
+ "type": "string"
645
+ },
646
+ "FamilyWealthErrorV2": {
647
+ "additionalProperties": false,
648
+ "properties": {
649
+ "code": {
650
+ "enum": [
651
+ "VALIDATION_ERROR",
652
+ "AUTH_REQUIRED",
653
+ "ACCOUNT_SCOPE_REQUIRED",
654
+ "WORKSPACE_NOT_INITIALIZED",
655
+ "WORKSPACE_ALREADY_INITIALIZED",
656
+ "PERMISSION_DENIED",
657
+ "OBJECT_NOT_FOUND",
658
+ "WORKSPACE_VERSION_CONFLICT",
659
+ "OBJECT_REVISION_CONFLICT",
660
+ "IDEMPOTENCY_CONFLICT",
661
+ "CURSOR_INVALID",
662
+ "CURSOR_EXPIRED",
663
+ "TRANSACTION_RETRYABLE",
664
+ "REMOTE_UNAVAILABLE"
665
+ ]
666
+ },
667
+ "error": {
668
+ "additionalProperties": false,
669
+ "properties": {
670
+ "data": {
671
+ "additionalProperties": false,
672
+ "properties": {
673
+ "conflictingFields": {
674
+ "items": {
675
+ "maxLength": 120,
676
+ "minLength": 1,
677
+ "type": "string"
678
+ },
679
+ "maxItems": 20,
680
+ "type": "array",
681
+ "uniqueItems": true
682
+ },
683
+ "contractId": {
684
+ "const": "choosefire-family-wealth.v2"
685
+ },
686
+ "currentObjectRevision": {
687
+ "minimum": 0,
688
+ "type": "integer"
689
+ },
690
+ "currentWorkspaceVersion": {
691
+ "minimum": 1,
692
+ "type": "integer"
693
+ },
694
+ "retryable": {
695
+ "type": "boolean"
696
+ },
697
+ "safeRetry": {
698
+ "type": "boolean"
699
+ }
700
+ },
701
+ "required": [
702
+ "contractId",
703
+ "retryable"
704
+ ],
705
+ "type": "object"
706
+ },
707
+ "message": {
708
+ "maxLength": 200,
709
+ "minLength": 1,
710
+ "type": "string"
711
+ },
712
+ "requestId": {
713
+ "maxLength": 200,
714
+ "minLength": 1,
715
+ "type": "string"
716
+ }
717
+ },
718
+ "required": [
719
+ "message",
720
+ "requestId",
721
+ "data"
722
+ ],
723
+ "type": "object"
724
+ },
725
+ "kind": {
726
+ "const": "family_wealth_error.v2"
727
+ },
728
+ "status": {
729
+ "const": "error"
730
+ },
731
+ "success": {
732
+ "const": false
733
+ }
734
+ },
735
+ "required": [
736
+ "kind",
737
+ "success",
738
+ "status",
739
+ "code",
740
+ "error"
741
+ ],
742
+ "type": "object"
743
+ },
744
+ "McpDelegatedTokenCredentialV2": {
745
+ "additionalProperties": false,
746
+ "properties": {
747
+ "accessToken": {
748
+ "pattern": "^[A-Za-z0-9_-]{43}$",
749
+ "type": "string"
750
+ },
751
+ "audience": {
752
+ "const": "choosefire-mcp"
753
+ },
754
+ "clientId": {
755
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{2,190}$",
756
+ "type": "string"
757
+ },
758
+ "expiresAt": {
759
+ "format": "date-time",
760
+ "type": "string"
761
+ },
762
+ "expiresIn": {
763
+ "maximum": 900,
764
+ "minimum": 60,
765
+ "type": "integer"
766
+ },
767
+ "kind": {
768
+ "const": "choosefire_workspace_mcp_delegated_token.v1"
769
+ },
770
+ "scopes": {
771
+ "maxItems": 1,
772
+ "minItems": 1,
773
+ "prefixItems": [
774
+ {
775
+ "const": "workspace:read"
776
+ }
777
+ ],
778
+ "type": "array"
779
+ },
780
+ "tokenType": {
781
+ "const": "Bearer"
782
+ },
783
+ "workspaceId": {
784
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
785
+ "type": "string"
786
+ }
787
+ },
788
+ "required": [
789
+ "kind",
790
+ "accessToken",
791
+ "tokenType",
792
+ "expiresIn",
793
+ "expiresAt",
794
+ "audience",
795
+ "scopes",
796
+ "workspaceId",
797
+ "clientId"
798
+ ],
799
+ "type": "object"
800
+ },
801
+ "McpDelegationIssueRequestV2": {
802
+ "additionalProperties": false,
803
+ "properties": {
804
+ "clientId": {
805
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{2,190}$",
806
+ "type": "string"
807
+ },
808
+ "ttlSeconds": {
809
+ "maximum": 900,
810
+ "minimum": 60,
811
+ "type": "integer"
812
+ }
813
+ },
814
+ "required": [
815
+ "clientId"
816
+ ],
817
+ "type": "object"
818
+ },
819
+ "McpDelegationRevokeRequestV2": {
820
+ "additionalProperties": false,
821
+ "properties": {
822
+ "accessToken": {
823
+ "pattern": "^[A-Za-z0-9_-]{43}$",
824
+ "type": "string"
825
+ }
826
+ },
827
+ "required": [
828
+ "accessToken"
829
+ ],
830
+ "type": "object"
831
+ },
832
+ "McpDelegationRevokeResponseV2": {
833
+ "additionalProperties": false,
834
+ "properties": {
835
+ "success": {
836
+ "type": "boolean"
837
+ }
838
+ },
839
+ "required": [
840
+ "success"
841
+ ],
842
+ "type": "object"
843
+ },
844
+ "MoneyV2": {
845
+ "additionalProperties": false,
846
+ "properties": {
847
+ "amount": {
848
+ "$ref": "#/$defs/DecimalAmountV2"
849
+ },
850
+ "currency": {
851
+ "$ref": "#/$defs/CurrencyCodeV2"
852
+ }
853
+ },
854
+ "required": [
855
+ "amount",
856
+ "currency"
857
+ ],
858
+ "type": "object"
859
+ },
860
+ "OverviewAccountV2": {
861
+ "additionalProperties": false,
862
+ "properties": {
863
+ "accountId": {
864
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
865
+ "type": "string"
866
+ },
867
+ "accountType": {
868
+ "enum": [
869
+ "bank",
870
+ "brokerage",
871
+ "fund",
872
+ "insurance",
873
+ "pension",
874
+ "housing_fund",
875
+ "property",
876
+ "liability",
877
+ "other"
878
+ ]
879
+ },
880
+ "aggregationConsent": {
881
+ "type": "boolean"
882
+ },
883
+ "assetClasses": {
884
+ "items": {
885
+ "$ref": "#/$defs/AllocationLineV2"
886
+ },
887
+ "maxItems": 20,
888
+ "type": "array"
889
+ },
890
+ "classificationRevision": {
891
+ "minimum": 0,
892
+ "type": "integer"
893
+ },
894
+ "currency": {
895
+ "$ref": "#/$defs/CurrencyCodeV2"
896
+ },
897
+ "maintenanceMode": {
898
+ "enum": [
899
+ "simplified",
900
+ "detailed"
901
+ ]
902
+ },
903
+ "name": {
904
+ "maxLength": 120,
905
+ "minLength": 1,
906
+ "type": "string"
907
+ },
908
+ "ownerSubjectId": {
909
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
910
+ "type": "string"
911
+ },
912
+ "purposeBuckets": {
913
+ "items": {
914
+ "$ref": "#/$defs/AllocationLineV2"
915
+ },
916
+ "maxItems": 20,
917
+ "type": "array"
918
+ },
919
+ "revision": {
920
+ "minimum": 1,
921
+ "type": "integer"
922
+ },
923
+ "valuation": {
924
+ "$ref": "#/$defs/OverviewValuationV2"
925
+ },
926
+ "visibility": {
927
+ "$ref": "#/$defs/VisibilityV2"
928
+ }
929
+ },
930
+ "required": [
931
+ "accountId",
932
+ "name",
933
+ "accountType",
934
+ "ownerSubjectId",
935
+ "visibility",
936
+ "aggregationConsent",
937
+ "currency",
938
+ "maintenanceMode",
939
+ "revision",
940
+ "classificationRevision",
941
+ "valuation",
942
+ "assetClasses",
943
+ "purposeBuckets"
944
+ ],
945
+ "type": "object"
946
+ },
947
+ "OverviewAllocationLineV2": {
948
+ "additionalProperties": false,
949
+ "properties": {
950
+ "basisPoints": {
951
+ "maximum": 10000,
952
+ "minimum": 0,
953
+ "type": "integer"
954
+ },
955
+ "code": {
956
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$",
957
+ "type": "string"
958
+ },
959
+ "value": {
960
+ "$ref": "#/$defs/MoneyV2"
961
+ }
962
+ },
963
+ "required": [
964
+ "code",
965
+ "basisPoints",
966
+ "value"
967
+ ],
968
+ "type": "object"
969
+ },
970
+ "OverviewCoverageV2": {
971
+ "additionalProperties": false,
972
+ "properties": {
973
+ "estimatedAccountCount": {
974
+ "minimum": 0,
975
+ "type": "integer"
976
+ },
977
+ "missingValuationAccountCount": {
978
+ "minimum": 0,
979
+ "type": "integer"
980
+ },
981
+ "staleAccountCount": {
982
+ "minimum": 0,
983
+ "type": "integer"
984
+ },
985
+ "unclassifiedAccountCount": {
986
+ "minimum": 0,
987
+ "type": "integer"
988
+ },
989
+ "unconverted": {
990
+ "items": {
991
+ "$ref": "#/$defs/OverviewUnconvertedAmountV2"
992
+ },
993
+ "maxItems": 20,
994
+ "type": "array"
995
+ },
996
+ "visibleAccountCount": {
997
+ "minimum": 0,
998
+ "type": "integer"
999
+ }
1000
+ },
1001
+ "required": [
1002
+ "visibleAccountCount",
1003
+ "estimatedAccountCount",
1004
+ "staleAccountCount",
1005
+ "unclassifiedAccountCount",
1006
+ "missingValuationAccountCount",
1007
+ "unconverted"
1008
+ ],
1009
+ "type": "object"
1010
+ },
1011
+ "OverviewPrivacyV2": {
1012
+ "additionalProperties": false,
1013
+ "properties": {
1014
+ "containsRestrictedData": {
1015
+ "type": "boolean"
1016
+ },
1017
+ "suppressedFields": {
1018
+ "items": {
1019
+ "enum": [
1020
+ "account_count",
1021
+ "account_details",
1022
+ "allocation_breakdowns",
1023
+ "freshness_breakdown"
1024
+ ]
1025
+ },
1026
+ "type": "array",
1027
+ "uniqueItems": true
1028
+ }
1029
+ },
1030
+ "required": [
1031
+ "containsRestrictedData",
1032
+ "suppressedFields"
1033
+ ],
1034
+ "type": "object"
1035
+ },
1036
+ "OverviewTotalsV2": {
1037
+ "additionalProperties": false,
1038
+ "properties": {
1039
+ "grossAssets": {
1040
+ "$ref": "#/$defs/MoneyV2"
1041
+ },
1042
+ "liabilities": {
1043
+ "$ref": "#/$defs/MoneyV2"
1044
+ },
1045
+ "netWorth": {
1046
+ "$ref": "#/$defs/MoneyV2"
1047
+ }
1048
+ },
1049
+ "required": [
1050
+ "grossAssets",
1051
+ "liabilities",
1052
+ "netWorth"
1053
+ ],
1054
+ "type": "object"
1055
+ },
1056
+ "OverviewUnconvertedAmountV2": {
1057
+ "additionalProperties": false,
1058
+ "properties": {
1059
+ "amount": {
1060
+ "$ref": "#/$defs/MoneyV2"
1061
+ },
1062
+ "reason": {
1063
+ "const": "fx_rate_missing"
1064
+ }
1065
+ },
1066
+ "required": [
1067
+ "amount",
1068
+ "reason"
1069
+ ],
1070
+ "type": "object"
1071
+ },
1072
+ "OverviewValuationV2": {
1073
+ "additionalProperties": false,
1074
+ "properties": {
1075
+ "asOf": {
1076
+ "anyOf": [
1077
+ {
1078
+ "format": "date-time",
1079
+ "type": "string"
1080
+ },
1081
+ {
1082
+ "type": "null"
1083
+ }
1084
+ ]
1085
+ },
1086
+ "freshness": {
1087
+ "enum": [
1088
+ "current",
1089
+ "stale",
1090
+ "missing"
1091
+ ]
1092
+ },
1093
+ "quality": {
1094
+ "$ref": "#/$defs/QualityV2"
1095
+ },
1096
+ "value": {
1097
+ "anyOf": [
1098
+ {
1099
+ "$ref": "#/$defs/MoneyV2"
1100
+ },
1101
+ {
1102
+ "type": "null"
1103
+ }
1104
+ ]
1105
+ }
1106
+ },
1107
+ "required": [
1108
+ "value",
1109
+ "asOf",
1110
+ "quality",
1111
+ "freshness"
1112
+ ],
1113
+ "type": "object"
1114
+ },
1115
+ "PerformanceCoverageV2": {
1116
+ "additionalProperties": false,
1117
+ "properties": {
1118
+ "assumptions": {
1119
+ "items": {
1120
+ "maxLength": 100,
1121
+ "minLength": 1,
1122
+ "type": "string"
1123
+ },
1124
+ "type": "array",
1125
+ "uniqueItems": true
1126
+ },
1127
+ "calculationVersion": {
1128
+ "pattern": "^performance\\.v[1-9]\\d*$",
1129
+ "type": "string"
1130
+ },
1131
+ "eligibleMetrics": {
1132
+ "items": {
1133
+ "maxLength": 64,
1134
+ "minLength": 1,
1135
+ "type": "string"
1136
+ },
1137
+ "type": "array",
1138
+ "uniqueItems": true
1139
+ },
1140
+ "level": {
1141
+ "enum": [
1142
+ "balance_change",
1143
+ "estimated_return",
1144
+ "detailed_performance"
1145
+ ]
1146
+ },
1147
+ "unavailableMetrics": {
1148
+ "items": {
1149
+ "additionalProperties": false,
1150
+ "properties": {
1151
+ "metric": {
1152
+ "maxLength": 64,
1153
+ "minLength": 1,
1154
+ "type": "string"
1155
+ },
1156
+ "reason": {
1157
+ "maxLength": 100,
1158
+ "minLength": 1,
1159
+ "type": "string"
1160
+ }
1161
+ },
1162
+ "required": [
1163
+ "metric",
1164
+ "reason"
1165
+ ],
1166
+ "type": "object"
1167
+ },
1168
+ "type": "array",
1169
+ "uniqueItems": true
1170
+ },
1171
+ "warnings": {
1172
+ "items": {
1173
+ "maxLength": 100,
1174
+ "minLength": 1,
1175
+ "type": "string"
1176
+ },
1177
+ "type": "array",
1178
+ "uniqueItems": true
1179
+ }
1180
+ },
1181
+ "required": [
1182
+ "level",
1183
+ "eligibleMetrics",
1184
+ "unavailableMetrics",
1185
+ "assumptions",
1186
+ "warnings",
1187
+ "calculationVersion"
1188
+ ],
1189
+ "type": "object"
1190
+ },
1191
+ "PerformancePeriodRequestV2": {
1192
+ "additionalProperties": false,
1193
+ "properties": {
1194
+ "baseCurrency": {
1195
+ "$ref": "#/$defs/CurrencyCodeV2"
1196
+ },
1197
+ "from": {
1198
+ "format": "date-time",
1199
+ "type": "string"
1200
+ },
1201
+ "scopeId": {
1202
+ "anyOf": [
1203
+ {
1204
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1205
+ "type": "string"
1206
+ },
1207
+ {
1208
+ "type": "null"
1209
+ }
1210
+ ]
1211
+ },
1212
+ "scopeType": {
1213
+ "enum": [
1214
+ "household",
1215
+ "account",
1216
+ "holding"
1217
+ ]
1218
+ },
1219
+ "timezone": {
1220
+ "maxLength": 64,
1221
+ "pattern": "^(?:UTC|[A-Za-z_]+(?:/[A-Za-z0-9_+.-]+)+)$",
1222
+ "type": "string"
1223
+ },
1224
+ "to": {
1225
+ "format": "date-time",
1226
+ "type": "string"
1227
+ }
1228
+ },
1229
+ "required": [
1230
+ "from",
1231
+ "to",
1232
+ "timezone",
1233
+ "baseCurrency",
1234
+ "scopeType",
1235
+ "scopeId"
1236
+ ],
1237
+ "type": "object"
1238
+ },
1239
+ "PortfolioTreeV2": {
1240
+ "additionalProperties": false,
1241
+ "properties": {
1242
+ "accounts": {
1243
+ "items": {
1244
+ "$ref": "#/$defs/OverviewAccountV2"
1245
+ },
1246
+ "maxItems": 500,
1247
+ "type": "array"
1248
+ },
1249
+ "asOf": {
1250
+ "format": "date-time",
1251
+ "type": "string"
1252
+ },
1253
+ "authority": {
1254
+ "$ref": "#/$defs/WorkspaceAuthorityV2"
1255
+ },
1256
+ "baseCurrency": {
1257
+ "$ref": "#/$defs/CurrencyCodeV2"
1258
+ },
1259
+ "contractVersion": {
1260
+ "const": 2
1261
+ },
1262
+ "kind": {
1263
+ "const": "portfolio.tree.v2"
1264
+ },
1265
+ "privacy": {
1266
+ "$ref": "#/$defs/OverviewPrivacyV2"
1267
+ },
1268
+ "projectionVersion": {
1269
+ "const": 1
1270
+ },
1271
+ "workspaceVersion": {
1272
+ "minimum": 1,
1273
+ "type": "integer"
1274
+ }
1275
+ },
1276
+ "required": [
1277
+ "kind",
1278
+ "contractVersion",
1279
+ "projectionVersion",
1280
+ "workspaceVersion",
1281
+ "asOf",
1282
+ "authority",
1283
+ "baseCurrency",
1284
+ "accounts",
1285
+ "privacy"
1286
+ ],
1287
+ "type": "object"
1288
+ },
1289
+ "QualityV2": {
1290
+ "enum": [
1291
+ "confirmed",
1292
+ "estimated",
1293
+ "unknown"
1294
+ ]
1295
+ },
1296
+ "RemoteUnavailableErrorV2": {
1297
+ "$ref": "#/$defs/FamilyWealthErrorV2"
1298
+ },
1299
+ "SourceV2": {
1300
+ "additionalProperties": false,
1301
+ "properties": {
1302
+ "channel": {
1303
+ "enum": [
1304
+ "web",
1305
+ "cli",
1306
+ "mcp",
1307
+ "builtin_ai",
1308
+ "migration"
1309
+ ]
1310
+ },
1311
+ "clientId": {
1312
+ "pattern": "^[a-z][a-z0-9-]{2,63}$",
1313
+ "type": "string"
1314
+ }
1315
+ },
1316
+ "required": [
1317
+ "clientId",
1318
+ "channel"
1319
+ ],
1320
+ "type": "object"
1321
+ },
1322
+ "ValuationSnapshotAppendCommandV2": {
1323
+ "additionalProperties": false,
1324
+ "properties": {
1325
+ "commandId": {
1326
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1327
+ "type": "string"
1328
+ },
1329
+ "expectedObjectRevision": {
1330
+ "type": "null"
1331
+ },
1332
+ "expectedWorkspaceVersion": {
1333
+ "minimum": 1,
1334
+ "type": "integer"
1335
+ },
1336
+ "idempotencyKey": {
1337
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
1338
+ "type": "string"
1339
+ },
1340
+ "kind": {
1341
+ "const": "valuation_snapshot.append.v2"
1342
+ },
1343
+ "payload": {
1344
+ "$ref": "#/$defs/ValuationSnapshotAppendPayloadV2"
1345
+ },
1346
+ "source": {
1347
+ "$ref": "#/$defs/SourceV2"
1348
+ }
1349
+ },
1350
+ "required": [
1351
+ "kind",
1352
+ "commandId",
1353
+ "idempotencyKey",
1354
+ "expectedWorkspaceVersion",
1355
+ "expectedObjectRevision",
1356
+ "source",
1357
+ "payload"
1358
+ ],
1359
+ "type": "object"
1360
+ },
1361
+ "ValuationSnapshotAppendPayloadV2": {
1362
+ "additionalProperties": false,
1363
+ "properties": {
1364
+ "snapshot": {
1365
+ "$ref": "#/$defs/ValuationSnapshotDraftV2"
1366
+ },
1367
+ "snapshotId": {
1368
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1369
+ "type": "string"
1370
+ }
1371
+ },
1372
+ "required": [
1373
+ "snapshotId",
1374
+ "snapshot"
1375
+ ],
1376
+ "type": "object"
1377
+ },
1378
+ "ValuationSnapshotDraftV2": {
1379
+ "additionalProperties": false,
1380
+ "properties": {
1381
+ "asOf": {
1382
+ "format": "date-time",
1383
+ "type": "string"
1384
+ },
1385
+ "quality": {
1386
+ "$ref": "#/$defs/QualityV2"
1387
+ },
1388
+ "scopeId": {
1389
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1390
+ "type": "string"
1391
+ },
1392
+ "scopeType": {
1393
+ "enum": [
1394
+ "account",
1395
+ "holding"
1396
+ ]
1397
+ },
1398
+ "source": {
1399
+ "$ref": "#/$defs/SourceV2"
1400
+ },
1401
+ "value": {
1402
+ "$ref": "#/$defs/MoneyV2"
1403
+ }
1404
+ },
1405
+ "required": [
1406
+ "scopeType",
1407
+ "scopeId",
1408
+ "value",
1409
+ "asOf",
1410
+ "quality",
1411
+ "source"
1412
+ ],
1413
+ "type": "object"
1414
+ },
1415
+ "VisibilityV2": {
1416
+ "enum": [
1417
+ "household",
1418
+ "private"
1419
+ ]
1420
+ },
1421
+ "WorkspaceAuthorityV2": {
1422
+ "additionalProperties": false,
1423
+ "properties": {
1424
+ "householdId": {
1425
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1426
+ "type": "string"
1427
+ },
1428
+ "role": {
1429
+ "enum": [
1430
+ "owner",
1431
+ "viewer_suggester"
1432
+ ]
1433
+ },
1434
+ "workspaceId": {
1435
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1436
+ "type": "string"
1437
+ }
1438
+ },
1439
+ "required": [
1440
+ "householdId",
1441
+ "workspaceId",
1442
+ "role"
1443
+ ],
1444
+ "type": "object"
1445
+ },
1446
+ "WorkspaceCapabilitiesV2": {
1447
+ "additionalProperties": false,
1448
+ "properties": {
1449
+ "readable": {
1450
+ "items": {
1451
+ "enum": [
1452
+ "workspace.summary.v2",
1453
+ "activity.page.v2",
1454
+ "workspace.overview.v2"
1455
+ ]
1456
+ },
1457
+ "type": "array",
1458
+ "uniqueItems": true
1459
+ },
1460
+ "writable": {
1461
+ "items": {
1462
+ "enum": [
1463
+ "asset_account.create.v2",
1464
+ "asset_account.update.v2",
1465
+ "asset_account.archive.v2",
1466
+ "valuation_snapshot.append.v2",
1467
+ "classification.replace.v2"
1468
+ ]
1469
+ },
1470
+ "type": "array",
1471
+ "uniqueItems": true
1472
+ }
1473
+ },
1474
+ "required": [
1475
+ "readable",
1476
+ "writable"
1477
+ ],
1478
+ "type": "object"
1479
+ },
1480
+ "WorkspaceDataQualityV2": {
1481
+ "additionalProperties": false,
1482
+ "properties": {
1483
+ "asOf": {
1484
+ "format": "date-time",
1485
+ "type": "string"
1486
+ },
1487
+ "authority": {
1488
+ "$ref": "#/$defs/WorkspaceAuthorityV2"
1489
+ },
1490
+ "contractVersion": {
1491
+ "const": 2
1492
+ },
1493
+ "coverage": {
1494
+ "$ref": "#/$defs/OverviewCoverageV2"
1495
+ },
1496
+ "kind": {
1497
+ "const": "workspace.data_quality.v2"
1498
+ },
1499
+ "privacy": {
1500
+ "$ref": "#/$defs/OverviewPrivacyV2"
1501
+ },
1502
+ "projectionVersion": {
1503
+ "const": 1
1504
+ },
1505
+ "warnings": {
1506
+ "items": {
1507
+ "enum": [
1508
+ "estimated_values_present",
1509
+ "stale_values_present",
1510
+ "unclassified_values_present",
1511
+ "missing_valuations_present",
1512
+ "unconverted_values_excluded",
1513
+ "restricted_values_aggregated"
1514
+ ]
1515
+ },
1516
+ "type": "array",
1517
+ "uniqueItems": true
1518
+ },
1519
+ "workspaceVersion": {
1520
+ "minimum": 1,
1521
+ "type": "integer"
1522
+ }
1523
+ },
1524
+ "required": [
1525
+ "kind",
1526
+ "contractVersion",
1527
+ "projectionVersion",
1528
+ "workspaceVersion",
1529
+ "asOf",
1530
+ "authority",
1531
+ "coverage",
1532
+ "privacy",
1533
+ "warnings"
1534
+ ],
1535
+ "type": "object"
1536
+ },
1537
+ "WorkspaceInitializeCommandV2": {
1538
+ "additionalProperties": false,
1539
+ "properties": {
1540
+ "commandId": {
1541
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
1542
+ "type": "string"
1543
+ },
1544
+ "expectedWorkspaceVersion": {
1545
+ "const": 0
1546
+ },
1547
+ "idempotencyKey": {
1548
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$",
1549
+ "type": "string"
1550
+ },
1551
+ "kind": {
1552
+ "const": "workspace.initialize.v2"
1553
+ },
1554
+ "payload": {
1555
+ "$ref": "#/$defs/WorkspaceInitializePayloadV2"
1556
+ },
1557
+ "source": {
1558
+ "$ref": "#/$defs/SourceV2"
1559
+ }
1560
+ },
1561
+ "required": [
1562
+ "kind",
1563
+ "commandId",
1564
+ "idempotencyKey",
1565
+ "expectedWorkspaceVersion",
1566
+ "source",
1567
+ "payload"
1568
+ ],
1569
+ "type": "object"
1570
+ },
1571
+ "WorkspaceInitializePayloadV2": {
1572
+ "additionalProperties": false,
1573
+ "properties": {
1574
+ "baseCurrency": {
1575
+ "$ref": "#/$defs/CurrencyCodeV2"
1576
+ },
1577
+ "timezone": {
1578
+ "maxLength": 64,
1579
+ "pattern": "^(?:UTC|[A-Za-z_]+(?:/[A-Za-z0-9_+.-]+)+)$",
1580
+ "type": "string"
1581
+ }
1582
+ },
1583
+ "required": [
1584
+ "baseCurrency",
1585
+ "timezone"
1586
+ ],
1587
+ "type": "object"
1588
+ },
1589
+ "WorkspaceInitializeSuccessV2": {
1590
+ "additionalProperties": false,
1591
+ "properties": {
1592
+ "code": {
1593
+ "const": 0
1594
+ },
1595
+ "data": {
1596
+ "$ref": "#/$defs/CommandReceiptV2"
1597
+ },
1598
+ "kind": {
1599
+ "const": "family_wealth_success.v2"
1600
+ },
1601
+ "status": {
1602
+ "const": "success"
1603
+ },
1604
+ "success": {
1605
+ "const": true
1606
+ }
1607
+ },
1608
+ "required": [
1609
+ "kind",
1610
+ "success",
1611
+ "status",
1612
+ "code",
1613
+ "data"
1614
+ ],
1615
+ "type": "object"
1616
+ },
1617
+ "WorkspaceMetadataCoverageAvailableV2": {
1618
+ "additionalProperties": false,
1619
+ "properties": {
1620
+ "omitted": {
1621
+ "items": {
1622
+ "maxLength": 100,
1623
+ "minLength": 1,
1624
+ "type": "string"
1625
+ },
1626
+ "minItems": 1,
1627
+ "type": "array",
1628
+ "uniqueItems": true
1629
+ },
1630
+ "projection": {
1631
+ "const": "workspace.summary.v2"
1632
+ },
1633
+ "status": {
1634
+ "const": "complete"
1635
+ }
1636
+ },
1637
+ "required": [
1638
+ "status",
1639
+ "projection",
1640
+ "omitted"
1641
+ ],
1642
+ "type": "object"
1643
+ },
1644
+ "WorkspaceMetadataCoverageUnavailableV2": {
1645
+ "additionalProperties": false,
1646
+ "properties": {
1647
+ "omitted": {
1648
+ "items": {
1649
+ "maxLength": 100,
1650
+ "minLength": 1,
1651
+ "type": "string"
1652
+ },
1653
+ "minItems": 1,
1654
+ "type": "array",
1655
+ "uniqueItems": true
1656
+ },
1657
+ "projection": {
1658
+ "const": "workspace.summary.v2"
1659
+ },
1660
+ "reason": {
1661
+ "const": "REMOTE_UNAVAILABLE"
1662
+ },
1663
+ "status": {
1664
+ "const": "unavailable"
1665
+ }
1666
+ },
1667
+ "required": [
1668
+ "status",
1669
+ "projection",
1670
+ "omitted",
1671
+ "reason"
1672
+ ],
1673
+ "type": "object"
1674
+ },
1675
+ "WorkspaceMetadataPermissionsV2": {
1676
+ "additionalProperties": false,
1677
+ "properties": {
1678
+ "readable": {
1679
+ "maxItems": 3,
1680
+ "minItems": 3,
1681
+ "prefixItems": [
1682
+ {
1683
+ "const": "workspace.summary.v2"
1684
+ },
1685
+ {
1686
+ "const": "activity.page.v2"
1687
+ },
1688
+ {
1689
+ "const": "workspace.overview.v2"
1690
+ }
1691
+ ],
1692
+ "type": "array"
1693
+ },
1694
+ "role": {
1695
+ "anyOf": [
1696
+ {
1697
+ "enum": [
1698
+ "owner",
1699
+ "viewer_suggester"
1700
+ ]
1701
+ },
1702
+ {
1703
+ "type": "null"
1704
+ }
1705
+ ]
1706
+ },
1707
+ "scopes": {
1708
+ "maxItems": 1,
1709
+ "minItems": 1,
1710
+ "prefixItems": [
1711
+ {
1712
+ "const": "workspace:read"
1713
+ }
1714
+ ],
1715
+ "type": "array"
1716
+ },
1717
+ "writable": {
1718
+ "maxItems": 0,
1719
+ "type": "array"
1720
+ }
1721
+ },
1722
+ "required": [
1723
+ "role",
1724
+ "scopes",
1725
+ "readable",
1726
+ "writable"
1727
+ ],
1728
+ "type": "object"
1729
+ },
1730
+ "WorkspaceMetadataResourceAvailableV2": {
1731
+ "additionalProperties": false,
1732
+ "properties": {
1733
+ "asOf": {
1734
+ "format": "date-time",
1735
+ "type": "string"
1736
+ },
1737
+ "authority": {
1738
+ "$ref": "#/$defs/WorkspaceAuthorityV2"
1739
+ },
1740
+ "baseCurrency": {
1741
+ "$ref": "#/$defs/CurrencyCodeV2"
1742
+ },
1743
+ "contractVersion": {
1744
+ "const": 2
1745
+ },
1746
+ "counts": {
1747
+ "additionalProperties": false,
1748
+ "properties": {
1749
+ "accounts": {
1750
+ "minimum": 0,
1751
+ "type": "integer"
1752
+ },
1753
+ "holdings": {
1754
+ "minimum": 0,
1755
+ "type": "integer"
1756
+ },
1757
+ "pendingItems": {
1758
+ "minimum": 0,
1759
+ "type": "integer"
1760
+ }
1761
+ },
1762
+ "required": [
1763
+ "accounts",
1764
+ "holdings",
1765
+ "pendingItems"
1766
+ ],
1767
+ "type": "object"
1768
+ },
1769
+ "coverage": {
1770
+ "$ref": "#/$defs/WorkspaceMetadataCoverageAvailableV2"
1771
+ },
1772
+ "emptyState": {
1773
+ "enum": [
1774
+ "ready_for_first_asset",
1775
+ "assets_present"
1776
+ ]
1777
+ },
1778
+ "kind": {
1779
+ "const": "workspace.metadata.v2"
1780
+ },
1781
+ "permissions": {
1782
+ "$ref": "#/$defs/WorkspaceMetadataPermissionsV2"
1783
+ },
1784
+ "projectionVersion": {
1785
+ "const": 1
1786
+ },
1787
+ "status": {
1788
+ "const": "available"
1789
+ },
1790
+ "timezone": {
1791
+ "maxLength": 64,
1792
+ "pattern": "^(?:UTC|[A-Za-z_]+(?:/[A-Za-z0-9_+.-]+)+)$",
1793
+ "type": "string"
1794
+ },
1795
+ "workspaceVersion": {
1796
+ "minimum": 1,
1797
+ "type": "integer"
1798
+ }
1799
+ },
1800
+ "required": [
1801
+ "kind",
1802
+ "contractVersion",
1803
+ "projectionVersion",
1804
+ "status",
1805
+ "workspaceVersion",
1806
+ "asOf",
1807
+ "authority",
1808
+ "baseCurrency",
1809
+ "timezone",
1810
+ "emptyState",
1811
+ "counts",
1812
+ "coverage",
1813
+ "permissions"
1814
+ ],
1815
+ "type": "object"
1816
+ },
1817
+ "WorkspaceMetadataResourceUnavailableV2": {
1818
+ "additionalProperties": false,
1819
+ "properties": {
1820
+ "asOf": {
1821
+ "type": "null"
1822
+ },
1823
+ "authority": {
1824
+ "type": "null"
1825
+ },
1826
+ "baseCurrency": {
1827
+ "type": "null"
1828
+ },
1829
+ "contractVersion": {
1830
+ "const": 2
1831
+ },
1832
+ "counts": {
1833
+ "type": "null"
1834
+ },
1835
+ "coverage": {
1836
+ "$ref": "#/$defs/WorkspaceMetadataCoverageUnavailableV2"
1837
+ },
1838
+ "emptyState": {
1839
+ "type": "null"
1840
+ },
1841
+ "kind": {
1842
+ "const": "workspace.metadata.v2"
1843
+ },
1844
+ "permissions": {
1845
+ "$ref": "#/$defs/WorkspaceMetadataPermissionsV2"
1846
+ },
1847
+ "projectionVersion": {
1848
+ "const": 1
1849
+ },
1850
+ "status": {
1851
+ "const": "unavailable"
1852
+ },
1853
+ "timezone": {
1854
+ "type": "null"
1855
+ },
1856
+ "workspaceVersion": {
1857
+ "type": "null"
1858
+ }
1859
+ },
1860
+ "required": [
1861
+ "kind",
1862
+ "contractVersion",
1863
+ "projectionVersion",
1864
+ "status",
1865
+ "workspaceVersion",
1866
+ "asOf",
1867
+ "authority",
1868
+ "baseCurrency",
1869
+ "timezone",
1870
+ "emptyState",
1871
+ "counts",
1872
+ "coverage",
1873
+ "permissions"
1874
+ ],
1875
+ "type": "object"
1876
+ },
1877
+ "WorkspaceMetadataResourceV2": {
1878
+ "oneOf": [
1879
+ {
1880
+ "$ref": "#/$defs/WorkspaceMetadataResourceAvailableV2"
1881
+ },
1882
+ {
1883
+ "$ref": "#/$defs/WorkspaceMetadataResourceUnavailableV2"
1884
+ }
1885
+ ]
1886
+ },
1887
+ "WorkspaceOverviewSuccessV2": {
1888
+ "additionalProperties": false,
1889
+ "properties": {
1890
+ "code": {
1891
+ "const": 0
1892
+ },
1893
+ "data": {
1894
+ "$ref": "#/$defs/WorkspaceOverviewV2"
1895
+ },
1896
+ "kind": {
1897
+ "const": "family_wealth_success.v2"
1898
+ },
1899
+ "status": {
1900
+ "const": "success"
1901
+ },
1902
+ "success": {
1903
+ "const": true
1904
+ }
1905
+ },
1906
+ "required": [
1907
+ "kind",
1908
+ "success",
1909
+ "status",
1910
+ "code",
1911
+ "data"
1912
+ ],
1913
+ "type": "object"
1914
+ },
1915
+ "WorkspaceOverviewV2": {
1916
+ "additionalProperties": false,
1917
+ "properties": {
1918
+ "accounts": {
1919
+ "items": {
1920
+ "$ref": "#/$defs/OverviewAccountV2"
1921
+ },
1922
+ "maxItems": 500,
1923
+ "type": "array"
1924
+ },
1925
+ "asOf": {
1926
+ "format": "date-time",
1927
+ "type": "string"
1928
+ },
1929
+ "assetClasses": {
1930
+ "items": {
1931
+ "$ref": "#/$defs/OverviewAllocationLineV2"
1932
+ },
1933
+ "maxItems": 20,
1934
+ "type": "array"
1935
+ },
1936
+ "authority": {
1937
+ "$ref": "#/$defs/WorkspaceAuthorityV2"
1938
+ },
1939
+ "baseCurrency": {
1940
+ "$ref": "#/$defs/CurrencyCodeV2"
1941
+ },
1942
+ "breakdownStatus": {
1943
+ "enum": [
1944
+ "complete",
1945
+ "suppressed_due_to_private_aggregation"
1946
+ ]
1947
+ },
1948
+ "contractVersion": {
1949
+ "const": 2
1950
+ },
1951
+ "coverage": {
1952
+ "$ref": "#/$defs/OverviewCoverageV2"
1953
+ },
1954
+ "kind": {
1955
+ "const": "workspace.overview.v2"
1956
+ },
1957
+ "privacy": {
1958
+ "$ref": "#/$defs/OverviewPrivacyV2"
1959
+ },
1960
+ "projectionVersion": {
1961
+ "const": 1
1962
+ },
1963
+ "purposeBuckets": {
1964
+ "items": {
1965
+ "$ref": "#/$defs/OverviewAllocationLineV2"
1966
+ },
1967
+ "maxItems": 20,
1968
+ "type": "array"
1969
+ },
1970
+ "totals": {
1971
+ "$ref": "#/$defs/OverviewTotalsV2"
1972
+ },
1973
+ "warnings": {
1974
+ "items": {
1975
+ "enum": [
1976
+ "estimated_values_present",
1977
+ "stale_values_present",
1978
+ "unclassified_values_present",
1979
+ "missing_valuations_present",
1980
+ "unconverted_values_excluded",
1981
+ "restricted_values_aggregated"
1982
+ ]
1983
+ },
1984
+ "type": "array",
1985
+ "uniqueItems": true
1986
+ },
1987
+ "workspaceVersion": {
1988
+ "minimum": 1,
1989
+ "type": "integer"
1990
+ }
1991
+ },
1992
+ "required": [
1993
+ "kind",
1994
+ "contractVersion",
1995
+ "projectionVersion",
1996
+ "workspaceVersion",
1997
+ "asOf",
1998
+ "authority",
1999
+ "baseCurrency",
2000
+ "totals",
2001
+ "breakdownStatus",
2002
+ "accounts",
2003
+ "assetClasses",
2004
+ "purposeBuckets",
2005
+ "coverage",
2006
+ "privacy",
2007
+ "warnings"
2008
+ ],
2009
+ "type": "object"
2010
+ },
2011
+ "WorkspaceSummarySuccessV2": {
2012
+ "additionalProperties": false,
2013
+ "properties": {
2014
+ "code": {
2015
+ "const": 0
2016
+ },
2017
+ "data": {
2018
+ "$ref": "#/$defs/WorkspaceSummaryV2"
2019
+ },
2020
+ "kind": {
2021
+ "const": "family_wealth_success.v2"
2022
+ },
2023
+ "status": {
2024
+ "const": "success"
2025
+ },
2026
+ "success": {
2027
+ "const": true
2028
+ }
2029
+ },
2030
+ "required": [
2031
+ "kind",
2032
+ "success",
2033
+ "status",
2034
+ "code",
2035
+ "data"
2036
+ ],
2037
+ "type": "object"
2038
+ },
2039
+ "WorkspaceSummaryV2": {
2040
+ "additionalProperties": false,
2041
+ "properties": {
2042
+ "asOf": {
2043
+ "format": "date-time",
2044
+ "type": "string"
2045
+ },
2046
+ "authority": {
2047
+ "$ref": "#/$defs/WorkspaceAuthorityV2"
2048
+ },
2049
+ "baseCurrency": {
2050
+ "$ref": "#/$defs/CurrencyCodeV2"
2051
+ },
2052
+ "capabilities": {
2053
+ "$ref": "#/$defs/WorkspaceCapabilitiesV2"
2054
+ },
2055
+ "contractVersion": {
2056
+ "const": 2
2057
+ },
2058
+ "counts": {
2059
+ "additionalProperties": false,
2060
+ "properties": {
2061
+ "accounts": {
2062
+ "minimum": 0,
2063
+ "type": "integer"
2064
+ },
2065
+ "holdings": {
2066
+ "const": 0
2067
+ },
2068
+ "pendingItems": {
2069
+ "minimum": 0,
2070
+ "type": "integer"
2071
+ }
2072
+ },
2073
+ "required": [
2074
+ "accounts",
2075
+ "holdings",
2076
+ "pendingItems"
2077
+ ],
2078
+ "type": "object"
2079
+ },
2080
+ "cursor": {
2081
+ "maxLength": 2048,
2082
+ "minLength": 32,
2083
+ "type": "string"
2084
+ },
2085
+ "emptyState": {
2086
+ "enum": [
2087
+ "ready_for_first_asset",
2088
+ "assets_present"
2089
+ ]
2090
+ },
2091
+ "kind": {
2092
+ "const": "workspace.summary.v2"
2093
+ },
2094
+ "projectionVersion": {
2095
+ "const": 1
2096
+ },
2097
+ "timezone": {
2098
+ "maxLength": 64,
2099
+ "pattern": "^(?:UTC|[A-Za-z_]+(?:/[A-Za-z0-9_+.-]+)+)$",
2100
+ "type": "string"
2101
+ },
2102
+ "workspaceVersion": {
2103
+ "minimum": 1,
2104
+ "type": "integer"
2105
+ }
2106
+ },
2107
+ "required": [
2108
+ "kind",
2109
+ "contractVersion",
2110
+ "projectionVersion",
2111
+ "workspaceVersion",
2112
+ "asOf",
2113
+ "authority",
2114
+ "baseCurrency",
2115
+ "timezone",
2116
+ "emptyState",
2117
+ "counts",
2118
+ "cursor",
2119
+ "capabilities"
2120
+ ],
2121
+ "type": "object"
2122
+ }
2123
+ },
2124
+ "$id": "https://choosefire.com/contracts/choosefire-family-wealth/v2/family-wealth.v2.schema.json",
2125
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2126
+ "title": "ChooseFIRE Family Wealth Contract v2"
2127
+ }